/**
 * @author Jackiê Macklein
 * @company Onside tecnologia/Nettz
 * @copyright Todos direitos reservados.
 * @description Tipos para integração com API de Transação Remota da EvoluServices.
 * Referência: https://evoluservices.github.io/evoluservices-developer/docs/remote-transaction/intro-remote-transaction
 */
/** Desenvolvimento: https://sandbox.evoluservices.com */
export declare const EVOPAGAMENTOS_DEFAULT_BASE_URL = "https://sandbox.evoluservices.com";
/** Produção: https://api.evoluservices.com */
export declare const EVOPAGAMENTOS_PRODUCTION_BASE_URL = "https://api.evoluservices.com";
/** Strings oficiais de bandeira documentadas pela EvoluServices. */
export declare const EvoPaymentBrand: {
    readonly VISA_CREDITO: "VISA_CREDITO";
    readonly VISA_ELECTRON: "VISA_ELECTRON";
    readonly MASTERCARD: "MASTERCARD";
    readonly MAESTRO: "MAESTRO";
    readonly AMEX: "AMEX";
    readonly DINERS: "DINERS";
    readonly HIPERCARD: "HIPERCARD";
    readonly AURA: "AURA";
    readonly SOROCRED: "SOROCRED";
    readonly ELO: "ELO";
    readonly SICREDI: "SICREDI";
    readonly ELO_DEBITO: "ELO_DEBITO";
    readonly HIPER: "HIPER";
    readonly AGIPLAN: "AGIPLAN";
    readonly BANESCARD: "BANESCARD";
    readonly CREDZ: "CREDZ";
    readonly JCB: "JCB";
    readonly CABAL: "CABAL";
    readonly MAIS: "MAIS";
};
export type EvoPaymentBrandCode = (typeof EvoPaymentBrand)[keyof typeof EvoPaymentBrand];
export declare const EvoTerminalStatus: {
    readonly ONLINE: "ONLINE";
    readonly ONLINE_DIFFERENT_ACCOUNT: "ONLINE_DIFFERENT_ACCOUNT";
    readonly OFFLINE: "OFFLINE";
    readonly UNKNOWN: "UNKNOWN";
};
export type EvoTerminalStatusCode = (typeof EvoTerminalStatus)[keyof typeof EvoTerminalStatus];
export declare const EvoTransactionStatus: {
    readonly APPROVED: "APPROVED";
    readonly COMPLETE: "COMPLETE";
    readonly CANCELLED: "CANCELLED";
    readonly PRE_APPROVED: "PRE_APPROVED";
    readonly INCOMPLETE: "INCOMPLETE";
    readonly ABORTED: "ABORTED";
    readonly ABORTED_BY_MERCHANT: "ABORTED_BY_MERCHANT";
    readonly PARTIALLY_CANCELLED: "PARTIALLY_CANCELLED";
};
export type EvoTransactionStatusCode = (typeof EvoTransactionStatus)[keyof typeof EvoTransactionStatus];
export interface EvoPagamentosClientConfig {
    /**
     * Base da API, sem barra final.
     * @default https://sandbox.evoluservices.com
     */
    baseUrl?: string;
    /** Timeout em ms para cada requisição HTTP. @default 30000 */
    timeoutMs?: number;
    /** `fetch` customizado (testes ou proxy). */
    fetchImpl?: typeof fetch;
    /**
     * Se `true`, emite logs em `console` com prefixo `[EvoPagamentos]` (sem Bearer, API key ou corpo completo sensível).
     * @default false
     */
    debug?: boolean;
}
export interface EvoAuthRequest {
    username: string;
    apiKey: string;
}
export interface EvoAuthResponse {
    Bearer: string;
}
export interface EvoTerminalRecord {
    macAddress: string;
    computerName: string;
    terminalId: string;
    terminalStatus: EvoTerminalStatusCode | string;
}
export interface EvoSplitInput {
    code: string;
    value: string;
    chargeFees?: boolean;
}
export interface EvoCreateRemoteTransactionData {
    merchantId: string;
    terminalId?: string;
    value: string;
    installments?: number;
    paymentBrand?: EvoPaymentBrandCode | string;
    callbackUrl?: string;
    clientName?: string;
    clientDocument?: string;
    installmentsCanChange?: boolean;
    clientEmail?: string;
    splits?: EvoSplitInput[];
}
export interface EvoCreateRemoteTransactionBody {
    transaction: EvoCreateRemoteTransactionData;
}
export interface EvoCreateRemoteTransactionResponse {
    success: string;
    error: string;
    transactionId?: string;
}
export interface EvoDeleteRemoteTransactionResponse {
    success: string;
    error?: string;
}
export interface EvoCallbackPaymentEntry {
    status: string;
    value: number;
    number: number;
    date: string;
    recipientName: string;
    recipientDocument: string;
}
export interface EvoCallbackPayload {
    remoteTransactionId: string;
    transactionNumber?: string;
    status: EvoTransactionStatusCode | string;
    merchantId: string | number;
    value: string;
    paymentBrand?: string;
    terminalId?: string;
    payments?: EvoCallbackPaymentEntry[];
    paymentQuantity?: string | number;
    splits?: EvoCallbackPaymentEntry[];
    clientName?: string;
    clientDocument?: string;
    NSU?: string | number;
    authorizationNumber?: string | number;
    orderUuid?: string;
}
