import { FabrixApp } from '@fabrix/fabrix';
import { FabrixModel as Model } from '@fabrix/fabrix/dist/common';
import { SequelizeResolver } from '@fabrix/spool-sequelize';
export declare class OrderItemResolver extends SequelizeResolver {
    resolve(item: any, options?: {
        [key: string]: any;
    }): any;
}
export declare class OrderItem extends Model {
    static readonly resolver: typeof OrderItemResolver;
    static config(app: any, Sequelize: any): {
        options: {
            underscored: boolean;
            enums: {
                INTERVALS: {
                    NONE: any;
                    DAY: string;
                    WEEK: string;
                    BIWEEK: string;
                    MONTH: string;
                    BIMONTH: string;
                    YEAR: string;
                    BIYEAR: string;
                };
                FULFILLMENT_STATUS: {
                    PENDING: string;
                    FULFILLED: string;
                    SENT: string;
                    NONE: string;
                    PARTIAL: string;
                    CANCELLED: string;
                };
                FULFILLMENT_SERVICE: {
                    MANUAL: string;
                };
            };
            scopes: {
                live: {
                    where: {
                        live_mode: boolean;
                    };
                };
            };
            hooks: {
                beforeCreate: ((orderItem: any, options: any) => any)[];
                beforeSave: ((orderItem: any, options: any) => any)[];
                beforeUpdate: ((orderItem: any, options: any) => any)[];
                afterCreate: ((orderItem: any, options: any) => any)[];
                afterUpdate: ((orderItem: any, options: any) => any)[];
                afterDestroy: ((orderItem: any, options: any) => any)[];
            };
        };
    };
    static schema(app: any, Sequelize: any): {
        order_id: {
            type: any;
            allowNull: boolean;
        };
        customer_id: {
            type: any;
        };
        fulfillment_id: {
            type: any;
        };
        product_id: {
            type: any;
            allowNull: boolean;
        };
        product_handle: {
            type: any;
            allowNull: boolean;
        };
        variant_id: {
            type: any;
            allowNull: boolean;
        };
        subscription_id: {
            type: any;
        };
        refund_id: {
            type: any;
        };
        gift_card_id: {
            type: any;
        };
        shop_id: {
            type: any;
        };
        option: {
            type: any;
            defaultValue: {};
        };
        fulfillable_quantity: {
            type: any;
            defaultValue: number;
        };
        max_quantity: {
            type: any;
            defaultValue: number;
        };
        fulfillment_service: {
            type: any;
            defaultValue: string;
        };
        fulfillment_status: {
            type: any;
            values: string[];
            defaultValue: string;
        };
        grams: {
            type: any;
            defaultValue: number;
        };
        compare_at_price: {
            type: any;
            defaultValue: number;
        };
        price: {
            type: any;
            defaultValue: number;
        };
        calculated_price: {
            type: any;
            defaultValue: number;
        };
        price_per_unit: {
            type: any;
            defaultValue: number;
        };
        quantity: {
            type: any;
        };
        requires_taxes: {
            type: any;
            defaultValue: boolean;
        };
        requires_shipping: {
            type: any;
            defaultValue: boolean;
        };
        requires_subscription: {
            type: any;
            defaultValue: boolean;
        };
        subscription_interval: {
            type: any;
            defaultValue: number;
        };
        subscription_unit: {
            type: any;
            values: any[];
            defaultValue: any;
        };
        sku: {
            type: any;
        };
        type: {
            type: any;
        };
        title: {
            type: any;
        };
        variant_title: {
            type: any;
        };
        vendor_id: {
            type: any;
        };
        name: {
            type: any;
        };
        gift_card: {
            type: any;
        };
        properties: {
            type: any;
            defaultValue: {};
        };
        property_pricing: {
            type: any;
            defaultValue: {};
        };
        taxable: {
            type: any;
        };
        tax_code: {
            type: any;
            defaultValue: string;
        };
        discounted_lines: {
            type: any;
            defaultValue: any[];
        };
        coupon_lines: {
            type: any;
            defaultValue: any[];
        };
        shipping_lines: {
            type: any;
            defaultValue: any[];
        };
        tax_lines: {
            type: any;
            defaultValue: any[];
        };
        total_discounts: {
            type: any;
            defaultValue: number;
        };
        total_coupons: {
            type: any;
            defaultValue: number;
        };
        total_shipping: {
            type: any;
            defaultValue: number;
        };
        total_taxes: {
            type: any;
            defaultValue: number;
        };
        average_shipping: {
            type: any;
            defaultValue: number;
        };
        exclude_payment_types: {
            type: any;
            defaultValue: any[];
        };
        images: {
            type: any;
            defaultValue: any[];
        };
        live_mode: {
            type: any;
            defaultValue: any;
        };
    };
    static associate(models: any): void;
}
export interface OrderItem {
    resetDefaults(app: FabrixApp): any;
    addShipping(shipping: any, options: any): any;
    removeShipping(shipping: any, options: any): any;
    setItemsShippingLines(shippingLine: any): any;
    setShippingLines(lines: any): any;
    setItemsTaxLines(taxedLine: any): any;
    setTaxLines(lines: any): any;
    setProperties(prev: any): any;
    setTotals(app: FabrixApp): any;
    recalculate(options: any): any;
    reconcileFulfillment(options: any): any;
}
