import { StyleResult } from '../utils/renderStyles';
import { StyleInjector } from './injector';
import { GlobalInjectResult, InjectResult, StyleInjectorConfig } from './types';
declare const GLOBAL_INJECTOR_KEY = "__TASTY_GLOBAL_INJECTOR__";
declare global {
    interface Window {
        [GLOBAL_INJECTOR_KEY]?: StyleInjector;
    }
}
/**
 * Configure the global style injector
 */
export declare function configure(config?: Partial<StyleInjectorConfig>): void;
/**
 * Allocate a className for a cacheKey without injecting styles yet
 */
export declare function allocateClassName(cacheKey: string, options?: {
    root?: Document | ShadowRoot;
}): {
    className: string;
    isNewAllocation: boolean;
};
/**
 * Inject styles and return className with dispose function
 */
export declare function inject(rules: StyleResult[], options?: {
    root?: Document | ShadowRoot;
    cacheKey?: string;
}): InjectResult;
/**
 * Inject global rules that should not reserve tasty class names
 */
export declare function injectGlobal(rules: StyleResult[], options?: {
    root?: Document | ShadowRoot;
}): GlobalInjectResult;
/**
 * Inject keyframes and return object with toString() and dispose()
 */
export declare function keyframes(steps: import('./types').KeyframesSteps, nameOrOptions?: string | {
    root?: Document | ShadowRoot;
    name?: string;
}): import('./types').KeyframesResult;
/**
 * Get CSS text from all sheets (for SSR)
 */
export declare function getCssText(options?: {
    root?: Document | ShadowRoot;
}): string;
/**
 * Collect only CSS used by a rendered subtree (like jest-styled-components).
 * Pass the container returned by render(...).
 */
export declare function getCssTextForNode(node: ParentNode | Element | DocumentFragment, options?: {
    root?: Document | ShadowRoot;
}): string;
/**
 * Force cleanup of unused rules
 */
export declare function cleanup(root?: Document | ShadowRoot): void;
/**
 * Check if we're currently running in a test environment
 */
export declare function getIsTestEnvironment(): boolean;
/**
 * Get the global injector instance for debugging
 */
export declare const injector: {
    readonly instance: StyleInjector;
};
/**
 * Destroy all resources and clean up
 */
export declare function destroy(root?: Document | ShadowRoot): void;
/**
 * Create a new isolated injector instance
 */
export declare function createInjector(config?: Partial<StyleInjectorConfig>): StyleInjector;
/**
 * Create a global style component like styled-components createGlobalStyle
 * Returns a React component that injects global styles when mounted and cleans up when unmounted
 */
export declare function createGlobalStyle<Props = {}>(strings: TemplateStringsArray, ...interpolations: Array<string | number | ((props: Props) => string | number)>): import('react').ComponentType<Props & {
    root?: Document | ShadowRoot;
}>;
export type { StyleInjectorConfig, InjectResult, DisposeFunction, RuleInfo, SheetInfo, RootRegistry, StyleRule, KeyframesInfo, KeyframesResult, KeyframesSteps, KeyframesCacheEntry, CacheMetrics, } from './types';
export { StyleInjector } from './injector';
export { SheetManager } from './sheet-manager';
