import { TranscriptionModelV1, ProviderV1 } from '@ai-sdk/provider';
import { FetchFunction } from '@ai-sdk/provider-utils';

type SarvamConfig = {
    provider: string;
    url: (options: {
        modelId: string;
        path: string;
    }) => string;
    headers: () => Record<string, string | undefined>;
    fetch?: FetchFunction;
    generateId?: () => string;
};

type SarvamTranscriptionModelId = 'saarika:v2' | 'saarika:v1' | 'saarika:flash' | (string & {});

interface SarvamTranscriptionModelConfig extends SarvamConfig {
    _internal?: {
        currentDate?: () => Date;
    };
}
declare class SarvamTranscriptionModel implements TranscriptionModelV1 {
    readonly modelId: SarvamTranscriptionModelId;
    private readonly config;
    readonly specificationVersion = "v1";
    constructor(modelId: SarvamTranscriptionModelId, config: SarvamTranscriptionModelConfig);
    get provider(): string;
    private getArgs;
    doGenerate(options: Parameters<TranscriptionModelV1['doGenerate']>[0]): Promise<Awaited<ReturnType<TranscriptionModelV1['doGenerate']>>>;
}

interface SarvamProvider extends Pick<ProviderV1, 'transcriptionModel'> {
    (modelId: 'saarika:v2', settings?: {}): {
        transcription: SarvamTranscriptionModel;
    };
    /**
     * Creates a model for transcription.
     */
    transcription(modelId: SarvamTranscriptionModelId): TranscriptionModelV1;
}
interface SarvamProviderSettings {
    apiKey?: string;
    headers?: Record<string, string>;
    fetch?: FetchFunction;
}
declare function createSarvam(options?: SarvamProviderSettings): SarvamProvider;
declare const sarvam: SarvamProvider;

export { type SarvamProvider, type SarvamProviderSettings, createSarvam, sarvam };
