import { Method } from '@riddance/host/registry';
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: object;
};
export declare function request(options: RequestOptions): Promise<Response>;
export declare function withBearer(payload: object, requestOptions: RequestOptions): RequestOptions;
export type BearerTokenOptions = {
    issuer?: string;
    audience?: string | string[];
    subject?: string;
    expiresIn: number;
};
export declare function createBearerToken(env: Environment, payload: object, options: BearerTokenOptions): string;
