import { Schema } from "joi";
import { RequestOptions } from "../../client";
import { Api, UpdateRequest } from "../api";
import { IModel } from "./types";
export * from "./types";
export declare abstract class Model<T> {
    private _model;
    private _schema;
    static api: Api;
    private _api;
    constructor(_model: Partial<IModel & T>, _schema?: Schema);
    api: any;
    model: Partial<IModel & T>;
    create(options?: Partial<RequestOptions>): Promise<this>;
    update(payload?: UpdateRequest | T, options?: Partial<RequestOptions>): Promise<this>;
    delete(options?: Partial<RequestOptions>): Promise<this>;
    get(options?: Partial<RequestOptions>): Promise<this>;
    getModelProperty(path: string): {};
}
