import type Repository from './repository.js';
import type { ApiRequestConfig } from './interfaces/apiRequestConfig.js';
import ApiModelConfig from './interfaces/apiModelConfig.js';
import ApiResponse from './interfaces/apiResponse.js';
export default class Api<T> {
    protected model: any;
    protected repository: Repository<T>;
    protected config: ApiModelConfig;
    constructor(model: any, repository: Repository<T>, config: ApiModelConfig);
    get(endpoint?: string, options?: ApiRequestConfig): Promise<ApiResponse<T>>;
    post(endpoint: string, data?: any, options?: ApiRequestConfig): Promise<ApiResponse<T>>;
    put(endpoint: string, data?: any, options?: ApiRequestConfig): Promise<ApiResponse<T>>;
    patch(endpoint: string, data?: any, options?: ApiRequestConfig): Promise<ApiResponse<T>>;
    head(endpoint: string, options?: ApiRequestConfig): Promise<ApiResponse<T>>;
    delete(endpoint: string, options?: ApiRequestConfig): Promise<ApiResponse<T>>;
    private makeRequest;
    private returnApiOptions;
}
