import { DisputeStatus } from './Dispute';
import { IRefund } from '.';
export declare enum CaptureStrategy {
    automatic = "automatic",
    manual = "manual"
}
export declare enum PaymentMethodTypes {
    card = "card",
    bankAccount = "bankAccount",
    sezzle = "sezzle",
    plaid = "plaid",
    applePay = "applePay"
}
export declare enum PaymentTypes {
    card = "Card",
    bankAccount = "ACH",
    unknown = "Unknown"
}
export declare enum PaymentStatuses {
    pending = "pending",
    automatic = "automatic",
    authorized = "authorized",
    succeeded = "succeeded",
    failed = "failed",
    canceled = "canceled",
    disputed = "disputed",
    fully_refunded = "fully_refunded",
    partially_refunded = "partially_refunded"
}
export declare enum CurrencyTypes {
    usd = "usd",
    cad = "cad"
}
export interface IPaymentMethod {
    card?: Card;
    bank_account?: BankAccount;
}
export declare class PaymentMethod implements IPaymentMethod {
    card?: Card;
    bank_account?: BankAccount;
    constructor(paymentMethod: IPaymentMethod);
    get payersName(): string | null;
    get lastFourDigits(): string | null;
}
export type CardBrand = 'american_express' | 'diners_club' | 'discover' | 'jcb' | 'mastercard' | 'china_unionpay' | 'visa' | 'unknown';
export interface IBankAccount {
    id: string;
    acct_last_four: string;
    name: string;
    brand: string;
    token: string;
    created_at: string;
    updated_at: string;
}
export declare class BankAccount implements IBankAccount {
    id: string;
    acct_last_four: string;
    name: string;
    brand: string;
    token: string;
    created_at: string;
    updated_at: string;
    constructor(bankAccount: IBankAccount);
}
export interface ICard {
    id: string;
    acct_last_four: string;
    name: string;
    brand: CardBrand;
    token: string;
    created_at: string;
    updated_at: string;
}
export declare class Card implements ICard {
    id: string;
    acct_last_four: string;
    name: string;
    brand: CardBrand;
    token: string;
    created_at: string;
    updated_at: string;
    constructor(card: ICard);
}
export interface IPaymentDispute {
    amount_cents: number;
    created_at: string;
    currency: CurrencyTypes;
    gateway_ref_id: string;
    id: string;
    payment_id: string;
    reason: null;
    status: string;
    updated_at: string;
}
export interface IPayment {
    id: string;
    account_id: string;
    amount: number;
    amount_disputed: number;
    amount_refundable: number;
    amount_refunded: number;
    amount_returned?: number;
    balance: number;
    captured: boolean;
    capture_strategy: CaptureStrategy;
    currency: CurrencyTypes;
    description: string;
    disputed: boolean;
    disputes: IPaymentDispute[];
    error_code: string | null;
    error_description: string | null;
    expedited?: boolean;
    fee_amount: number;
    is_test: boolean;
    metadata: Object | null;
    payment_method: IPaymentMethod;
    payment_intent_id?: string | null;
    refunded: boolean;
    status: PaymentStatuses;
    created_at: string;
    updated_at: string;
    financial_transaction_id: string;
    returned: boolean;
    application_fee: IApplicationFee;
    application_fee_rate_id?: string;
    refunds: IRefund[];
    transaction_hold?: null;
    statement_descriptor?: string;
}
export declare class Payment implements IPayment {
    id: string;
    account_id: string;
    amount: number;
    amount_disputed: number;
    amount_refundable: number;
    amount_refunded: number;
    balance: number;
    captured: boolean;
    capture_strategy: CaptureStrategy;
    currency: CurrencyTypes;
    description: string;
    disputed: boolean;
    disputes: IPaymentDispute[];
    error_code: string | null;
    error_description: string | null;
    expedited: boolean;
    fee_amount: number;
    is_test: boolean;
    metadata: Object | null;
    payment_method: PaymentMethod;
    payment_intent_id: string | null;
    refunded: boolean;
    status: PaymentStatuses;
    created_at: string;
    updated_at: string;
    statement_descriptor?: string;
    financial_transaction_id: string;
    returned: boolean;
    application_fee: IApplicationFee;
    refunds: IRefund[];
    transaction_hold: null;
    constructor(payment: IPayment);
    get disputedStatus(): DisputeStatus | null;
    get payment_type(): PaymentTypes;
    get payers_name(): string | null;
    get last_four_digits(): string | null;
    formattedPaymentAmount(amount: number): string;
}
export interface IApplicationFee {
    id: string;
    amount: number;
    currency: CurrencyTypes;
    created_at: string;
    updated_at: string;
}
export interface PaymentsQueryParams {
    payment_id?: string;
    terminal_id?: string;
    payment_status?: PaymentStatuses;
    payment_mode?: string;
    checkout_id?: string;
    account_holder?: string;
    created_after?: string;
    created_before?: string;
}
