import { FieldTemplateItem, SchemaTemplateItem } from '@sprucelabs/schema';
import { ProjectLanguage } from '@sprucelabs/spruce-skill-utils';
import { SchemaBuilderTemplateItem, ValueTypes } from '@sprucelabs/spruce-templates';
import AbstractWriter, { WriteResults } from '../../../writers/AbstractWriter';
export default class SchemaWriter extends AbstractWriter {
    private readonly fieldTemplates;
    writeBuilder(destinationDir: string, options: SchemaBuilderTemplateItem & {
        shouldEnableVersioning?: boolean;
        version?: string;
    }): Promise<WriteResults>;
    writeFieldTypes(destinationDir: string, options: WriteFieldTypesOptions): Promise<WriteResults>;
    writeSchemasAndTypes(destinationDirOrFilename: string, options: Omit<GenerateSchemaTypesOptions, 'valueTypes'> & {
        valueTypes?: ValueTypes;
        goModuleNameAndPath?: string;
    }): Promise<WriteResults>;
    private writeAllSchemas;
    private writeSchema;
    private resolveTypesFile;
    writeValueTypes(destinationDir: string, options: {
        schemaTemplateItems: SchemaTemplateItem[];
        fieldTemplateItems: FieldTemplateItem[];
        globalSchemaNamespace?: string;
    }): Promise<WriteResults>;
    writePlugin(cwd: string): Promise<WriteResults>;
}
interface WriteFieldTypesOptions {
    fieldTemplateItems: FieldTemplateItem[];
}
export interface GenerateSchemaTypesOptions {
    fieldTemplateItems: FieldTemplateItem[];
    schemaTemplateItems: SchemaTemplateItem[];
    valueTypes: ValueTypes;
    globalSchemaNamespace?: string;
    typesTemplate?: string;
    registerBuiltSchemas?: boolean;
    shouldImportCoreSchemas: boolean;
    language?: ProjectLanguage;
    goModuleNameAndPath?: string;
}
export {};
