declare type Options = {
    data?: Record<string, any> | FormData;
    params?: Record<string, any>;
    requestType?: string;
    includeCode?: string[];
    showErrorMessage?: boolean;
} & Omit<RequestInit, 'body'>;
declare type GetResponseOptions = Options & {
    getResponse: true;
};
declare type GetFullDataOptions = Options & {
    getFullData: true;
};
declare type GetFullDataAndResponseOptions = GetResponseOptions & GetFullDataOptions;
declare type BlobDataOptions = Options & {
    responseType: 'blob';
};
declare type RequestResult<T> = {
    code: string;
    data?: T;
    message?: string;
};
declare function Request<T = any>(url: string, options?: Options): Promise<T>;
declare function Request<T = any>(url: string, options?: BlobDataOptions): Promise<Response>;
declare function Request<T = any>(url: string, options?: GetResponseOptions): Promise<{
    response: Response;
}> & Pick<RequestResult<T>, 'data'>;
declare function Request<T = any>(url: string, options?: GetFullDataOptions): Promise<RequestResult<T>>;
declare function Request<T = any>(url: string, options?: GetFullDataAndResponseOptions): Promise<{
    response: Response;
    data?: RequestResult<T>;
}>;
export default Request;
