import { Condition } from './Condition'; import { DataClassProperty } from './DataClassProperty'; import { ReifiedType } 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 AppendList 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 AppendSet 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 Remove 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 RemoveInstances 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 DropFirst extends Modification> { constructor(); invoke(on: Array): Array; invokeDefault(): Array; hashCode(): number; equals(other: (any | null)): boolean; } } export declare namespace Modification { class DropLast extends Modification> { constructor(); invoke(on: Array): Array; invokeDefault(): Array; hashCode(): number; equals(other: (any | null)): boolean; } } export declare namespace Modification { class PerElement 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 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: DataClassProperty; readonly modification: Modification; constructor(key: DataClassProperty, 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; } }