import { AxiosRequestConfig, AxiosInstance, AxiosStatic } from "axios";
import { OAuthClient } from "../modules/auth/oauth";
import { ApiModule } from "../modules/api";
declare module "axios/index.d" {
    interface AxiosRequestConfig {
        public?: boolean;
    }
}
declare type Params = Record<string, any>;
export interface Paged<T> {
    data: T[];
    totalPages: number;
    totalItems: number;
    pageSize: number;
    pageNumber?: number;
    offset: number;
}
export declare class Rest<T> {
    readonly api: ApiModule;
    static axios: AxiosStatic;
    oauth: OAuthClient;
    axios: AxiosInstance;
    constructor(api: ApiModule, path: string, options?: AxiosRequestConfig);
    get baseURL(): string;
    request(options?: AxiosRequestConfig): Promise<any>;
    find(params?: Params, config?: AxiosRequestConfig): Promise<Paged<T>>;
    findOne(id: string, params?: Params, config?: AxiosRequestConfig): Promise<T>;
    create(data: any, params?: Params, config?: {}): Promise<T>;
    update(data: any, params?: Params, config?: {}): Promise<T>;
    delete(id: string, params?: Params, config?: {}): Promise<void>;
    save(data: any, params?: Params, config?: {}): Promise<T>;
}
export {};
