import type { BaseArgs, ICallable } from "../../core/program";
import type { Locale } from './utils';
import type { ConfigDefaults } from './utils/config';
import { BaseProgram } from "../../core/program";
import { Command } from "../../core/config";
import { getHooks } from './hooks';
import { Extract } from './commands/extract';
import { Compose } from './commands/compose';
export { getHooks };
export interface IProvider {
    skip(files: [string, string][], config: TranslateConfig): Promise<void>;
    translate(files: string[], config: TranslateConfig): Promise<void>;
}
export type TranslateArgs = BaseArgs & {
    output: AbsolutePath;
    provider: string;
    source?: string;
    target?: string | string[];
    include?: string[];
    exclude?: string[];
    vars?: Hash;
};
export type TranslateConfig = Pick<BaseArgs, 'input' | 'strict' | 'quiet'> & {
    output: AbsolutePath;
    provider: string;
    source: Locale;
    target: Locale[];
    include: string[];
    exclude: string[];
    files: string[];
    skipped: [string, string][];
    vars: Hash;
    dryRun: boolean;
} & ConfigDefaults;
export declare class Translate extends BaseProgram<TranslateConfig, TranslateArgs> {
    readonly name = "Translate";
    readonly command: Command;
    readonly options: import("../../core/config").ExtendedOption[];
    readonly provider: IProvider | undefined;
    readonly extract: Extract;
    readonly compose: Compose;
    protected readonly modules: ICallable[];
    private run;
    apply(program?: BaseProgram): void;
    action(): Promise<void>;
}
