export declare class JsonPointer {
    /**
     * Returns a JsonPointer object from a string or JsonPointer.
     * Used to allow clients to pass in either a string or a JsonPointer without having
     * to deal with the difference.
     *
     * @param path string or JsonPointer
     */
    static get(path: string | string[] | JsonPointer): JsonPointer;
    /**
     * Collects all paths to objects deemed interesting by the predicated passed in.
     *
     * @param obj object to walk
     * @param pred predicate to decide whether an object's path should be returned
     */
    static paths(obj: any, pred?: (x: any, p: JsonPointer) => boolean): string[];
    /**
     * Collects all pointers to objects deemed interesting by the predicated passed in.
     *
     * @param obj object to walk
     * @param pred predicate to decide whether an object's path should be returned
     */
    static pointers(obj: any, pred?: (x: any, p: JsonPointer) => boolean): JsonPointer[];
    /**
     * Walk obj and pass all values and their paths to the walker function.
     *
     * Stops descending into sub-objects if the walker returns true.
     */
    static walkObject(obj: any, walker: (val: any, p: JsonPointer) => boolean): void;
    static deref(p: string, obj: any): any;
    constructor(ref: string | string[] | JsonPointer, extraUnquoted?: string);
    add(extraUnquoted: string): JsonPointer;
    hasParent(): boolean;
    get parent(): JsonPointer;
    get(segment: number): string;
    static unquote(s: string): string;
    static quote(s: string): string;
    static _deref(o: any, k: string): any;
    static _set(o: any, k: string, v: any): void;
    getValue(obj: any): any;
    setValue(obj: any, val: any, createPath?: boolean): any;
    withValue(obj: any, val: any, createPath?: boolean): any;
    _changeValue(obj: any, val: any, createPath: boolean, makeMutable: (x: any) => any): any;
    deleteValue(obj: any): void;
    asString(): string;
    toString(): string;
    get keys(): string[];
    private _keypath;
}
