export declare function isThreadWrite(method: string): boolean; /** Device authority for one native runtime, not a second native writer lock. */ export declare class CodexDeviceControl { private readonly now; readonly idleMs: number; private readonly stateFile?; private readonly caller; private revision; private readonly threads; private readonly transfers; private readonly requests; private readonly running; private readonly starting; private readonly listeners; constructor(now?: () => number, idleMs?: number, stateFile?: string); runAs(clientId: string, action: () => T): T; runTaking(clientId: string, threadId: string, action: () => T): T; bind(clientId: string, action: () => T): () => T; subscribe(listener: (threadId: string) => void): () => void; private changed; status(threadId: string): { threadId: string; managed: boolean; ownerId: string; ownerName: string; revision: number; busy: boolean; idleTimeoutMs: number; }; transfer(threadId: string, owner: string, acquire: () => Promise, connected: () => boolean, ownerName?: string): Promise; take(threadId: string, owner: string, ownerName?: string): void; release(threadId: string): void; assertOwner(threadId: string): void; /** Called immediately before native dispatch, including non-bridge callers. */ authorize(method: string, params?: Record | null): void; begin(method: string, params?: Record | null): () => void; touch(threadId: string): void; setRunning(threadId: string, running: boolean): void; pending(requestId: string | number, threadId: string): void; authorizeResponse(requestId: string | number): void; resolved(requestId: string | number): void; private busy; expire(): void; disconnect(clientId: string): void; clear(): void; } //# sourceMappingURL=codex-device-control.d.ts.map