import * as t from "polyfact-io-ts";
import { GenerationOptions } from "../generate";
import { InputClientOptions } from "../clientOpts";
export declare function generateWithType<T extends t.Props, O extends GenerationOptions & {
    infos?: boolean;
}>(task: string, type: t.TypeC<T>, options?: O, clientOptions?: InputClientOptions): Promise<O extends {
    infos: true;
} ? {
    result: t.TypeOf<t.TypeC<T>>;
    tokenUsage: {
        input: number;
        output: number;
    };
} : t.TypeOf<t.TypeC<T>>>;
export type GenerationWithTypeClient = {
    generateWithType: <T extends t.Props, O extends GenerationOptions & {
        infos?: boolean;
    }>(task: string, type: t.TypeC<T>, options?: O) => Promise<O extends {
        infos: true;
    } ? {
        result: t.TypeOf<t.TypeC<T>>;
        tokenUsage: {
            input: number;
            output: number;
        };
    } : t.TypeOf<t.TypeC<T>>>;
};
export default function client(clientOptions?: InputClientOptions): GenerationWithTypeClient;
