import { Context } from "hono";
import { Bindings, Variables } from "../../../types";
import type { Client, ClientRegistrationToken, ClientRegistrationTokensAdapter, DataAdapters, Tenant } from "@authhero/adapter-interfaces";
export type Ctx = Context<{
    Bindings: Bindings;
    Variables: Variables;
}>;
export declare function registrationClientUri(ctx: Ctx, client_id: string): string;
export declare function loadTenantOrFail(ctx: Ctx): Promise<Tenant>;
export declare function assertDcrEnabled(tenant: Tenant): void;
/**
 * Resolve the `clientRegistrationTokens` adapter or fail with a clear
 * server error. The adapter is optional on `DataAdapters` so that hosts not
 * using DCR don't need to implement it, but DCR routes cannot run without it.
 */
export declare function requireClientRegistrationTokens(data: DataAdapters): ClientRegistrationTokensAdapter;
/**
 * Authenticate a POST /oidc/register request. Returns the IAT record if
 * bearer auth was used and validated; returns `undefined` for valid open
 * DCR. Throws 401 if IAT is required/invalid.
 */
export declare function authenticateRegistrationRequest(ctx: Ctx, tenant: Tenant): Promise<ClientRegistrationToken | undefined>;
/**
 * Authenticate a RFC 7592 management request. Returns the RAT record
 * bound to the URL client_id. Throws 401 on failure.
 */
export declare function authenticateManagementRequest(ctx: Ctx, client_id: string): Promise<ClientRegistrationToken>;
export declare function isClientSoftDeleted(client: Client): boolean;
export declare function generateClientId(): string;
export declare function generateClientSecret(): string;
