import { Condition } from './Condition'; import { ReifiedType, TProperty1 } from '@lightningkite/khrysalis-runtime'; export declare class Modification { protected constructor(); hashCode(): number; equals(other: (any | null)): boolean; invoke(on: T): T; invokeDefault(): T; then(other: Modification): Modification.Chain; } export declare namespace Modification { class Chain extends Modification { readonly modifications: Array>; constructor(modifications: Array>); static properties: string[]; static propertyTypes(T: ReifiedType): { modifications: (ArrayConstructor | (ReifiedType | typeof Modification)[])[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: T): T; invokeDefault(): T; } } export declare namespace Modification { class IfNotNull extends Modification<(T | null)> { readonly modification: Modification; constructor(modification: Modification); static properties: string[]; static propertyTypes(T: ReifiedType): { modification: (ReifiedType | typeof Modification)[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: (T | null)): (T | null); invokeDefault(): (T | null); } } export declare namespace Modification { class Assign extends Modification { readonly value: T; constructor(value: T); static properties: string[]; static propertyTypes(T: ReifiedType): { value: ReifiedType; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: T): T; invokeDefault(): T; } } export declare namespace Modification { class CoerceAtMost extends Modification { readonly value: T; constructor(value: T); static properties: string[]; static propertyTypes(T: ReifiedType): { value: ReifiedType; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: T): T; invokeDefault(): T; } } export declare namespace Modification { class CoerceAtLeast extends Modification { readonly value: T; constructor(value: T); static properties: string[]; static propertyTypes(T: ReifiedType): { value: ReifiedType; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: T): T; invokeDefault(): T; } } export declare namespace Modification { class Increment extends Modification { readonly by: T; constructor(by: T); static properties: string[]; static propertyTypes(T: ReifiedType): { by: ReifiedType; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: T): T; invokeDefault(): T; } } export declare namespace Modification { class Multiply extends Modification { readonly by: T; constructor(by: T); static properties: string[]; static propertyTypes(T: ReifiedType): { by: ReifiedType; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: T): T; invokeDefault(): T; } } export declare namespace Modification { class AppendString extends Modification { readonly value: string; constructor(value: string); static properties: string[]; static propertyTypes(): { value: StringConstructor[]; }; copy: (values: Partial) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: string): string; invokeDefault(): string; } } export declare namespace Modification { class ListAppend extends Modification> { readonly items: Array; constructor(items: Array); static properties: string[]; static propertyTypes(T: ReifiedType): { items: (ArrayConstructor | ReifiedType)[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: Array): Array; invokeDefault(): Array; } } export declare namespace Modification { class ListRemove extends Modification> { readonly condition: Condition; constructor(condition: Condition); static properties: string[]; static propertyTypes(T: ReifiedType): { condition: (ReifiedType | typeof Condition)[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: Array): Array; invokeDefault(): Array; } } export declare namespace Modification { class ListRemoveInstances extends Modification> { readonly items: Array; constructor(items: Array); static properties: string[]; static propertyTypes(T: ReifiedType): { items: (ArrayConstructor | ReifiedType)[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: Array): Array; invokeDefault(): Array; } } export declare namespace Modification { class ListDropFirst extends Modification> { constructor(); invoke(on: Array): Array; invokeDefault(): Array; hashCode(): number; equals(other: (any | null)): boolean; } } export declare namespace Modification { class ListDropLast extends Modification> { constructor(); invoke(on: Array): Array; invokeDefault(): Array; hashCode(): number; equals(other: (any | null)): boolean; } } export declare namespace Modification { class ListPerElement extends Modification> { readonly condition: Condition; readonly modification: Modification; constructor(condition: Condition, modification: Modification); static properties: string[]; static propertyTypes(T: ReifiedType): { condition: (ReifiedType | typeof Condition)[]; modification: (ReifiedType | typeof Modification)[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: Array): Array; invokeDefault(): Array; } } export declare namespace Modification { class SetAppend extends Modification> { readonly items: Set; constructor(items: Set); static properties: string[]; static propertyTypes(T: ReifiedType): { items: (SetConstructor | ReifiedType)[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: Set): Set; invokeDefault(): Set; } } export declare namespace Modification { class SetRemove extends Modification> { readonly condition: Condition; constructor(condition: Condition); static properties: string[]; static propertyTypes(T: ReifiedType): { condition: (ReifiedType | typeof Condition)[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: Set): Set; invokeDefault(): Set; } } export declare namespace Modification { class SetRemoveInstances extends Modification> { readonly items: Set; constructor(items: Set); static properties: string[]; static propertyTypes(T: ReifiedType): { items: (SetConstructor | ReifiedType)[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: Set): Set; invokeDefault(): Set; } } export declare namespace Modification { class SetDropFirst extends Modification> { constructor(); invoke(on: Set): Set; invokeDefault(): Set; hashCode(): number; equals(other: (any | null)): boolean; } } export declare namespace Modification { class SetDropLast extends Modification> { constructor(); invoke(on: Set): Set; invokeDefault(): Set; hashCode(): number; equals(other: (any | null)): boolean; } } export declare namespace Modification { class SetPerElement extends Modification> { readonly condition: Condition; readonly modification: Modification; constructor(condition: Condition, modification: Modification); static properties: string[]; static propertyTypes(T: ReifiedType): { condition: (ReifiedType | typeof Condition)[]; modification: (ReifiedType | typeof Modification)[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: Set): Set; invokeDefault(): Set; } } export declare namespace Modification { class Combine extends Modification> { readonly map: Map; constructor(map: Map); static properties: string[]; static propertyTypes(T: ReifiedType): { map: (MapConstructor | ReifiedType)[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: Map): Map; invokeDefault(): Map; } } export declare namespace Modification { class ModifyByKey extends Modification> { readonly map: Map>; constructor(map: Map>); static properties: string[]; static propertyTypes(T: ReifiedType): { map: (MapConstructor | StringConstructor[] | (ReifiedType | typeof Modification)[])[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: Map): Map; invokeDefault(): Map; } } export declare namespace Modification { class RemoveKeys extends Modification> { readonly fields: Set; constructor(fields: Set); static properties: string[]; static propertyTypes(T: ReifiedType): { fields: (SetConstructor | StringConstructor[])[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: Map): Map; invokeDefault(): Map; } } export declare namespace Modification { class OnField extends Modification { readonly key: TProperty1; readonly modification: Modification; constructor(key: TProperty1, modification: Modification); static properties: string[]; static propertyTypes(K: ReifiedType, V: ReifiedType): { key: (StringConstructor | ReifiedType)[]; modification: (ReifiedType | typeof Modification)[]; }; copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; invoke(on: K): K; invokeDefault(): K; } }