import { StyleScope, StylingResolution, StylingSession } from "../Styling"; export declare type StyleSelectors = Record>; export declare const startSelectorSession: (registering?: boolean | undefined, resolution?: StylingResolution | undefined, session?: StylingSession | undefined) => void; export declare const finishSelectorSession: () => StyleSelectors; export declare type StyleSelectorResult = number & { __selectorResult: { resultId: number; ids: number[]; }; }; export declare const isSelectorResult: (result: any) => result is StyleSelectorResult; export declare const isResultSuccess: (result: StyleSelectorResult) => boolean; export declare const not: (selector: StyleSelectorResult) => StyleSelectorResult; export declare const and: (...selectors: StyleSelectorResult[]) => StyleSelectorResult; export declare const or: (...selectors: StyleSelectorResult[]) => StyleSelectorResult; export interface StyleSelectorOptions { check: (selector: StyleSelector, session: StylingSession) => boolean; register?: (update: () => void) => void; unregister?: () => void; } export declare type StyleSelectorFunction = void extends O ? ((options?: O) => StyleSelectorResult) : ((options: O) => StyleSelectorResult); export declare type StyleSelectorType = StyleSelectorOptions & StyleSelectorFunction & { id: string; }; export interface StyleSelector { scope: StyleScope | null; compoundSelectors: number[]; id: number; key: number; className: string; sheetId: number | null; options: O; type: StyleSelectorType; } declare type Callback = () => void; export declare const registerSelectorCallback: (selectorType: StyleSelectorType, callback: Callback) => void; export declare const unregisterSelectorCallback: (selector: StyleSelectorType, callback: Callback) => void; export declare function createStyleSelectorType(id: string, options: StyleSelectorOptions, extraProperties?: P): StyleSelectorType & P; export {};