Inicializar Escrow
O formulário ideal para este endpoint.
Esquema
import { isValidWallet } from "@/helpers/valid-data.helper";
import { z } from "zod";
export const formSchema = z.object({
engagementId: z.string().min(1, {
message: "Engajamento é obrigatório.",
}),
title: z.string().min(1, {
message: "Título é obrigatório.",
}),
description: z.string().min(10, {
message: "A descrição deve ter pelo menos 10 caracteres.",
}),
amount: z.string().min(1, {
message: "Valor é obrigatório.",
}),
platformFee: z.string().min(1, {
message: "Taxa da plataforma é obrigatória.",
}),
receiverMemo: z.number().min(0, {
message: "O memo do destinatário deve ser um número não negativo.",
}),
roles: z.object({
approver: z
.string()
.min(1, {
message: "Aprovação é obrigatória.",
})
.refine((value) => isValidWallet(value), {
message: "O aprovador deve ser uma carteira válida.",
}),
serviceProvider: z
.string()
.min(1, {
message: "Prestador de serviço é obrigatório.",
})
.refine((value) => isValidWallet(value), {
message: "O prestador de serviço deve ser uma carteira válida.",
}),
platformAddress: z
.string()
.min(1, {
message: "Endereço da plataforma é obrigatório.",
})
.refine((value) => isValidWallet(value), {
message: "O endereço da plataforma deve ser uma carteira válida.",
}),
releaseSigner: z
.string()
.min(1, {
message: "Assinante de liberação é obrigatório.",
})
.refine((value) => isValidWallet(value), {
message: "O assinante de liberação deve ser uma carteira válida.",
}),
disputeResolver: z
.string()
.min(1, {
message: "Resolutor de disputas é obrigatório.",
})
.refine((value) => isValidWallet(value), {
message: "O resolutor de disputas deve ser uma carteira válida.",
}),
receiver: z
.string()
.min(1, {
message: "Endereço do destinatário é obrigatório.",
})
.refine((value) => isValidWallet(value), {
message: "O endereço do destinatário deve ser uma carteira válida.",
}),
}),
trustline: z.object({
address: z.string().min(1, {
message: "Endereço da trustline é obrigatório.",
}),
decimals: z.number().default(10000000),
}),
milestones: z
.array(
z.object({
description: z.string().min(1, {
message: "Descrição do marco é obrigatória.",
}),
status: z.string().default("pending"),
evidence: z.string().default(""),
approvedFlag: z.boolean().default(false),
})
)
.min(1, { message: "Pelo menos um marco é obrigatório." }),
});
Hook Personalizado
Formulário
Atualizado