/**
Unescape token part of a JSON Pointer string

`token` should *not* contain any '/' characters.

> Evaluation of each reference token begins by decoding any escaped
> character sequence.  This is performed by first transforming any
> occurrence of the sequence '~1' to '/', and then transforming any
> occurrence of the sequence '~0' to '~'.  By performing the
> substitutions in this order, an implementation avoids the error of
> turning '~01' first into '~1' and then into '/', which would be
> incorrect (the string '~01' correctly becomes '~1' after
> transformation).

Here's my take:

~1 is unescaped with higher priority than ~0 because it is a lower-order escape character.
I say "lower order" because '/' needs escaping due to the JSON Pointer serialization technique.
Whereas, '~' is escaped because escaping '/' uses the '~' character.
*/
export declare function unescapeToken(token: string): string;
/** Escape token part of a JSON Pointer string

> '~' needs to be encoded as '~0' and '/'
> needs to be encoded as '~1' when these characters appear in a
> reference token.

This is the exact inverse of `unescapeToken()`, so the reverse replacements must take place in reverse order.
*/
export declare function escapeToken(token: string): string;
export interface PointerEvaluation {
    parent: any;
    key: string;
    value: any;
}
/**
JSON Pointer representation
*/
export declare class Pointer {
    tokens: string[];
    constructor(tokens?: string[]);
    /**
    `path` *must* be a properly escaped string.
    */
    static fromJSON(path: string): Pointer;
    toString(): string;
    /**
    Returns an object with 'parent', 'key', and 'value' properties.
    In the special case that this Pointer's path == "",
    this object will be {parent: null, key: '', value: object}.
    Otherwise, parent and key will have the property such that parent[key] == value.
    */
    evaluate(object: any): PointerEvaluation;
    get(object: any): any;
    set(object: any, value: any): void;
    push(token: string): void;
    /**
    `token` should be a String. It'll be coerced to one anyway.
  
    immutable (shallowly)
    */
    add(token: string): Pointer;
    /**
    Create a new Pointer representing the parent of this one.
  
    The parent of the empty pointer is the empty pointer.
  
    immutable (shallowly)
    */
    parent(): Pointer;
}
