# useUpdateEscrow

## Uso

Este hook customizado expõe uma função para atualizar um escrow.

{% code overflow="wrap" %}

```typescript
import { useUpdateEscrow} from "@trustless-work/escrow/hooks";
import { UpdateSingleReleaseEscrowPayload, UpdateMultiReleaseEscrowPayload } from "@trustless-work/escrow/types";

/*
 *  useUpdateEscrow
*/
const { updateEscrow } = useUpdateEscrow();

/* 
 * Ele retorna uma transação não assinada
 * o payload deve ser do tipo `UpdateSingleReleaseEscrowPayload` ou `UpdateMultiReleaseEscrowPayload`
*/
const { unsignedTransaction } = await updateEscrow(payload);

```

{% endcode %}

### Função

`updateEscrow`

Responsável por construir e retornar uma transação não assinada com base no payload fornecido.

**EscrowType**: Especifica o tipo de escrow. Aceita os seguintes valores:

* **multi-release**: Permite múltiplos desembolsos de fundos.
* **single-release**: Os fundos são liberados em uma única transação.

**UpdateSingleReleaseEscrowPayload:** Um objeto com os campos necessários para atualizar um **single-release** escrow.

**UpdateMultiReleaseEscrowPayload:** Um objeto com os campos necessários para atualizar um **multi-release** escrow.

**Parâmetros**:

Certifique-se de que correspondam: se você escolher o tipo "multi-release", também deve usar um payload "multi-release".

* **tipo**: Descreve o tipo de escrow a ser usado. As opções são "multi-release" ou "single-release".
* **payload**: Um objeto contendo os campos necessários para atualizar um escrow.

{% content-ref url="/pages/2d0586f3f1f51ed5f6e2b66a2e4929e9f570d29b" %}
[Atualizar escrow](/trustless-work/v1-pt/introducao/developer-resources/tipos/payloads/atualizar-escrow.md)
{% endcontent-ref %}

*Valor de Retorno:*

`unsignedTransaction`: Um objeto representando a transação construída, pronto para ser assinado pela sua carteira e transmitido.

***

## Exemplo de Uso

<pre class="language-typescript" data-title="src/hooks/useUpdateEscrowForm.ts" data-overflow="wrap"><code class="lang-typescript"><strong>import {
</strong>  useUpdateEscrow,
  useSendTransaction,
} from "@trustless-work/escrow/hooks";
import {
  UpdateSingleReleaseEscrowPayload, UpdateMultiReleaseEscrowPayload
} from "@trustless-work/escrow/types";

export const useUpdateEscrowForm = () => {

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

/*
 * função onSubmit, isto pode ser chamada por um botão de formulário
*/
 const onSubmit = async (payload: UpdateSingleReleaseEscrowPayload | UpdateMultiReleaseEscrowPayload) => {

    try {
      /**
       * Chamada de API usando os hooks do trustless work
       * @Nota:
       * - Precisamos passar o payload para a função updateEscrow
       * - O resultado será uma transação não assinada
       */
      const { unsignedTransaction } = await updateEscrow(
        payload,
        "multi-release"
        // ou ...
        // "single-release"
      );

      if (!unsignedTransaction) {
        throw new Error(
          "A transação não assinada está ausente na resposta do updateEscrow."
        );
      }

      /**
       * @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("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);

      /**
       * @Respostas:
       * data.status === "SUCCESS"
       * - Escrow atualizado com sucesso
       * - Mostrar um toast de sucesso
       *
       * data.status == "ERROR"
       * - Mostrar um toast de erro
       */
      if (data.status === "SUCCESS") {
        toast.success("Escrow Atualizado");
      }
    } catch (error: unknown) {
      // lógica de captura de erro
    }
  };
}

</code></pre>


---

# 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/escrows/useupdateescrow.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.
