export type JsonPointer = { nil: ""; append: ( (segment: string, pointer: string) => string ) & ( (segment: string) => (pointer: string) => string ); get: ( (pointer: string, subject: Pointable) => unknown ) & ( (pointer: string) => Getter ); set: ( (pointer: string, subject: A, value: unknown) => A ) & ( (pointer: string) => Setter ); assign: ( (pointer: string, subject: A, value: unknown) => void ) & ( (pointer: string) => Assigner ); unset: ( (pointer: string, subject: A) => A ) & ( (pointer: string) => Unsetter ); remove: ( (pointer: string, subject: Pointable) => void ) & ( (pointer: string) => Remover ); } export type Getter = (subject: Pointable) => unknown; export type Setter = ( (subject: A, value: unknown) => A ) & ( (subject: A) => (value: unknown) => A ); export type Assigner = ( (subject: A, value: unknown) => void ) & ( (subject: A) => (value: unknown) => void ); export type Unsetter = (subject: A) => A; export type Remover = (subject: Pointable) => void; export type Json = string | number | boolean | null | JsonObject | Json[]; export type JsonObject = { [property: string]: Json; }; export type Pointable = JsonObject | Json[]; declare const JsonPointer: JsonPointer; export const nil: JsonPointer["nil"]; export const append: JsonPointer["append"]; export const get: JsonPointer["get"]; export const set: JsonPointer["set"]; export const assign: JsonPointer["assign"]; export const unset: JsonPointer["unset"]; export const remove: JsonPointer["remove"]; export default JsonPointer;