import { type Method } from '@riddance/host/http-registry';
import { type JsonSafe } from '../context.js';
import { Environment } from '../http.js';
export * from './context.js';
export type Response = {
    headers: {
        [key: string]: string;
    };
    status: number;
    body?: any;
};
type RequestOptions = BodylessRequestOptions | StringRequestOptions | JsonRequestOptions;
type BodylessRequestOptions = {
    method?: Method;
    uri: string;
    headers?: {
        readonly [key: string]: string;
    };
};
type StringRequestOptions = BodylessRequestOptions & {
    body: string;
};
type JsonRequestOptions = BodylessRequestOptions & {
    json: JsonSafe;
};
export declare function request(options: RequestOptions): Promise<Response>;
export declare function withBearer(payload: object, requestOptions: RequestOptions): Promise<RequestOptions>;
export type BearerTokenOptions = {
    issuer?: string;
    audience?: string | string[];
    subject?: string;
    expiresIn: number;
};
export declare function createBearerToken(env: Environment, payload: object, options: BearerTokenOptions): Promise<string>;
