import { IRequestOptions, ResponseObject, IUploadRequestOptions, IFetchOptions } from '@cloudbase/adapter-interface';
import { KV } from '@cloudbase/types';
import { IGetAccessTokenResult, ICloudbaseRequestConfig } from '@cloudbase/types/request';
export interface ICloudbaseRequest {
    post: (options: IRequestOptions) => Promise<ResponseObject>;
    upload: (options: IUploadRequestOptions) => Promise<ResponseObject>;
    download: (options: IRequestOptions) => Promise<ResponseObject>;
    request: (action: string, params: KV<any>, options?: KV<any>) => Promise<ResponseObject>;
    send: (action: string, data: KV<any>) => Promise<any>;
    fetch: (options: IFetchOptions) => Promise<ResponseObject>;
}
export declare class CloudbaseRequest implements ICloudbaseRequest {
    config: ICloudbaseRequestConfig;
    private reqClass;
    private throwWhenRequestFail;
    private localCache;
    constructor(config: ICloudbaseRequestConfig & {
        throw?: boolean;
    });
    post(options: IRequestOptions): Promise<ResponseObject>;
    upload(options: IUploadRequestOptions): Promise<ResponseObject>;
    download(options: IRequestOptions): Promise<ResponseObject>;
    getBaseEndPoint(): string;
    getOauthAccessTokenV2(oauthClient: any): Promise<IGetAccessTokenResult>;
    request(action: string, params: KV<any>, options?: {
        onUploadProgress?: Function;
        pathname?: string;
        parse?: boolean;
        inQuery?: KV<any>;
        search?: string;
        defaultQuery?: KV<any>;
    }): Promise<ResponseObject>;
    fetch(options: IFetchOptions & {
        token?: string;
    }): Promise<ResponseObject>;
    send(action: string, data?: KV<any>, options?: KV<any>): Promise<any>;
}
export declare function initRequest(config: ICloudbaseRequestConfig): void;
export declare function getRequestByEnvId(env: string): CloudbaseRequest;
