import { type SpecType, type SpecDriver } from './spec-driver';
export type Selector<T extends SpecType = never> = T['selector'] | T['secondary']['selector'] | CommonSelector<T['selector'] | T['secondary']['selector']>;
export type CommonSelector<TSelector = never> = string | ComplexSelector<TSelector>;
type ComplexSelector<TSelector> = {
    selector: TSelector | string;
    type?: string;
    child?: TSelector | string | CommonSelector<TSelector>;
    shadow?: TSelector | string | CommonSelector<TSelector>;
    frame?: TSelector | string | CommonSelector<TSelector>;
    fallback?: TSelector | string | CommonSelector<TSelector>;
};
export declare function isSelector<T extends SpecType>(selector: any, spec?: Pick<SpecDriver<T>, 'isSelector' | 'isSecondarySelector'>): selector is Selector<T>;
export declare function isComplexSelector<T extends SpecType>(selector: any, spec?: Pick<SpecDriver<T>, 'isSelector'>): selector is Exclude<CommonSelector<T['selector']>, string>;
export declare function isSimpleCommonSelector(selector: any): selector is CommonSelector;
export declare function makeSelector<T extends SpecType>(options: {
    selector: Selector<T>;
    spec: Pick<SpecDriver<T>, 'isSelector' | 'toSelector'>;
    environment?: {
        isWeb?: boolean;
        isNative?: boolean;
        isIOS?: boolean;
        isAndroid?: boolean;
    };
}): T['selector'];
export {};
