import type { Constructor } from 'clone-class';
import type { PaginationRequest } from '@juzi/wechaty-puppet/filters';
import * as PUPPET from '@juzi/wechaty-puppet';
declare const MixinBase: ((abstract new (...args: any[]) => {
    readonly wechaty: import("../wechaty/wechaty-impl.js").WechatyInterface;
}) & {
    readonly wechaty: import("../wechaty/wechaty-impl.js").WechatyInterface;
}) & ((abstract new (...args: any[]) => {}) & {
    _pool?: Map<string, WxxdProductImplInterface> | undefined;
    readonly pool: Map<string, WxxdProductImplInterface>;
    load<L extends import("clone-class/dist/esm/src/constructor.js").ClassInterface<{}> & {
        new (...args: any[]): WxxdProductImplInterface;
        prototype: WxxdProductImplInterface;
    } & import("../user-mixins/poolify.js").PoolifyMixin<WxxdProductImplInterface>>(this: L, id: string): WxxdProductImplInterface;
}) & ObjectConstructor;
declare class WxxdProductMixin extends MixinBase {
    readonly id: string;
    /**
     * Instance properties
     * @ignore
     */
    payload?: PUPPET.payloads.WxxdProduct;
    /**
     * @hideconstructor
     */
    constructor(id: string);
    /**
     * List all products
     */
    static list(query: PaginationRequest): Promise<PUPPET.filters.PaginationResponse<PUPPET.payloads.WxxdProduct[]>>;
    /**
     * Find product by id or filter
     */
    static find(query: string | {
        id: string;
    }): Promise<WxxdProductInterface | undefined>;
    isReady(): boolean;
    ready(forceSync?: boolean): Promise<void>;
    /**
     * Get product title
     */
    title(): string;
    /**
     * Get product short title
     */
    shortTitle(): string;
    /**
     * Get product status
     */
    status(): PUPPET.types.WxxdProductStatus;
    /**
     * Get product min price
     */
    minPrice(): number;
    /**
     * Get product total sold number
     */
    totalSoldNum(): number;
    /**
     * Get product SKUs
     */
    skus(): PUPPET.payloads.WxxdProductSku[];
}
declare const WxxdProductImplBase_base: {
    new (...args: any[]): {};
    valid: (o: any) => o is WxxdProductImplInterface;
    validInstance: (target: any) => target is WxxdProductMixin;
    validInterface: (target: any) => target is WxxdProductImplInterface;
} & typeof WxxdProductMixin;
declare class WxxdProductImplBase extends WxxdProductImplBase_base {
}
interface WxxdProductImplInterface extends WxxdProductImplBase {
}
declare type WxxdProductProtectedProperty = 'ready';
declare type WxxdProductInterface = Omit<WxxdProductImplInterface, WxxdProductProtectedProperty>;
declare const WxxdProductImpl_base: {
    new (...args: any[]): {};
    valid: (o: any) => o is WxxdProductInterface;
    validInstance: (target: any) => target is WxxdProductImplBase;
    validInterface: (target: any) => target is WxxdProductInterface;
} & typeof WxxdProductImplBase;
declare class WxxdProductImpl extends WxxdProductImpl_base {
}
declare type WxxdProductConstructor = Constructor<WxxdProductImplInterface, typeof WxxdProductImpl>;
export type { WxxdProductConstructor, WxxdProductProtectedProperty, WxxdProductInterface, };
export { WxxdProductImpl, };
//# sourceMappingURL=wxxd-product.d.ts.map