import * as ts from "typescript";
import { MessageDescriptor } from "./types";
export declare type Extractor = (msgId: string, messages: MessageDescriptor, filename?: string) => void;
export declare type InterpolateNameFn = (sourceFileName: string, msg: MessageDescriptor) => string;
export interface Opts {
    /**
     * Override import name (the `_`) in `import {_} from 'ts-transform-react-intl'`
     *
     * @type {string}
     * @memberof Opts
     */
    macroImportName?: string;
    /**
     * Override module specifier in `import {_} from 'ts-transform-react-intl`
     *
     * @type {string}
     * @memberof Opts
     */
    macroModuleSpecifier?: string;
    /**
     * Callback function that gets called everytime we encountered something
     * that looks like a MessageDescriptor
     *
     * @type {Extractor}
     * @memberof Opts
     */
    onMsgExtracted?: Extractor;
    /**
     * webpack-style name interpolation
     *
     * @type {(InterpolateNameFn | string)}
     * @memberof Opts
     */
    interpolateName?: InterpolateNameFn | string;
    /**
     * Base URL of your project, same as your compiler tsconfig.json
     * This is primarily used to interpolate relative path instead of
     * absolute path all the time, which varies machine to machine
     *
     * @type {string}
     * @memberof Opts
     */
    baseUrl?: string;
}
export declare function transform(opts: Opts): (ctx: ts.TransformationContext) => ts.Transformer<ts.SourceFile>;
