import { BaseHandler, OutputFormat } from './base.handler';
import { ProductServiceConfig, ProductAddOptions, ProductUpdateOptions, ProductDeleteOptions, ProductLibraryListOptions, ProductLibraryCreateOptions, ProductLibraryUpdateOptions, ProductLibraryDeleteOptions, ProductTagListOptions, ProductTagCreateOptions, ProductTagUpdateOptions, ProductTagDeleteOptions, ProductOrderListOptions, ProductOrderGetOptions, ProductOrderBatchStatusOptions } from '../types/product';
import { AuthConfig } from '../types/auth';
export interface ProductListOptions {
    page?: number;
    size?: number;
    channelId?: string;
    platform?: boolean;
    output?: OutputFormat;
}
export interface ProductUpdateEnabledOptions {
    channelId: string;
    enabled: 'Y' | 'N';
    force?: boolean;
    output?: OutputFormat;
}
export declare class ProductHandler extends BaseHandler {
    private readonly productService;
    constructor(authConfig: AuthConfig, serviceConfig: ProductServiceConfig);
    listProducts(options?: ProductListOptions): Promise<void>;
    private validateListOptions;
    private transformToListRequest;
    private displayProductsList;
    private displayProductsTable;
    private formatProductType;
    private formatProductStatus;
    private formatPrice;
    addProduct(options: ProductAddOptions): Promise<void>;
    private displayAddResult;
    updateProduct(options: ProductUpdateOptions): Promise<void>;
    private displayUpdateResult;
    deleteProduct(options: ProductDeleteOptions): Promise<void>;
    private displayDeleteResult;
    listUserProducts(options?: ProductLibraryListOptions): Promise<void>;
    createUserProduct(options: ProductLibraryCreateOptions): Promise<void>;
    updateUserProduct(options: ProductLibraryUpdateOptions): Promise<void>;
    deleteUserProduct(options: ProductLibraryDeleteOptions): Promise<void>;
    listProductTags(options: ProductTagListOptions): Promise<void>;
    createProductTag(options: ProductTagCreateOptions): Promise<void>;
    updateProductTag(options: ProductTagUpdateOptions): Promise<void>;
    deleteProductTag(options: ProductTagDeleteOptions): Promise<void>;
    listProductOrders(options?: ProductOrderListOptions): Promise<void>;
    getProductOrder(options: ProductOrderGetOptions): Promise<void>;
    batchUpdateProductOrderStatus(options: ProductOrderBatchStatusOptions): Promise<void>;
    getChannelProductEnabled(options: {
        channelId: string;
        output?: OutputFormat;
    }): Promise<void>;
    updateChannelProductEnabled(options: ProductUpdateEnabledOptions): Promise<void>;
    batchAddChannelProducts(options: {
        channelId: string;
        products: any[];
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    batchDeleteChannelProducts(options: {
        channelId: string;
        productIds: number[];
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    batchShelfChannelProducts(options: {
        channelId: string;
        productIds: number[];
        shelf: 1 | 2;
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    shelfChannelProduct(options: {
        channelId: string;
        productId: number;
        shelf: 1 | 2;
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    sortChannelProduct(options: {
        channelId: string;
        productId: number;
        type: 10 | 20 | 50;
        sort?: number;
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    pushChannelProduct(options: {
        channelId: string;
        productId: number;
        pushCardType?: 'smallCard' | 'bigCard';
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    cancelPushChannelProduct(options: {
        channelId: string;
        productId: number;
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    referenceProduct(options: {
        channelId: string;
        originId: string;
        status: 1 | 2;
        withTags?: boolean;
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    getProductPushRule(options: {
        channelId: string;
        output?: OutputFormat;
    }): Promise<void>;
    updateProductPushRule(options: Record<string, any> & {
        channelId: string;
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    listChannelProductTags(options: {
        channelId: string;
        page?: number;
        size?: number;
        output?: OutputFormat;
    }): Promise<void>;
    createChannelProductTag(options: {
        channelId: string;
        name: string;
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    updateChannelProductTag(options: {
        channelId: string;
        id: number;
        name: string;
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    deleteChannelProductTag(options: {
        channelId: string;
        id: number;
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    listProductStats(options: {
        channelId: string;
        productId?: string;
        productName?: string;
        sessionId?: string;
        page?: number;
        size?: number;
        output?: OutputFormat;
    }): Promise<void>;
    getProductStatsSummary(options: {
        channelId: string;
        sessionId?: string;
        output?: OutputFormat;
    }): Promise<void>;
    sortChannelProductRank(options: {
        channelId: string;
        productId: number;
        rank: number;
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    toppingChannelProduct(options: {
        channelId: string;
        productId: number;
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    untoppingChannelProduct(options: {
        channelId: string;
        productId: number;
        force?: boolean;
        output?: OutputFormat;
    }): Promise<void>;
    private displayWriteResult;
    private requireFields;
    private validateYn;
    private requireAtLeastOne;
}
//# sourceMappingURL=product.handler.d.ts.map