import type { OwlCodaConfig } from './config.js';
export interface AdminBundleStatus {
    bundleDir: string;
    indexPath: string;
    available: boolean;
}
export interface OneShotTokenOptions {
    now?: () => number;
    nonce?: string;
}
export interface VerifyOneShotTokenOptions {
    now?: () => number;
    maxAgeMs?: number;
}
export type AdminHandoffRoute = 'start' | 'models' | 'aliases' | 'orphans' | 'catalog';
export interface AdminHandoffContext {
    route?: AdminHandoffRoute;
    select?: string;
    view?: string;
}
/**
 * Resolve the admin bundle directory.
 *
 * The bundle lives inside the installed package, NOT in the user's cwd.
 * We resolve relative to this compiled module's location:
 *
 *   - runtime (installed):  .../owlcoda/dist/admin-delivery.js  → ../dist/admin  → .../owlcoda/dist/admin
 *   - dev (tsx):            .../owlcoda/src/admin-delivery.ts   → ../dist/admin  → .../owlcoda/dist/admin
 *
 * Tests may pass an explicit `projectRoot` to override for hermetic fixtures.
 */
export declare function getAdminBundleDir(projectRoot?: string): string;
export declare function getAdminBundleStatus(projectRoot?: string): AdminBundleStatus;
export declare function getAdminBearerToken(config: Pick<OwlCodaConfig, 'adminToken' | 'port'>): string;
export declare function createOneShotAdminToken(secret: string, options?: OneShotTokenOptions): string;
export declare function verifyOneShotAdminToken(secret: string, token: string, options?: VerifyOneShotTokenOptions): boolean;
export declare function buildAdminHandoffHash(context?: AdminHandoffContext): string;
export declare function buildAdminHandoffUrl(baseUrl: string, token: string, context?: AdminHandoffContext): string;
export declare function buildAdminUrl(baseUrl: string, token: string, hash?: string): string;
export declare function adminHandoffFailureHint(): string;
export declare function shouldAutoOpenAdminBrowser(explicit?: boolean): boolean;
export declare function adminAutoOpenDisabledHint(): string;
export declare function openUrlInBrowser(url: string): boolean;
