import Handler from './Handler';
import { Data } from './@types';
export default class Model<F extends string = string, Exports = Data<F>> {
    private handler;
    private fieldsToSkip;
    private fieldsToRename;
    constructor(handler: Handler<F, Exports>);
    /**
     * list of fields to skip when exporting data
     * @param fields comma separated list of fields to skip
     */
    skipFields(...fields: string[]): this;
    /**
     * rename a given given
     * @param oldName field old name
     * @param newName field new name
     */
    renameField(oldName: string, newName: string): this;
    /**
     * renames the given fields
     * @param fields object of field old name to new name value pairs
     */
    renameFields(fields: {
        [oldName: string]: string;
    }): this;
    /**
     * exports the data to the given target
     * @param target model to export data to
     * @param expandProperties boolean indicating if properties should be expanding
     */
    export<T extends object>(target?: T, expandProperties?: boolean): T & Exports;
}
