export declare const id: (x: any) => any; export type OpticType = 'Equivalence' | 'Iso' | 'Lens' | 'Prism' | 'Traversal' | 'Getter' | 'AffineFold' | 'Fold' | 'Setter'; type CompositionType = { [T in OpticType]: { [U in OpticType]: OpticType | undefined; }; }; export declare const compositionType: CompositionType; type Profunctor = any; interface OpticFn { _tag: OpticType; _removable?: true | undefined; (P: Profunctor, optic: OpticFn): any; } export declare const eq: OpticFn; export declare const iso: (there: (x: any) => any, back: (x: any) => any) => OpticFn; export declare const lens: (view: (x: any) => any, update: (x: any) => any) => OpticFn; export declare const elems: OpticFn; export declare const to: (fn: (a: any) => any) => OpticFn; export declare const modify: (optic: any, fn: (x: any) => any, source: any) => any; export declare const set: (optic: any, value: any, source: any) => any; export declare const remove: (optic: any, source: any) => any; export declare const get: (optic: any, source: any) => any; export declare const preview: (optic: any, source: any) => any; export declare const collect: (optic: any, source: any) => any; export declare const indexed: OpticFn; export declare const prop: (key: string) => OpticFn; export declare const pick: (keys: string[]) => OpticFn; export declare const nth: (n: number) => OpticFn; export declare const when: (pred: (x: any) => boolean) => OpticFn; export declare const at: (i: number) => OpticFn; export declare const atKey: (key: string) => OpticFn; export declare const optional: OpticFn; export declare const guard: (fn: (a: A) => a is U) => OpticFn; export declare const find: (predicate: (item: any) => boolean) => OpticFn; export declare const filter: (predicate: (item: any) => boolean) => OpticFn; export declare const valueOr: (defaultValue: any) => OpticFn; export declare const partsOf: (traversal: Optic) => OpticFn; export declare const reread: (fn: (value: any) => any) => OpticFn; export declare const rewrite: (fn: (value: any) => any) => OpticFn; export declare const prependTo: OpticFn; export declare const appendTo: OpticFn; export declare const chars: OpticFn; export declare const words: OpticFn; export declare class Optic { _ref: OpticFn; constructor(_ref: OpticFn); get _tag(): OpticType; get _removable(): true | undefined; compose(other: Optic): Optic; iso(there: (x: any) => any, back: (x: any) => any): Optic; lens(view: (x: any) => any, set: (x: any, y: any) => any): Optic; indexed(): Optic; prop(key: string): Optic; path(...keys: string[]): Optic; pick(keys: string[]): Optic; nth(n: number): Optic; filter(predicate: (item: any) => boolean): Optic; valueOr(defaultValue: any): Optic; partsOf(traversalOrFn: any): Optic; reread(fn: (value: any) => any): Optic; rewrite(fn: (value: any) => any): Optic; optional(): Optic; guard_(): (fn: (value: any) => any) => Optic; guard(fn: (value: any) => any): Optic; at(i: number): Optic; head(): Optic; index(i: number): Optic; find(predicate: (item: any) => boolean): Optic; elems(): Optic; to(fn: (a: any) => any): Optic; when(predicate: (elem: any) => boolean): Optic; chars(): Optic; words(): Optic; prependTo(): Optic; appendTo(): Optic; } export declare const optic: Optic; export {};