import { color } from '@synnaxlabs/x';
import { PropsWithChildren, ReactElement } from 'react';
import { z } from 'zod';
import { state } from '../state';
export declare const relevancyZ: z.ZodObject<{
    lastUsed: z.ZodNumber;
    count: z.ZodNumber;
    relevance: z.ZodNumber;
}, z.core.$strip>;
export declare const frequentZ: z.ZodRecord<z.ZodString, z.ZodObject<{
    lastUsed: z.ZodNumber;
    count: z.ZodNumber;
    relevance: z.ZodNumber;
}, z.core.$strip>>;
export interface Frequent extends z.infer<typeof frequentZ> {
}
export declare const contextStateZ: z.ZodObject<{
    palettes: z.ZodRecord<z.ZodString, z.ZodObject<{
        key: z.ZodString;
        name: z.ZodString;
        swatches: z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            name: z.ZodString;
            color: z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
                rgba255: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
            }, z.core.$strip>]>, z.ZodTransform<[number, number, number, number], string | [number, number, number] | [number, number, number, number] | {
                rgba255: [number, number, number, number];
            }>>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    frequent: z.ZodRecord<z.ZodString, z.ZodObject<{
        lastUsed: z.ZodNumber;
        count: z.ZodNumber;
        relevance: z.ZodNumber;
    }, z.core.$strip>>;
}, z.core.$strip>;
export interface ContextState extends z.infer<typeof contextStateZ> {
}
export interface ContextValue extends ContextState {
    updateFrequent: (color: color.Color) => void;
}
export declare const ZERO_CONTEXT_STATE: ContextState;
export declare const useContext: () => ContextValue;
export declare const recalculate: (limit: number, frequent: Frequent) => Frequent;
export interface ProviderProps extends PropsWithChildren<{}> {
    useState?: state.PureUse<ContextState>;
}
export declare const Provider: ({ useState, children, }: ProviderProps) => ReactElement;
export declare const useFrequent: () => color.Color[];
export declare const usePalette: (key: string) => color.Palette | null;
export declare const useRequiredPalette: (key: string) => color.Palette;
export declare const useFrequentUpdater: () => ((color: color.Color) => void);
//# sourceMappingURL=Provider.d.ts.map