import { Theme } from '@aesthetic/system';
import { Engine } from '@aesthetic/types';
import { SheetFactory, SheetParams, SheetRenderer, SheetRenderResult } from './types';
export declare class Sheet<Input extends object, Output, Factory extends SheetFactory<Input>> {
    factory: Factory;
    renderer: SheetRenderer<Input, Output, ReturnType<Factory>>;
    protected cache: Record<string, SheetRenderResult<Output>>;
    constructor(factory: Factory, renderer: SheetRenderer<Input, Output, ReturnType<Factory>>);
    compose(params: SheetParams): Factory;
    render(engine: Engine<Input, Output>, theme: Theme<Input>, baseParams: SheetParams): SheetRenderResult<Output>;
    protected validateFactory(factory: Factory): Factory;
}
//# sourceMappingURL=Sheet.d.ts.map