export interface P2PRealnetAcceptancePlanOptions { apiBaseUrl: string; nodeId: string; nodeToken: string; baseUrl: string; targetBaseUrl: string; nodeHost?: string; nodeAddress?: string; nodeLocalAddress?: string; clientHost?: string; clientAddress?: string; clientLocalAddress?: string; clientId: string; token?: string; resourceUrl: string; runTimeoutMs?: number; connectTimeoutMs?: number; waitTimeoutMs?: number; requestTimeoutMs?: number; pollIntervalMs?: number; winnerSelectionWindowMs?: number; windowSeconds?: number; maxClockErrorSeconds?: number; minRunWindowSeconds?: number; numPorts?: number; basePort?: number; portRange?: number; } export interface P2PRealnetAcceptanceCommand { role: 'node' | 'client'; command: string[]; shell: string; description: string; } export interface P2PRealnetAcceptanceMobilePlan { appLabel: 'LinX P2P Smoke'; packageName: 'com.linxmobile.p2psmoke'; fields: { idpUrl: string; storageUrl: string; clientId: string; resourcePath: string; }; description: string; } export interface P2PRealnetAcceptancePlan { kind: 'raw-tcp-p2p-realnet-acceptance'; node: P2PRealnetAcceptanceCommand; client: P2PRealnetAcceptanceCommand; mobile: P2PRealnetAcceptanceMobilePlan; successCriteria: string[]; routeFallbacksPreserved: string[]; caveats: string[]; } export interface P2PRealnetAcceptanceVerifyOptions { clientId: string; expectedStatus?: number; expectedPutStatus?: number; requirePutStatus2xx?: boolean; nodeResult: unknown; clientResult: unknown; } export interface P2PRealnetAcceptanceCheck { name: string; ok: boolean; detail: string; } export interface P2PRealnetAcceptanceVerification { smokeOk: boolean; checks: P2PRealnetAcceptanceCheck[]; routeFallbacksPreserved: string[]; } export declare function createP2PRealnetAcceptancePlan(options: P2PRealnetAcceptancePlanOptions): P2PRealnetAcceptancePlan; export declare function verifyP2PRealnetAcceptance(options: P2PRealnetAcceptanceVerifyOptions): P2PRealnetAcceptanceVerification;