import { Marshaller, RaiseBuildFilterMarshaller } from './core'; export declare type MarshalObject = { [key: string]: any; }; export declare abstract class BaseObjectMarshaller extends RaiseBuildFilterMarshaller { raise(raw: any): MarshalObject; lower(a: MarshalObject): any; } export declare class UntypedObjectMarshaller extends BaseObjectMarshaller { build(raw: MarshalObject): Object; unbuild(cooked: Object): MarshalObject; } export interface MarshalSchemaItem { readonly marshaller: Marshaller; readonly sourcePropName?: string; } export declare type MarshalSchema = { readonly [key in keyof T]?: MarshalSchemaItem; }; export declare type Constructor = new (...args: any[]) => T; export declare type MarshallerConstructor = new () => Marshaller; export declare type ObjectMarshallerConstructor = new () => ObjectMarshaller; export declare class ObjectMarshaller extends BaseObjectMarshaller { private readonly _constructor; private readonly _schema; constructor(constructor: Constructor, schema: MarshalSchema); build(raw: MarshalObject): T; unbuild(cooked: T): MarshalObject; getConstructor(): Constructor; }