import { z } from "@hono/zod-openapi";
import type { Client, ClientInsert } from "@authhero/adapter-interfaces";
/**
 * RFC 7591 §2 client metadata accepted at the DCR endpoint. Auth0's
 * Management API uses `callbacks`; we map from RFC-standard `redirect_uris`
 * at the wire boundary and back on response.
 *
 * The schema is strict (not passthrough) — unknown fields in the request
 * are ignored rather than being echoed to the response. Forward-compat for
 * RFC 7591 unknown fields can be added later via a separate `extensions`
 * field or a `.passthrough()` once the dts-bundle-generator config allows
 * the wider type.
 */
export declare const dcrRequestSchema: z.ZodObject<{
    redirect_uris: z.ZodOptional<z.ZodArray<z.ZodString>>;
    client_name: z.ZodOptional<z.ZodString>;
    client_uri: z.ZodOptional<z.ZodString>;
    logo_uri: z.ZodOptional<z.ZodString>;
    tos_uri: z.ZodOptional<z.ZodString>;
    policy_uri: z.ZodOptional<z.ZodString>;
    contacts: z.ZodOptional<z.ZodArray<z.ZodString>>;
    scope: z.ZodOptional<z.ZodString>;
    grant_types: z.ZodOptional<z.ZodArray<z.ZodString>>;
    response_types: z.ZodOptional<z.ZodArray<z.ZodString>>;
    token_endpoint_auth_method: z.ZodOptional<z.ZodEnum<{
        none: "none";
        client_secret_post: "client_secret_post";
        client_secret_basic: "client_secret_basic";
        client_secret_jwt: "client_secret_jwt";
        private_key_jwt: "private_key_jwt";
    }>>;
    jwks_uri: z.ZodOptional<z.ZodString>;
    jwks: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    software_id: z.ZodOptional<z.ZodString>;
    software_version: z.ZodOptional<z.ZodString>;
    client_id: z.ZodOptional<z.ZodString>;
    client_secret: z.ZodOptional<z.ZodString>;
    audience: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type DcrRequest = z.infer<typeof dcrRequestSchema>;
export declare const dcrResponseSchema: z.ZodObject<{
    client_id: z.ZodString;
    client_secret: z.ZodOptional<z.ZodString>;
    client_id_issued_at: z.ZodOptional<z.ZodNumber>;
    client_secret_expires_at: z.ZodOptional<z.ZodNumber>;
    registration_access_token: z.ZodOptional<z.ZodString>;
    registration_client_uri: z.ZodString;
    client_name: z.ZodOptional<z.ZodString>;
    redirect_uris: z.ZodOptional<z.ZodArray<z.ZodString>>;
    grant_types: z.ZodOptional<z.ZodArray<z.ZodString>>;
    response_types: z.ZodOptional<z.ZodArray<z.ZodString>>;
    token_endpoint_auth_method: z.ZodOptional<z.ZodString>;
    logo_uri: z.ZodOptional<z.ZodString>;
    client_uri: z.ZodOptional<z.ZodString>;
    tos_uri: z.ZodOptional<z.ZodString>;
    policy_uri: z.ZodOptional<z.ZodString>;
    contacts: z.ZodOptional<z.ZodArray<z.ZodString>>;
    scope: z.ZodOptional<z.ZodString>;
    jwks_uri: z.ZodOptional<z.ZodString>;
    software_id: z.ZodOptional<z.ZodString>;
    software_version: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type DcrResponse = z.infer<typeof dcrResponseSchema>;
export interface RegistrationMapping {
    /** Fields suitable for ClientInsert (subset of Client). */
    clientFields: Partial<ClientInsert>;
    /** Additional metadata preserved on the client for round-trip. */
    extraMetadata: Record<string, unknown>;
}
/**
 * Map an RFC 7591 DCR request to internal Client fields.
 */
export declare function dcrRequestToClient(req: DcrRequest): RegistrationMapping;
/**
 * Build the RFC 7591 §3.2.1 response body from a stored Client plus the
 * issuance artifacts generated at registration time.
 */
export declare function clientToDcrResponse(client: Client, opts: {
    client_secret?: string;
    registration_access_token?: string;
    registration_client_uri: string;
    include_client_secret: boolean;
}): DcrResponse;
