# useSendTransaction

{% hint style="info" %}
Este endpoint deve ser usado para todos os endpoints após o executarmos. Exceto getEscrowBalances, getEscrowsByContractId, getEscrowsByRole e getEscrowsBySigner .
{% endhint %}

## Uso

Este hook customizado expõe uma função para enviar uma transação assinada para a rede.&#x20;

{% code overflow="wrap" %}

```typescript
import { useSendTransaction} from "@trustless-work/escrow/hooks";

/*
 *  useSendTransaction
*/
const { sendTransaction } = useSendTransaction();

/* 
 * Retorna um SendTransactionResponse
 * payload deve ser do tipo string
*/
const data = await sendTransaction(signedXdr);

```

{% endcode %}

### Função

* `sendTransaction`\
  Responsável por construir e retornar dados com base no payload fornecido.

*Argumento:*

`payload`: Uma string contendo os campos necessários para enviar uma transação para a rede.

{% content-ref url="/pages/7689fec828b311858bac2244352c2042f33d1993" %}
[Tipos](/trustless-work/v1-pt/introducao/developer-resources/tipos.md)
{% endcontent-ref %}

*Valor de Retorno:*

**Para:** Fundar Escrow, Resolver Disputa, Alterar Status do Marco, Alterar Flag de Aprovação do Marco, Iniciar Disputa, Liberar Fundos:

* Este objeto será de um tipo *sendTransactionResponse*.&#x20;

**Para:** Inicializar Escrow:

* Este objeto será de um tipo *sendTransactionResponse*. Mas você pode defini-lo como *InitializeEscrowResponse*.

**Para:** Atualizar Escrow:

* Este objeto será de um tipo *sendTransactionResponse*. Mas você pode defini-lo como *UpdateEscrowResponse*.

***

## Exemplo de Uso

{% code title="src/hooks/useSendTransactionForm.ts" overflow="wrap" %}

```typescript
import {
  useFundEscrow,
  useSendTransaction,
} from "@trustless-work/escrow/hooks";
import {
  useSomeEndpointPayload
} from "@trustless-work/escrow/types";

export const useSomeEndpointForm= () => {

 /*
  *  useSomeEndpoint
 */
 const { someFunction } = useSomeEndpoint();
 
 /*
  *  useSendTransaction
 */
 const { sendTransaction } = useSendTransaction();

/*
 * função onSubmit, isso pode ser chamado por um botão de formulário
*/
 const onSubmit = async (payload: useSomeEndpointPayload) => {

    try {
      // obter unsignedTransaction de algum endpoint ...

      /**
       * @Nota:
       * - Precisamos assinar a transação usando sua [chave privada], como a carteira
       * - O resultado será uma transação assinada
       */
      const signedXdr = await signTransaction({ /* Este método deve ser fornecido pela carteira */
        unsignedTransaction,
        address: walletAddress || "",
      });

      if (!signedXdr) {
        throw new Error("A transação assinada está ausente.");
      }

      /**
       * @Nota:
       * - Precisamos enviar a transação assinada para a API
       * - Os dados serão um SendTransactionResponse
       */
      const data = await sendTransaction(signedXdr);

    } catch (error: unknown) {
      // lógica de captura de erro
    }
  };
}

```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.trustlesswork.com/trustless-work/v1-pt/sdk-react-de-escrow/usesendtransaction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
