export declare const pathKey: (p: (string | number)[]) => string;
export declare const toWildcardPath: (p: (string | number)[]) => string[];
export type TWildcardTemplate = {
    wildcardPath: (string | number)[];
};
export type TTemplate = TWildcardTemplate & {
    value: unknown;
};
export declare const collectArrayLengths: (obj: unknown, base?: (string | number)[], out?: Map<string, number>) => Map<string, number>;
export declare const templateMatchesArray: (tpl: TWildcardTemplate, arrayPath: (string | number)[]) => boolean;
export declare const buildConcretePathForNewItem: (tpl: TWildcardTemplate, arrayPath: (string | number)[], newIndex: number) => (string | number)[];
export declare const getConcretePathsForNewArrayItem: (templates: TWildcardTemplate[], arrayPath: (string | number)[], newIndex: number) => (string | number)[][];
export declare const scrubLiteralWildcardKeys: <T>(input: T) => T;
