import { FieldProcessor } from '@ephox/boulder';
import { PartTypeAdt } from '../../parts/PartType';
import { AlloySpec, SketchSpec } from '../component/SpecTypes';
import { CompositeSketchDetail, CompositeSketchSpec, SingleSketchDetail, SingleSketchSpec } from './Sketcher';
export type SingleSketchFactory<D extends SingleSketchDetail, S extends SingleSketchSpec> = (detail: D, specWithUid: S) => SketchSpec;
export type CompositeSketchFactory<D extends CompositeSketchDetail, S extends CompositeSketchSpec> = (detail: D, components: AlloySpec[], spec: S, externals: any) => SketchSpec;
declare const single: <D extends SingleSketchDetail, S extends SingleSketchSpec>(owner: string, schema: FieldProcessor[], factory: SingleSketchFactory<D, S>, spec: S) => SketchSpec;
declare const composite: <D extends CompositeSketchDetail, S extends CompositeSketchSpec>(owner: string, schema: FieldProcessor[], partTypes: PartTypeAdt[], factory: CompositeSketchFactory<D, S>, spec: S) => SketchSpec;
declare const supplyUid: <S>(spec: S) => S & {
    uid: string;
};
export { supplyUid, single, composite };
//# sourceMappingURL=UiSketcher.d.ts.map