import { FabrixModel as Model } from '@fabrix/fabrix/dist/common';
import { SequelizeResolver } from '@fabrix/spool-sequelize';
export declare class SourceResolver extends SequelizeResolver {
    batch(options: any, batch: any): any;
    resolveByInstance(source: any, options?: {
        [key: string]: any;
    }): Promise<any>;
    resolveById(source: any, options?: {
        [key: string]: any;
    }): any;
    resolveByToken(source: any, options?: {
        [key: string]: any;
    }): any;
    resolveByNumber(source: any, options?: {
        [key: string]: any;
    }): any;
    resolveByString(source: any, options?: {
        [key: string]: any;
    }): any;
    resolve(source: any, options?: {
        [key: string]: any;
    }): any;
}
export declare class Source extends Model {
    static readonly resolver: typeof SourceResolver;
    static config(app: any, Sequelize: any): {
        options: {
            underscored: boolean;
            scopes: {
                live: {
                    where: {
                        live_mode: boolean;
                    };
                };
            };
            hooks: {
                beforeCreate: ((values: any, options: any) => void)[];
                afterCreate: ((values: any, options: any) => any)[];
                afterDestroy: ((values: any, options: any) => any)[];
            };
        };
    };
    static schema(app: any, Sequelize: any): {
        customer_id: {
            type: any;
            allowNull: boolean;
        };
        account_id: {
            type: any;
            allowNull: boolean;
        };
        token: {
            type: any;
            unique: boolean;
        };
        gateway: {
            type: any;
            defaultValue: string;
        };
        account_foreign_key: {
            type: any;
            allowNull: boolean;
        };
        account_foreign_id: {
            type: any;
            allowNull: boolean;
        };
        foreign_key: {
            type: any;
            allowNull: boolean;
        };
        foreign_id: {
            type: any;
            allowNull: boolean;
        };
        is_default: {
            type: any;
            defaultValue: boolean;
        };
        payment_details: {
            type: any;
            defaultValue: {};
        };
        live_mode: {
            type: any;
            defaultValue: any;
        };
    };
    static associate(models: any): void;
}
export interface Source {
    getBrand(): any;
    getType(): any;
    getLast4(): any;
    getExpiration(): any;
    notifyCustomer(preNotification: any, options: any): any;
    resolveCustomer(options: any): any;
    sendExpiredEmail(options: any): any;
    sendWillExpireEmail(options: any): any;
}
