import type { ConversationEvent, ConversationMessage, OfficeAddress, OfficeKey, OfficeRecord, PlatformName } from "../types.js"; import type { GithubConversationRef, Workspace } from "./types.js"; export declare const OFFICE_LOG_FILENAME = "log.jsonl"; export declare function createOfficeAddress(platform: PlatformName, conversationId: string): OfficeAddress; export declare function validateOfficeAddress(value: unknown): OfficeAddress; export declare function assertPlatformName(value: string): PlatformName; export declare function assertConversationId(value: string): string; export declare function officeKey(address: OfficeAddress): OfficeKey; export declare function officeDir(workspaceRoot: string, address: OfficeAddress): string; export declare function officeStateDir(stateDir: string, address: OfficeAddress): string; export declare function sameOffice(left: OfficeAddress, right: OfficeAddress): boolean; interface ConversationIdentityInput { platform: PlatformName; conversationId: string; address?: OfficeAddress; } type CanonicalConversation = Omit & Shape; export declare function createConversationEvent>(input: T & ConversationIdentityInput): CanonicalConversation; export declare function createConversationMessage>(input: T & ConversationIdentityInput): CanonicalConversation; export declare function buildGithubConversationId(ref: GithubConversationRef): string; export declare function parseGithubConversationId(conversationId: string): GithubConversationRef; export declare function isOfficeKey(value: unknown): value is OfficeKey; export declare const RESERVED_WORKSPACE_NAMES: ReadonlySet; export declare function createWorkspace(options: { root: string; stateDir: string; }): Workspace; interface OfficeRegistryOptions { writeState?: (path: string, content: string) => void; lockTimeoutMs?: number; } export declare class OfficeRegistry { private readonly stateDir; private readonly registryPath; private readonly lockPath; private readonly writeState; private readonly lockTimeoutMs; private state; constructor(stateDir: string, options?: OfficeRegistryOptions); recordOffice(address: OfficeAddress): OfficeRecord; getOffices(): readonly OfficeRecord[]; private findOffice; private replaceState; private withExclusiveLease; private readState; } export declare function listRegisteredOffices(stateDir: string): readonly OfficeRecord[]; export {}; //# sourceMappingURL=index.d.ts.map