import type { IAppiumIpc } from '@appium/types'; import type { AndroidUiautomator2Driver } from './driver'; export type SessionUdidIpcMessage = { udid: string; sessionId: string; }; type IpcProvider = () => Promise; export declare class SessionClaimHandler { private readonly getIpc; static readonly CLAIMED_TOPIC = "uiautomator2:sessionUdidClaimed"; static readonly CONTENDED_TOPIC = "uiautomator2:sessionUdidContended"; static readonly RELEASED_TOPIC = "uiautomator2:sessionUdidReleased"; private static readonly CONTENTION_PROBE_MS; private static readonly RELEASE_WAIT_MS; private readonly subscriptionsBySessionId; constructor(getIpc: IpcProvider); /** Subscribe the current session to udid claim messages from other sessions. */ registerActiveSession(driver: AndroidUiautomator2Driver): Promise; /** Unsubscribe the current session from udid claim messages. */ unregisterActiveSession(driver: AndroidUiautomator2Driver): void; /** Publish this session's udid so any existing session on the same device can terminate. */ claimSessionUdid(driver: AndroidUiautomator2Driver): Promise; private dispatchSessionUdidMessage; private handleSessionUdidMessage; private publishSessionUdidContended; private terminateSessionOnRequest; private publishSessionUdidReleased; private getPublisherId; private isMatchingSessionUdidMessage; } export declare const sessionClaimHandler: SessionClaimHandler; export {}; //# sourceMappingURL=session-claim-handler.d.ts.map