export type DshRemoteSessionOwnershipOrigin = 'existing-at-login' | 'observed-while-active' | 'remote-create'; export interface DshRemoteSessionOwnership { claimUnownedAndListOwned(input: { accountId: string; sessionRefs: readonly string[]; origin: DshRemoteSessionOwnershipOrigin; nowMillis?: number; canClaim?: () => boolean; }): Promise>; listOwned(accountId: string, sessionRefs: readonly string[]): Promise>; ownerAccountId(sessionRef: string): Promise; } /** * Local source of truth for immutable DSH Session ownership. * * Backend projections remain account-scoped, but they never decide ownership: * the first logged-in Arkme account that observes an unowned local Session owns * it permanently for this DSH Profile. */ export declare class DshRemoteSessionOwnershipStore implements DshRemoteSessionOwnership { private readonly profileRef; private readonly path; private state; private queue; constructor(directory: string, profileRef: string); claimUnownedAndListOwned(input: { accountId: string; sessionRefs: readonly string[]; origin: DshRemoteSessionOwnershipOrigin; nowMillis?: number; canClaim?: () => boolean; }): Promise>; listOwned(accountIdValue: string, sessionRefs: readonly string[]): Promise>; ownerAccountId(sessionRefValue: string): Promise; private serial; private load; private persist; } //# sourceMappingURL=session-ownership-store.d.ts.map