/**
 * Typed error classes for the connection authorization lifecycle.
 */
/**
 * User-facing authorization challenge payload.
 */
export interface ConnectionAuthorizationChallenge {
    /**
     * Optional URL the user should visit to complete authorization.
     * Serves as the redirect target, the verification URL in device
     * code flow, or the source for a QR code.
     */
    readonly url?: string;
    /**
     * Optional short code to display alongside `url` (device code flow).
     */
    readonly userCode?: string;
    /**
     * Optional ISO timestamp at which the authorization opportunity
     * expires. When provided, the runtime clamps the authorization deadline to
     * `min(configured_timeout, expiresAt)` so the turn cannot outlive
     * the challenge.
     */
    readonly expiresAt?: string;
    /**
     * Optional human-readable call to action. When no `url` is
     * available (e.g. CIBA, push-to-approve), this is what the channel
     * should show as the primary affordance.
     */
    readonly instructions?: string;
}
/**
 * Options accepted by {@link ConnectionAuthorizationRequiredError}.
 */
export interface ConnectionAuthorizationRequiredErrorOptions {
    /**
     * Override for the default `Error.message`. Defaults to
     * `Connection "{name}" requires authorization.` when omitted.
     */
    readonly message?: string;
}
/**
 * Options accepted by {@link ConnectionAuthorizationFailedError}.
 */
export interface ConnectionAuthorizationFailedErrorOptions {
    /**
     * Override for the default `Error.message`. Defaults to
     * `Connection "{name}" authorization failed.` when omitted.
     */
    readonly message?: string;
    /**
     * Stable machine-readable code describing why authorization failed.
     *
     * The runtime surfaces this code on the `authorization.completed`
     * stream event and on the failed tool result the model sees. Use a
     * short kebab- or snake-cased string (e.g. `"access_denied"`,
     * `"invalid_grant"`).
     *
     * The runtime also emits a few reason codes itself, independently
     * of authored throws:
     *
     * - `"principal_required"`: a `principalType: "user"` connection
     *   was invoked without an authenticated user principal. Terminal.
     * - `"app_not_installed"`: an authored `getToken` for a
     *   `principalType: "app"` connection signalled the agent's own
     *   credentials are missing. Terminal.
     */
    readonly reason?: string;
    /**
     * Controls whether the runtime re-prompts the user after this
     * failure.
     *
     * Defaults to `true`; set `false` for terminal cases such as user
     * denial (`reason: "access_denied"`).
     */
    readonly retryable?: boolean;
}
/**
 * Thrown from a connection's `getToken` when no valid credential is
 * available and authorization must be completed before the connection
 * can be used. Covers both interactive OAuth (the runtime emits
 * `authorization.required` and suspends the turn on a webhook) and
 * non-interactive / out-of-band flows such as static API keys (the
 * runtime emits `authorization.required` without suspending).
 */
export declare class ConnectionAuthorizationRequiredError extends Error {
    readonly connectionName: string;
    constructor(connectionName: string, options?: ConnectionAuthorizationRequiredErrorOptions);
}
/**
 * Thrown when a connection's authorization fails.
 *
 * Retryable by default; pass `retryable: false` for terminal failures
 * where starting a fresh authorization flow would be wrong.
 */
export declare class ConnectionAuthorizationFailedError extends Error {
    readonly connectionName: string;
    readonly reason?: string;
    readonly retryable: boolean;
    constructor(connectionName: string, options?: ConnectionAuthorizationFailedErrorOptions);
}
/**
 * Type guard for {@link ConnectionAuthorizationRequiredError}.
 *
 * Uses `err.name` rather than `instanceof` because user code and
 * framework internals can end up with different class identities
 * after bundling (dual-instance hazard in Nitro output).
 */
export declare function isConnectionAuthorizationRequiredError(err: unknown): err is ConnectionAuthorizationRequiredError;
/**
 * Type guard for {@link ConnectionAuthorizationFailedError}.
 *
 * Uses `err.name` rather than `instanceof` because user code and
 * framework internals can end up with different class identities
 * after bundling (dual-instance hazard in Nitro output).
 */
export declare function isConnectionAuthorizationFailedError(err: unknown): err is ConnectionAuthorizationFailedError;
