@pashoo2/clean-architecture-boilerplate
Version:
Clean architecture boilerplate
25 lines (24 loc) • 1.41 kB
TypeScript
import { ISerializable, ISerializer, TSerializableValue } from '../../interfaces/serialization';
import { IComparable } from '../../interfaces/comparison';
import { Constructor } from '../../interfaces/classes';
import { ICompareValues } from '../../utilities/interfaces/comparison/valuesComparisonStrategies';
import { IValidator } from '../../interfaces/validation';
export interface IMultiValuesValueObjectValue {
[key: string]: TSerializableValue;
[key: number]: TSerializableValue;
}
export interface IMultiValuesValueObjectBase<V extends IMultiValuesValueObjectValue> extends ISerializable<string>, IComparable<IMultiValuesValueObjectBase<V>> {
readonly value: V;
}
export interface IMultipleValuesValueObjectBaseConstructor<V extends IMultiValuesValueObjectValue> extends Constructor<IMultiValuesValueObjectBase<V>, [V]> {
}
export interface IMultipleValuesValueObjectBaseFabricParameters<V extends IMultiValuesValueObjectValue> {
compareValues: ICompareValues<V, V>;
serializeValue: ISerializer<V, string>;
validateValue: IValidator<V>;
}
export interface IMultipleValuesValueObjectBaseFabric<V extends IMultiValuesValueObjectValue> {
(parameters: IMultipleValuesValueObjectBaseFabricParameters<V>): IMultipleValuesValueObjectBaseConstructor<V>;
}
export interface IMultiValuesValueObject<V extends IMultiValuesValueObjectValue> extends IMultiValuesValueObjectBase<V> {
}