import type { GjsifyLightningcss as GjsifyLightningcssNS } from 'gi://GjsifyLightningcss?version=1.0';
type EngineInstance = GjsifyLightningcssNS.Engine;
type EngineCtor = typeof GjsifyLightningcssNS.Engine;
export interface NativeLightningcssModule {
    Engine: EngineCtor;
}
export type { EngineInstance as Engine };
export declare function loadNativeLightningcss(): NativeLightningcssModule | null;
export declare function hasNativeLightningcss(): boolean;
export declare function getLoadError(): Error | null;
/**
 * Convenience facade matching the npm `lightningcss` `transform()` shape.
 * Returns the JS-side `{ code, map }` object expected by callers like
 * `cssAsStringPlugin`. Throws if the native prebuild is unavailable.
 */
export interface TransformInput {
    filename?: string;
    code: Uint8Array | string;
    /** browserslist query, e.g. `"firefox >= 60"` (npm `lightningcss`
     *  accepts a `targets` object; we accept the query string directly). */
    targets?: string;
    minify?: boolean;
    sourceMap?: boolean;
}
export interface TransformResult {
    code: Uint8Array;
    map?: Uint8Array;
}
export declare function transform(input: TransformInput): TransformResult;
/**
 * Convenience facade matching the npm `lightningcss` `bundle()` /
 * `bundleAsync()` shape but synchronous (the underlying lightningcss
 * `Bundler::bundle` is sync — npm's `bundleAsync` exists only because
 * the JS-side wrapper needed to host the JS resolver callback).
 *
 * Resolves `@import` chains via lightningcss's filesystem-backed
 * `FileProvider` — equivalent to `bundleAsync` with the default
 * `read: fs.readFileSync` resolver.
 */
export interface BundleInput {
    /** Entry CSS file path. */
    filename: string;
    /** browserslist query, e.g. `"firefox >= 60"`. */
    targets?: string;
    minify?: boolean;
    sourceMap?: boolean;
    /** Equivalent of npm `lightningcss`'s `errorRecovery: true`. Default true. */
    errorRecovery?: boolean;
}
export declare function bundle(input: BundleInput): TransformResult;
