import type { ExecutionMethod, PaymentMethod, PaymentProvider } from "./enums.js";
export type PaymentProviderInputValue = string | number | boolean | null;
export type PaymentProviderInputMap = Record<string, PaymentProviderInputValue>;
/**
 * Déclare quels moyens de paiement un provider supporte,
 * et pour chacun, quelles méthodes d'exécution sont disponibles.
 */
export interface ProviderSupportedMethodDto {
    method: PaymentMethod;
    executionMethods: ExecutionMethod[];
}
/**
 * @deprecated Utiliser supportedMethods à la place
 */
export interface PaymentProviderCapabilitiesDto {
    supportsPaymentSearch?: boolean;
    supportsRefunds?: boolean;
    supportsReaderFlow?: boolean;
}
export interface PaymentProviderFieldOptionDto {
    label: string;
    value: string;
}
export interface PaymentProviderFieldDefinitionDto {
    key: string;
    label: string;
    type: "text" | "password" | "boolean" | "select";
    required?: boolean;
    secret?: boolean;
    placeholder?: string;
    description?: string;
    options?: PaymentProviderFieldOptionDto[];
}
export interface PaymentProviderDefinitionDto {
    provider: PaymentProvider;
    label: string;
    description?: string;
    /** @deprecated Utiliser supportedMethods */
    capabilities?: PaymentProviderCapabilitiesDto;
    /** Méthodes de paiement supportées avec leurs méthodes d'exécution */
    supportedMethods: ProviderSupportedMethodDto[];
    fields: PaymentProviderFieldDefinitionDto[];
}
/**
 * Moyens de paiement globaux ne nécessitant aucun provider.
 * Toujours disponibles.
 */
export declare const GLOBAL_PAYMENT_METHODS: ProviderSupportedMethodDto[];
/**
 * Méthodes de paiement qui sont techniquement distinctes mais équivalentes
 * pour le vendeur/caissier. Le terminal (reader/tap to pay) gère tout automatiquement.
 *
 * - CARD = paiement bancaire (carte physique / sans contact)
 * - APPLE_PAY = via Apple Pay (NFC)
 * - GOOGLE_PAY = via Google Pay (NFC)
 *
 * Côté config et POS, on expose uniquement "CARD".
 * Les enums APPLE_PAY/GOOGLE_PAY restent pour le logging post-transaction
 * (le provider retourne le type réel après paiement).
 */
export declare const CARD_GROUP_METHODS: PaymentMethod[];
/**
 * Labels lisibles pour les ExecutionMethods
 */
export declare const EXECUTION_METHOD_LABELS: Record<ExecutionMethod, string>;
/**
 * Labels lisibles pour les PaymentMethods
 */
export declare const PAYMENT_METHOD_LABELS: Record<PaymentMethod, string>;
export declare const PAYMENT_PROVIDER_DEFINITIONS: Record<PaymentProvider, PaymentProviderDefinitionDto>;
