import { SymbolsType } from './../symbols'; import { Modificators, ModificatorsNames } from './index'; import FormBuffer, { FormBufferExtended } from '../formBuffer'; type allOptions = { [K in ModificatorsNames]: M[K] } extends { [_ in ModificatorsNames]: infer U } ? U : never; export type TypedModificatorOptions | unknown = unknown> = N extends ModificatorsNames ? M[N] : allOptions; export type ValueOfPreset

= P[Extract]; export type ModificatorInFormater< M extends Modificators = Modificators, N extends ModificatorsNames | unknown = unknown, > = ( oldValue: any, newValue: any, options: TypedModificatorOptions, formBuffer: FormBuffer | FormBufferExtended, symbols: SymbolsType, ) => any; export type ModificatorOutFormater< M extends Modificators = Modificators, N extends ModificatorsNames | unknown = unknown > = ( value: any, options: TypedModificatorOptions, formBuffer: FormBuffer | FormBufferExtended, symbols: SymbolsType, ) => any; export type ModificatorDefaultFormater | unknown = unknown> = ( value: any, options: TypedModificatorOptions, formBuffer: FormBuffer | FormBufferExtended, symbols: SymbolsType, ) => any; export type inFormater = ( oldValue: T, newValue: T, formBuffer: FormBuffer | FormBufferExtended, symbols: SymbolsType, ) => T; export type outFormater = ( value: T, formBuffer: FormBuffer | FormBufferExtended, symbols: SymbolsType, ) => T; export type defaultFormater = ( oldValue: T, formBuffer: FormBuffer | FormBufferExtended, symbols: SymbolsType, ) => T;