/** * Encapsulates the version-based capability checks for the BrightScript debug protocol. * Used by `DebugProtocolClient` for the live session (version set during the handshake), * and by `DebugProtocolAdapter` as a standalone fallback seeded from the device-info * `brightscript-debugger-version` when no client has connected yet. */ export declare class ProtocolCapabilities { constructor(protocolVersion: string | undefined, osVersion?: string); readonly protocolVersion: string; /** * Roku OS versions that introduced each debug protocol version, ordered newest-first so * we can pick the highest protocol whose OS floor the device meets. */ private static readonly osToProtocolVersions; /** * Some Roku firmware versions support the debug protocol but omit `brightscript-debugger-version` * from device-info, so fall back to deriving the protocol version from the OS version when the * caller didn't get one from the device. */ private static resolveProtocolVersion; /** * Prior to protocol v3.1.0, the Roku device would regularly set the wrong thread as "active", * so this flag lets us know if we should use our better-than-nothing workaround */ get enableThreadHoppingWorkaround(): boolean; /** * Starting in protocol v3.1.0, component library breakpoints must be added in the format * `lib://`, but prior they didn't require this. */ get enableComponentLibrarySpecificBreakpoints(): boolean; /** * Starting in protocol v3.1.0, breakpoints can support conditional expressions. */ get supportsConditionalBreakpoints(): boolean; /** * Starting in protocol v3.1.0, breakpoints can carry a hit count (ignoreCount). */ get supportsHitConditionalBreakpoints(): boolean; get supportsBreakpointRegistrationWhileRunning(): boolean; get supportsBreakpointVerification(): boolean; get supportsVirtualVariables(): boolean; get supportsExceptionBreakpoints(): boolean; /** * Due to casing issues with the variables request on older protocols, we first try the * request in the supplied case and retry in lower case on failure. */ get enableVariablesLowerCaseRetry(): boolean; /** * The `execute` command was unreliable before protocol v3.0.0. */ get supportsExecuteCommand(): boolean; /** * The device emits compile-error update events starting in protocol v3.1.0. */ get supportsCompileErrorReporting(): boolean; /** * Starting in protocol v3.5.0, the threads request can ask the device to include per-thread * identity info (os thread id, name, and type) by setting the `includeIdentityInfo` flag. */ get supportsThreadIdentityInfo(): boolean; }