/**
 * Valtech Donation / Support — tipos.
 *
 * Nota legal importante: el dinero recibido por una entidad con fines de lucro
 * NO es una "donación" deducible de impuestos — es ingreso afecto. Por eso la
 * UI debe usar lenguaje de "aporte voluntario / apoyo", nunca "donación" en su
 * sentido jurídico. Ver `docs/` (pendiente) y la vista Support del consumer.
 */
/**
 * Métodos de aporte soportados.
 * - `ads`    — el usuario ve publicidad rewarded (opt-in) para apoyar.
 * - `coffee` — pago único vía proveedor externo (Buy Me a Coffee / Ko-fi).
 * - `bank`   — transferencia bancaria directa (se muestran los datos).
 */
export type DonationMethod = 'ads' | 'coffee' | 'bank';
/** Proveedor del método "café". El merchant of record es el proveedor. */
export type CoffeeProvider = 'buymeacoffee' | 'kofi' | 'custom';
/** Proveedor de publicidad rewarded. */
export type AdsProvider = 'admob' | 'adsense' | 'custom';
/**
 * Datos de una cuenta bancaria para transferencia. Pensado para ser
 * por-país (el modelo factory es 1 producto = 1 dominio, con datos
 * fiscales/bancarios distintos por mercado).
 */
export interface BankAccount {
    /** ISO country code — ej. 'CL', 'AR', 'MX'. */
    country: string;
    /** Nombre del banco. */
    bank: string;
    /** Tipo de cuenta — ej. 'Cuenta Corriente', 'Vista', 'Checking'. */
    accountType: string;
    /** Número de cuenta / IBAN / CBU. */
    number: string;
    /** Identificador fiscal del titular — RUT, CUIT, RFC, etc. */
    taxId: string;
    /** Nombre del titular de la cuenta. */
    holder: string;
    /** Email para enviar comprobante de transferencia. */
    email?: string;
    /** Moneda — ej. 'CLP', 'USD'. */
    currency?: string;
}
/** Config del método "café". */
export interface CoffeeConfig {
    provider: CoffeeProvider;
    /** URL pública del perfil (BMC/Ko-fi) o checkout custom. */
    url: string;
}
/** Config del método "ads" (rewarded, opt-in). */
export interface AdsConfig {
    provider: AdsProvider;
    /** ID de la unidad de anuncio rewarded. */
    rewardedUnitId?: string;
}
/**
 * Configuración del feature Donation/Support.
 *
 * Cada app del factory declara qué métodos habilita. Una vista heredada
 * (`val-*` page) renderiza solo los métodos en `methods`.
 */
export interface ValtechDonationConfig {
    /** AppID — para tracking de intents (ej. analytics). */
    appId?: string;
    /** Métodos habilitados, en orden de aparición en la UI. */
    methods: DonationMethod[];
    /** Config del método café — requerido si `methods` incluye `'coffee'`. */
    coffee?: CoffeeConfig;
    /** Cuentas bancarias — requerido si `methods` incluye `'bank'`. */
    bank?: {
        accounts: BankAccount[];
    };
    /** Config de ads — requerido si `methods` incluye `'ads'`. */
    ads?: AdsConfig;
}
/**
 * Resultado de un intento de aporte. Devuelto por los métodos del servicio
 * de forma descriptiva (no se lanzan excepciones para flujos esperables).
 */
export interface DonationActionResult {
    method: DonationMethod;
    /** `true` si la acción se inició correctamente. */
    ok: boolean;
    /** Motivo cuando `ok` es `false` — ej. 'not-configured', 'not-supported'. */
    reason?: string;
}
