import { PathFactory, PathParserConfig, PathPool, Path as IPath, PathComponents } from '../type';
export declare class PathFactoryImpl implements PathFactory {
    private processor;
    private pool?;
    constructor(config?: PathParserConfig, pool?: PathPool);
    create(component: string, path: string, config?: PathParserConfig): IPath;
    createFromComponents(components: PathComponents): IPath;
    createMany(component: string, paths: string[], config?: PathParserConfig): IPath[];
    createWithConfig(component: string, path: string, normalizeConfig?: {
        toLowerCase?: boolean;
        replaceSpaces?: boolean;
        customNormalizer?: (path: string) => string;
    }): IPath;
}
export declare class DefaultPathFactory extends PathFactoryImpl {
    constructor();
}
export declare class SimplePathPool implements PathPool {
    private pool;
    private maxSize;
    constructor(maxSize?: number);
    get(): IPath;
    put(path: IPath): void;
    clear(): void;
    size(): number;
}
export declare class PathBuilder {
    private component;
    private path;
    private config;
    private factory;
    constructor(factory?: PathFactory);
    withComponent(component: string): PathBuilder;
    withPath(path: string): PathBuilder;
    withNormalization(normalize: boolean): PathBuilder;
    withSpaceReplacement(replaceSpaces: boolean): PathBuilder;
    withNormalizer(normalizer: (path: string) => string): PathBuilder;
    build(): IPath;
    reset(): PathBuilder;
}
export declare class PathFactoryUtils {
    private static defaultFactory;
    static createContentPath(path: string): IPath;
    static createStaticPath(path: string): IPath;
    static createLayoutPath(path: string): IPath;
    static createArchetypePath(path: string): IPath;
    static createDataPath(path: string): IPath;
    static createThemePath(path: string): IPath;
    static createFromConfig(config: {
        component: string;
        paths: string[];
        normalize?: boolean;
        replaceSpaces?: boolean;
    }): IPath[];
    static builder(): PathBuilder;
    static createWithPool(component: string, path: string, pool: PathPool): IPath;
}
