import { PriceFormat } from "./format-price.js"; import type { Product, UnboundProductData, UnboundProductOptionData } from "./products/product.base.js"; import { Provider, ProviderData } from "./providers/provider.base.js"; import { InitSelectorProvider } from "./providers/provider.init-selector.js"; import { VlaicuProvider } from "./providers/provider.vlaicu.js"; import { STORE_ADAPTER, STORE_CAMPAIGN, STORE_FORMATTER, STORE_LOCALE, STORE_OVERRIDES, STORE_TRANSFORMERS, STORE_TRIAL_LINKS } from "./store.constants.js"; export { STORE_ADAPTER, STORE_CAMPAIGN, STORE_FORMATTER, STORE_LOCALE, STORE_OVERRIDES, STORE_TRANSFORMERS, STORE_TRIAL_LINKS }; export type ProductSelector = { id: string; campaign?: string; }; export type Locale = `${string}-${string}`; type ProviderCtor = new (param: ProviderData) => Provider; declare const BuiltInProviders: { readonly init: typeof InitSelectorProvider; readonly vlaicu: typeof VlaicuProvider; }; type ProviderSelector = { name: keyof typeof BuiltInProviders | ProviderCtor; }; type StoreConfig = { provider: ProviderSelector; locale: Locale; campaign?: (param: ProductSelector) => Promise; trialLinks?: { [key: string]: { default?: { [key: `${string}-${string}`]: { [key: string]: string; }; }; [key: string]: { [key: `${string}-${string}`]: { [key: string]: string; }; } | undefined; }; }; overrides?: { [key: string]: { default?: { campaign?: string; options?: { [key: `${string}-${string}`]: Partial | undefined | null; }; }; [key: string]: { campaign?: string; options?: { [key: `${string}-${string}`]: Partial | undefined | null; }; } | undefined; }; }; transformers?: { buyLink?: (param: { buyLink: string; product: UnboundProductData; option: UnboundProductOptionData; }) => Promise; trialLink?: (param: { name: string; trialLink: string; buyLink: string; product: UnboundProductData; option: UnboundProductOptionData; }) => Promise; }; formatter?: (opt: PriceFormat) => string | number; }; export declare class Store { private cache; private [STORE_LOCALE]; private [STORE_ADAPTER]; private [STORE_CAMPAIGN]; private [STORE_TRANSFORMERS]; private [STORE_OVERRIDES]; private [STORE_TRIAL_LINKS]; private [STORE_FORMATTER]; constructor(config: StoreConfig); getProduct(param: ProductSelector): Promise; getProduct(param: ProductSelector[]): Promise<(Product | undefined)[]>; private getProvider; formatPrice(opt: PriceFormat): string | number; }