export declare type TInputOptions = ({
    rootDir?: string;
} | {
    aliases: AliasDefinition[];
}) & {
    modulesDir?: string[];
    debug?: boolean;
};
export declare type AliasDefinition = {
    alias: string;
    pathnames: string[];
    exact: boolean;
};
declare type TsAliasList = {
    [alias: string]: string[];
};
declare type ModuleAliasList = {
    [alias: string]: string | Function;
};
declare type TWebpackExternals = (data: {
    request: string;
}, callback: (err?: undefined, result?: string) => void) => void;
export declare type TOutputOptions<TNodeExternals extends boolean> = {
    modulesPath?: string;
    shortenPaths?: boolean;
    nodeExternals?: TNodeExternals;
};
declare type TWebpackOutput<TNodeExternals extends boolean> = {
    aliases: TsAliasList;
    externals: TNodeExternals extends true ? TWebpackExternals : undefined;
};
export default class TsAlias {
    private options;
    typescript: TsAliasList;
    list: AliasDefinition[];
    constructor(options?: TInputOptions);
    private readTsConfig;
    private processTsAliases;
    /**
     * Replace real path by alias
     * @param realpath The path you want to replace with alias
     * @param strict true to return null when no alias could be applied to the path
     */
    apply(realpath: string, strict?: false): string;
    apply(realpath: string, strict: true): string | null;
    /**
     * Check if the provided path can be shorten with aliases
     * @param filename The path to check
     * @returns If filename can be shorten an alias
     */
    isAliased(filename: string): boolean;
    realpath(request: string, strict?: false): string;
    realpath(request: string, strict: true): string | null;
    /**
     * If the provided path contains an alias
     * @param filename The path to check
     * @returns If filename contains an alias
     */
    containsAlias(filename: string): boolean;
    forWebpack<TNodeExternals extends boolean>({ modulesPath, shortenPaths, nodeExternals }: TOutputOptions<TNodeExternals>): TWebpackOutput<TNodeExternals>;
    forModuleAlias(enableCache?: boolean): ModuleAliasList;
}
export {};
