Payloads
Entidade de Payload do Escrow
import { EscrowType, SingleReleaseEscrowStatus } from "./types";
import { MultiReleaseEscrow, Role, SingleReleaseEscrow } from "./types.entity";
/**
* Documentação: https://docs.trustlesswork.com/trustless-work/developer-resources/quickstart/integration-demo-project/entities
*/
// ----------------- Payloads de Marco -----------------
/**
* Payload de Marco de Liberação Única
*/
export type SingleReleaseMilestonePayload = {
/**
* Texto descrevendo a função do marco
*/
description: string;
};
/**
* Payload de Marco de Múltiplas Liberações
*/
export type MultiReleaseMilestonePayload = {
/**
* Texto descrevendo a função do marco
*/
description: string;
/**
* Quantia a ser transferida ao completar este marco
*/
amount: number;
/**
* Endereço para onde os recursos do marco serão enviados
*/
receiver: string;
};
// ----------------- Inicializar Escrow -----------------
/**
* Payload de Inicialização de Escrow de Liberação Única
*/
export type InitializeSingleReleaseEscrowPayload = Omit<
SingleReleaseEscrow,
"contractId" | "balance" | "milestones"
> & {
/**
* Objetivos a serem concluídos para definir o escrow como concluído
*/
milestones: SingleReleaseMilestonePayload[];
};
/**
* Payload de Inicialização de Escrow de Múltiplas Liberações
*/
export type InitializeMultiReleaseEscrowPayload = Omit<
MultiReleaseEscrow,
"contractId" | "balance" | "milestones"
> & {
/**
* Objetivos a serem concluídos para definir o escrow como concluído
*/
milestones: MultiReleaseMilestonePayload[];
};
// ----------------- Atualizar Escrow -----------------
/**
* Payload de Atualização de Escrow de Liberação Única
*/
export type UpdateSingleReleaseEscrowPayload = {
/**
* ID (endereço) que identifica o contrato de escrow
*/
contractId: string;
/**
* Dados do escrow
*/
escrow: Omit<SingleReleaseEscrow, "contractId" | "signer" | "balance"> & {
/**
* Se o escrow está ativo. Isso vem do DB, não da blockchain.
*/
isActive?: boolean;
};
/**
* Endereço do usuário que assina a transação do contrato
*/
signer: string;
};
/**
* Payload de Atualização de Escrow de Múltiplas Liberações
*/
export type UpdateMultiReleaseEscrowPayload = {
/**
* ID (endereço) que identifica o contrato de escrow
*/
contractId: string;
/**
* Dados do escrow
*/
escrow: Omit<MultiReleaseEscrow, "contractId" | "signer" | "balance"> & {
/**
* Se o escrow está ativo. Isso vem do DB, não da blockchain.
*/
isActive?: boolean;
};
/**
* Endereço do usuário que assina a transação do contrato
*/
signer: string;
};
// ----------------- Alterar Status do Marco -----------------
/**
* Payload de Alteração de Status do Marco, isso pode ser para liberação única ou múltipla
*/
export type ChangeMilestoneStatusPayload = {
/**
* ID (endereço) que identifica o contrato de escrow
*/
contractId: string;
/**
* Índice do marco a ser atualizado
*/
milestoneIndex: string;
/**
* Novo status do marco
*/
newStatus: string;
/**
* Nova evidência do trabalho realizado pelo prestador de serviços.
*/
newEvidence?: string;
/**
* Endereço da entidade que fornece o serviço.
*/
serviceProvider: string;
};
// ----------------- Aprovar Marco -----------------
/**
* Payload de Aprovação de Marco, isso pode ser para liberação única ou múltipla
*/
export type ApproveMilestonePayload = Omit<
ChangeMilestoneStatusPayload,
"serviceProvider" | "newStatus"
> & {
/**
* Endereço da entidade que requer o serviço.
*/
approver: string;
};
// ----------------- Iniciar Disputa -----------------
/**
* Payload de Início de Disputa para Liberação Única. Isso inicia uma disputa para todo o escrow.
*/
export type SingleReleaseStartDisputePayload = {
/**
* ID (endereço) que identifica o contrato de escrow
*/
contractId: string;
/**
* Endereço do usuário que assina a transação do contrato
*/
signer: string;
};
/**
* Payload de Início de Disputa para Múltiplas Liberações. Isso inicia uma disputa para um marco específico.
*/
export type MultiReleaseStartDisputePayload =
SingleReleaseStartDisputePayload & {
/**
* Índice do marco a ser disputado
*/
milestoneIndex: string;
};
// ----------------- Resolver Disputa -----------------
/**
* Payload de Resolução de Disputa
*/
export type SingleReleaseResolveDisputePayload = {
/**
* ID (endereço) que identifica o contrato de escrow
*/
contractId: string;
/**
* Endereço responsável por resolver disputas dentro do escrow.
*/
disputeResolver: string;
/**
* Distribuições do montante do escrow para os recebedores.
*/
distributions: [
{
/**
* Endereço do recebedor
*/
address: string;
/**
* Quantia a ser transferida para o recebedor. Todo o montante deve ser igual ao valor total do escrow.
*/
amount: number;
},
];
};
/**
* Payload de Resolução de Disputa para Múltiplas Liberações
*/
export type MultiReleaseResolveDisputePayload =
SingleReleaseResolveDisputePayload & {
/**
* Índice do marco a ser resolvido
*/
milestoneIndex: string;
};
// ----------------- Retirar Fundos Restantes -----------------
/**
* Retirar fundos restantes
*/
export type WithdrawRemainingFundsPayload = SingleReleaseResolveDisputePayload;
// ----------------- Financiar Escrow -----------------
/**
* Payload de Financiamento do Escrow, isso pode ser para liberação única ou múltipla
*/
export type FundEscrowPayload = {
/**
* Quantia a ser transferida ao completar os marcos do escrow
*/
amount: number;
/**
* ID (endereço) que identifica o contrato de escrow
*/
contractId: string;
/**
* Endereço do usuário que assina a transação do contrato
*/
signer: string;
};
// ----------------- Obter Escrows do Indexador -----------------
/**
* Parâmetros para Obter Escrows do Indexador
*/
export type GetEscrowsFromIndexerParams = {
/**
* Número da página. Paginação
*/
page?: number;
/**
* Direção de ordenação. Ordenação
*/
orderDirection?: "asc" | "desc";
/**
* Ordenar por propriedade. Ordenação
*/
orderBy?: "createdAt" | "updatedAt" | "amount";
/**
* Criado em = data inicial. Filtragem
*/
startDate?: string;
/**
* Criado em = data final. Filtragem
*/
endDate?: string;
/**
* Quantia máxima. Filtragem
*/
maxAmount?: number;
/**
* Quantia mínima. Filtragem
*/
minAmount?: number;
/**
* Está ativo. Filtragem
*/
isActive?: boolean;
/**
* Escrow que você está procurando. Filtragem
*/
title?: string;
/**
* ID do engajamento. Filtragem
*/
engagementId?: string;
/**
* Status do escrow de liberação única. Filtragem
*/
status?: SingleReleaseEscrowStatus;
/**
* Tipo do escrow. Filtragem
*/
type?: EscrowType;
/**
* Se verdadeiro, os escrows serão validados na blockchain para garantir consistência de dados.
* Isso realiza uma etapa adicional de verificação para confirmar que os dados do escrow
* retornados pelo indexador correspondem ao estado atual na blockchain.
* Use isto quando precisar garantir as informações de escrow mais atualizadas e precisas.
* Se você ativar este parâmetro, sua requisição levará mais tempo para ser concluída.
*/
validateOnChain?: boolean;
};
export type GetEscrowsFromIndexerBySignerParams =
GetEscrowsFromIndexerParams & {
/**
* Endereço do usuário que assina a transação do contrato.
*/
signer: string;
};
export type GetEscrowsFromIndexerByRoleParams = GetEscrowsFromIndexerParams & {
/**
* Papel do usuário. Obrigatório
*/
role: Role;
/**
* Endereço do proprietário dos escrows. Se você quiser obter todos os escrows de um papel específico, pode usar este parâmetro. Mas com este parâmetro, você não pode usar o parâmetro signer.
*/
roleAddress: string;
};
export type GetEscrowFromIndexerByContractIdsParams = {
/**
* IDs (endereços) que identificam os contratos de escrow.
*/
contractIds: string[];
/**
* Se verdadeiro, os escrows serão validados na blockchain para garantir consistência de dados.
* Isso realiza uma etapa adicional de verificação para confirmar que os dados do escrow
* retornados pelo indexador correspondem ao estado atual na blockchain.
* Use isto quando precisar garantir as informações de escrow mais atualizadas e precisas.
* Se você ativar este parâmetro, sua requisição levará mais tempo para ser concluída.
*/
validateOnChain?: boolean;
};
// ----------------- Liberar Fundos -----------------
/**
* Payload de Liberação de Fundos para Liberação Única
*/
export type SingleReleaseReleaseFundsPayload = {
/**
* ID (endereço) que identifica o contrato de escrow
*/
contractId: string;
/**
* Endereço do usuário responsável por liberar os fundos do escrow ao prestador de serviço.
*/
releaseSigner: string;
};
/**
* Payload de Liberação de Fundos para Múltiplas Liberações
*/
export type MultiReleaseReleaseFundsPayload =
SingleReleaseReleaseFundsPayload & {
/**
* Índice do marco a ser liberado
*/
milestoneIndex: string;
};
// ----------------- Obter Saldo -----------------
/**
* Parâmetros para Obter Saldo
*/
export type GetBalanceParams = {
/**
* Endereços dos escrows para obter o saldo
*/
addresses: string[];
};
// ----------------- Atualizar a partir do Hash da Transação -----------------
/**
* Payload para atualizar dados do escrow a partir de um hash de transação.
*/
export type UpdateFromTxHashPayload = {
/**
* Hash da transação a ser usado para a atualização.
*/
txHash: string;
};Atualizado
Isto foi útil?