import { JsonStringPointer, UriFragmentIdentifierPointer, Pointer, RelativeJsonPointer, PathSegments, JsonStringPointerListItem, UriFragmentIdentifierPointerListItem } from './types';
export declare type Visitor = (ptr: JsonStringPointer, val: unknown) => void;
declare const $ptr: unique symbol;
declare const $frg: unique symbol;
declare const $get: unique symbol;
export declare class JsonPointer {
    private [$ptr];
    private [$frg];
    private [$get];
    static create(pointer: Pointer | PathSegments): JsonPointer;
    static has(target: unknown, pointer: Pointer | PathSegments | JsonPointer): boolean;
    static get(target: unknown, pointer: Pointer | PathSegments | JsonPointer): unknown;
    static set(target: unknown, pointer: Pointer | PathSegments | JsonPointer, val: unknown, force?: boolean): unknown;
    static unset(target: unknown, pointer: Pointer | PathSegments | JsonPointer): unknown;
    static decode(pointer: Pointer): PathSegments;
    static visit(target: unknown, visitor: Visitor, fragmentId?: boolean): void;
    static listPointers(target: unknown): JsonStringPointerListItem[];
    static listFragmentIds(target: unknown): UriFragmentIdentifierPointerListItem[];
    static flatten(target: unknown, fragmentId?: boolean): Record<Pointer, unknown>;
    static map(target: unknown, fragmentId?: boolean): Map<Pointer, unknown>;
    readonly path: PathSegments;
    constructor(ptr: Pointer | PathSegments);
    get(target: unknown): unknown;
    set(target: unknown, value: unknown, force?: boolean): unknown;
    unset(target: unknown): unknown;
    has(target: unknown): boolean;
    parent(target: unknown): unknown;
    relative(ptr: RelativeJsonPointer): JsonPointer;
    rel(target: unknown, ptr: RelativeJsonPointer): unknown;
    concat(ptr: JsonPointer | Pointer | PathSegments): JsonPointer;
    get pointer(): JsonStringPointer;
    get uriFragmentIdentifier(): UriFragmentIdentifierPointer;
    toString(): string;
}
declare const $pointer: unique symbol;
export declare class JsonReference {
    static isReference(candidate: unknown): candidate is JsonReference;
    private readonly [$pointer];
    readonly $ref: UriFragmentIdentifierPointer;
    constructor(pointer: JsonPointer | Pointer | PathSegments);
    resolve(target: unknown): unknown;
    pointer(): JsonPointer;
    toString(): string;
}
export {};
