import type { Generic } from 'adopted-style-sheets';
import type { Stringified } from '../types/common';
export declare const objectObjectHandler: (value: unknown, cb: () => void) => void;
export declare const emptyStringByArrayHandler: (value: unknown, cb: () => void) => void;
export declare const setEventTarget: (event: Event, target?: HTMLElement) => void;
export type SetStateHooks = {
    afterPatch?: Generic.Element.StateHooksCallback;
    beforePatch?: Generic.Element.NextStateHooksCallback;
};
export declare const setState: <T>(component: Generic.Element.Component, propName: string, value?: T | null | undefined, hooks?: SetStateHooks) => void;
export type WatchOptions = {
    defaultValue?: unknown;
    hooks?: SetStateHooks;
    required?: boolean;
};
export type WatchBooleanOptions = WatchOptions & {
    defaultValue?: boolean | null;
};
export type WatchStringOptions = WatchOptions & {
    defaultValue?: string | null;
    maxLength?: number;
    minLength?: number;
};
export type WatchNumberOptions = WatchOptions & {
    defaultValue?: number | null;
    min?: number;
    max?: number;
};
export declare function watchValidator<T>(component: Generic.Element.Component, propName: string, validationFunction: (value?: T) => boolean, requiredGeneric: Set<string | null | undefined>, value?: T, options?: WatchOptions): void;
export declare const watchBoolean: (component: Generic.Element.Component, propName: string, value?: boolean, options?: WatchBooleanOptions) => void;
export declare const watchString: (component: Generic.Element.Component, propName: string, value?: string, options?: WatchStringOptions) => void;
export declare const watchNumber: (component: Generic.Element.Component, propName: string, value?: number, options?: WatchNumberOptions) => void;
export declare const watchJsonArrayString: <T>(component: Generic.Element.Component, propName: string, itemValidation: (item: T) => boolean, value?: Stringified<T[]>, arrayValidation?: (items: T[]) => boolean, options?: WatchOptions) => void;
export declare const stringifyJson: (value: unknown) => string;
export declare const parseJson: <T>(value: unknown) => T;
export declare const mapBoolean2String: (value?: boolean) => string | undefined;
export declare const mapStringOrBoolean2String: (value?: string | boolean) => string | undefined;
export declare const koliBriQuerySelector: <T extends Element>(selector: string, node?: Document | HTMLElement | ShadowRoot) => T | null;
export declare const koliBriQuerySelectorAll: <T extends Element>(selector: string, node?: Document | HTMLElement | ShadowRoot) => T[];
interface A11yColorContrast {
    backgroundColor: string;
    color: string;
    domNode: HTMLElement | HTMLSlotElement;
    level: string;
    score: number;
}
export declare const koliBriA11yColorContrast: (domNode: HTMLElement, a11yColorContrast?: A11yColorContrast) => A11yColorContrast;
export declare const koliBriQuerySelectorColors: (selector: string, a11yColorContrast?: A11yColorContrast) => A11yColorContrast;
export declare class KoliBriUtils {
    private static executionLock;
    private static cache;
    static queryHtmlElementColors(targetNode: HTMLElement, a11yColorContrast: A11yColorContrast, recursion?: boolean, log?: boolean): A11yColorContrast | null;
}
export declare class KoliBriDevHelper {
    static readonly getCssStyle: (themeName: string, tagName: Generic.Theming.Props<string, string>) => string;
    static readonly patchTheme: (name: string, map: Generic.Theming.Map<string, string>, options?: Generic.Theming.PatchOptions, registerOptions?: import("adopted-style-sheets").RegisterOptions) => string;
    static readonly patchThemeTag: (themeName: string, tagName: Generic.Theming.Props<string, string>, css: string, options?: Generic.Theming.PatchOptions) => void;
    static readonly querySelector: <T extends Element>(selector: string, node?: Document | HTMLElement | ShadowRoot) => T | null;
    static readonly querySelectorAll: <T extends Element>(selector: string, node?: Document | HTMLElement | ShadowRoot) => T[];
    static readonly stringifyJson: (value: unknown) => string;
}
export {};
