///
import { CamelCasedPropertiesDeep, KebabCasedPropertiesDeep, PascalCasedPropertiesDeep } from 'type-fest';
import { Headers } from './interface';
import { TOSConstructorOptions, TosResponse } from './methods/base';
import TosServerError from './TosServerError';
import { CRCCls } from './universal/crc';
import { ReadStream, WriteStream } from 'fs';
export declare const makeArrayProp: (obj: unknown) => (key: string) => void;
export declare const covertCamelCase2Kebab: (target: T) => import("type-fest").DelimiterCasedPropertiesDeep;
export declare const convertUpperCamelCase2Normal: (target: T) => CamelCasedPropertiesDeep;
export declare const convertNormalCamelCase2Upper: (target: T) => PascalCasedPropertiesDeep;
export declare const getSortedQueryString: (query: Record) => string;
export declare const normalizeHeadersKey: (headers: T | undefined) => T;
export declare const encodeHeadersValue: (headers: Headers) => Headers;
export declare const getRegion: (endpoint: string) => string;
export declare const getEndpoint: (region: string) => string;
export declare const normalizeProxy: (proxy: TOSConstructorOptions['proxy']) => {
url: string;
needProxyParams?: boolean | undefined;
} | undefined;
export declare function safeAwait(p: T): Promise<[null, Awaited] | [any, null]>;
export declare function safeSync(func: () => T): [any, null] | [null, T];
export declare function isBlob(obj: unknown): obj is Blob;
export declare function isBuffer(obj: unknown): obj is Buffer;
export declare function isReadable(obj: unknown): obj is NodeJS.ReadableStream;
export declare function isValidNumber(v: number): v is number;
export declare function obj2QueryStr(v?: Record): string;
export declare function isCancelError(err: any): boolean;
export declare const DEFAULT_PART_SIZE: number;
export declare const getGMTDateStr: (v: Date) => string;
export declare const requestHeadersMap: Record string] | ((v: any) => Record)>;
export declare const requestQueryMap: Record string] | ((v: any) => Record)>;
export declare function fillRequestHeaders(v: T, keys: (keyof T & string)[]): void;
export declare function fillRequestQuery(v: T, query: Record, keys: (keyof T & string)[]): void;
export declare const paramsSerializer: (params: Record) => string;
export declare function getNormalDataFromError(data: T, err: TosServerError): TosResponse;
export declare const streamToBuf: (stream: NodeJS.ReadableStream) => Promise;
export declare function checkCRC64WithHeaders(crc: CRCCls | string, headers: Headers): void;
export declare const bindStreamErrorHandler: (stream: NodeJS.ReadableStream | ReadStream | NodeJS.WritableStream | WriteStream, prefix?: string | undefined) => NodeJS.ReadableStream | ReadStream | NodeJS.WritableStream | WriteStream;
export declare enum HttpHeader {
LastModified = "last-modified",
ContentLength = "content-length",
AcceptEncoding = "accept-encoding",
ContentEncoding = "content-encoding",
ContentMD5 = "content-md5",
TosRawContentLength = "x-tos-raw-content-length",
TosTrailer = "x-tos-trailer",
TosHashCrc64ecma = "x-tos-hash-crc64ecma",
TosContentSha256 = "x-tos-content-sha256",
TosDecodedContentLength = "x-tos-decoded-content-length",
TosEc = "x-tos-ec",
TosRequestId = "x-tos-request-id"
}
/**
* make async tasks serial
* @param makeTask
* @returns
*/
export declare const makeSerialAsyncTask: (makeTask: () => Promise) => () => Promise;
export declare const safeParseCheckpointFile: (filePath: string) => Promise;
export declare const makeRetryStreamAutoClose: (makeStream: () => NodeJS.ReadableStream | ReadStream) => {
getLastStream: () => NodeJS.ReadableStream | ReadStream | null;
make: () => NodeJS.ReadableStream | ReadStream;
};
export declare const tryDestroy: (stream: NodeJS.ReadableStream | ReadStream | NodeJS.WritableStream | WriteStream | null | undefined, err: any) => void;
export declare const pipeStreamWithErrorHandle: (src: Src, dest: Dest, label: string) => Dest;
export declare const isValidBucketName: (bucket: string, isCustomDomain?: boolean | undefined) => void;
export declare const isValidVectorBucketName: (bucket: string) => void;
export declare const isValidAccountId: (accountId: string) => void;