export interface InputObject { } export declare type Whatever = string | [] | object | Map | Set; export declare type GeneralOutputHandler = (generated: Whatever, input: Whatever, prop: string, inputObject: InputObject, transformedFn: TransformedFn) => Whatever; export interface OutputTransformer { (generated: Whatever, input: Whatever, prop: string, inputObject: InputObject, transformedFn: TransformedFn): Whatever; defaultOutput: () => Whatever; unsupportedHandler?: GeneralOutputHandler; camelCaseReducer?(acc: string[], cc: string, i: number): string[]; } export interface Definition { key: string; keys: string[]; map: { [key: string]: unknown; }; parsers: []; fn: []; } export interface Options { autoCamelCase: boolean; hasOwnPropertyCheck: false; [key: string]: unknown; } export declare type PropsKeys = string[]; export declare type PropsMaps = null | { [key: string]: unknown; }; export declare type PropsParsers = Parser[]; export declare type PropsOptions = { [key: string]: any; }; export declare type Prop = [PropsKeys] | [PropsKeys, PropsMaps] | [PropsKeys, PropsMaps, PropsParsers] | [PropsKeys, PropsMaps, PropsParsers, PropsOptions]; export declare type Props = Prop[]; export declare type ObjectProps = { [key: string]: unknown; }; export interface TransformedFn { (InputObject: any): Whatever; registry: Map; outputTransformer: Partial; options: Partial; setOptions(options: Partial): TransformedFn; setOutputTransformer(outputTransformer: OutputTransformer): TransformedFn; setProps(props: Props | ObjectProps): TransformedFn; toValue(prop: string, value: unknown): any; use: (fn: (TransformedFn: any) => void) => TransformedFn; } export interface Parser { (input: unknown, prop: string, transformedFn: TransformedFn, inputObject?: InputObject, definition?: Definition): unknown; }