import { AnyThemeOptions, EnableSystemFromOptions, HumanReadable, LightOrDark, ResolvedThemeState, ThemeNameFromOptions, ThemeOptions, ThemeState, ThemeVariant, WithSystem } from './types';
type ThemeCodecOptions<TTheme extends string = LightOrDark, TEnableSystem extends boolean = true> = Pick<ThemeOptions<TTheme, TEnableSystem>, 'themes' | 'enableSystem'>;
type DefaultThemeCodecOptions<TEnableSystem extends boolean = true> = ThemeCodecOptions<LightOrDark, TEnableSystem>;
type AnyThemeCodecOptions = Pick<AnyThemeOptions, 'themes' | 'enableSystem'>;
type CustomThemeCodecOptions<TTheme extends string, TEnableSystem extends boolean = true> = Omit<ThemeCodecOptions<TTheme, TEnableSystem>, 'themes'> & {
    themes: readonly TTheme[];
};
export declare function decodeVariant(value: string | undefined): HumanReadable<ResolvedThemeState<LightOrDark, true>> | undefined;
export declare function decodeVariant<TEnableSystem extends boolean = true>(value: string | undefined, options?: DefaultThemeCodecOptions<TEnableSystem>): HumanReadable<ResolvedThemeState<LightOrDark, TEnableSystem>> | undefined;
export declare function decodeVariant<const TOptions extends CustomThemeCodecOptions<string, boolean>>(value: string | undefined, options: TOptions): HumanReadable<ResolvedThemeState<ThemeNameFromOptions<TOptions>, EnableSystemFromOptions<TOptions>>> | undefined;
export declare function decodeVariant<TTheme extends string, TEnableSystem extends boolean = true>(value: string | undefined, options: ThemeCodecOptions<TTheme, TEnableSystem>): HumanReadable<ResolvedThemeState<TTheme, TEnableSystem>> | undefined;
export declare function decodeVariant(value: string | undefined, options: AnyThemeCodecOptions): HumanReadable<ResolvedThemeState<string, boolean>> | undefined;
export declare const encodeVariant: <TTheme extends string = LightOrDark, TEnableSystem extends boolean = true>(themeState?: ThemeState<TTheme, TEnableSystem>) => string | undefined;
export declare function listVariants(): ReadonlyArray<HumanReadable<ThemeVariant<LightOrDark, true>>>;
export declare function listVariants<TEnableSystem extends boolean = true>(options?: DefaultThemeCodecOptions<TEnableSystem>): ReadonlyArray<HumanReadable<ThemeVariant<LightOrDark, TEnableSystem>>>;
export declare function listVariants<const TOptions extends CustomThemeCodecOptions<string, boolean>>(options: TOptions): ReadonlyArray<HumanReadable<ThemeVariant<ThemeNameFromOptions<TOptions>, EnableSystemFromOptions<TOptions>>>>;
export declare function listVariants<TTheme extends string, TEnableSystem extends boolean = true>(options: ThemeCodecOptions<TTheme, TEnableSystem>): ReadonlyArray<HumanReadable<ThemeVariant<TTheme, TEnableSystem>>>;
export declare function listVariants(options: AnyThemeCodecOptions): ReadonlyArray<HumanReadable<ThemeVariant<string, boolean>>>;
export declare const decodeThemeCookieValue: typeof decodeVariant;
export declare const encodeThemeCookieValue: (selected: WithSystem<string, boolean> | undefined, system?: LightOrDark) => string | undefined;
export {};
//# sourceMappingURL=theme-cookie.d.ts.map