import { PermissionContractMap } from '@sprucelabs/mercury-types';
import { Schema, SchemaTemplateItem, FieldTemplateItem } from '@sprucelabs/schema';
import { TemplateRenderAs } from '@sprucelabs/schema';
import handlebars from 'handlebars';
import { FieldDefinitions } from '#spruce/schemas/fields/fields.types';
import { DirectoryTemplateCode, DirectoryTemplateContextMap, ValueTypes, SchemaBuilderTemplateItem, ErrorOptions, ErrorTemplateItem, TestOptions, EventListenerOptions, EventContractTemplateItem, EventPayloadOptions, StoreTemplateOptions, StoreTemplateItem, ViewsOptions as CombinedViewsOptions, ListenerTemplateItem } from './types/templates.types';
import './addons';
export declare const templates: {
    schemasTypes(options: {
        schemaTemplateItems: SchemaTemplateItem[];
        fieldTemplateItems: FieldTemplateItem[];
        valueTypes?: ValueTypes;
        globalSchemaNamespace?: string;
        typesTemplate?: string;
        language: "typescript" | "go";
    }): string;
    valueTypes(options: {
        schemaTemplateItems: SchemaTemplateItem[];
        fieldTemplateItems: FieldTemplateItem[];
        globalSchemaNamespace?: string;
    }): string;
    schema(options: SchemaTemplateItem & {
        schemaTemplateItems: SchemaTemplateItem[];
        fieldTemplateItems: FieldTemplateItem[];
        valueTypes: ValueTypes;
        globalSchemaNamespace?: string;
        registerBuiltSchemas: boolean;
        schemaFile?: string;
        goModuleNameAndPath?: string;
        typesFile?: string;
        language: "typescript" | "go";
    }): string;
    schemaBuilder(options: SchemaBuilderTemplateItem): string;
    error(options: ErrorOptions): string;
    errorOptionsTypes(options: {
        options: ErrorTemplateItem[];
    }): string;
    schemaExample(options: {
        nameCamel: string;
        namePascal: string;
        definition: Schema;
    }): string;
    schemaPlugin(): string;
    errorPlugin(): string;
    conversationPlugin(): string;
    deployPlugin(): string;
    errorExample(options: {
        nameCamel: string;
        namePascal: string;
        definition: Schema;
    }): string;
    test(options: TestOptions): string;
    fieldsTypes(options: {
        fieldTemplateItems: FieldTemplateItem[];
    }): string;
    fieldClassMap(options: {
        fieldTemplateItems: FieldTemplateItem[];
    }): string;
    launchConfig(): string;
    vsCodeSettings(): Promise<string>;
    listener(options: EventListenerOptions): string;
    listeners(options: {
        listeners: ListenerTemplateItem[];
    }): string;
    eventContract(options: EventContractTemplateItem & {
        schemaTemplateItems: SchemaTemplateItem[];
    }): string;
    eventOptions(options: {
        isGlobal: boolean;
    }): string;
    permissionPlugin(): string;
    permissions(options: {
        contracts: {
            path: string;
            nameCamel: string;
        }[];
    }): string;
    permissionContractBuilder(options: {
        nameCamel: string;
        nameKebab: string;
        nameReadable: string;
        description?: string;
    }): string;
    permissionTypes(options: {
        contracts: PermissionContractMap;
    }): string;
    eventEmitPayload(options: EventPayloadOptions): string;
    eventEmitTarget(options: EventPayloadOptions): string;
    eventResponsePayload(options: EventPayloadOptions): string;
    combinedEventsContract(options: {
        templateItems: EventContractTemplateItem[];
        shouldImportCoreEvents?: boolean;
        skillEventContractTypesFile: string;
    }): string;
    sandboxWillBootListener(): string;
    polish(): string;
    directoryTemplate<K extends DirectoryTemplateCode>(options: {
        kind: K;
        context: DirectoryTemplateContextMap[K];
    }): Promise<(import("./types/templates.types").DirectoryTemplateFile & {
        contents: string;
    })[]>;
    isValidTemplatedDirectory(options: {
        kind: DirectoryTemplateCode;
        dir: string;
    }): Promise<boolean>;
    conversationTopic(options: {
        nameReadable: string;
    }): string;
    generateFieldKey(renderAs: TemplateRenderAs, definition: FieldDefinitions): string;
    storePlugin(): string;
    store(options: StoreTemplateOptions): string;
    storeTypes(options: {
        stores: StoreTemplateItem[];
    }): string;
    stores(options: {
        stores: StoreTemplateItem[];
    }): string;
    skillViewController(options: {
        namePascal: string;
        nameKebab: string;
    }): string;
    viewController(options: {
        viewModel: string;
        namePascal: string;
        nameKebab: string;
    }): string;
    appController(options: {
        id: string;
        namespacePascal: string;
    }): string;
    views(options: CombinedViewsOptions): string;
    viewPlugin(): string;
    agentPlugin(): string;
    agentSystemPrompt(options: {
        name: string;
    }): string;
    viewControllerPlugin(options: {
        namePascal: string;
        nameCamel: string;
    }): string;
    theme(): string;
    logTransport(): string;
    claudeMd(): string;
    agentsMd(): string;
    projectMd(): string;
};
export type Templates = typeof templates;
export { default as importExtractorUtil } from './utilities/importExtractor.utility';
export default handlebars;
export * from './types/templates.types';
