import type { PropType, Ref, ShallowRef } from 'vue';
import type { Linter } from './linters/interface';
import type { Transformer } from './transformers/interface';
import CacheEntity from './Cache';
export declare const ATTR_TOKEN = "data-token-hash";
export declare const ATTR_MARK = "data-css-hash";
export declare const ATTR_CACHE_PATH = "data-cache-path";
export declare const CSS_IN_JS_INSTANCE = "__cssinjs_instance__";
export declare function createCache(): CacheEntity;
export type HashPriority = 'low' | 'high';
export interface StyleContextProps {
autoClear?: boolean;
/** @private Test only. Not work in production. */
mock?: 'server' | 'client';
/**
* Only set when you need ssr to extract style on you own.
* If not provided, it will auto create on the end of Provider in server side.
*/
cache: CacheEntity;
/** Tell children that this context is default generated context */
defaultCache: boolean;
/** Use `:where` selector to reduce hashId css selector priority */
hashPriority?: HashPriority;
/** Tell cssinjs where to inject style in */
container?: Element | ShadowRoot;
/** Component wil render inline `` for fallback in SSR. Not recommend. */
ssrInline?: boolean;
/** Transform css before inject in document. Please note that `transformers` do not support dynamic update */
transformers?: Transformer[];
/**
* Linters to lint css before inject in document.
* Styles will be linted after transforming.
* Please note that `linters` do not support dynamic update.
*/
linters?: Linter[];
}
export type UseStyleProviderProps = Partial | Ref>;
export declare function useStyleInject(): ShallowRef>;
export declare function useStyleProvider(props: UseStyleProviderProps): ShallowRef>;
export interface StyleProviderProps {
autoClear?: boolean;
/** @private Test only. Not work in production. */
mock?: 'server' | 'client';
/**
* Only set when you need ssr to extract style on you own.
* If not provided, it will auto create on the end of Provider in server side.
*/
cache?: CacheEntity;
/** Tell children that this context is default generated context */
defaultCache?: boolean;
/** Use `:where` selector to reduce hashId css selector priority */
hashPriority?: HashPriority;
/** Tell cssinjs where to inject style in */
container?: Element | ShadowRoot;
/** Component wil render inline `` for fallback in SSR. Not recommend. */
ssrInline?: boolean;
/** Transform css before inject in document. Please note that `transformers` do not support dynamic update */
transformers?: Transformer[];
/**
* Linters to lint css before inject in document.
* Styles will be linted after transforming.
* Please note that `linters` do not support dynamic update.
*/
linters?: Linter[];
}
export declare const StyleProvider: {
new (...args: any[]): import("vue").CreateComponentPublicInstance;
cache: {
type: PropType;
};
hashPriority: {
type: PropType;
};
container: PropType;
ssrInline: BooleanConstructor;
transformers: PropType;
linters: PropType;
defaultCache: {
type: BooleanConstructor;
};
}>>, () => import("vue").VNode[], unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & Readonly;
cache: {
type: PropType;
};
hashPriority: {
type: PropType;
};
container: PropType;
ssrInline: BooleanConstructor;
transformers: PropType;
linters: PropType;
defaultCache: {
type: BooleanConstructor;
};
}>>, {
autoClear: boolean;
defaultCache: boolean;
ssrInline: boolean;
}, true, {}, {}, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, Readonly;
cache: {
type: PropType;
};
hashPriority: {
type: PropType;
};
container: PropType;
ssrInline: BooleanConstructor;
transformers: PropType;
linters: PropType;
defaultCache: {
type: BooleanConstructor;
};
}>>, () => import("vue").VNode[], {}, {}, {}, {
autoClear: boolean;
defaultCache: boolean;
ssrInline: boolean;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase;
cache: {
type: PropType;
};
hashPriority: {
type: PropType;
};
container: PropType;
ssrInline: BooleanConstructor;
transformers: PropType;
linters: PropType;
defaultCache: {
type: BooleanConstructor;
};
}>>, () => import("vue").VNode[], unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
autoClear: boolean;
defaultCache: boolean;
ssrInline: boolean;
}, {}, string, {}> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("vue").Plugin;
declare const _default: {
useStyleInject: typeof useStyleInject;
useStyleProvider: typeof useStyleProvider;
StyleProvider: {
new (...args: any[]): import("vue").CreateComponentPublicInstance;
cache: {
type: PropType;
};
hashPriority: {
type: PropType;
};
container: PropType;
ssrInline: BooleanConstructor;
transformers: PropType;
linters: PropType;
defaultCache: {
type: BooleanConstructor;
};
}>>, () => import("vue").VNode[], unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & Readonly;
cache: {
type: PropType;
};
hashPriority: {
type: PropType;
};
container: PropType;
ssrInline: BooleanConstructor;
transformers: PropType;
linters: PropType;
defaultCache: {
type: BooleanConstructor;
};
}>>, {
autoClear: boolean;
defaultCache: boolean;
ssrInline: boolean;
}, true, {}, {}, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, Readonly;
cache: {
type: PropType;
};
hashPriority: {
type: PropType;
};
container: PropType;
ssrInline: BooleanConstructor;
transformers: PropType;
linters: PropType;
defaultCache: {
type: BooleanConstructor;
};
}>>, () => import("vue").VNode[], {}, {}, {}, {
autoClear: boolean;
defaultCache: boolean;
ssrInline: boolean;
}>;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} & import("vue").ComponentOptionsBase;
cache: {
type: PropType;
};
hashPriority: {
type: PropType;
};
container: PropType;
ssrInline: BooleanConstructor;
transformers: PropType;
linters: PropType;
defaultCache: {
type: BooleanConstructor;
};
}>>, () => import("vue").VNode[], unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
autoClear: boolean;
defaultCache: boolean;
ssrInline: boolean;
}, {}, string, {}> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("vue").Plugin;
};
export default _default;