import { type ComputedRef } from 'vue';
import { Schema } from 'effect';
export interface GenerateTextInput {
    readonly prompt: string;
    readonly system?: string;
    readonly signal?: AbortSignal;
    readonly maxTokens?: number;
    readonly onProgress?: () => void;
}
export interface AgenticTool {
    readonly name: string;
    readonly description: string;
    readonly inputJsonSchema: unknown;
    readonly execute: (input: unknown) => unknown | Promise<unknown>;
}
export interface GenerateObjectInput<A, I extends Record<string, unknown>> {
    readonly prompt: string;
    readonly system?: string;
    readonly schema: Schema.Schema<A, I>;
    readonly signal?: AbortSignal;
    readonly objectName?: string;
    readonly maxTokens?: number;
    readonly onProgress?: () => void;
    readonly tools?: ReadonlyArray<AgenticTool>;
    readonly retry?: {
        readonly previousOutput: unknown;
        readonly feedback: string;
    };
}
export interface Ai {
    readonly available: ComputedRef<boolean>;
    readonly generateText: (input: GenerateTextInput) => Promise<string>;
    readonly generateObject: <A, I extends Record<string, unknown>>(input: GenerateObjectInput<A, I>) => Promise<A>;
}
export declare class StructuredOutputDecodeError extends Error {
    readonly rawOutput: unknown;
    constructor(rawOutput: unknown, cause: unknown);
}
export declare const ai: Ai;
