UNPKG

@dueheads/citi-bank-boleto-sdk

Version:

SDK para registro de boletos na API do Citibank via mTLS.

191 lines (190 loc) 4.72 kB
/** * Representa os dados do beneficiário no formato da aplicação. */ export interface BeneficiarioData { identificador: string; inscricao: string; tipo: 'F' | 'J'; convenio: string; nome: string; } /** * Representa um endereço. */ export interface Endereco { cep: string | null; logradouro: string | null; numero: string | null; complemento: string | null; bairro: string | null; cidade: string | null; uf: string | null; } /** * Representa os dados do pagador no formato da aplicação. */ export interface PagadorData { tipo_inscricao: '1' | '2'; inscricao: string; nome: string; email: string | null; endereco: Endereco; } /** * Representa os dados do sacador no formato da aplicação. */ export interface SacadorData { tipo_inscricao: '1' | '2' | null; inscricao: string | null; nome: string | null; email: string | null; endereco: Endereco; } /** * Representa os dados do documento/título no formato da aplicação. */ export interface DocumentoData { numero: string; nosso_numero: string; especie: string; valor: string; data_emissao: string; data_vencimento: string; data_processamento: string; mensagem: string; pagamento_parcial: { permitido: boolean | null; quantidade: number | null; }; protesto: any | null; multa: any | null; juros: any | null; desconto: any | null; pix_cobranca: any | null; } /** * Representa o payload completo para a criação de um boleto no formato da sua aplicação. */ export interface BoletoPayload { dadosBeneficiario: BeneficiarioData; dados: { pagador: PagadorData; sacador: SacadorData | null; documento: DocumentoData; }; } /** * Representa o estado parcial do boleto durante a construção com o Builder. * Esta interface permite que as propriedades sejam adicionadas gradualmente. */ export interface BoletoBuilderPayload { dadosBeneficiario?: BeneficiarioData; dados?: { pagador?: PagadorData; sacador?: SacadorData | null; documento?: DocumentoData; }; } /** * Configuração inicial para o SDK do Citibank. */ export interface CitiBankSDKConfig { certPath: string; keyPath: string; rejectUnauthorized?: boolean; timeout?: number; baseURL?: string; debug?: boolean; validateSchema?: boolean; } /** * Representa a estrutura de dados completa para o registro de um boleto, * seguindo o layout do arquivo "Layout Cobrança XML_v2.2 1.pdf". */ export interface BoletoData { GrpBenf: { CdtrNm: string; CdtrTaxId: string; CdtrTaxTp: 'F' | 'J'; CdtrId: string; }; GrpClPgd: { DbtrNm: string; DbtrTaxId: string; DbtrTaxTp: 'F' | 'J'; GrpClPgdAdr: { DbtrAdrTp: string; DbtrCtrySubDvsn: string; DbtrPstCd: string; DbtrTwnNm: string; }; }; DbtrGrntNm?: string | null; DbtrMsg?: string | null; TitlAmt: number; TitlBarCdInd: '0' | '1' | '4'; TitlCcyCd: '09'; TitlCiaCdId: string; TitlDueDt: string; TitlInstrNmDtExec?: string; TitlInstrProtInd?: '1' | ''; TitlInstrWrtOffInd?: '1' | '2' | ''; TitlIOFAmt?: number; TitlIssDt: string; TitlOurNb: string; TitlPortCd: '1'; TitlRbtAmt?: number; TitlTpCd: '03' | any; TitlYourNb: string; GrpDscnt?: Array<{ TitlDscntAmtOrPrct: number; TitlDscntEndDt?: string; TitlDscntTp: '1' | '2'; }>; GrpItrs?: { TitlItrsAmtOrPrct: number; TitlItrsStrDt?: string; TitlItrsTp: '1' | '3'; }; GrpFn?: { TitlFnAmtOrPrct: number; TitlFnStrDt?: string; TitlFnTp: '1' | '2'; }; } /** * Resposta em caso de sucesso no registro (actionCode = "0"). */ export interface SuccessResponse { success: Boolean; message?: string; barcode: string; linhaDigitavel: string; linhaDigitavelFormatada?: string; } /** * Detalhe de um erro específico na resposta (actionCode = "99"). */ export interface ErrorDetail { errorCode: string; fieldName: string; description: string; } /** * Resposta em caso de erro de negócio (actionCode = "99"). */ export interface ErrorResponse { success: Boolean; errorCode: '99'; reason: string; errors: ErrorDetail[]; } /** * Resposta para erros de infraestrutura (HTTP 500), no formato SOAP Fault. */ export interface SoapFaultResponse { httpStatus: number; faultCode: string; faultString: string; } export type ApiResponse = SuccessResponse | ErrorResponse | SoapFaultResponse;