# useSendTransaction

{% hint style="info" %}
Este endpoint debe usarse para todos los endpoints después de que lo ejecutemos. Excepto getEscrowBalances, getEscrowsByContractId, getEscrowsByRole y getEscrowsBySigner.
{% endhint %}

## Uso

Este hook personalizado expone una función para enviar una transacción firmada a la red.&#x20;

{% code overflow="wrap" %}

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

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

/* 
 * Devuelve un SendTransactionResponse
 * el payload debe ser de tipo string
*/
const data = await sendTransaction(signedXdr);

```

{% endcode %}

### Función

* `sendTransaction`\
  Responsable de construir y devolver datos basados en el payload proporcionado.

*Argumento:*

`payload`: Una cadena que contiene los campos requeridos para enviar una transacción a la red.

{% content-ref url="/pages/69c38c16809087b4ed9bbcc844be417228d0b972" %}
[Tipos](/trustless-work/v1-es/introduccion/developer-resources/tipos.md)
{% endcontent-ref %}

*Valor de retorno:*

**Para:** Fundar Escrow, Resolver Disputa, Cambiar Estado del Hito, Cambiar Indicador de Aprobación del Hito, Iniciar Disputa, Liberar Fondos:

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

**Para:** Inicializar Escrow:

* Este objeto será de un tipo *sendTransactionResponse*. Pero puedes configurarlo como *InitializeEscrowResponse*.

**Para:** Actualizar Escrow:

* Este objeto será de un tipo *sendTransactionResponse*. Pero puedes configurarlo como *UpdateEscrowResponse*.

***

## Ejemplo 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();

/*
 * función onSubmit, esto podría ser llamada por un botón de formulario
*/
 const onSubmit = async (payload: useSomeEndpointPayload) => {

    try {
      // obtener unsignedTransaction desde algún endpoint ...

      /**
       * @Note:
       * - Necesitamos firmar la transacción usando tu [clave privada] como la wallet
       * - El resultado será una transacción firmada
       */
      const signedXdr = await signTransaction({ /* Este método debe ser proporcionado por la wallet */
        unsignedTransaction,
        address: walletAddress || "",
      });

      if (!signedXdr) {
        throw new Error("La transacción firmada falta.");
      }

      /**
       * @Note:
       * - Necesitamos enviar la transacción firmada a la API
       * - Los datos serán un SendTransactionResponse
       */
      const data = await sendTransaction(signedXdr);

    } catch (error: unknown) {
      // lógica para capturar errores
    }
  };
}

```

{% 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-es/escrow-react-sdk/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.
