export interface TemplateMetadata {
    name: string;
    description: string;
    model?: string;
    temperature?: number;
    maxTokens?: number;
    maxThinkingTokens?: number;
    version?: string;
}
export interface TemplateMessage {
    role: 'user' | 'assistant';
    content: string;
    condition?: string;
}
export interface TemplateContent {
    systemPrompt?: string;
    messages: TemplateMessage[];
}
export interface ParsedTemplate {
    metadata: TemplateMetadata;
    content: TemplateContent;
}
export interface LLMMessage {
    role: 'system' | 'user' | 'assistant';
    content: string;
}
export interface LLMConfig {
    model: string;
    messages: LLMMessage[];
    temperature?: number;
    maxTokens?: number;
    maxThinkingTokens?: number;
}
export interface RenderContext {
    [key: string]: any;
}
export interface RenderedPrompt {
    config: LLMConfig;
    metadata: TemplateMetadata;
}
export interface LLMUsageResult {
    content: string;
    provider: string;
    model: string;
    inputTokens: number;
    outputTokens: number;
    costUsd?: number;
    thinkingTokens?: number;
}
export interface LLMAdapter {
    name: string;
    generate(config: LLMConfig): Promise<LLMUsageResult>;
    supportsModel(model: string): boolean;
}
export interface PromptlyConfig {
    templatesPath: string;
    adapters: LLMAdapter[];
    defaultModel?: string;
    cache?: boolean;
}
export interface TemplateValidationRule {
    field: string;
    required?: boolean;
    type?: 'string' | 'number' | 'boolean' | 'object' | 'array';
    validator?: (value: any) => boolean;
}
export interface TemplateValidationSchema {
    [templateName: string]: TemplateValidationRule[];
}
//# sourceMappingURL=index.d.ts.map