declare namespace getSideChannel { | |
type Key = unknown; | |
type ListNode<T> = { | |
key: Key; | |
next: ListNode<T>; | |
value: T; | |
}; | |
type RootNode<T> = { | |
key: object; | |
next: null | ListNode<T>; | |
}; | |
function listGetNode<T>(list: RootNode<T>, key: ListNode<T>['key']): ListNode<T> | void; | |
function listGet<T>(objects: RootNode<T>, key: ListNode<T>['key']): T | void; | |
function listSet<T>(objects: RootNode<T>, key: ListNode<T>['key'], value: T): void; | |
function listHas<T>(objects: RootNode<T>, key: ListNode<T>['key']): boolean; | |
type Channel = { | |
assert: (key: Key) => void; | |
has: (key: Key) => boolean; | |
get: <T>(key: Key) => T; | |
set: <T>(key: Key, value: T) => void; | |
} | |
} | |
declare function getSideChannel(): getSideChannel.Channel; | |
export = getSideChannel; | |