import { type Customer, type Link } from './commonTypes';
/** Detalhes do cartão na resposta de consulta (pode ser Crédito ou Débito) */
interface QueryCardDetails {
    CardNumber: string;
    Holder?: string;
    ExpirationDate?: string;
    Brand: string;
    PaymentAccountReference?: string;
}
/** Detalhes do Boleto na resposta de consulta */
interface QueryBoletoDetails {
    Instructions?: string;
    ExpirationDate?: string;
    Demostrative?: string;
    Url?: string;
    BoletoNumber?: string;
    BarCodeNumber?: string;
    DigitableLine?: string;
    Assignor?: string;
    Address?: string;
    Identification?: string;
}
/** Detalhes do Pix na resposta de consulta */
interface QueryPixDetails {
    AcquirerOrderId?: string;
    Tid?: string;
    ProofOfSale?: string;
}
/**
 * Detalhes genéricos do objeto Payment na resposta da consulta por PaymentId.
 * Inclui campos comuns e um placeholder para detalhes específicos do tipo.
 */
export interface QueryPaymentDetails {
    ServiceTaxAmount?: number;
    Installments: number;
    Interest?: string;
    Capture?: boolean;
    Authenticate?: boolean;
    Recurrent?: boolean;
    RecurrentPaymentId?: string;
    ProofOfSale?: string;
    Tid?: string;
    AuthorizationCode?: string;
    PaymentId: string;
    Type: 'CreditCard' | 'DebitCard' | 'Pix' | 'Boleto' | string;
    Amount: number;
    CapturedAmount?: number;
    CapturedDate?: string;
    VoidedAmount?: number;
    VoidedDate?: string;
    Currency: string;
    Country: string;
    Provider?: string;
    /** Status da transação (0=Pendente, 1=Autorizado, 2=Pago, 3=Negado, 10=Cancelado, 11=Devolvido, 12=Pendente(Pix/Boleto), 13=Abortado, 20=Agendada Recorrência) */
    Status: number;
    Links?: Link[];
    ExtraDataCollection?: {
        Name: string;
        Value: string;
    }[];
    CreditCard?: QueryCardDetails;
    DebitCard?: QueryCardDetails;
    Boleto?: QueryBoletoDetails;
    Pix?: QueryPixDetails;
    Url?: string;
    BoletoNumber?: string;
    BarCodeNumber?: string;
    DigitableLine?: string;
    ExpirationDate?: string;
    AcquirerOrderId?: string;
    ReceivedDate?: string;
    ReasonCode?: string;
    ReasonMessage?: string;
}
/**
 * Resposta completa da consulta por PaymentId (GET /1/sales/{PaymentId}).
 */
export interface QueryByPaymentIdResponse {
    MerchantOrderId: string;
    Customer: Customer | null;
    Payment: QueryPaymentDetails;
}
interface MerchantOrderPaymentSummary {
    PaymentId: string;
    ReceivedDate: string;
}
/**
 * Resposta completa da consulta por MerchantOrderId (GET /1/sales).
 * Retorna uma lista de pagamentos associados ao pedido.
 */
export interface QueryByMerchantOrderIdResponse {
    /** Lista de pagamentos encontrados para o MerchantOrderId. */
    Payment: MerchantOrderPaymentSummary[];
}
export {};
