import * as postcss_lib_no_work_result from 'postcss/lib/no-work-result';
import postcssJs from 'postcss-js';
import * as postcss from 'postcss';
import postcss__default, { Root, AcceptedPlugin } from 'postcss';
import { VarPrefixerOptions, CodegenOptions, DeepPartial } from '@icestack/types';
export { VarPrefixerOptions } from '@icestack/types';
import * as tailwindcss_types_config from 'tailwindcss/types/config';
import { Config } from 'tailwindcss';

interface Options {
    prefix?: string;
    ignore?: ReadonlyArray<RegExp | string>;
}

declare function getPlugin(options: VarPrefixerOptions): postcss.Plugin | postcss.Processor | undefined;

declare function resolveTailwindcss(opts: {
    css: string;
    config: Config;
    options: CodegenOptions;
}): Promise<postcss__default.Result<postcss__default.Document | postcss__default.Root>>;
declare function initTailwindcssConfig(config?: DeepPartial<Config>, ...defaults: DeepPartial<Config>[]): tailwindcss_types_config.Config;

declare function getJsProcess(): {
    baseProcess: <T>(x: T) => T;
    componentsProcess: <T>(x: T) => T;
    utilitiesProcess: <T>(x: T) => T;
};

declare function resolvePrefixOption(options: string | Options): Options;
declare function resolveVarPrefixOption(options: string | VarPrefixerOptions): VarPrefixerOptions;
declare function getPrefixerPlugin(prefix: CodegenOptions['prefix']): postcss__default.Plugin | postcss__default.Processor | undefined;
declare function objectify(root: Root): postcssJs.CssInJs;
declare function process(plugins: AcceptedPlugin[], css: string): postcss__default.LazyResult<postcss__default.Document | postcss__default.Root> | postcss_lib_no_work_result;

export { type Options as PrefixerOptions, getPlugin as getCssVarsPrefixerPlugin, getJsProcess, getPrefixerPlugin, initTailwindcssConfig, objectify, process, resolvePrefixOption, resolveTailwindcss, resolveVarPrefixOption };
