import { FabrixModel as Model } from '@fabrix/fabrix/dist/common';
import { SequelizeResolver } from '@fabrix/spool-sequelize';
export declare class AddressResolver extends SequelizeResolver {
    cleanAddress(address: any): Pick<any, "city" | "country" | "province" | "last_name" | "address_1" | "address_2" | "address_3" | "company" | "prefix" | "first_name" | "suffix" | "phone" | "province_code" | "country_name" | "country_code" | "postal_code">;
    resolveByInstance(address: any, options?: {
        [key: string]: any;
    }): Promise<any>;
    resolveById(address: any, options?: {
        [key: string]: any;
    }): any;
    resolveByToken(address: any, options?: {
        [key: string]: any;
    }): any;
    resolveByNumber(address: any, options?: {
        [key: string]: any;
    }): any;
    resolveByString(address: any, options?: {
        [key: string]: any;
    }): any;
    resolve(address: any, options?: {
        [key: string]: any;
    }): any;
}
export declare class Address extends Model {
    static readonly resolver: typeof AddressResolver;
    static config(app: any, Sequelize: any): {
        options: {
            underscored: boolean;
            scopes: {
                live: {
                    where: {
                        live_mode: boolean;
                    };
                };
            };
            hooks: {
                beforeValidate: ((values: any, options: any) => Promise<any>)[];
                beforeCreate: ((values: any, options: any) => any)[];
                beforeUpdate: ((values: any, options: any) => any)[];
            };
        };
    };
    static schema(app: any, Sequelize: any): {
        token: {
            type: any;
            unique: boolean;
        };
        address_1: {
            type: any;
            allowNull: boolean;
        };
        address_2: {
            type: any;
        };
        address_3: {
            type: any;
        };
        company: {
            type: any;
        };
        city: {
            type: any;
            allowNull: boolean;
        };
        prefix: {
            type: any;
        };
        first_name: {
            type: any;
        };
        last_name: {
            type: any;
        };
        suffix: {
            type: any;
        };
        phone: {
            type: any;
        };
        province: {
            type: any;
            allowNull: boolean;
        };
        province_code: {
            type: any;
            allowNull: boolean;
        };
        country: {
            type: any;
            allowNull: boolean;
        };
        country_code: {
            type: any;
            allowNull: boolean;
        };
        country_name: {
            type: any;
            allowNull: boolean;
        };
        postal_code: {
            type: any;
            allowNull: boolean;
        };
        latitude: {
            type: any;
            allowNull: boolean;
            defaultValue: number;
            validate: {
                min: number;
                max: number;
            };
        };
        longitude: {
            type: any;
            allowNull: boolean;
            defaultValue: number;
            validate: {
                min: number;
                max: number;
            };
        };
        formatted_address: {
            type: any;
        };
        live_mode: {
            type: any;
            defaultValue: any;
        };
    };
    static associate(models: any): void;
}
export interface Address {
    merge(updates: any): any;
}
