import { encoder } from 'src/utils/encoder'; import { decoder } from 'src/utils/decoder'; import { CustomFilterStrategy as dCustomFilterStrategy } from 'src/types/enums/proto/custom_filter/CustomFilterStrategy'; import { CustomFilterTransformer as dCustomFilterTransformer } from 'src/types/enums/proto/custom_filter/CustomFilterTransformer'; import { CustomFilter_Strategy, CustomFilter_Function, CustomFilter_Transformer } from 'src/.generated/custom_filter/v1/custom_filter'; import { CustomFilterFunction as dCustomFilterFunction } from 'src/types/enums/proto/custom_filter/CustomFilterFunction'; export type dCustomFilterStandardFilter = { strategy: dCustomFilterStrategy | keyof typeof dCustomFilterStrategy; transformer: (dCustomFilterTransformer | keyof typeof dCustomFilterTransformer) | undefined; }; export type eCustomFilterStandardFilter = { strategy: CustomFilter_Strategy | keyof typeof CustomFilter_Strategy; transformer: (CustomFilter_Transformer | keyof typeof CustomFilter_Transformer) | undefined; }; export type dCustomFilterFunctionFilter = { function: dCustomFilterFunction | keyof typeof dCustomFilterFunction; }; export type eCustomFilterFunctionFilter = { function: CustomFilter_Function | keyof typeof CustomFilter_Function; }; export function encodeCustomFilterStandardFilter< TOut extends eCustomFilterStandardFilter, TIn extends Partial & { toJSON?: () => Partial } & unknown >( obj: TIn ): Omit & TOut { return encoder([ ['strategy', dCustomFilterStrategy, CustomFilter_Strategy], ['transformer', dCustomFilterTransformer, CustomFilter_Transformer], ], obj.toJSON ? obj.toJSON() : obj); } export function decodeCustomFilterStandardFilter< TOut extends dCustomFilterStandardFilter, TIn extends Partial & { toJSON?: () => Partial } & unknown >( obj: TIn ): Omit & TOut { return decoder([ ['strategy', CustomFilter_Strategy, dCustomFilterStrategy], ['transformer', CustomFilter_Transformer, dCustomFilterTransformer], ], obj.toJSON ? obj.toJSON() : obj); } export function encodeCustomFilterFunctionFilter< TOut extends eCustomFilterFunctionFilter, TIn extends Partial & { toJSON?: () => Partial } & unknown >( obj: TIn ): Omit & TOut { return encoder([ ['function', dCustomFilterFunction, CustomFilter_Function], ], obj.toJSON ? obj.toJSON() : obj); } export function decodeCustomFilterFunctionFilter< TOut extends dCustomFilterFunctionFilter, TIn extends Partial & { toJSON?: () => Partial } & unknown >( obj: TIn ): Omit & TOut { return decoder([ ['function', CustomFilter_Function, dCustomFilterFunction], ], obj.toJSON ? obj.toJSON() : obj); }