export type FetchFn = typeof globalThis.fetch;
export type ClientOptions = {
    baseUrl?: string;
    /**
     * Custom fetch implementation used by the Bot API client.
     *
     * Applies only to Bot API requests, such as `/me`, `/updates`,
     * `/messages`, and the request that obtains an upload URL via `/uploads`.
     *
     * Does not affect the subsequent file content upload to the returned upload URL,
     * which is performed by `StreamUploadClient` using a separate
     * `http`/`https.request`-based transport.
     */
    fetch?: FetchFn;
};
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
export type ReqOptions = {
    method?: HTTPMethod;
    body?: object | null;
    query?: Record<string, string | number | boolean | null | undefined>;
    path?: Record<string, string | number | boolean>;
    signal?: AbortSignal;
};
type CallOptions = {
    method: string;
    options: ReqOptions;
};
export declare const createClient: (token: string, options?: ClientOptions) => {
    call: ({ method, options: callOptions }: CallOptions) => Promise<{
        status: number;
        data: any;
    }>;
};
export type Client = ReturnType<typeof createClient>;
export {};
