interface Options {
    from: string;
}
type TextObject = Record<string, string>;
export interface BatchResponse {
    data: {
        source: {
            lan: string;
            text: string;
        };
        target: {
            lan: string;
            text: string;
        }[];
    };
}
export interface SingleResponse {
    data: {
        source: {
            lan: string;
            text: string;
        };
        target: {
            lan: string;
            text: string;
        };
    };
}
type TranslatedText<T extends TextObject, U extends string[]> = {
    languageCode: U[number];
} & {
    [K in keyof T]: string;
};
export type MultiResponse<T extends TextObject, U extends string[]> = {
    data: {
        source: {
            lan: string;
        };
        target: TranslatedText<T, U>[];
    };
};
interface Translate {
    batch: (text: string, targets: string[], options?: Options) => Promise<BatchResponse>;
    single: (text: string, targets: string, options?: Options) => Promise<SingleResponse>;
    multi: <T extends TextObject>(text: T, targets: string[], options?: Options) => Promise<MultiResponse<T, typeof targets>>;
}
declare const translate: Translate;
export default translate;
