import { FabrixModel as Model } from '@fabrix/fabrix/dist/common';
import { SequelizeResolver } from '@fabrix/spool-sequelize';
export declare class TransactionResolver extends SequelizeResolver {
    batch(options: any, batch: any): any;
    resolveByInstance(transaction: any, options?: {
        [key: string]: any;
    }): Promise<any>;
    resolveById(transaction: any, options?: {
        [key: string]: any;
    }): any;
    resolveByToken(transaction: any, options?: {
        [key: string]: any;
    }): any;
    resolveByNumber(transaction: any, options?: {
        [key: string]: any;
    }): any;
    resolveByString(transaction: any, options?: {
        [key: string]: any;
    }): any;
    resolve(transaction: any, options?: {
        [key: string]: any;
    }): any;
}
export declare class Transaction extends Model {
    static readonly resolver: typeof TransactionResolver;
    static config(app: any, Sequelize: any): {
        options: {
            underscored: boolean;
            enums: {
                TRANSACTION_ERRORS: {
                    INCORRECT_NUMBER: string;
                    INVALID_NUMBER: string;
                    INVALID_EXPIRY_DATE: string;
                    INVALID_CVC: string;
                    EXPIRED_CARD: string;
                    INCORRECT_CVC: string;
                    INCORRECT_ZIP: string;
                    INCORRECT_ADDRESS: string;
                    CARD_DECLINED: string;
                    PROCESSING_ERROR: string;
                    CALL_ISSUER: string;
                    PICK_UP_CARD: string;
                };
                TRANSACTION_STATUS: {
                    PENDING: string;
                    FAILURE: string;
                    SUCCESS: string;
                    ERROR: string;
                    CANCELLED: string;
                };
                TRANSACTION_KIND: {
                    AUTHORIZE: string;
                    CAPTURE: string;
                    SALE: string;
                    VOID: string;
                    REFUND: string;
                };
                TRANSACTION_DEFAULTS: {
                    CURRENCY: string;
                    SOURCE_NAME: string;
                };
            };
            description: string;
            scopes: {
                live: {
                    where: {
                        live_mode: boolean;
                    };
                };
                authorized: {
                    where: {
                        kind: string;
                        status: string;
                    };
                };
                captured: {
                    where: {
                        kind: string[];
                        status: string;
                    };
                };
                voided: {
                    where: {
                        kind: string;
                        status: string;
                    };
                };
                refunded: {
                    where: {
                        kind: string;
                        status: string;
                    };
                };
            };
            hooks: {
                beforeCreate: (transaction: any, options: any) => void;
                afterCreate: (transaction: any, options: any) => any;
                afterUpdate: (transaction: any, options: any) => any;
            };
        };
    };
    static schema(app: any, Sequelize: any): {
        token: {
            type: any;
            unique: boolean;
        };
        customer_id: {
            type: any;
            allowNull: boolean;
        };
        order_id: {
            type: any;
            allowNull: boolean;
        };
        source_id: {
            type: any;
            allowNull: boolean;
        };
        account_id: {
            type: any;
            allowNull: boolean;
        };
        foreign_key: {
            type: any;
        };
        foreign_id: {
            type: any;
        };
        amount: {
            type: any;
            defaultValue: number;
        };
        amount_refunded: {
            type: any;
            defaultValue: number;
        };
        authorization: {
            type: any;
        };
        authorization_exp: {
            type: any;
            defaultValue: string;
        };
        device_id: {
            type: any;
        };
        gateway: {
            type: any;
        };
        source_name: {
            type: any;
            defaultValue: string;
        };
        payment_details: {
            type: any;
            defaultValue: {};
        };
        kind: {
            type: any;
            values: string[];
            allowNull: boolean;
        };
        receipt: {
            type: any;
            defaultValue: {};
        };
        error_code: {
            type: any;
            values: string[];
        };
        status: {
            type: any;
            values: string[];
            defaultValue: string;
        };
        currency: {
            type: any;
            defaultValue: any;
        };
        description: {
            type: any;
        };
        retry_at: {
            type: any;
        };
        total_retry_attempts: {
            type: any;
            defaultValue: number;
        };
        shop_id: {
            type: any;
        };
        cancelled_at: {
            type: any;
        };
        live_mode: {
            type: any;
            defaultValue: any;
        };
    };
    static associate(models: any): void;
}
export interface Transaction {
    retry(): any;
    cancel(): any;
    resolveOrder(options: any): any;
    reconcileOrderFinancialStatus(options: any): any;
}
