export {};
export declare const enum AnalyticsSourceTypeEnum {
    POST = "post",
    ROOM = "room"
}
declare global {
    namespace Amity {
        const enum ProductStatusEnum {
            ACTIVE = "active",
            ARCHIVED = "archived"
        }
        type ProductStatus = `${ProductStatusEnum}`;
        const enum ProductThumbnailModeEnum {
            ASPECT_FIT = "fit",
            ASPECT_FILL = "fill"
        }
        type ProductThumbnailMode = `${ProductThumbnailModeEnum}`;
        const enum ProductImportSourceEnum {
            MANUAL = "manual",
            IMPORT = "import"
        }
        type ProductImportSource = `${ProductImportSourceEnum}`;
        const enum ProductSortOptionEnum {
            CREATED_AT = "createdAt",
            UPDATED_AT = "updatedAt",
            PRODUCT_NAME = "productName"
        }
        type AnalyticsSourceType = `${AnalyticsSourceTypeEnum}`;
        type ProductSortOption = `${ProductSortOptionEnum}`;
        const enum ProductOrderOptionEnum {
            ASC = "asc",
            DESC = "desc"
        }
        type ProductOrderOption = `${ProductOrderOptionEnum}`;
        type ProductTagType = 'text' | 'media';
        type ProductTagLinkedObject = {
            product?: Amity.Product;
        };
        type RawProductTag = {
            productId: string;
        };
        type TextMentionInfo = {
            text: string;
            index: number;
            length: number;
        };
        type RawTextProductTag = RawProductTag & TextMentionInfo;
        type RawMediaProductTag = RawProductTag;
        type InternalProductTag = RawProductTag;
        type InternalMediaProductTag = RawMediaProductTag;
        type InternalTextProductTag = RawTextProductTag;
        type ProductTag = InternalProductTag & ProductTagLinkedObject;
        type MediaProductTag = ProductTag;
        type TextProductTag = ProductTag & TextMentionInfo;
        type RawProduct = {
            productId: string;
            productName: string;
            productUrl: string;
            status: ProductStatus;
            price?: number;
            currency?: string;
            thumbnailUrl?: string;
            thumbnailMode?: ProductThumbnailMode;
            importSource: ProductImportSource;
            createdBy: string;
            updatedBy?: string;
            isDeleted: boolean;
            createdAt: Amity.timestamp;
            updatedAt: Amity.timestamp;
            _id: string;
        };
        type InternalProduct = RawProduct;
        type ProductLinkedObject = {
            analytics: {
                markAsClicked: (location: string, sourceType: Amity.AnalyticsSourceType, sourceId: string) => void;
                markAsViewed: (location: string, sourceType: Amity.AnalyticsSourceType, sourceId: string) => void;
            };
        };
        type Product = InternalProduct & ProductLinkedObject;
        type QueryProducts = {
            keyword: string;
            isActive?: boolean;
            isDeleted?: boolean;
            sortBy?: ProductSortOption;
            sortOrder?: ProductOrderOption;
            page?: string;
            limit?: number;
        };
        type ProductLiveCollection = Amity.LiveCollectionParams<Omit<QueryProducts, 'page'>>;
        type ProductLiveCollectionCache = Amity.LiveCollectionCache<Amity.InternalProduct['productId'], Pick<QueryProducts, 'page'>>;
    }
}
//# sourceMappingURL=product.d.ts.map