const providerRuntime: Readonly<{ acp: Readonly<{ AcpEventMapper: typeof AcpEventMapper; acpInitEvent: (sessionId, backend) => NormalizedEvent; AcpRpcError: typeof AcpRpcError; AcpSessionDriver: typeof AcpSessionDriver; AcpTransport: typeof AcpTransport; AcpTransportError: typeof AcpTransportError; defineProvider: (services, spec) => NativeProviderDefinition; discoverModels: (opts) => Promise<DiscoveredModel[]>; extractAcpSessionId: (ev) => string | null; forgetModels: () => void; RPC_AUTH_REQUIRED: number; signInAdvice: (signIn, methods) => string | null; transportOver: (conversation, options) => AcpConversationTransport; }>; check: Readonly<{ declarationProblems: (declares, ownId?) => string[]; definitionProblems: (definition) => string[]; dialectProblems: (dialect) => string[]; }>; declarations: Readonly<{ expandDirectory: (template, ctx) => string | null; }>; engine: Readonly<{ createLineSplitter: (onLine, opts) => (chunk) => void; dialectFromDefinition: (def) => AnyDialect; fromLegacy: (backend, launch) => ProviderDefinition; LineSessionDriver: typeof LineSessionDriver; openProcessSession: (def, args) => SessionDriver; openRemoteSession: (def, args) => SessionDriver; }>; events: Readonly<{ assistantDeltaEvent: (text, mode) => NormalizedEvent; assistantTextEvent: (text, id?) => NormalizedEvent; assistantThinkingEvent: (thinking, id?) => NormalizedEvent; extractInitSessionId: (ev) => string | null; resultErrorEvent: (failure) => NormalizedEvent; resultSuccessEvent: (done) => NormalizedEvent; systemInitEvent: (init) => NormalizedEvent; toolResultEvent: (result) => NormalizedEvent; toolUseEvent: (call) => NormalizedEvent; }>; jsonLines: Readonly<{ encodeJsonLine: (value) => string; parseJsonLine: (line) => unknown; parseJsonObjectLine: (line) => Record<string, unknown> | null; }>; limits: Readonly<{ bestRateLimit: (events, opts) => RateLimitHit | null; isExhaustedText: (msg) => boolean; isOverloadedEvent: (type, payload) => boolean; isOverloadedText: (msg) => boolean; isRateLimitText: (msg) => boolean; rateLimitFromEvent: (type, payload) => RateLimitHit | null; }>; mcp: Readonly<{ claudeAskToolNames: () => string[]; CODEX_MCP_APPROVAL_TOML: string; mcpEnvPairs: (env) => object[]; scriptPaths: (root, overrides) => object; serializeAcpMcpServers: (servers) => object; serializeCodexMcpToml: (servers, options) => string | null; serializeGrokMcpToml: (servers) => string | null; serializeMcpJson: (servers) => string | null; }>; models: Readonly<{ modelIdsFromList: (body) => string[]; modelIdsFromSessionNew: (result) => string[]; normalizeDiscoveredModels: (found) => object[]; }>; oauth: Readonly<{ exchangeRefreshToken: (opts) => Promise<RefreshedToken>; EXPIRY_MARGIN_MS: number; expiryMs: (value) => number | null; hhmm: (at) => string; isExpired: (expiresAt, now) => boolean; serializeRefresh: <T>(slot, run) => Promise<T>; writeStoreAtomically: (path, data, lockPath?) => boolean; }>; permissions: Readonly<{ sandboxLevelForPermissionMode: (permissionMode) => string; }>; resume: Readonly<{ credentialValues: (env, injected) => string[]; parseResumeState: (json) => RemoteResumeState | null; serializeResumeState: (state, credentials) => string; }>; rpc: Readonly<{ decodeRpcLine: (line) => RpcMessage | null; encodeRpcError: (id, code, message, data?) => string; encodeRpcNotification: (method, params?) => string; encodeRpcRequest: (id, method, params?) => string; encodeRpcResult: (id, result) => string; }>; spans: Readonly<{ streamJsonSpans: (ev, state, eventId) => SpanOp[]; }>; streamJson: Readonly<{ partialTextDelta: (obj) => NormalizedEvent[]; streamJsonUser: (text, images?) => string; }>; usage: Readonly<{ accountUsage: (windows, extra) => AccountUsage; accountUsageProblems: (usage) => string[]; isUsageNotSignedInError: (error) => error is UsageNotSignedInError; percentOf: (used, limit) => number | null; USAGE_NOT_SIGNED_IN: "not_signed_in"; UsageNotSignedInError: typeof UsageNotSignedInError; usageWindow: (usedPercent, resetsAt) => UsageWindow | null; }>; }>