import { aM as Money, ab as CurrencyCode } from './product-DXhjLQ_w.js';

type PaymentStatus = "initialized" | "pending" | "processing" | "authorized" | "captured" | "failed" | "cancelled" | "refunded" | "unknown" | "voided" | "requires_action" | "abandoned" | "reversed" | "disputed" | "refund_pending";
type PaymentProvider = "stripe" | "paystack" | "cellulant" | "mtnmomo" | "offline" | "mtn" | "vodafone" | "airtel" | "cash" | "manual";
type PaymentMethodType = "card" | "bank_transfer" | "cash" | {
    mobile_money: {
        provider: string;
        phone_number: string;
    };
} | {
    ussd: {
        provider: string;
    };
} | {
    bank: {
        bank_code: string;
        account_number: string;
        account_name?: string;
        bank_name?: string;
    };
} | {
    qr: {
        provider: string;
    };
} | {
    wallet: {
        provider: string;
    };
} | {
    crypto: {
        currency: string;
    };
} | {
    custom: string;
};
interface AddressAuthorizationData {
    address: string;
    city: string;
    state: string;
    zip_code: string;
}
type AuthorizationType = "otp" | "pin" | "phone" | "birthday" | "address" | {
    address: AddressAuthorizationData;
};
type PaymentProcessingState = "initial" | "preparing" | "processing" | "verifying" | "awaiting_authorization" | "success" | "error" | "timeout";
interface PaymentMethod {
    type: PaymentMethodType;
    provider?: string;
    phone_number?: string;
    card_last_four?: string;
    custom_value?: string;
}
interface Payment {
    id: string;
    order_id: string;
    business_id: string;
    amount: Money;
    currency: CurrencyCode;
    payment_method: PaymentMethod;
    status: PaymentStatus;
    provider: PaymentProvider;
    provider_reference?: string;
    failure_reason?: string;
    created_at: string;
    updated_at: string;
}
interface InitializePaymentResult {
    payment_id: string;
    status: PaymentStatus;
    redirect_url?: string;
    authorization_url?: string;
    reference: string;
    provider: PaymentProvider;
}
interface PaymentResponse {
    method: string;
    provider: string;
    requires_action: boolean;
    public_key?: string;
    client_secret?: string;
    access_code?: string;
    redirect_url?: string;
    transaction_id?: string;
    order_id?: string;
    reference?: string;
    metadata?: Record<string, unknown>;
    instructions?: string;
    display_text?: string;
    requires_authorization?: boolean;
    authorization_type?: AuthorizationType;
    provider_payment_id?: string;
}
interface PaymentStatusResponse {
    status: PaymentStatus;
    paid: boolean;
    amount: Money;
    currency: string;
    reference?: string;
    message: string;
}
interface PaymentErrorDetails {
    code: string;
    message: string;
    recoverable: boolean;
    technical?: string;
}
interface SubmitAuthorizationInput {
    reference: string;
    auth_type: AuthorizationType;
    value: string;
}

export type { AddressAuthorizationData as A, InitializePaymentResult as I, Payment as P, SubmitAuthorizationInput as S, AuthorizationType as a, PaymentErrorDetails as b, PaymentMethod as c, PaymentMethodType as d, PaymentProcessingState as e, PaymentProvider as f, PaymentResponse as g, PaymentStatus as h, PaymentStatusResponse as i };
