/**
 * Representa o objeto CardOnFile, usado para indicar
 * o propósito de armazenamento do cartão.
 */
export interface ZeroAuthCardOnFile {
    /**
     * 'First' se o cartão foi armazenado e é seu primeiro uso.
     * 'Used' se o cartão já foi utilizado anteriormente.
     */
    Usage: 'First' | 'Used';
    /**
     * Indica o propósito de armazenamento se Usage for 'Used'.
     * 'Recurring': Compra recorrente programada.
     * 'Unscheduled': Compra recorrente sem agendamento.
     * 'Installments': Parcelamento através da recorrência.
     */
    Reason?: 'Recurring' | 'Unscheduled' | 'Installments';
}
/**
 * Payload para a requisição de validação de cartão padrão (Zero Auth).
 */
export interface ZeroAuthCardRequest {
    /**
     * Tipo do cartão: 'CreditCard' ou 'DebitCard'.
     */
    CardType: 'CreditCard' | 'DebitCard';
    /**
     * Número do cartão.
     */
    CardNumber: string;
    /**
     * Nome do portador como impresso no cartão.
     */
    Holder: string;
    /**
     * Data de validade no formato MM/YYYY.
     */
    ExpirationDate: string;
    /**
     * Código de segurança (CVV).
     */
    SecurityCode: string;
    /**
     * Bandeira do cartão: 'Visa', 'Master', 'Elo', etc.
     * (Verificar documentação Cielo para lista completa suportada).
     */
    Brand: string;
    /**
     * Opcional: Token do cartão previamente gerado pela API E-commerce Cielo.
     * Se informado, os outros dados do cartão (exceto SecurityCode talvez) podem não ser necessários.
     */
    CardToken?: string;
    /**
     * Opcional: Informações sobre o uso do cartão armazenado.
     */
    CardOnFile?: ZeroAuthCardOnFile;
}
/**
 * Detalhes do cartão dentro da requisição de e-wallet.
 */
export interface ZeroAuthEWalletCard {
    CardType: 'CreditCard' | 'DebitCard';
    CardNumber: string;
    Holder: string;
    ExpirationDate: string;
    SecurityCode: string;
    Brand: string;
    CardOnFile?: ZeroAuthCardOnFile;
}
/**
 * Detalhes da carteira digital (e-wallet).
 */
export interface ZeroAuthWallet {
    /**
     * Tipo da e-wallet: 'ApplePay', 'SamsungPay', 'GooglePay'.
     */
    Type: 'ApplePay' | 'SamsungPay' | 'GooglePay';
    /**
     * Campo de validação retornado pela e-wallet (Cryptogram).
     */
    Cavv: string;
    /**
     * Electronic Commerce Indicator.
     */
    Eci: string;
}
/**
 * Payload completo para a requisição de validação de cartão de e-wallet.
 */
export interface ZeroAuthEWalletRequest {
    Card: ZeroAuthEWalletCard;
    Wallet: ZeroAuthWallet;
}
/**
 * Representa uma resposta de sucesso da validação (Cartão Válido).
 * Baseado no schema "Cartão válido" / "Positiva - cartão válido".
 */
export interface ZeroAuthSuccessResponse {
    Valid: true;
    ReturnCode: string;
    ReturnMessage: string;
    IssuerTransactionId?: string;
}
/**
 * Representa uma resposta de falha na validação (Cartão Inválido).
 * Baseado no schema "Cartão inválido" / "Negativa - cartão inválido".
 */
export interface ZeroAuthInvalidCardResponse {
    Valid: false;
    ReturnCode: string;
    ReturnMessage: string;
    IssuerTransactionId?: string;
}
/**
 * Representa uma resposta de erro específico retornado com status 200 OK.
 * Baseado nos schemas "Bandeira inválida", "Restrição cadastral".
 */
export interface ZeroAuthInlineErrorResponse {
    Valid?: false;
    Code: number;
    Message: string;
}
/**
 * Tipo unificado para as possíveis respostas de sucesso (200 OK) do Zero Auth.
 * Usa a união discriminated union baseada na presença/valor de 'Valid' ou 'Code'.
 */
export type ZeroAuthResponse = ZeroAuthSuccessResponse | ZeroAuthInvalidCardResponse | ZeroAuthInlineErrorResponse;
/**
 * Item individual dentro da resposta de erro 400 (Bad Request).
 */
export interface ZeroAuthBadRequestErrorItem {
    ReturnCode: number;
    ReturnMessage: string;
}
/**
 * Resposta completa para um erro 400 (Bad Request), que é um array de itens.
 */
export type ZeroAuthBadRequestResponse = ZeroAuthBadRequestErrorItem[];
