import type { HashPriority } from '../StyleContext';
export declare function memoResult<T extends object, R>(callback: () => R, deps: T[]): R;
/**
 * Flatten token to string, this will auto cache the result when token not change
 */
export declare function flattenToken(token: any): string;
/**
 * Convert derivative token to key string
 */
export declare function token2key(token: any, salt: string): string;
export declare function supportLayer(): boolean;
export declare function supportWhere(): boolean;
export declare function supportLogicProps(): boolean;
export declare const isClientSide: boolean;
export declare function unit(num: string | number): string;
export declare function toStyleStr(style: string, tokenKey?: string, styleId?: string, customizeAttrs?: Record<string, string>, plain?: boolean): string;
export declare function where(options?: {
    hashPriority?: HashPriority;
    hashCls?: string;
}): string;
export declare const isNonNullable: <T>(val: T) => val is NonNullable<T>;
export type Nonce = string | (() => string);
/**
 * Get nonce value and inject it into CSS config if available.
 */
export declare function injectCSPNonce<T extends {
    csp?: {
        nonce?: string;
    };
}>(config: T, nonce: Nonce | undefined): T;
