import { FeatureTransformContext } from './feature';
import { Box } from '../custom-values';
import type { StylableMeta } from '../stylable-meta';
import { EvalValueResult } from '../functions';
import type { ImmutablePseudoClass, PseudoClass } from '@tokey/css-selector-parser';
import type * as postcss from 'postcss';
import { Diagnostics } from '../diagnostics';
import type { Stylable } from '../stylable';
import type { RuntimeStVar } from '../stylable-transformer';
export interface VarSymbol {
    _kind: 'var';
    name: string;
    value: string;
    text: string;
    valueType: string | null;
    node: postcss.Node;
}
export type CustomValueInput = Box<string, CustomValueInput | Record<string, CustomValueInput | string> | Array<CustomValueInput | string>>;
export interface ComputedStVar {
    value: RuntimeStVar;
    diagnostics: Diagnostics;
    input: CustomValueInput;
    source: {
        meta: StylableMeta;
        start: postcss.Position;
        end: postcss.Position;
    };
}
export interface FlatComputedStVar {
    value: string;
    path: string[];
    source: ComputedStVar['source'];
}
export declare const diagnostics: {
    FORBIDDEN_DEF_IN_COMPLEX_SELECTOR: {
        (name: string): import("../diagnostics").DiagnosticBase;
        code: string;
        severity: import("../diagnostics").DiagnosticSeverity;
    };
    NO_VARS_DEF_IN_ST_SCOPE: {
        (): import("../diagnostics").DiagnosticBase;
        code: string;
        severity: import("../diagnostics").DiagnosticSeverity;
    };
    DEPRECATED_ST_FUNCTION_NAME: {
        (name: string, alternativeName: string): import("../diagnostics").DiagnosticBase;
        code: string;
        severity: import("../diagnostics").DiagnosticSeverity;
    };
    CYCLIC_VALUE: {
        (cyclicChain: string[]): import("../diagnostics").DiagnosticBase;
        code: string;
        severity: import("../diagnostics").DiagnosticSeverity;
    };
    MISSING_VAR_IN_VALUE: {
        (): import("../diagnostics").DiagnosticBase;
        code: string;
        severity: import("../diagnostics").DiagnosticSeverity;
    };
    COULD_NOT_RESOLVE_VALUE: {
        (args?: string | undefined): import("../diagnostics").DiagnosticBase;
        code: string;
        severity: import("../diagnostics").DiagnosticSeverity;
    };
    MULTI_ARGS_IN_VALUE: {
        (args: string): import("../diagnostics").DiagnosticBase;
        code: string;
        severity: import("../diagnostics").DiagnosticSeverity;
    };
    CANNOT_USE_AS_VALUE: {
        (type: string, varName: string): import("../diagnostics").DiagnosticBase;
        code: string;
        severity: import("../diagnostics").DiagnosticSeverity;
    };
    CANNOT_USE_JS_AS_VALUE: {
        (type: string, varName: string): import("../diagnostics").DiagnosticBase;
        code: string;
        severity: import("../diagnostics").DiagnosticSeverity;
    };
    UNKNOWN_VAR: {
        (name: string): import("../diagnostics").DiagnosticBase;
        code: string;
        severity: import("../diagnostics").DiagnosticSeverity;
    };
};
export declare const hooks: import("./feature").FeatureHooks<{
    SELECTOR: PseudoClass;
    IMMUTABLE_SELECTOR: ImmutablePseudoClass;
    RESOLVED: Record<string, EvalValueResult>;
}>;
export declare function get(meta: StylableMeta, name: string): VarSymbol | undefined;
export declare class StylablePublicApi {
    private stylable;
    constructor(stylable: Stylable);
    getComputed(meta: StylableMeta): Record<string, ComputedStVar>;
    flatten(meta: StylableMeta): FlatComputedStVar[];
    private flatSingle;
}
export declare function parseVarsFromExpr(expr: string): Set<string>;
export declare function resolveReferencedVarNames(context: Pick<FeatureTransformContext, 'meta' | 'resolver'>, initialName: string): Set<string>;
//# sourceMappingURL=st-var.d.ts.map