import { NodePath } from '@babel/core';
import { JSXExpressionContainer, SourceLocation, StringLiteral } from '@babel/types';
export interface MessageDescriptor {
    id: string;
    defaultMessage?: string;
    description?: string;
}
export interface State {
    messages: ExtractedMessageDescriptor[];
    meta: Record<string, string>;
    componentNames: string[];
    functionNames: string[];
}
export type ExtractedMessageDescriptor = MessageDescriptor & Partial<SourceLocation> & {
    file?: string;
};
export type MessageDescriptorPath = Record<keyof MessageDescriptor, NodePath<StringLiteral> | NodePath<JSXExpressionContainer> | undefined>;
export interface Options {
    overrideIdFn?: (id?: string, defaultMessage?: string, description?: string, filePath?: string) => string;
    onMsgExtracted?: (filePath: string, msgs: MessageDescriptor[]) => void;
    onMetaExtracted?: (filePath: string, meta: Record<string, string>) => void;
    idInterpolationPattern?: string;
    removeDefaultMessage?: boolean;
    additionalComponentNames?: string[];
    additionalFunctionNames?: string[];
    pragma?: string;
    extractSourceLocation?: boolean;
    ast?: boolean;
    preserveWhitespace?: boolean;
}