import type { PackageResolvingOptions } from 'local-pkg';
import type { TailwindSourceEntry as SourceEntry } from '../tailwindcss/source-scan.js';
import type { TailwindV4SourceOptions } from '../tailwindcss/v4-engine/index.js';
import type { LengthUnitsRuntimeOptions } from '../tailwindcss/runtime-types.js';
type TailwindV4CssSource = NonNullable<TailwindV4SourceOptions['cssSources']>[number];
export type CacheStrategy = 'merge' | 'overwrite';
export type CacheDriver = 'file' | 'memory' | 'noop';
export interface CacheOptions {
    enabled?: boolean;
    cwd?: string;
    dir?: string;
    file?: string;
    strategy?: CacheStrategy;
    driver?: CacheDriver;
}
export interface ExtractOptions {
    write?: boolean;
    file?: string;
    format?: 'json' | 'lines';
    pretty?: number | boolean;
    removeUniversalSelector?: boolean;
}
export interface ExposeContextOptions {
    refProperty?: string;
}
export interface ExtendLengthUnitsOptions extends Partial<LengthUnitsRuntimeOptions> {
    enabled?: boolean;
}
export interface ApplyOptions {
    overwrite?: boolean;
    exposeContext?: boolean | ExposeContextOptions;
    extendLengthUnits?: false | ExtendLengthUnitsOptions;
}
export interface TailwindRuntimeOptionsBase {
    config?: string;
    cwd?: string;
    postcssPlugin?: string;
}
export interface TailwindV4Options {
    base?: string;
    css?: string;
    cssSources?: TailwindV4CssSource[];
    cssEntries?: string[];
    sources?: SourceEntry[];
    bareArbitraryValues?: boolean | {
        units?: string[];
    } | undefined;
}
export interface TailwindCssOptions extends TailwindRuntimeOptionsBase {
    version?: 4;
    packageName?: string;
    resolve?: PackageResolvingOptions;
    v4?: TailwindV4Options;
}
export interface TailwindCssRuntimeOptions {
    projectRoot?: string;
    tailwindcss?: TailwindCssOptions;
    apply?: ApplyOptions;
    extract?: ExtractOptions;
    filter?: (className: string) => boolean;
    cache?: boolean | CacheOptions;
}
export {};
