import { Property, PropertyOptions } from './Property'; import { State } from './State'; import { Json, JsonValue } from '../types/Json'; import { Optional } from '../types/Types'; import { TypeGuard } from '../types/TypeGuard'; import { List } from '../types/List'; import { Get } from '../types/Get'; import { Construct } from '../types/Constructor'; export type Mapping = { property: string; in: (source?: Json, key?: string) => Optional; out: (source?: Json, key?: string) => Optional; }; export declare const isMapping: TypeGuard; export type MapStartFrom = 'scratch' | 'source'; export type MapOptions = { startFrom: MapStartFrom; }; export declare class Mapper extends State implements Mapping { readonly options: MapOptions; readonly property: string; protected readonly map: { item: (property: string, options?: PropertyOptions) => Property; ignore: (property?: string) => Mapping; skipIn: (property: string) => Mapping; skipOut: (property: string) => Mapping; func: (property: string, funcIn: Get, Json>, funcOut: Get, Json>) => Mapping; add: (funcIn: Get) => Mapping; map: (mapper: Construct, property?: string) => Mapping; propsToList: (...maps: Mapping[]) => Mapping; list: (mapper: Mapping, property: string) => Mapping; }; constructor(options?: MapOptions, property?: string); get properties(): List<[string, Mapping]>; get keys(): List; get columns(): List; private get droppedIn(); private get droppedOut(); in(from?: Json): Json; out(to?: Json): Json; toString(): string; } export declare const mappings: { item: (property: string, options?: PropertyOptions) => Property; ignore: (property?: string) => Mapping; skipIn: (property: string) => Mapping; skipOut: (property: string) => Mapping; func: (property: string, funcIn: Get, Json>, funcOut: Get, Json>) => Mapping; add: (funcIn: Get) => Mapping; map: (mapper: Construct, property?: string) => Mapping; propsToList: (...maps: Mapping[]) => Mapping; list: (mapper: Mapping, property: string) => Mapping; };