import { FabrixModel as Model } from '@fabrix/fabrix/dist/common';
import { SequelizeResolver } from '@fabrix/spool-sequelize';
export declare class FulfillmentResolver extends SequelizeResolver {
    findByIdDefault(id: any, options?: {}): any;
    findAndCountDefault(options?: {}): any;
    resolveByInstance(cart: any, options?: {
        [key: string]: any;
    }): Promise<any>;
    resolveById(cart: any, options?: {
        [key: string]: any;
    }): any;
    resolveByToken(cart: any, options?: {
        [key: string]: any;
    }): any;
    resolveByNumber(cart: any, options?: {
        [key: string]: any;
    }): any;
    resolveByString(cart: any, options?: {
        [key: string]: any;
    }): any;
    resolve(cart: any, options?: {
        [key: string]: any;
    }): any;
}
export declare class Fulfillment extends Model {
    static readonly resolver: typeof FulfillmentResolver;
    static config(app: any, Sequelize: any): {
        options: {
            underscored: boolean;
            enums: {
                FULFILLMENT_STATUS: {
                    PENDING: string;
                    FULFILLED: string;
                    SENT: string;
                    NONE: string;
                    PARTIAL: string;
                    CANCELLED: string;
                };
                FULFILLMENT_SERVICE: {
                    MANUAL: string;
                };
            };
            scopes: {
                live: {
                    where: {
                        live_mode: boolean;
                    };
                };
                none: {
                    where: {
                        status: string;
                    };
                };
                pending: {
                    where: {
                        status: string;
                    };
                };
                sent: {
                    where: {
                        status: string;
                    };
                };
                partial: {
                    where: {
                        status: string;
                    };
                };
                fulfilled: {
                    where: {
                        status: string;
                    };
                };
                cancelled: {
                    where: {
                        status: string;
                    };
                };
            };
            hooks: {
                beforeCreate: ((fulfillment: any, options: any) => any)[];
                beforeUpdate: ((fulfillment: any, options: any) => any)[];
                afterCreate: ((fulfillment: any, options: any) => any)[];
                afterUpdate: ((fulfillment: any, options: any) => any)[];
            };
        };
    };
    static schema(app: any, Sequelize: any): {
        order_id: {
            type: any;
            allowNull: boolean;
        };
        receipt: {
            type: any;
        };
        status: {
            type: any;
            values: string[];
            defaultValue: string;
        };
        total_items: {
            type: any;
            defaultValue: number;
        };
        total_fulfilled: {
            type: any;
            defaultValue: number;
        };
        total_sent_to_fulfillment: {
            type: any;
            defaultValue: number;
        };
        total_cancelled: {
            type: any;
            defaultValue: number;
        };
        total_pending_fulfillments: {
            type: any;
            defaultValue: number;
        };
        status_url: {
            type: any;
        };
        has_shipping: {
            type: any;
            defaultValue: boolean;
        };
        service: {
            type: any;
            defaultValue: string;
        };
        tracking_company: {
            type: any;
        };
        tracking_number: {
            type: any;
        };
        extras: {
            type: any;
            defaultValue: {};
        };
        live_mode: {
            type: any;
            defaultValue: any;
        };
        sent_at: {
            type: any;
        };
        fulfilled_at: {
            type: any;
        };
        cancelled_at: {
            type: any;
        };
    };
    static associate(models: any): void;
}
export interface Fulfillment {
    pending(): any;
    none(): any;
    partial(): any;
    sent(): any;
    fulfilled(): any;
    cancelled(): any;
    fulfillUpdate(data: any, options: any): any;
    reconcileFulfillmentStatus(options: any): any;
    resolveFulfillmentStatus(options: any): any;
    resolveOrderItems(options: any): any;
    saveFulfillmentStatus(options: any): any;
    setFulfillmentStatus(options: any): any;
}
