import { FabrixModel as Model } from '@fabrix/fabrix/dist/common';
import { SequelizeResolver } from '@fabrix/spool-sequelize';
export declare class OrderResolver extends SequelizeResolver {
    findByIdDefault(id: any, options?: {}): any;
    findByTokenDefault(token: any, options?: {}): any;
    findAndCountDefault(options?: {}): any;
    resolveByInstance(order: any, options?: {
        [key: string]: any;
    }): Promise<any>;
    resolveById(order: any, options?: {
        [key: string]: any;
    }): any;
    resolveByToken(order: any, options?: {
        [key: string]: any;
    }): any;
    resolveByNumber(order: any, options?: {
        [key: string]: any;
    }): any;
    resolveByString(order: any, options?: {
        [key: string]: any;
    }): any;
    resolve(order: any, options?: {
        [key: string]: any;
    }): any;
}
export declare class Order extends Model {
    static readonly resolver: typeof OrderResolver;
    static config(app: any, Sequelize: any): {
        options: {
            autoSave: boolean;
            underscored: boolean;
            enums: {
                ORDER_STATUS: {
                    OPEN: string;
                    CLOSED: string;
                    CANCELLED: string;
                    DRAFT: string;
                };
                ORDER_CANCEL: {
                    CUSTOMER: string;
                    FRAUD: string;
                    INVENTORY: string;
                    OTHER: string;
                };
                ORDER_FINANCIAL: {
                    CANCELLED: string;
                    PENDING: string;
                    AUTHORIZED: string;
                    PARTIALLY_PAID: string;
                    PAID: string;
                    PARTIALLY_REFUNDED: string;
                    REFUNDED: string;
                    VOIDED: string;
                };
                ORDER_FULFILLMENT: {
                    PENDING: string;
                    FULFILLED: string;
                    SENT: string;
                    NONE: string;
                    PARTIAL: string;
                    CANCELLED: string;
                };
                ORDER_FULFILLMENT_KIND: {
                    IMMEDIATE: string;
                    MANUAL: string;
                };
                PAYMENT_KIND: {
                    IMMEDIATE: string;
                    MANUAL: string;
                };
                PAYMENT_PROCESSING_METHOD: {
                    CHECKOUT: string;
                    SUBSCRIPTION: string;
                    DIRECT: string;
                    MANUAL: string;
                    OFFSITE: string;
                    EXPRESS: 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;
                };
                FULFILLMENT_STATUS: {
                    PENDING: string;
                    FULFILLED: string;
                    SENT: string;
                    NONE: string;
                    PARTIAL: string;
                    CANCELLED: string;
                };
            };
            scopes: {
                live: {
                    where: {
                        live_mode: boolean;
                    };
                };
                open: {
                    where: {
                        status: string;
                    };
                };
                closed: {
                    where: {
                        status: string;
                    };
                };
                cancelled: {
                    where: {
                        status: string;
                    };
                };
            };
            indexes: {
                fields: string[];
                using: string;
                operator: string;
            }[];
            hooks: {
                beforeCreate: ((order: any, options: any) => void)[];
                afterCreate: ((order: any, options: any) => any)[];
                beforeUpdate: ((order: any, options: any) => void)[];
                afterUpdate: ((order: any, options: any) => any)[];
            };
        };
    };
    static schema(app: any, Sequelize: any): {
        token: {
            type: any;
            unique: boolean;
        };
        cart_token: {
            type: any;
        };
        subscription_token: {
            type: any;
        };
        customer_id: {
            type: any;
            allowNull: boolean;
        };
        shop_id: {
            type: any;
        };
        user_id: {
            type: any;
        };
        has_shipping: {
            type: any;
            defaultValue: boolean;
        };
        has_taxes: {
            type: any;
            defaultValue: boolean;
        };
        has_subscription: {
            type: any;
            defaultValue: boolean;
        };
        total_items: {
            type: any;
            defaultValue: number;
        };
        billing_address: {
            type: any;
            defaultValue: {};
        };
        shipping_address: {
            type: any;
            defaultValue: {};
        };
        buyer_accepts_marketing: {
            type: any;
            defaultValue: boolean;
        };
        cancel_reason: {
            type: any;
            values: string[];
        };
        cancelled_at: {
            type: any;
        };
        client_details: {
            type: any;
            defaultValue: {
                'host': any;
                'accept_language': any;
                'browser_height': any;
                'browser_ip': string;
                'browser_width': any;
                'session_hash': any;
                'user_agent': any;
                'latitude': any;
                'longitude': any;
            };
        };
        status: {
            type: any;
            values: string[];
            defaultValue: string;
        };
        closed_at: {
            type: any;
        };
        currency: {
            type: any;
            defaultValue: any;
        };
        email: {
            type: any;
            validate: {
                isEmail: boolean;
            };
        };
        phone: {
            type: any;
        };
        payment_kind: {
            type: any;
            values: string[];
            defaultValue: any;
        };
        financial_status: {
            type: any;
            values: string[];
            defaultValue: string;
        };
        transaction_kind: {
            type: any;
            values: string[];
            defaultValue: any;
        };
        fulfillment_status: {
            type: any;
            values: string[];
            defaultValue: string;
        };
        fulfillment_kind: {
            type: any;
            values: string[];
            defaultValue: any;
        };
        landing_site: {
            type: any;
        };
        location_id: {
            type: any;
        };
        name: {
            type: any;
        };
        number: {
            type: any;
        };
        note: {
            type: any;
        };
        note_attributes: {
            type: any;
            defaultValue: {};
        };
        payment_gateway_names: {
            type: any;
            defaultValue: any[];
        };
        processed_at: {
            type: any;
        };
        processing_method: {
            type: any;
            values: string[];
        };
        referring_site: {
            type: any;
        };
        shipping_lines: {
            type: any;
            defaultValue: any[];
        };
        discounted_lines: {
            type: any;
            defaultValue: any[];
        };
        coupon_lines: {
            type: any;
            defaultValue: any[];
        };
        pricing_overrides: {
            type: any;
            defaultValue: any[];
        };
        pricing_override_id: {
            type: any;
        };
        total_overrides: {
            type: any;
            defaultValue: number;
        };
        source_name: {
            type: any;
            defaultValue: string;
        };
        subtotal_price: {
            type: any;
            defaultValue: number;
        };
        tax_lines: {
            type: any;
            defaultValue: any[];
        };
        refunded_lines: {
            type: any;
            defaultValue: any[];
        };
        taxes_included: {
            type: any;
        };
        total_discounts: {
            type: any;
            defaultValue: number;
        };
        total_coupons: {
            type: any;
            defaultValue: number;
        };
        total_shipping: {
            type: any;
            defaultValue: number;
        };
        total_due: {
            type: any;
            defaultValue: number;
        };
        total_refunds: {
            type: any;
            defaultValue: number;
        };
        total_authorized: {
            type: any;
            defaultValue: number;
        };
        total_captured: {
            type: any;
            defaultValue: number;
        };
        total_voided: {
            type: any;
            defaultValue: number;
        };
        total_cancelled: {
            type: any;
            defaultValue: number;
        };
        total_pending: {
            type: any;
            defaultValue: number;
        };
        total_line_items_price: {
            type: any;
            defaultValue: number;
        };
        total_price: {
            type: any;
            defaultValue: number;
        };
        total_tax: {
            type: any;
            defaultValue: number;
        };
        total_weight: {
            type: any;
            defaultValue: number;
        };
        total_fulfilled_fulfillments: {
            type: any;
            defaultValue: number;
        };
        total_partial_fulfillments: {
            type: any;
            defaultValue: number;
        };
        total_sent_fulfillments: {
            type: any;
            defaultValue: number;
        };
        total_cancelled_fulfillments: {
            type: any;
            defaultValue: number;
        };
        total_pending_fulfillments: {
            type: any;
            defaultValue: number;
        };
        ip: {
            type: any;
        };
        create_ip: {
            type: any;
        };
        update_ip: {
            type: any;
        };
        live_mode: {
            type: any;
            defaultValue: any;
        };
    };
    static associate(models: any): void;
}
export interface Order {
    toJSON(): any;
    cancel(data: any): any;
    close(): any;
    logDiscountUsage(options: any): any;
    notifyCustomer(preNotification: any, options: any): any;
    addShipping(shipping: any, options: any): any;
    removeShipping(shipping: any, options: any): any;
    addTaxes(taxes: any, options: any): any;
    removeTaxes(taxes: any, options: any): any;
    saveShippingAddress(address: any, options: any): any;
    saveBillingAddress(address: any, options: any): any;
    groupFulfillments(options: any): any;
    groupTransactions(paymentDetails: any, options: any): any;
    groupSubscriptions(active: any, options: any): any;
    fulfill(fulfillments: any, options: any): any;
    resolveFinancialStatus(options: any): any;
    resolveFulfillmentStatus(options: any): any;
    setStatus(): any;
    resolveStatus(options: any): any;
    saveStatus(options: any): any;
    saveFinancialStatus(options: any): any;
    saveFulfillmentStatus(options: any): any;
    setFinancialStatus(): any;
    setFulfillmentStatus(): any;
    sendToFulfillment(options: any): any;
    resolveSubscribeImmediately(options: any): any;
    resolveSendImmediately(options: any): any;
    attemptImmediate(options: any): any;
    saveItemsShippingLines(items: any, options: any): any;
    saveItemsTaxLines(items: any, options: any): any;
    buildOrderItem(item: any, qty: any, properties: any): any;
    addItem(orderItem: any, options: any): any;
    updateItem(orderItem: any, options: any): any;
    removeItem(orderItem: any, options: any): any;
    reconcileTransactions(options: any): any;
    resolveCustomer(options: any): any;
    resolveOrderItems(options: any): any;
    resolveRefunds(options: any): any;
    resolveTransactions(options: any): any;
    resolveFulfillments(options: any): any;
    calculateShipping(options: any): any;
    calculateTaxes(options: any): any;
    recalculate(options: any): any;
    sendCreatedEmail(options: any): any;
    sendCancelledEmail(options: any): any;
    sendRefundedEmail(options: any): any;
    sendPaidEmail(options: any): any;
    sendPartiallyPaidEmail(options: any): any;
    sendUpdatedEmail(options: any): any;
}
