import * as React from 'react';
import { Dispatch, ReactNode, SetStateAction, FC } from 'react';
import { Config, IData, IMedia, IWidgetEvents } from '../types';
export declare const DEFAULT_CONFIG: Config;
export interface StoreState {
    exportState: (getState: () => StoreState, setter: StateSetter) => void;
    post: IMedia | null;
    data: IData;
    forceMobile: boolean;
    isMobile: boolean;
    sliderPosition: number;
    root: Element | null;
    config: Config;
    triggerEvent: IWidgetEvents['triggerEvent'];
    hasSubscribed: IWidgetEvents['hasSubscribed'];
    setStoreState: Dispatch<SetStateAction<StoreState>>;
    canSlideLeft: boolean;
    canSlideRight: boolean;
    currentPosition: number;
    widgetWidth: number;
    productImageWidths: Record<string, number>;
    setProductImageWidth: (productId: string, width: number) => void;
    getProductImageWidth: (productId: string) => number;
    unlockedShouldersForCarouselPostId: string | null;
    productListUniformMode: boolean;
}
export interface StoreProps {
    state: Partial<StoreState>;
    children: ReactNode;
}
export declare const initial: StoreState;
export declare const StoreContext: React.Context<StoreState>;
export type StateSetter = Dispatch<SetStateAction<StoreState>>;
export declare const useStore: () => StoreState;
export declare const StoreProvider: FC<StoreProps>;
export declare const useStoreComponent: <P extends object>(props: P) => [P, StoreState, StateSetter];
