import { Endpoint, RouteDefinition } from "../types.js";
import { WireFormat } from "../wireFormat.js";
export type ExtraRequestInit = {
    /** Wire format to use in HTTP requests to server */
    requestWireFormat?: `${WireFormat}`;
    /** Preferred wire format for HTTP responses from server */
    responseWireFormat?: `${WireFormat}`;
    /** Timeout of requests in milliseconds */
    timeoutMs?: number;
    /** Number of retries per request */
    retries?: number;
    /** Retry delay, only relevant if retries > 0 */
    retryDelay?: number;
};
export type OptionalRequestInit = {
    bearerToken?: string;
};
export type UrlInit = ApiRequestInit & {
    baseUrl?: string;
};
export type UrlInitRequired = ApiRequestInit & {
    urlIndex: number;
    baseUrl: string;
    /** Used in logs and metrics to prevent leaking user credentials */
    printableUrl: string;
};
export type ApiRequestInit = ExtraRequestInit & OptionalRequestInit & RequestInit;
export type ApiRequestInitRequired = Required<ExtraRequestInit> & UrlInitRequired;
/** Route definition with computed extra properties */
export type RouteDefinitionExtra<E extends Endpoint> = RouteDefinition<E> & {
    operationId: string;
    urlFormatter: (args: Record<string, string | number>) => string;
};
export declare function createApiRequest<E extends Endpoint>(definition: RouteDefinitionExtra<E>, args: E["args"], init: ApiRequestInitRequired): Request;
//# sourceMappingURL=request.d.ts.map