export type ApiRequestLike = {
    method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
    path: string;
    body?: unknown;
    headers?: Record<string, string>;
};
export type ApiResponseLike<T> = {
    status: number;
    body: T;
    headers: Headers;
};
export type RequestExecutor = <T>(request: ApiRequestLike) => Promise<ApiResponseLike<T>>;
export declare const DEFAULT_REQUEST_TIMEOUT_MS = 15000;
export declare function resolveRequestTimeoutMs(value: number | undefined): number;
export declare function createBaseUrlResolver(baseUrl: string | undefined): () => string;
export declare function resolveUrl(base: string, path: string): string;
export declare function buildBrowserCredentialsInit(includeBrowserCredentials: boolean): Partial<Pick<RequestInit, 'credentials'>>;
export declare function parseResponseBody<T>(response: Response): Promise<T>;
export declare function createRequestExecutor(input: {
    fetchImpl: typeof fetch;
    resolveBaseUrl: () => string;
    resolveUrl: (base: string, path: string) => string;
    parseResponseBody: <T>(response: Response) => Promise<T>;
    resolveToken: () => Promise<string | null>;
    getClientHeaders: () => Record<string, string>;
    requestTimeoutMs: number;
    includeBrowserCredentials: boolean;
}): RequestExecutor;
//# sourceMappingURL=request.d.ts.map