{"version":3,"file":"exports-browser.cjs","sources":["browser/src/ConfigTypes.js","browser/src/StreamrClientError.js","browser/src/identity/Identity.js","browser/src/utils/LoggingJsonRpcProvider.js","browser/src/RpcProviderSource.js","browser/src/ethereumUtils.js","browser/src/events.js","browser/src/utils/LoggerFactory.js","browser/src/contracts/contract.js","browser/src/contracts/ContractFactory.js","browser/src/contracts/StorageNodeRegistry.js","browser/src/protocol/ValidationError.js","browser/src/protocol/validations.js","browser/src/protocol/MessageRef.js","browser/src/protocol/MessageID.js","browser/src/protocol/StreamMessage.js","browser/src/protocol/StreamMessageTranslator.js","browser/src/protocol/oldStreamMessageBinaryUtils.js","browser/src/utils/GeneratorUtils.js","browser/src/utils/Gate.js","browser/src/utils/PushBuffer.js","browser/src/utils/WebStreamToNodeStream.js","browser/src/utils/uuid.js","browser/src/utils/utils.js","browser/src/utils/promises.js","browser/src/utils/iterators.js","browser/src/utils/Signal.js","browser/src/utils/Pipeline.js","browser/src/utils/PushPipeline.js","browser/src/DestroySignal.js","browser/src/StreamIDBuilder.js","browser/src/StreamMetadata.js","browser/src/permission.js","browser/src/utils/Mapping.js","browser/src/contracts/ChainEventPoller.js","browser/src/contracts/searchStreams.js","browser/src/contracts/StreamRegistry.js","browser/src/contracts/StreamStorageRegistry.js","browser/src/encryption/EncryptionUtil.js","browser/src/encryption/GroupKey.js","browser/src/_browser/Persistence.js","browser/src/PersistenceManager.js","browser/src/encryption/LocalGroupKeyStore.js","browser/src/contracts/OperatorRegistry.js","browser/src/generated/google/protobuf/empty.js","browser/src/generated/google/protobuf/any.js","browser/src/generated/packages/proto-rpc/protos/ProtoRpc.js","browser/src/generated/google/protobuf/timestamp.js","browser/src/generated/packages/dht/protos/DhtRpc.js","browser/src/generated/packages/sdk/protos/SdkRpc.js","browser/src/generated/packages/sdk/protos/SdkRpc.client.js","browser/src/NetworkNodeFacade.js","browser/src/publish/messageChain.js","browser/src/signature/createSignaturePayload.js","browser/src/signature/MessageSigner.js","browser/src/contracts/ERC1271ContractFacade.js","browser/src/signature/createLegacySignaturePayload.js","browser/src/identity/KeyPairIdentity.js","browser/src/identity/EthereumKeyPairIdentity.js","browser/src/identity/EthereumProviderIdentity.js","browser/src/identity/MLDSAKeyPairIdentity.js","browser/src/identity/ECDSAKeyPairIdentity.js","browser/src/identity/IdentityMapping.js","browser/src/signature/SignatureValidator.js","browser/src/utils/validateStreamMessage.js","browser/src/_browser/createRSAKeyPair.js","browser/src/encryption/RSAKeyPair.js","browser/src/encryption/MLKEMKeyPair.js","browser/src/utils/encryptionCompliance.js","browser/src/tokens.js","browser/src/encryption/SubscriberKeyExchange.js","browser/src/encryption/GroupKeyManager.js","browser/src/encryption/decrypt.js","browser/src/subscribe/MsgChainUtil.js","browser/src/subscribe/ordering/GapFiller.js","browser/src/subscribe/ordering/OrderedMessageChain.js","browser/src/subscribe/ordering/OrderMessages.js","browser/src/subscribe/messagePipeline.js","browser/src/subscribe/MessagePipelineFactory.js","browser/src/subscribe/Resends.js","browser/src/utils/AggregatedError.js","browser/src/utils/Scaffold.js","browser/src/subscribe/SubscriptionSession.js","browser/src/subscribe/Subscriber.js","browser/src/setupTsyringe.js","browser/src/utils/PatchTsyringe.js","browser/src/publish/GroupKeyQueue.js","browser/src/publish/MessageFactory.js","browser/src/publish/Publisher.js","browser/src/generated/validateConfig.js","browser/src/ConfigTest.js","browser/src/Config.js","browser/src/Message.js","browser/src/MetricsPublisher.js","browser/src/ProxyNodeFinder.js","browser/src/Stream.js","browser/src/contracts/Operator.js","browser/src/contracts/SponsorshipFactory.js","browser/src/encryption/PublisherKeyExchange.js","browser/src/subscribe/MessageStream.js","browser/src/subscribe/Subscription.js","browser/src/subscribe/resendSubscription.js","browser/src/subscribe/waitForStorage.js","browser/src/utils/waitForAssignmentsToPropagate.js","browser/src/utils/addStreamToStorageNode.js","browser/src/StreamrClient.js","browser/src/contracts/operatorContractUtils.js","browser/src/exports.js"],"sourcesContent":["export var NetworkNodeType;\n(function (NetworkNodeType) {\n    NetworkNodeType[\"NODEJS\"] = \"nodejs\";\n    NetworkNodeType[\"BROWSER\"] = \"browser\";\n})(NetworkNodeType || (NetworkNodeType = {}));\n// a subset of environment ids which are available in @streamr/config\n// - do not include legacy configs, which no longer work, e.g. \"dev0\"\n// - and no need to include configs, which users won't use in practice\n// - note that there is no special handling for empty arrays in the applyConfig and therefore\n//   empty arrays will be applied as-is: we may want to remove \"enthereum.rpcEndpoints\" key\n//   from @streamr/config as the intention is to use system-defaults (e.g. Metamask defaults)\n//   in Ethereum network\nexport const ENVIRONMENT_IDS = ['polygon', 'polygonAmoy', 'peaq', 'iotex', 'dev2'];\nexport const DEFAULT_ENVIRONMENT_ID = 'polygon';\n/**\n * @deprecated use {@link STREAMR_STORAGE_NODE_ADDRESS} instead\n */\nexport const STREAMR_STORAGE_NODE_GERMANY = '0x31546eEA76F2B2b3C5cC06B1c93601dc35c9D916';\nexport const STREAMR_STORAGE_NODE_ADDRESS = '0x9dc08ff97f5c156181ec6a0b13fc3946454e529a';\nexport const ConfigInjectionToken = Symbol('Config');\n","export class StreamrClientError extends Error {\n    code;\n    messageId;\n    constructor(message, code, streamMessage) {\n        super(`${message} ${formErrorMessageSuffix(code, streamMessage)}`);\n        this.code = code;\n        this.name = this.constructor.name;\n        this.messageId = streamMessage?.messageId;\n    }\n}\nconst formErrorMessageSuffix = (code, streamMessage) => {\n    const parts = [];\n    parts.push(`code=${code}`);\n    if (streamMessage !== undefined) {\n        parts.push(`messageId=${formMessageIdDescription(streamMessage.messageId)}`);\n    }\n    return `(${parts.join(', ')})`;\n};\nconst formMessageIdDescription = (messageId) => {\n    return JSON.stringify(messageId);\n};\n","export const IdentityInjectionToken = Symbol('Identity');\n/**\n * Identity represents a digital identity, specified by cryptographic keys,\n * and capable of signing. You can configure new Identities in IdentityMapping.ts.\n */\nexport class Identity {\n}\n","import { JsonRpcProvider } from 'ethers';\nimport { Logger, randomString } from '@streamr/utils';\nconst logger = new Logger('LoggingJsonRpcProvider');\nexport class LoggingJsonRpcProvider extends JsonRpcProvider {\n    urlConfig;\n    constructor(urlConfig, network, options) {\n        super(urlConfig, network, options);\n        this.urlConfig = urlConfig;\n    }\n    async send(method, params) {\n        const traceId = randomString(5);\n        const startTime = Date.now();\n        const logContext = {\n            traceId,\n            method,\n            params,\n            connection: {\n                url: this.urlConfig.url,\n                timeout: this.urlConfig.timeout\n            }\n        };\n        logger.debug('Send request', logContext);\n        let result;\n        try {\n            result = await super.send(method, params);\n        }\n        catch (err) {\n            logger.debug('Encountered error while requesting', {\n                ...logContext,\n                err,\n                elapsedTime: Date.now() - startTime\n            });\n            throw err;\n        }\n        logger.debug('Received response', {\n            ...logContext,\n            elapsedTime: Date.now() - startTime\n        });\n        return result;\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { FallbackProvider, FetchRequest } from 'ethers';\nimport { Lifecycle, inject, scoped } from 'tsyringe';\nimport { ConfigInjectionToken } from './ConfigTypes';\nimport { LoggingJsonRpcProvider } from './utils/LoggingJsonRpcProvider';\nimport { config as CHAIN_CONFIG } from '@streamr/config';\nfunction isDevChain(config) {\n    return config.contracts.ethereumNetwork.chainId === CHAIN_CONFIG.dev2.id;\n}\nconst formJsonRpcApiProviderOptions = (config) => {\n    return {\n        staticNetwork: true,\n        batchStallTime: isDevChain(config) ? 0 : undefined, // Don't batch requests, send them immediately\n        cacheTimeout: isDevChain(config) ? -1 : undefined // Do not employ result caching\n    };\n};\nlet RpcProviderSource = class RpcProviderSource {\n    config;\n    provider;\n    subProviders;\n    constructor(config) {\n        this.config = config;\n    }\n    getProvider() {\n        if (this.provider === undefined) {\n            const providers = this.getSubProviders();\n            this.provider = new FallbackProvider(providers, this.config.contracts.ethereumNetwork.chainId, {\n                quorum: Math.min(this.config.contracts.rpcQuorum, this.config.contracts.rpcs.length),\n                cacheTimeout: formJsonRpcApiProviderOptions(this.config).cacheTimeout\n            });\n        }\n        return this.provider;\n    }\n    /**\n     * Use this method only if you need access each provider separately. In most cases it is better to use\n     * the `getProvider` method as it provides better fail-safety.\n     */\n    getSubProviders() {\n        this.subProviders ??= this.config.contracts.rpcs.map((c) => {\n            const f = new FetchRequest(c.url);\n            f.retryFunc = async () => false;\n            // eslint-disable-next-line no-underscore-dangle\n            f.timeout = this.config._timeouts.jsonRpcTimeout;\n            const opts = formJsonRpcApiProviderOptions(this.config);\n            return new LoggingJsonRpcProvider(f, this.config.contracts.ethereumNetwork.chainId, opts);\n        });\n        return this.subProviders;\n    }\n};\nRpcProviderSource = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(0, inject(ConfigInjectionToken)),\n    __metadata(\"design:paramtypes\", [Object])\n], RpcProviderSource);\nexport { RpcProviderSource };\n","/**\n * Apply the gasPriceStrategy to the estimated gas price, if given\n * Ethers.js will resolve the gas price promise before sending the tx\n */\nexport const getEthersOverrides = async (rpcProviderSource, // TODO: can this be done somewhat cleaner?\nconfig) => {\n    const chainConfig = config.contracts.ethereumNetwork;\n    const overrides = chainConfig.overrides ?? {};\n    if ((chainConfig.highGasPriceStrategy) && (chainConfig.overrides?.gasPrice === undefined)) {\n        const feeData = await rpcProviderSource.getProvider().getFeeData();\n        const gasPriceStrategy = (feeData) => {\n            const INCREASE_PERCENTAGE = 30;\n            return feeData.gasPrice === null ? undefined : feeData.gasPrice * BigInt(100 + INCREASE_PERCENTAGE) / 100n;\n        };\n        return {\n            ...overrides,\n            gasPrice: gasPriceStrategy(feeData)\n        };\n    }\n    return overrides;\n};\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ObservableEventEmitter } from '@streamr/utils';\nimport { Lifecycle, scoped } from 'tsyringe';\nlet StreamrClientEventEmitter = class StreamrClientEventEmitter extends ObservableEventEmitter {\n};\nStreamrClientEventEmitter = __decorate([\n    scoped(Lifecycle.ContainerScoped)\n], StreamrClientEventEmitter);\nexport { StreamrClientEventEmitter };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Logger } from '@streamr/utils';\nimport { inject, Lifecycle, scoped } from 'tsyringe';\nimport { ConfigInjectionToken } from '../ConfigTypes';\nlet LoggerFactory = class LoggerFactory {\n    config;\n    constructor(config) {\n        this.config = config;\n    }\n    createLogger(loggerModule) {\n        return new Logger(loggerModule, { id: this.config.id }, this.config.logLevel);\n    }\n};\nLoggerFactory = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(0, inject(ConfigInjectionToken)),\n    __metadata(\"design:paramtypes\", [Object])\n], LoggerFactory);\nexport { LoggerFactory };\n","import { initEventGateway } from '@streamr/utils';\nimport { FunctionFragment, } from 'ethers';\nimport { EventEmitter } from 'eventemitter3';\nimport without from 'lodash/without';\nimport pLimit from 'p-limit';\nexport async function waitForTx(txToSubmit) {\n    const tx = await txToSubmit;\n    return tx.wait(); // cannot be null unless arg confirmations set to 0\n}\nconst isTransactionResponse = (returnValue) => {\n    return (returnValue.wait !== undefined && (typeof returnValue.wait === 'function'));\n};\nconst createLogger = (eventEmitter, loggerFactory) => {\n    const logger = loggerFactory.createLogger('contract');\n    eventEmitter.on('onMethodExecute', (methodName) => {\n        logger.debug('Execute method', { methodName });\n    });\n    eventEmitter.on('onTransactionSubmit', (methodName, tx) => {\n        logger.debug('Submit transaction', {\n            method: methodName,\n            tx: tx.hash,\n            to: tx.to,\n            nonce: tx.nonce,\n            gasLimit: tx.gasLimit,\n            gasPrice: tx.gasPrice\n        });\n    });\n    eventEmitter.on('onTransactionConfirm', (methodName, receipt) => {\n        logger.debug('Received transaction confirmation', {\n            method: methodName,\n            tx: receipt?.hash,\n            block: receipt?.blockNumber,\n            confirmations: receipt?.confirmations,\n            gasUsed: receipt?.gasUsed,\n            events: receipt?.logs ?? []\n        });\n    });\n};\nconst withErrorHandling = async (execute, methodName, action) => {\n    try {\n        return await execute();\n    }\n    catch (e) {\n        const suffixes = without(\n        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n        ['reason', 'code'].map((field) => (e[field] !== undefined ? `${field}=${e[field]}` : undefined)), undefined);\n        const wrappedError = new Error(`Error while ${action} contract call \"${methodName}\"${(suffixes.length > 0) ? ', ' + suffixes.join(', ') : ''}`);\n        // @ts-expect-error unknown property\n        wrappedError.reason = e;\n        throw wrappedError;\n    }\n};\nconst createWrappedContractMethod = (contract, contractName, methodName, eventEmitter, concurrencyLimit) => {\n    const originalMethod = contract[methodName];\n    const methodFullName = `${contractName}.${methodName}`;\n    const fn = async (...args) => {\n        const returnValue = await withErrorHandling(() => concurrencyLimit(() => {\n            eventEmitter.emit('onMethodExecute', methodFullName);\n            return originalMethod(...args);\n        }), methodFullName, 'executing');\n        if (isTransactionResponse(returnValue)) {\n            eventEmitter.emit('onTransactionSubmit', methodFullName, returnValue);\n            const originalWait = returnValue.wait.bind(returnValue);\n            returnValue.wait = async (confirmations, timeout) => {\n                const receipt = await withErrorHandling(() => originalWait(confirmations, timeout), methodName, 'waiting transaction for');\n                eventEmitter.emit('onTransactionConfirm', methodFullName, receipt);\n                return receipt;\n            };\n        }\n        return returnValue;\n    };\n    // TODO add also other methods in the future if needed:\n    // https://docs.ethers.org/v6/api/contract/#BaseContractMethod\n    fn.estimateGas = (...args) => originalMethod.estimateGas(...args);\n    return fn;\n};\n/**\n * Adds error handling, logging and limits concurrency.\n *\n * You can use the decorated contract normally, e.g.:\n *     const tx = await contract.createFoobar(123)\n *     return await tx.wait()\n * or\n *     await contract.getFoobar(456)\n */\nexport const createDecoratedContract = (contract, contractName, loggerFactory, maxConcurrentCalls) => {\n    const eventEmitter = new EventEmitter();\n    const concurrencyLimit = pLimit(maxConcurrentCalls);\n    const decoratedContract = {\n        eventEmitter,\n        getAddress: () => contract.getAddress(),\n        // TODO implement also other generic contract methods in the future if needed\n        on: (eventName, listener) => {\n            contract.on(eventName, listener);\n        },\n        off: (eventName, listener) => {\n            contract.off(eventName, listener);\n        }\n    };\n    /*\n     * Wrap each contract function. We read the list of functions from contract.functions, but\n     * actually delegate each method to contract[methodName]. Those methods are almost identical\n     * to contract.functions[methodName] methods. The major difference is the way of handling\n     * single-value results: the return type of contract.functions[methodName] is always\n     * Promise<Result> (see https://docs.ethers.org/v6/api/contract/#BaseContract)\n     */\n    const methodNames = contract.interface.fragments.filter((f) => FunctionFragment.isFunction(f)).map((f) => f.name);\n    methodNames.forEach((methodName) => {\n        decoratedContract[methodName] = createWrappedContractMethod(contract, contractName, methodName, eventEmitter, concurrencyLimit);\n    });\n    createLogger(eventEmitter, loggerFactory);\n    return decoratedContract;\n};\nexport const initContractEventGateway = (opts) => {\n    const logger = opts.loggerFactory.createLogger('contract');\n    initEventGateway(opts.targetName, (emit) => {\n        const listener = (eventArgs, blockNumber) => {\n            let targetEvent;\n            try {\n                targetEvent = opts.transformation(eventArgs, blockNumber);\n            }\n            catch (err) {\n                logger.error('Skip emit event', {\n                    eventName: opts.targetName,\n                    reason: err?.message\n                });\n                return;\n            }\n            emit(targetEvent);\n        };\n        opts.sourceEmitter.on({\n            onEvent: listener,\n            ...opts.sourceDefinition\n        });\n        return listener;\n    }, (listener) => {\n        opts.sourceEmitter.off({\n            onEvent: listener,\n            ...opts.sourceDefinition\n        });\n    }, opts.targetEmitter);\n};\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Contract } from 'ethers';\nimport { Lifecycle, inject, scoped } from 'tsyringe';\nimport { ConfigInjectionToken } from '../ConfigTypes';\nimport { StreamrClientEventEmitter } from '../events';\nimport { LoggerFactory } from '../utils/LoggerFactory';\nimport { createDecoratedContract } from './contract';\nlet ContractFactory = class ContractFactory {\n    config;\n    eventEmitter;\n    loggerFactory;\n    /* eslint-disable indent */\n    constructor(config, eventEmitter, loggerFactory) {\n        this.config = config;\n        this.eventEmitter = eventEmitter;\n        this.loggerFactory = loggerFactory;\n    }\n    createReadContract(address, contractInterface, provider, name) {\n        return createDecoratedContract(new Contract(address, contractInterface, provider), name, this.loggerFactory, this.config.contracts.maxConcurrentCalls);\n    }\n    createWriteContract(address, contractInterface, signer, name) {\n        const contract = createDecoratedContract(new Contract(address, contractInterface, signer), name, this.loggerFactory, \n        // The current maxConcurrentCalls value is just a placeholder as we don't support concurrent writes (as we don't use nonces).\n        // When we add the support, we should use the maxConcurrentCalls option from client config here.\n        // Also note that if we'd use a limit of 1, it wouldn't make the concurrent transactions to a sequence of transactions,\n        // because the concurrency limit covers only submits, not tx.wait() calls.\n        999999);\n        contract.eventEmitter.on('onTransactionConfirm', (methodName, receipt) => {\n            this.eventEmitter.emit('contractTransactionConfirmed', {\n                methodName,\n                receipt\n            });\n        });\n        return contract;\n    }\n    // eslint-disable-next-line class-methods-use-this\n    createEventContract(address, contractInterface, provider) {\n        return new Contract(address, contractInterface, provider);\n    }\n};\nContractFactory = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(0, inject(ConfigInjectionToken)),\n    __metadata(\"design:paramtypes\", [Object, StreamrClientEventEmitter,\n        LoggerFactory])\n], ContractFactory);\nexport { ContractFactory };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { NodeRegistryABI } from '@streamr/network-contracts';\nimport { toEthereumAddress } from '@streamr/utils';\nimport { Lifecycle, inject, scoped } from 'tsyringe';\nimport { Identity, IdentityInjectionToken } from '../identity/Identity';\nimport { ConfigInjectionToken } from '../ConfigTypes';\nimport { RpcProviderSource } from '../RpcProviderSource';\nimport { StreamrClientError } from '../StreamrClientError';\nimport { getEthersOverrides } from '../ethereumUtils';\nimport { ContractFactory } from './ContractFactory';\nimport { waitForTx } from './contract';\n/**\n * Store a mapping of storage node addresses <-> storage node URLs\n */\nlet StorageNodeRegistry = class StorageNodeRegistry {\n    nodeRegistryContract;\n    nodeRegistryContractReadonly;\n    contractFactory;\n    rpcProviderSource;\n    config;\n    identity;\n    constructor(contractFactory, rpcProviderSource, config, identity) {\n        this.contractFactory = contractFactory;\n        this.rpcProviderSource = rpcProviderSource;\n        this.config = config;\n        this.identity = identity;\n        this.nodeRegistryContractReadonly = this.contractFactory.createReadContract(toEthereumAddress(this.config.contracts.storageNodeRegistryChainAddress), NodeRegistryABI, rpcProviderSource.getProvider(), 'storageNodeRegistry');\n    }\n    async connectToContract() {\n        if (this.nodeRegistryContract === undefined) {\n            const chainSigner = await this.identity.getTransactionSigner(this.rpcProviderSource);\n            this.nodeRegistryContract = this.contractFactory.createWriteContract(toEthereumAddress(this.config.contracts.storageNodeRegistryChainAddress), NodeRegistryABI, chainSigner, 'storageNodeRegistry');\n        }\n    }\n    async setStorageNodeMetadata(metadata) {\n        await this.connectToContract();\n        const ethersOverrides = await getEthersOverrides(this.rpcProviderSource, this.config);\n        if (metadata !== undefined) {\n            await waitForTx(this.nodeRegistryContract.createOrUpdateNodeSelf(JSON.stringify(metadata), ethersOverrides));\n        }\n        else {\n            await waitForTx(this.nodeRegistryContract.removeNodeSelf(ethersOverrides));\n        }\n    }\n    async getStorageNodeMetadata(nodeAddress) {\n        const [resultNodeAddress, metadata] = await this.nodeRegistryContractReadonly.getNode(nodeAddress);\n        const NODE_NOT_FOUND = '0x0000000000000000000000000000000000000000';\n        if (resultNodeAddress !== NODE_NOT_FOUND) {\n            return JSON.parse(metadata);\n        }\n        else {\n            throw new StreamrClientError('Node not found, id: ' + nodeAddress, 'NODE_NOT_FOUND');\n        }\n    }\n};\nStorageNodeRegistry = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(2, inject(ConfigInjectionToken)),\n    __param(3, inject(IdentityInjectionToken)),\n    __metadata(\"design:paramtypes\", [ContractFactory,\n        RpcProviderSource, Object, Identity])\n], StorageNodeRegistry);\nexport { StorageNodeRegistry };\n","export class ValidationError extends Error {\n    code;\n    constructor(msg, code) {\n        super(msg);\n        this.code = code;\n    }\n}\n","import { ValidationError } from './ValidationError';\nexport function validateIsDefined(varName, varValue) {\n    if (varValue === undefined) {\n        throw new ValidationError(`Expected ${varName} to not be undefined.`);\n    }\n}\nexport function validateIsNotNegativeInteger(varName, varValue, allowUndefined = false) {\n    if (allowUndefined && varValue === undefined) {\n        return;\n    }\n    validateIsDefined(varName, varValue);\n    if (!Number.isInteger(varValue)) {\n        throw new ValidationError(`Expected ${varName} to be an integer but was a ${typeof varValue} (${varValue}).`);\n    }\n    if (varValue < 0) {\n        throw new ValidationError(`Expected ${varName} to not be negative (${varValue}).`);\n    }\n}\n","import { validateIsNotNegativeInteger } from './validations';\nexport class MessageRef {\n    timestamp;\n    sequenceNumber;\n    constructor(timestamp, sequenceNumber) {\n        validateIsNotNegativeInteger('timestamp', timestamp);\n        validateIsNotNegativeInteger('sequenceNumber', sequenceNumber, true);\n        this.timestamp = timestamp;\n        this.sequenceNumber = sequenceNumber;\n    }\n    compareTo(other) {\n        if (this.timestamp < other.timestamp) {\n            return -1;\n        }\n        if (this.timestamp > other.timestamp) {\n            return 1;\n        }\n        if (this.sequenceNumber < other.sequenceNumber) {\n            return -1;\n        }\n        if (this.sequenceNumber > other.sequenceNumber) {\n            return 1;\n        }\n        return 0;\n    }\n}\n","import { toStreamPartID } from '@streamr/utils';\nimport { MessageRef } from './MessageRef';\nimport { validateIsNotNegativeInteger } from './validations';\nexport class MessageID {\n    streamId;\n    streamPartition;\n    timestamp;\n    sequenceNumber;\n    publisherId;\n    msgChainId;\n    constructor(streamId, streamPartition, timestamp, sequenceNumber, publisherId, msgChainId) {\n        validateIsNotNegativeInteger('streamPartition', streamPartition);\n        validateIsNotNegativeInteger('timestamp', timestamp);\n        validateIsNotNegativeInteger('sequenceNumber', sequenceNumber);\n        this.streamId = streamId;\n        this.streamPartition = streamPartition;\n        this.timestamp = timestamp;\n        this.sequenceNumber = sequenceNumber;\n        this.publisherId = publisherId;\n        this.msgChainId = msgChainId;\n    }\n    getStreamPartID() {\n        return toStreamPartID(this.streamId, this.streamPartition);\n    }\n    toMessageRef() {\n        return new MessageRef(this.timestamp, this.sequenceNumber);\n    }\n}\n","import { binaryToUtf8 } from '@streamr/utils';\nimport { ContentType, EncryptionType } from '@streamr/trackerless-network';\nimport { StreamrClientError } from '../StreamrClientError';\nimport { MessageRef } from './MessageRef';\nimport { ValidationError } from './ValidationError';\nimport { validateIsDefined } from './validations';\nexport var StreamMessageType;\n(function (StreamMessageType) {\n    StreamMessageType[StreamMessageType[\"MESSAGE\"] = 0] = \"MESSAGE\";\n    StreamMessageType[StreamMessageType[\"GROUP_KEY_REQUEST\"] = 1] = \"GROUP_KEY_REQUEST\";\n    StreamMessageType[StreamMessageType[\"GROUP_KEY_RESPONSE\"] = 2] = \"GROUP_KEY_RESPONSE\";\n})(StreamMessageType || (StreamMessageType = {}));\n/**\n * Validates that messageId is strictly after prevMsgRef in time.\n */\nfunction validateSequence(messageId, prevMsgRef) {\n    if (prevMsgRef === undefined) {\n        return;\n    }\n    const comparison = messageId.toMessageRef().compareTo(prevMsgRef);\n    if (comparison === 0) {\n        throw new ValidationError(\n        // eslint-disable-next-line max-len\n        `prevMessageRef cannot be identical to current. Current: ${JSON.stringify(messageId.toMessageRef())} Previous: ${JSON.stringify(prevMsgRef)}`);\n    }\n    if (comparison < 0) {\n        throw new ValidationError(`prevMessageRef must come before current. Current: ${JSON.stringify(messageId.toMessageRef())} Previous: ${JSON.stringify(prevMsgRef)}`);\n    }\n}\n/**\n * An internal class representing a message in a stream. Applications see instances of the Message class.\n */\nexport class StreamMessage {\n    messageId;\n    prevMsgRef;\n    messageType;\n    content;\n    contentType;\n    signature;\n    signatureType;\n    encryptionType;\n    groupKeyId;\n    newGroupKey;\n    constructor({ messageId, prevMsgRef, messageType = StreamMessageType.MESSAGE, content, contentType, signature, signatureType, encryptionType, groupKeyId, newGroupKey, }) {\n        validateSequence(messageId, prevMsgRef);\n        if (encryptionType === EncryptionType.AES) {\n            validateIsDefined('groupKeyId', groupKeyId);\n        }\n        this.messageId = messageId;\n        this.prevMsgRef = prevMsgRef;\n        this.messageType = messageType;\n        this.contentType = contentType;\n        this.encryptionType = encryptionType;\n        this.groupKeyId = groupKeyId;\n        this.newGroupKey = newGroupKey;\n        this.signature = signature;\n        this.signatureType = signatureType;\n        this.content = content;\n    }\n    getStreamId() {\n        return this.messageId.streamId;\n    }\n    getStreamPartition() {\n        return this.messageId.streamPartition;\n    }\n    getStreamPartID() {\n        return this.messageId.getStreamPartID();\n    }\n    getTimestamp() {\n        return this.messageId.timestamp;\n    }\n    getSequenceNumber() {\n        return this.messageId.sequenceNumber;\n    }\n    getPublisherId() {\n        return this.messageId.publisherId;\n    }\n    getMsgChainId() {\n        return this.messageId.msgChainId;\n    }\n    getMessageRef() {\n        return new MessageRef(this.getTimestamp(), this.getSequenceNumber());\n    }\n    // TODO: consider replacing later half of type with a \"JSON type\" from a ts-toolbelt or type-fest or ts-essentials\n    getParsedContent() {\n        if (this.encryptionType !== EncryptionType.NONE || this.contentType === ContentType.BINARY) {\n            return this.content;\n        }\n        else if (this.contentType === ContentType.JSON) {\n            try {\n                return JSON.parse(binaryToUtf8(this.content));\n            }\n            catch (err) {\n                // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n                throw new StreamrClientError(`Unable to parse JSON: ${err}`, 'INVALID_MESSAGE_CONTENT', this);\n            }\n        }\n        else {\n            throw new StreamrClientError(`Unknown content type: ${this.contentType}`, 'ASSERTION_FAILED', this);\n        }\n    }\n    static isAESEncrypted(msg) {\n        return msg.encryptionType === EncryptionType.AES;\n    }\n}\n","import { ContentType, EncryptionType, GroupKeyRequest, GroupKeyResponse } from '@streamr/trackerless-network';\nimport { toUserId, toUserIdRaw } from '@streamr/utils';\nimport { MessageID as StreamMessageID } from './MessageID';\nimport { MessageRef as StreamMessageRef } from './MessageRef';\nimport { StreamMessage, StreamMessageType } from './StreamMessage';\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class StreamMessageTranslator {\n    static toProtobuf(msg) {\n        const messageId = {\n            timestamp: msg.getTimestamp(),\n            sequenceNumber: msg.getSequenceNumber(),\n            streamId: msg.getStreamId(),\n            streamPartition: msg.getStreamPartition(),\n            publisherId: toUserIdRaw(msg.getPublisherId()),\n            messageChainId: msg.getMsgChainId()\n        };\n        let previousMessageRef = undefined;\n        if (msg.prevMsgRef) {\n            previousMessageRef = {\n                timestamp: msg.prevMsgRef.timestamp,\n                sequenceNumber: msg.prevMsgRef.sequenceNumber\n            };\n        }\n        let body;\n        if (msg.messageType === StreamMessageType.MESSAGE) {\n            let newGroupKey = undefined;\n            if (msg.newGroupKey) {\n                newGroupKey = {\n                    id: msg.newGroupKey.id,\n                    data: msg.newGroupKey.data\n                };\n            }\n            body = {\n                oneofKind: 'contentMessage',\n                contentMessage: {\n                    content: msg.content,\n                    contentType: msg.contentType,\n                    encryptionType: msg.encryptionType,\n                    groupKeyId: msg.groupKeyId ?? undefined,\n                    newGroupKey\n                }\n            };\n        }\n        else if (msg.messageType === StreamMessageType.GROUP_KEY_REQUEST) {\n            body = {\n                oneofKind: 'groupKeyRequest',\n                groupKeyRequest: GroupKeyRequest.fromBinary(msg.content)\n            };\n        }\n        else if (msg.messageType === StreamMessageType.GROUP_KEY_RESPONSE) {\n            body = {\n                oneofKind: 'groupKeyResponse',\n                groupKeyResponse: GroupKeyResponse.fromBinary(msg.content)\n            };\n        }\n        else {\n            throw new Error('invalid message type');\n        }\n        const translated = {\n            messageId,\n            previousMessageRef,\n            signature: msg.signature,\n            signatureType: msg.signatureType,\n            body\n        };\n        return translated;\n    }\n    static toClientProtocol(msg) {\n        let messageType;\n        let content;\n        let contentType = ContentType.BINARY;\n        let encryptionType = EncryptionType.NONE;\n        let newGroupKey = undefined;\n        let groupKeyId = undefined;\n        if (msg.body.oneofKind === 'contentMessage') {\n            messageType = StreamMessageType.MESSAGE;\n            content = msg.body.contentMessage.content;\n            contentType = msg.body.contentMessage.contentType;\n            encryptionType = msg.body.contentMessage.encryptionType;\n            newGroupKey = msg.body.contentMessage.newGroupKey;\n            groupKeyId = msg.body.contentMessage.groupKeyId;\n        }\n        else if (msg.body.oneofKind === 'groupKeyRequest') {\n            messageType = StreamMessageType.GROUP_KEY_REQUEST;\n            try {\n                content = GroupKeyRequest.toBinary(msg.body.groupKeyRequest);\n            }\n            catch (err) {\n                // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n                throw new Error(`invalid group key request: ${err}`);\n            }\n        }\n        else if (msg.body.oneofKind === 'groupKeyResponse') {\n            messageType = StreamMessageType.GROUP_KEY_RESPONSE;\n            try {\n                content = GroupKeyResponse.toBinary(msg.body.groupKeyResponse);\n            }\n            catch (err) {\n                // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n                throw new Error(`invalid group key response: ${err}`);\n            }\n        }\n        else {\n            throw new Error('invalid message type');\n        }\n        const messageId = new StreamMessageID(msg.messageId.streamId, msg.messageId.streamPartition, Number(msg.messageId.timestamp), msg.messageId.sequenceNumber, toUserId(msg.messageId.publisherId), msg.messageId.messageChainId);\n        let prevMsgRef = undefined;\n        if (msg.previousMessageRef) {\n            prevMsgRef = new StreamMessageRef(Number(msg.previousMessageRef.timestamp), msg.previousMessageRef.sequenceNumber);\n        }\n        const translated = new StreamMessage({\n            messageId,\n            prevMsgRef,\n            messageType,\n            content,\n            contentType,\n            signature: msg.signature,\n            signatureType: msg.signatureType,\n            encryptionType,\n            groupKeyId,\n            newGroupKey\n        });\n        return translated;\n    }\n}\n","import { StreamMessage as NewStreamMessage } from '@streamr/trackerless-network';\nimport { StreamMessageTranslator } from './StreamMessageTranslator';\nexport function convertStreamMessageToBytes(oldStreamMessage) {\n    return NewStreamMessage.toBinary(StreamMessageTranslator.toProtobuf(oldStreamMessage));\n}\nexport function convertBytesToStreamMessage(bytes) {\n    return StreamMessageTranslator.toClientProtocol(NewStreamMessage.fromBinary(bytes));\n}\n","const noopConsume = async (src) => {\n    // eslint-disable-next-line no-underscore-dangle\n    for await (const _msg of src) {\n        // noop, just consume\n    }\n};\n/**\n * Similar to Array#forEach or Stream.PassThrough.\n * Allows inspection of a pipeline without mutating it.\n * Note: Pipeline will block until forEach call resolves.\n */\nexport async function* forEach(src, fn, onError) {\n    let index = 0;\n    for await (const v of src) {\n        try {\n            await fn(v, index, src);\n        }\n        catch (err) {\n            if (onError) {\n                await onError(err, v);\n                continue;\n            }\n            else {\n                throw err;\n            }\n        }\n        finally {\n            index += 1;\n        }\n        yield v;\n    }\n}\n/**\n * Similar to Array#map or Stream.Transform.\n */\nexport async function* map(src, fn, onError) {\n    let index = 0;\n    for await (const v of src) {\n        try {\n            yield await fn(v, index, src);\n        }\n        catch (err) {\n            if (onError) {\n                await onError(err, v);\n                continue;\n            }\n            else {\n                throw err;\n            }\n        }\n        finally {\n            index += 1;\n        }\n    }\n}\n/**\n * Similar to Array#filter\n */\nexport async function* filter(src, fn, onError) {\n    let index = 0;\n    for await (const v of src) {\n        let ok;\n        try {\n            ok = await fn(v, index, src);\n        }\n        catch (err) {\n            if (onError) {\n                await onError(err, v);\n                continue;\n            }\n            else {\n                throw err;\n            }\n        }\n        finally {\n            index += 1;\n        }\n        if (ok) {\n            yield v;\n        }\n    }\n}\n/**\n * Start consuming generator.\n * Takes optional forEach function.\n */\nexport async function consume(src, fn = (v) => v, onError) {\n    return noopConsume(forEach(src, fn, onError));\n}\nexport async function* unique(source, getIdentity) {\n    const seenIdentities = new Set();\n    for await (const item of source) {\n        const identity = getIdentity(item);\n        if (!seenIdentities.has(identity)) {\n            seenIdentities.add(identity);\n            yield item;\n        }\n    }\n}\nexport const fromArray = async function* (items) {\n    for (const item of items) {\n        yield item;\n    }\n};\nexport const transformError = async function* (src, transformFn) {\n    try {\n        for await (const item of src) {\n            yield item;\n        }\n    }\n    catch (err) {\n        throw await transformFn(err);\n    }\n};\n","/**\n * Async Gate\n * Useful for blocking actions until some condition is met.\n * Starts open.\n *\n * gate.open() Opens gate\n * gate.close() Closes gate\n * gate.lock() Permanently lock gate. Pending & future check calls resolve false.\n * gate.check() Will async block if gate closed.\n * gate.check() Calls resolve true when gate opened.\n * gate.check() Calls resolve false when gate locked.\n *\n * ```ts\n * const gate = new Gate()\n * gate.close() // prevent gate.check() from resolving\n * const onOpen = gate.check().then(() => console.log('opened'))\n * await wait(100)\n * gate.open() // onOpen will now resolve\n * await gate.check() // gate is open so this will resolve immediately\n * gate.close()\n * // will block until open/lock is called\n * const onOpenAgain = gate.check().then((isOk) => console.log('is locked?', !isOk))\n * gate.lock() // prevent open/close.\n * // with lock() outstanding check() calls will resolve, but with false value\n * console.log(await gate.check()) // false\n * console.log(await gate.check()) // false\n * gate.open() // noop\n * console.log(await gate.check()) // false\n * gate.close() // noop\n * ```\n */\nimport { Defer } from '@streamr/utils';\n// This is similar to the Gate class of @streamr/utils, but implements also locking featute\n// TODO remove this class if the lock() feature is no longer needed and use the class \n// from @streamr/utils instead\nexport class Gate {\n    isLocked = false;\n    pending;\n    /**\n     * Opens gate.\n     * Pending check calls will resolve true.\n     * Future check calls will resolve true, until close or lock called.\n     */\n    open() {\n        if (this.isLocked) {\n            // do nothing\n            return;\n        }\n        this.clearPending();\n    }\n    /**\n     * Stops gate opening or closing. Pending and future calls will resolve false.\n     */\n    lock() {\n        if (this.isLocked) {\n            // do nothing\n            return;\n        }\n        this.isLocked = true;\n        this.clearPending();\n    }\n    /**\n     * Opens gate but resolves pending with an error.\n     * TODO: remove? might not be needed.\n     */\n    error(err) {\n        if (this.isLocked) {\n            // do nothing\n            return;\n        }\n        this.clearPending(err);\n    }\n    /**\n     * Closes gate.\n     * Noop if already closed.\n     * Future check calls will block, until open or lock called.\n     */\n    close() {\n        if (this.isLocked) {\n            // do nothing\n            return;\n        }\n        this.pending ??= new Defer();\n    }\n    /**\n     * Calls open/close based on shouldBeOpen parameter.\n     * Convenience.\n     */\n    setOpenState(shouldBeOpen) {\n        if (shouldBeOpen) {\n            this.open();\n        }\n        else {\n            this.close();\n        }\n    }\n    /**\n     * @returns True iff gate is open. False if locked or closed.\n     */\n    isOpen() {\n        return !this.isLocked && !this.pending;\n    }\n    clearPending(err) {\n        const { pending } = this;\n        if (!pending) {\n            return;\n        }\n        this.pending = undefined;\n        if (err) {\n            pending.reject(err);\n        }\n        else {\n            pending.resolve(undefined);\n        }\n    }\n    /**\n     * @returns Promise<true> iff opened successfully\n     */\n    async check() {\n        if (this.pending) {\n            await this.pending;\n        }\n        return !this.isLocked;\n    }\n}\n","import { Gate } from './Gate';\nimport { StreamrClientError } from '../StreamrClientError';\nexport const DEFAULT_BUFFER_SIZE = 256;\nfunction isError(err) {\n    if (!err) {\n        return false;\n    }\n    if (err instanceof Error) {\n        return true;\n    }\n    return !!(err?.stack\n        && err.message\n        && typeof err.stack === 'string'\n        && typeof err.message === 'string');\n}\n/**\n * Implements an async buffer.\n * Push items into buffer, push will async block once buffer is full.\n * and will unblock once buffer has been consumed.\n */\nexport class PushBuffer {\n    buffer = [];\n    bufferSize;\n    /** open when writable */\n    writeGate;\n    /** open when readable */\n    readGate;\n    error;\n    iterator;\n    isIterating = false;\n    constructor(bufferSize = DEFAULT_BUFFER_SIZE) {\n        if (!(bufferSize > 0 && Number.isSafeInteger(bufferSize))) {\n            throw new StreamrClientError(`bufferSize must be a safe positive integer, got: ${bufferSize}`, 'INVALID_ARGUMENT');\n        }\n        this.bufferSize = bufferSize;\n        // start both closed\n        this.writeGate = new Gate();\n        this.readGate = new Gate();\n        this.writeGate.close();\n        this.readGate.close();\n        this.iterator = this.iterate();\n    }\n    /**\n     * Puts item in buffer and opens readGate.\n     * Blocks until writeGate is open again (or locked)\n     * @returns Promise<true> if item was pushed, Promise<false> if done or became done before writeGate opened.\n     */\n    async push(item) {\n        if (!this.isWritable()) {\n            return false;\n        }\n        this.buffer.push(item);\n        this.updateWriteGate();\n        this.readGate.open();\n        return this.writeGate.check();\n    }\n    updateWriteGate() {\n        this.writeGate.setOpenState(!this.isFull());\n    }\n    /**\n     * Immediate end of reading and writing\n     * Buffer will not flush.\n     */\n    end(err) {\n        if (err) {\n            this.error = err;\n        }\n        this.lock();\n    }\n    /**\n     * Prevent further reads or writes.\n     */\n    lock() {\n        this.writeGate.lock();\n        this.readGate.lock();\n    }\n    /**\n     * Prevent further writes.\n     * Allows buffer to flush before ending.\n     */\n    endWrite(err) {\n        if (err && !this.error) {\n            this.error = err;\n        }\n        this.readGate.open();\n        this.writeGate.lock();\n    }\n    /**\n     * True if buffered at least bufferSize items.\n     * After this point, push will block until buffer is emptied again.\n     */\n    isFull() {\n        return this.buffer.length >= this.bufferSize;\n    }\n    /**\n     * True if buffer has closed reads and writes.\n     */\n    isDone() {\n        return this.writeGate.isLocked && this.readGate.isLocked;\n    }\n    /**\n     * Can't write if write gate locked.\n     * No point writing if read gate is locked.\n     */\n    isWritable() {\n        return !this.writeGate.isLocked && !this.readGate.isLocked;\n    }\n    async *iterate() {\n        this.isIterating = true;\n        try {\n            // if there's something buffered, we want to flush it\n            while (!this.readGate.isLocked) {\n                // keep reading off front of buffer until buffer empty\n                while (this.buffer.length && !this.readGate.isLocked) {\n                    const v = this.buffer.shift();\n                    // maybe open write gate\n                    this.updateWriteGate();\n                    if (isError(v)) {\n                        throw v;\n                    }\n                    yield v;\n                }\n                if (this.buffer.length === 0 && this.writeGate.isLocked) {\n                    break;\n                }\n                if (this.isDone()) {\n                    // buffer is empty and we're done\n                    break;\n                }\n                // buffer must be empty, close readGate until more writes.\n                this.readGate.close();\n                // wait for something to be written\n                const ok = await this.readGate.check();\n                if (!ok) {\n                    // no more reading\n                    break;\n                }\n            }\n            const { error } = this;\n            if (error) {\n                this.error = undefined;\n                throw error;\n            }\n        }\n        finally {\n            this.buffer = [];\n            this.lock();\n        }\n    }\n    get length() {\n        return this.buffer.length;\n    }\n    // clears any pending items in buffer\n    clear() {\n        this.buffer = [];\n    }\n    // AsyncGenerator implementation\n    async throw(err) {\n        this.endWrite(err);\n        return this.iterator.throw(err);\n    }\n    async return(v) {\n        this.end();\n        return this.iterator.return(v);\n    }\n    next() {\n        return this.iterator.next();\n    }\n    [Symbol.asyncIterator]() {\n        if (this.isIterating) {\n            // @ts-expect-error ts can't do this.constructor properly\n            throw new this.constructor.Error(this, 'already iterating');\n        }\n        return this;\n    }\n    async [Symbol.asyncDispose]() {\n        this.end();\n    }\n}\n/**\n * Pull from a source into some PushBuffer\n */\nexport async function pull(src, dest) {\n    if (!src) {\n        throw new Error('no source');\n    }\n    try {\n        for await (const v of src) {\n            const ok = await dest.push(v);\n            if (!ok) {\n                break;\n            }\n        }\n    }\n    catch (err) {\n        dest.endWrite(err);\n    }\n    finally {\n        dest.endWrite();\n    }\n}\n","import { PassThrough } from 'stream';\nimport { once } from 'events';\n/**\n * Background async task to pull data from the browser stream and push it into the node stream.\n */\nasync function pull(webStream, nodeStream) {\n    const reader = webStream.getReader();\n    const abortController = new AbortController();\n    try {\n        while (true) {\n            const { value, done } = await reader.read();\n            if (done) {\n                break;\n            }\n            if (!nodeStream.writable) {\n                break;\n            }\n            const canWrite = nodeStream.write(value);\n            if (!canWrite) {\n                try {\n                    await once(nodeStream, 'drain', abortController);\n                }\n                catch (e) {\n                    if (e.name === 'AbortError') {\n                        break;\n                    }\n                    throw e;\n                }\n            }\n        }\n    }\n    catch (e) {\n        nodeStream.destroy(e);\n        abortController.abort();\n    }\n    finally {\n        nodeStream.end();\n        try {\n            await reader.cancel();\n        }\n        catch (_) {\n            /**\n             * `reader.cancel` can actually throw if called on a response\n             * body reader of a \"cancelled\" fetch. Do nothing.\n             */\n        }\n        reader.releaseLock();\n    }\n}\n/**\n * Convert browser ReadableStream to Node stream.Readable.\n */\nexport function WebStreamToNodeStream(webStream, nodeStreamOptions) {\n    if ('pipe' in webStream) {\n        return webStream;\n    }\n    // use PassThrough so we can write to it\n    const nodeStream = new PassThrough(nodeStreamOptions);\n    pull(webStream, nodeStream);\n    return nodeStream;\n}\n","import { v4 as uuidv4 } from 'uuid';\nimport uniqueId from 'lodash/uniqueId';\nexport const SEPARATOR = '-';\nlet UUID;\nexport function uuid(label = '') {\n    if (typeof UUID === 'undefined') {\n        // Create UUID on the first use of the function in order to avoid premature `uuidv4` calls.\n        // Doing it outside will break browser projects that utilize server-side rendering (no\n        // `window` while build's target is `web`).\n        UUID = uuidv4();\n    }\n    // Incrementing + human readable uuid\n    return uniqueId(`${UUID}${label ? `${SEPARATOR}${label}` : ''}`);\n}\n","import { NodeType, toDhtAddress, toDhtAddressRaw } from '@streamr/dht';\nimport { LengthPrefixedFrameDecoder, Logger, TheGraphClient, composeAbortSignals, merge, randomString, toEthereumAddress, toStreamID } from '@streamr/utils';\nimport { LRUCache } from 'lru-cache';\nimport { NetworkNodeType } from '../ConfigTypes';\nimport { WebStreamToNodeStream } from './WebStreamToNodeStream';\nimport { SEPARATOR } from './uuid';\nconst logger = new Logger('sdk-utils');\nexport const CounterId = (rootPrefix, { maxPrefixes = 256 } = {}) => {\n    let counts = {}; // possible we could switch this to WeakMap and pass functions or classes.\n    let didWarn = false;\n    const counterIdFn = (prefix = 'ID', separator = SEPARATOR) => {\n        // pedantic: wrap around if count grows too large\n        counts[prefix] = (counts[prefix] + 1 || 0) % Number.MAX_SAFE_INTEGER;\n        // warn once if too many prefixes\n        if (!didWarn) {\n            const numTracked = Object.keys(counts).length;\n            if (numTracked > maxPrefixes) {\n                didWarn = true;\n                console.warn(`counterId should not be used for a large number of unique prefixes: ${numTracked} > ${maxPrefixes}`);\n            }\n        }\n        // connect prefix with separator\n        return [rootPrefix, prefix, counts[prefix]]\n            .filter((v) => v != null) // remove {root}Prefix if not set\n            .join(separator);\n    };\n    /**\n     * Clears counts for prefix or all if no prefix supplied.\n     *\n     * @param {string?} prefix\n     */\n    counterIdFn.clear = (...args) => {\n        // check length to differentiate between clear(undefined) & clear()\n        if (args.length) {\n            const [prefix] = args;\n            delete counts[prefix];\n        }\n        else {\n            // clear all\n            counts = {};\n        }\n    };\n    return counterIdFn;\n};\nexport const counterId = CounterId();\nexport function instanceId(instance, suffix = '') {\n    return counterId(instance.constructor.name) + suffix;\n}\nexport const getEndpointUrl = (baseUrl, ...pathParts) => {\n    return baseUrl + '/' + pathParts.map((part) => encodeURIComponent(part)).join('/');\n};\nexport function formStorageNodeAssignmentStreamId(clusterAddress) {\n    return toStreamID('/assignments', toEthereumAddress(clusterAddress));\n}\nexport class MaxSizedSet {\n    delegate;\n    constructor(maxSize) {\n        this.delegate = new LRUCache({ maxSize, sizeCalculation: () => 1 });\n    }\n    add(value) {\n        this.delegate.set(value, true);\n    }\n    has(value) {\n        return this.delegate.has(value);\n    }\n    delete(value) {\n        this.delegate.delete(value);\n    }\n}\n// TODO: rename to convertNetworkPeerDescriptorToPeerDescriptor\n// This function contains temporary compatibility layer which allows that PeerDescriptor can be configured with \n// \"id\" field instead of \"nodeId\" field. This is done so that pretestnet users don't need to change their configs.\n// After strear-1.0 testnet1 or mainnet starts, remove this hack.\n// - Good to ensure at that point that the new format has landed to the public documentation: \n//   https://docs.streamr.network/guides/become-an-operator\n// - or maybe NET-1133 or NET-1004 have been implemented and the documentation no longer mentions the low\n//   level way of configuring the entry points.\n// Actions:\n// - remove \"temporary compatibility\" test case from Broker's config.test.ts \n// - remove \"id\" property from config.schema.json (line 536) and make \"nodeId\" property required\n// - remove \"id\" property handling from this method\nexport function peerDescriptorTranslator(json) {\n    const type = json.type === NetworkNodeType.BROWSER ? NodeType.BROWSER : NodeType.NODEJS;\n    const peerDescriptor = {\n        ...json,\n        nodeId: toDhtAddressRaw((json.nodeId ?? json.id)),\n        type,\n        websocket: json.websocket\n    };\n    if (peerDescriptor.id !== undefined) {\n        delete peerDescriptor.id;\n    }\n    return peerDescriptor;\n}\nexport function convertPeerDescriptorToNetworkPeerDescriptor(descriptor) {\n    // TODO maybe we should copy most/all fields of PeerDescription (NET-1255)\n    return {\n        nodeId: toDhtAddress(descriptor.nodeId),\n        type: descriptor.type === NodeType.NODEJS ? NetworkNodeType.NODEJS : NetworkNodeType.BROWSER,\n        websocket: descriptor.websocket,\n        region: descriptor.region\n    };\n}\nexport function generateClientId() {\n    return counterId(typeof process !== 'undefined' && process.pid ? `${process.pid}` : randomString(4), '/');\n}\n// A unique internal identifier to some list of primitive values. Useful\n// e.g. as a map key or a cache key.\nexport const formLookupKey = (key) => {\n    return Array.isArray(key)\n        ? key.map((a) => a.toString()).join('|')\n        : key.toString();\n};\n/** @internal */\nexport const createTheGraphClient = (eventEmitter, config) => {\n    const instance = new TheGraphClient({\n        serverUrl: config.contracts.theGraphUrl,\n        fetch: (url, init) => {\n            // eslint-disable-next-line no-underscore-dangle\n            const timeout = config._timeouts.theGraph.fetchTimeout;\n            const signals = [AbortSignal.timeout(timeout)];\n            if (init?.signal instanceof AbortSignal) {\n                signals.push(init.signal);\n            }\n            const signal = composeAbortSignals(...signals);\n            try {\n                return fetch(url, merge(init, { signal }));\n            }\n            finally {\n                signal.destroy();\n            }\n        },\n        // eslint-disable-next-line no-underscore-dangle\n        indexTimeout: config._timeouts.theGraph.indexTimeout,\n        // eslint-disable-next-line no-underscore-dangle\n        indexPollInterval: config._timeouts.theGraph.indexPollInterval\n    });\n    eventEmitter.on('contractTransactionConfirmed', (payload) => {\n        if (payload.receipt != null) {\n            instance.updateRequiredBlockNumber(payload.receipt.blockNumber);\n        }\n    });\n    return instance;\n};\nexport const createQueryString = (query) => {\n    const withoutEmpty = Object.fromEntries(Object.entries(query).filter(([_k, v]) => v != null));\n    return new URLSearchParams(withoutEmpty).toString();\n};\nexport class FetchHttpStreamResponseError extends Error {\n    response;\n    constructor(response) {\n        super(`Fetch error, url=${response.url}`);\n        this.response = response;\n    }\n}\nexport const fetchLengthPrefixedFrameHttpBinaryStream = async function* (url, abortSignal) {\n    logger.debug('Send HTTP request', { url });\n    const abortController = new AbortController();\n    const fetchAbortSignal = composeAbortSignals(abortController.signal, abortSignal);\n    try {\n        const response = await fetch(url, {\n            signal: fetchAbortSignal\n        });\n        logger.debug('Received HTTP response', {\n            url,\n            status: response.status,\n        });\n        if (!response.ok) {\n            throw new FetchHttpStreamResponseError(response);\n        }\n        if (!response.body) {\n            throw new Error('No Response Body');\n        }\n        let stream;\n        try {\n            // in the browser, response.body will be a web stream. Convert this into a node stream.\n            const source = WebStreamToNodeStream(response.body);\n            stream = source.pipe(new LengthPrefixedFrameDecoder());\n            source.on('error', (err) => stream.destroy(err));\n            stream.once('close', () => {\n                abortController.abort();\n            });\n            yield* stream;\n        }\n        catch (err) {\n            abortController.abort();\n            throw err;\n        }\n        finally {\n            stream?.destroy();\n        }\n    }\n    finally {\n        fetchAbortSignal.destroy();\n    }\n};\n","import pLimit from 'p-limit';\nimport pThrottle from 'p-throttle';\n/**\n * Returns a function that executes with limited concurrency.\n */\nexport function pLimitFn(fn, limit = 1) {\n    const queue = pLimit(limit);\n    return Object.assign((...args) => queue(() => fn(...args)), {\n        clear() {\n            queue.clearQueue();\n        }\n    });\n}\n/**\n * Only allows one outstanding call.\n * Returns same promise while task is executing.\n */\nexport function pOne(fn) {\n    const once = pOnce(fn);\n    return async (...args) => {\n        try {\n            return await once(...args);\n        }\n        finally {\n            once.reset();\n        }\n    };\n}\n/**\n * Only allows calling `fn` once.\n * Returns same promise while task is executing.\n */\nexport function pOnce(fn) {\n    let currentCall = { status: 'init' };\n    return Object.assign(async function pOnceWrap(...args) {\n        // capture currentCall so can assign to it, even after reset\n        const thisCall = currentCall;\n        if (thisCall.status === 'pending') {\n            return thisCall.promise;\n        }\n        if (thisCall.status === 'fulfilled') {\n            return thisCall.value;\n        }\n        if (thisCall.status === 'rejected') {\n            throw thisCall.reason;\n        }\n        // status === 'init'\n        currentCall = thisCall;\n        const promise = (async () => {\n            // capture value/error\n            try {\n                const value = await fn(...args);\n                Object.assign(thisCall, {\n                    promise: undefined, // release promise\n                    status: 'fulfilled',\n                    value,\n                });\n                return value;\n            }\n            catch (reason) {\n                Object.assign(thisCall, {\n                    promise: undefined, // release promise\n                    status: 'rejected',\n                    reason,\n                });\n                throw reason;\n            }\n        })();\n        promise.catch(() => { }); // prevent unhandled\n        Object.assign(thisCall, {\n            status: 'pending',\n            promise,\n        });\n        return promise;\n    }, {\n        isStarted() {\n            return currentCall.status !== 'init';\n        },\n        reset() {\n            currentCall = { status: 'init' };\n        }\n    });\n}\n// TODO better type annotations\nexport const withThrottling = (fn, maxInvocationsPerSecond) => {\n    const throttler = pThrottle({\n        limit: maxInvocationsPerSecond,\n        interval: 1000\n    });\n    return throttler(fn);\n};\nexport const tryInSequence = async (fns) => {\n    if (fns.length === 0) {\n        throw new Error('no tasks');\n    }\n    let firstError;\n    for (const fn of fns) {\n        try {\n            const promise = fn();\n            return await promise;\n        }\n        catch (e) {\n            if (firstError === undefined) {\n                firstError = e;\n            }\n        }\n    }\n    throw firstError;\n};\n","export function iteratorFinally(iterable, onFinally) {\n    if (!onFinally) {\n        // noop if no onFinally\n        return (async function* Noop() {\n            yield* iterable;\n        }());\n    }\n    let started = false;\n    let ended = false;\n    let error;\n    let onFinallyTask;\n    // ensure finally only runs once\n    let onFinallyOnce = (err) => {\n        // eslint-disable-next-line promise/no-promise-in-callback\n        onFinallyTask ??= Promise.resolve(onFinally(err)).finally(() => {\n            onFinallyOnce = () => { };\n        });\n        return onFinallyTask;\n    };\n    // wraps return/throw to call onFinally even if generator was never started\n    function handleFinally(originalFn) {\n        return async (...args) => {\n            // * only await onFinally if not started\n            // * call original return/throw *immediately* in either case\n            // Otherwise:\n            // * if started, iterator won't stop until onFinally finishes\n            // * if not started, iterator can still be started before onFinally finishes\n            // This function handles both cases, but note here as a reminder.\n            ended = true;\n            if (started) {\n                return originalFn(...args);\n            }\n            // otherwise iteration can still start if finally function still pending\n            try {\n                return await originalFn(...args);\n            }\n            catch (err) {\n                error ??= err;\n                throw err;\n            }\n            finally {\n                await onFinallyOnce(error);\n            }\n        };\n    }\n    // wrap in generator to track if generator was started\n    const gen = (async function* TrackStarted() {\n        started = true;\n        try {\n            yield* iterable;\n        }\n        catch (err) {\n            error ??= err;\n            throw err;\n        }\n        finally {\n            await onFinallyOnce(error);\n        }\n    }());\n    const it = gen[Symbol.asyncIterator].bind(gen);\n    let g;\n    // copy cancel api across if exists\n    if ('cancel' in iterable) {\n        g = Object.assign(gen, {\n            cancel: (err) => iterable.cancel(err),\n            isCancelled: () => iterable.isCancelled()\n        });\n    }\n    else {\n        g = gen;\n    }\n    // replace generator methods\n    return Object.assign(g, {\n        return: handleFinally(g.return.bind(g)),\n        throw: handleFinally(g.throw.bind(g)),\n        [Symbol.asyncIterator]() {\n            // if ended before started\n            if (ended && !started) {\n                // return a generator that simply runs finally script (once)\n                return (async function* generatorRunFinally() {\n                    try {\n                        // NOTE: native generators do not throw if gen.throw(err) called before started\n                        // so we should do the same here\n                        if ('return' in iterable) {\n                            await iterable.return(undefined); // runs onFinally for nested iterable\n                        }\n                    }\n                    finally {\n                        await onFinallyOnce();\n                    }\n                }());\n            }\n            return it();\n        }\n    });\n}\nexport const nextValue = async (source) => {\n    const item = source.next();\n    return (await item).value;\n};\n","import { pOnce, pLimitFn, pOne } from './promises';\nexport var TRIGGER_TYPE;\n(function (TRIGGER_TYPE) {\n    TRIGGER_TYPE[\"ONCE\"] = \"ONCE\";\n    TRIGGER_TYPE[\"ONE\"] = \"ONE\";\n    TRIGGER_TYPE[\"QUEUE\"] = \"QUEUE\";\n    TRIGGER_TYPE[\"PARALLEL\"] = \"PARALLEL\";\n})(TRIGGER_TYPE || (TRIGGER_TYPE = {}));\n/**\n * Like an event emitter, but for a single event.  Listeners are executed\n * in-order, in an async sequence.  Any errors in listerns errors will be\n * thrown by trigger() as an AggregateError at end.\n *\n * Allows attaching onEvent properties to classes e.g.\n * ```ts\n * class Messages {\n *     onMessage = Signal.create<Message>(this)\n *     async push(msg: Message) {\n *         await this.onMessage.trigger(msg)\n *     }\n * }\n *\n * const msgs = new Messages()\n * msgs.onMessage((msg) => console.log(msg))\n * await msgs.push(new Message())\n * ```\n */\nexport class Signal {\n    static TRIGGER_TYPE = TRIGGER_TYPE;\n    /**\n     *  Create a Signal's listen function with signal utility methods attached.\n     *  See example above.\n     */\n    static create(triggerType = TRIGGER_TYPE.PARALLEL) {\n        return new this(triggerType);\n    }\n    /**\n     * Will only trigger once.  Adding listeners after already fired will fire\n     * listener immediately.  Calling trigger after already triggered is a\n     * noop.\n     */\n    static once() {\n        return this.create(TRIGGER_TYPE.ONCE);\n    }\n    /**\n     * Only one pending trigger call at a time.  Calling trigger again while\n     * listeners are pending will not trigger listeners again, and will resolve\n     * when listeners are resolved.\n     */\n    static one() {\n        return this.create(TRIGGER_TYPE.ONE);\n    }\n    /**\n     * Only one pending trigger call at a time, but calling trigger again while\n     * listeners are pending will enqueue the trigger until after listeners are\n     * resolved.\n     */\n    static queue() {\n        return this.create(TRIGGER_TYPE.QUEUE);\n    }\n    /**\n     * Trigger does not wait for pending trigger calls at all.\n     * Listener functions are still executed in async series,\n     * but multiple triggers can be active in parallel.\n     */\n    static parallel() {\n        return this.create(TRIGGER_TYPE.PARALLEL);\n    }\n    listeners = [];\n    isEnded = false;\n    triggerCountValue = 0;\n    triggerType;\n    constructor(triggerType = TRIGGER_TYPE.PARALLEL) {\n        this.triggerType = triggerType;\n        this.trigger = Function.prototype.bind.call(this.trigger, this);\n        switch (triggerType) {\n            case TRIGGER_TYPE.ONCE: {\n                this.trigger = pOnce(this.trigger);\n                break;\n            }\n            case TRIGGER_TYPE.QUEUE: {\n                this.trigger = pLimitFn(this.trigger);\n                break;\n            }\n            case TRIGGER_TYPE.ONE: {\n                this.trigger = pOne(this.trigger);\n                break;\n            }\n            case TRIGGER_TYPE.PARALLEL: {\n                // no special handling\n                break;\n            }\n            default: {\n                throw new Error(`unknown trigger type: ${triggerType}`);\n            }\n        }\n    }\n    triggerCount() {\n        return this.triggerCountValue;\n    }\n    lastValue;\n    /**\n     * No more events.\n     */\n    end = (...args) => {\n        this.lastValue = args;\n        this.isEnded = true;\n    };\n    /**\n     * Promise that resolves on next trigger.\n     */\n    wait() {\n        return new Promise((resolve) => {\n            this.once((...args) => resolve(args[0]));\n        });\n    }\n    async getLastValue() {\n        if (this.currentTask) {\n            await this.currentTask;\n        }\n        if (!this.lastValue) {\n            throw new Error('Signal ended with no value');\n        }\n        return this.lastValue;\n    }\n    listen(cb) {\n        if (!cb) {\n            return new Promise((resolve) => {\n                this.once((...args) => {\n                    resolve(args[0]);\n                });\n            });\n        }\n        if (this.isEnded) {\n            // wait for any outstanding, ended so can't re-trigger\n            this.getLastValue().then((args) => cb(...args)).catch(() => { });\n            return this;\n        }\n        this.listeners.push(cb);\n        return this;\n    }\n    once(cb) {\n        if (!cb) {\n            return this.listen();\n        }\n        const wrappedListener = Object.assign((...args) => {\n            this.unlisten(cb);\n            return cb(...args);\n        }, {\n            listener: cb\n        });\n        return this.listen(wrappedListener);\n    }\n    countListeners() {\n        return this.listeners.length;\n    }\n    /**\n     * Remove a callback listener from this Signal.\n     */\n    unlisten(cb) {\n        const index = this.listeners.findIndex((listener) => {\n            return listener === cb || ('listener' in listener && listener.listener === cb);\n        });\n        this.listeners.splice(index, 1);\n        return this;\n    }\n    async execTrigger(...args) {\n        if (this.isEnded) {\n            return;\n        }\n        this.triggerCountValue += 1;\n        // capture listeners\n        const tasks = this.listeners.slice();\n        if (this.triggerType === TRIGGER_TYPE.ONCE) {\n            // remove all listeners\n            this.listeners = [];\n            this.end(...args);\n        }\n        if (!tasks.length) {\n            return;\n        }\n        // execute tasks in sequence\n        await tasks.reduce(async (prev, task) => {\n            await prev;\n            await task(...args);\n        }, Promise.resolve());\n    }\n    currentTask;\n    /**\n     * Trigger the signal with optional value, like emitter.emit.\n     */\n    async trigger(...args) {\n        const task = this.execTrigger(...args);\n        this.currentTask = task;\n        try {\n            await this.currentTask;\n        }\n        finally {\n            if (this.currentTask === task) {\n                this.currentTask = undefined;\n            }\n        }\n    }\n    async *[Symbol.asyncIterator]() {\n        while (!this.isEnded) {\n            yield await this.listen();\n        }\n    }\n}\n/**\n * Special Signal for Errors.\n * Trigger this Signal to decide whether to suppress or throw err.\n * Suppress error if listeners don't rethrow\n * Throws on trigger if no listeners.\n * Won't trigger listeners for same Error instance more than once.\n */\nexport class ErrorSignal extends Signal {\n    seenErrors = new WeakSet();\n    ignoredErrors = new WeakSet();\n    minListeners = 1;\n    async execTrigger(...args) {\n        if (this.isEnded) {\n            return;\n        }\n        this.triggerCountValue += 1;\n        // capture listeners\n        const tasks = this.listeners.slice();\n        if (this.triggerType === TRIGGER_TYPE.ONCE) {\n            // remove all listeners\n            this.listeners = [];\n            this.end(...args);\n        }\n        if (!tasks.length) {\n            return;\n        }\n        // execute tasks in sequence\n        await tasks.reduce(async (prev, task) => {\n            // pass previous error to next\n            try {\n                await prev;\n            }\n            catch (err) {\n                // @ts-expect-error type mismatch in err parameter\n                await task(err);\n                return;\n            }\n            await task(...args);\n        }, Promise.resolve());\n    }\n    async trigger(...args) {\n        const err = args[0];\n        // don't double-handle errors\n        if (this.ignoredErrors.has(err)) {\n            return;\n        }\n        if (this.seenErrors.has(err)) {\n            // if we've seen this error, just throw\n            throw err;\n        }\n        this.seenErrors.add(err);\n        const hadMinListeners = !!(this.countListeners() >= this.minListeners);\n        try {\n            await super.trigger(...args);\n            // rethrow if no listeners\n            if (!hadMinListeners) {\n                throw err;\n            }\n            // suppress error\n            this.ignoredErrors.add(err);\n        }\n        catch (nextErr) {\n            // don't double handle if different error thrown\n            // by onError trigger\n            this.seenErrors.add(nextErr);\n            throw nextErr;\n        }\n    }\n}\n","import { instanceId } from './utils';\nimport { pOnce } from './promises';\nimport { iteratorFinally } from './iterators';\nimport * as G from './GeneratorUtils';\nimport { ErrorSignal, Signal } from './Signal';\nimport { StreamrClientError } from '../StreamrClientError';\nclass PipelineDefinition {\n    source;\n    transforms;\n    constructor(source, transforms = []) {\n        this.source = this.setSource(source);\n        this.transforms = transforms;\n    }\n    /**\n     * Append a transformation step to this pipeline.\n     * Changes the pipeline's output type to output type of this generator.\n     */\n    pipe(fn) {\n        this.transforms.push(fn);\n        return this;\n    }\n    clearTransforms() {\n        this.transforms = [];\n    }\n    setSource(source) {\n        const id = 'id' in source ? source.id : instanceId(source, 'Source');\n        this.source = Object.assign(source, {\n            id,\n        });\n        return this.source;\n    }\n    getTransforms() {\n        return this.transforms;\n    }\n}\nexport class Pipeline {\n    source;\n    iterator;\n    isIterating = false;\n    isCleaningUp = false;\n    definition;\n    constructor(source, definition) {\n        this.source = source;\n        this.definition = definition ?? new PipelineDefinition(source);\n        this.cleanup = pOnce(this.cleanup.bind(this));\n        this.iterator = iteratorFinally(this.iterate(), this.cleanup);\n        this.handleError = this.handleError.bind(this);\n    }\n    /**\n     * Append a transformation step to this pipeline.\n     * Changes the pipeline's output type to output type of this generator.\n     */\n    pipe(fn) {\n        if (this.isIterating) {\n            throw new StreamrClientError(`cannot pipe after already iterating: ${this.isIterating}`, 'PIPELINE_ERROR');\n        }\n        this.definition.pipe(fn);\n        // this allows .pipe chaining to be type aware\n        // i.e. new Pipeline(Type1).pipe(Type1 => Type2).pipe(Type2 => Type3)\n        return this;\n    }\n    /**\n     * Triggers once when pipeline ends.\n     * Usage: `pipeline.onFinally(callback)`\n     */\n    onFinally = Signal.once();\n    /**\n     * Triggers once when pipeline is about to end.\n     */\n    onBeforeFinally = Signal.once();\n    onMessage = Signal.create();\n    onError = ErrorSignal.create();\n    filter(fn) {\n        return this.pipe((src) => G.filter(src, fn, this.onError.trigger));\n    }\n    flow() {\n        setImmediate(() => {\n            // consume if not already doing so\n            if (!this.isIterating) {\n                G.consume(this);\n            }\n        });\n        return this;\n    }\n    async cleanup(error) {\n        this.isCleaningUp = true;\n        try {\n            try {\n                if (error) {\n                    await this.onError.trigger(error);\n                }\n            }\n            finally {\n                await this.definition.source.return(undefined);\n            }\n        }\n        finally {\n            await this.onBeforeFinally.trigger();\n            await this.onFinally.trigger(error);\n            this.definition.clearTransforms();\n        }\n    }\n    async handleError(err) {\n        await this.onError.trigger(err);\n    }\n    async *iterate() {\n        this.isIterating = true;\n        if (!this.definition.source) {\n            throw new StreamrClientError('no source', 'PIPELINE_ERROR');\n        }\n        const transforms = this.definition.getTransforms();\n        // each pipeline step creates a generator\n        // which is then passed into the next transform\n        // end result is output of last transform's generator\n        const pipeline = transforms.reduce((prev, transform) => {\n            return transform(prev);\n        }, this.definition.source);\n        try {\n            for await (const msg of pipeline) {\n                await this.onMessage.trigger(msg);\n                yield msg;\n            }\n            this.isCleaningUp = true;\n        }\n        catch (err) {\n            this.isCleaningUp = true;\n            await this.handleError(err);\n        }\n        finally {\n            this.isCleaningUp = true;\n            if (!this.onBeforeFinally.triggerCount) {\n                await this.onBeforeFinally.trigger();\n            }\n        }\n    }\n    // AsyncGenerator implementation\n    async throw(err) {\n        if (this.isCleaningUp) {\n            throw err;\n        }\n        if (!this.onBeforeFinally.triggerCount) {\n            await this.onBeforeFinally.trigger();\n        }\n        // eslint-disable-next-line promise/no-promise-in-callback\n        await this.definition.source.throw(err).catch(() => { });\n        return this.iterator.throw(err);\n    }\n    async return(v) {\n        if (this.isCleaningUp) {\n            return Promise.resolve({ done: true, value: v });\n        }\n        if (!this.onBeforeFinally.triggerCount) {\n            await this.onBeforeFinally.trigger();\n        }\n        await this.definition.source.return(undefined);\n        return this.iterator.return(v);\n    }\n    async next() {\n        return this.iterator.next();\n    }\n    /**\n     * Create a new Pipeline forked from this pipeline.\n     * Pushes results into fork.\n     * Note: Does not start consuming this pipeline.\n     */\n    [Symbol.asyncIterator]() {\n        if (this.isIterating) {\n            throw new StreamrClientError('already iterating', 'PIPELINE_ERROR');\n        }\n        return this;\n    }\n    [Symbol.asyncDispose]() {\n        return this.cleanup();\n    }\n}\n","import { PushBuffer, DEFAULT_BUFFER_SIZE } from './PushBuffer';\nimport { Pipeline } from './Pipeline';\n/**\n * Pipeline that is also a PushBuffer.\n * i.e. can call .push to push data into pipeline and .pipe to transform it.\n */\nexport class PushPipeline extends Pipeline {\n    source;\n    constructor(bufferSize = DEFAULT_BUFFER_SIZE) {\n        const inputBuffer = new PushBuffer(bufferSize);\n        super(inputBuffer);\n        this.source = inputBuffer;\n    }\n    pipe(fn) {\n        // this method override just fixes the output type to be PushPipeline rather than Pipeline\n        super.pipe(fn);\n        return this;\n    }\n    filter(fn) {\n        // this method override just fixes the output type to be PushPipeline rather than Pipeline\n        return super.filter(fn);\n    }\n    // wrapped PushBuffer methods below here\n    async push(item) {\n        return this.source.push(item);\n    }\n    async handleError(err) {\n        try {\n            await this.onError.trigger(err);\n        }\n        catch (error) {\n            if (this.isCleaningUp) {\n                throw error;\n            }\n            await this.push(error);\n        }\n    }\n    end(err) {\n        this.source.end(err);\n    }\n    endWrite(err) {\n        this.source.endWrite(err);\n    }\n    isDone() {\n        return this.source.isDone();\n    }\n    get length() {\n        return this.source.length || 0;\n    }\n    clear() {\n        this.source.clear();\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n/**\n * Client-wide destroy signal.\n */\nimport { Lifecycle, scoped } from 'tsyringe';\nimport { StreamrClientError } from './StreamrClientError';\nimport { Signal } from './utils/Signal';\n/**\n * Listen to onDestroy to fire cleanup code on destroy.\n * Careful not to introduce memleaks.\n * Trigger this to destroy the client.\n */\nlet DestroySignal = class DestroySignal {\n    onDestroy = Signal.once();\n    trigger = this.destroy;\n    abortSignal;\n    constructor() {\n        const controller = new AbortController();\n        this.abortSignal = controller.signal;\n        this.onDestroy.listen(() => {\n            controller.abort();\n        });\n    }\n    destroy() {\n        return this.onDestroy.trigger();\n    }\n    assertNotDestroyed() {\n        if (this.isDestroyed()) {\n            throw new StreamrClientError('Client is destroyed. Create a new instance', 'CLIENT_DESTROYED');\n        }\n    }\n    isDestroyed() {\n        return this.onDestroy.triggerCount() > 0;\n    }\n};\nDestroySignal = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __metadata(\"design:paramtypes\", [])\n], DestroySignal);\nexport { DestroySignal };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { StreamIDUtils, StreamPartIDUtils, toEthereumAddress, toStreamID, toStreamPartID } from '@streamr/utils';\nimport { Lifecycle, inject, scoped } from 'tsyringe';\nimport { Identity, IdentityInjectionToken } from './identity/Identity';\nexport const DEFAULT_PARTITION = 0;\nfunction pickStreamId(definition) {\n    const obj = definition;\n    if (obj.id !== undefined) {\n        return obj.id;\n    }\n    else if (obj.stream !== undefined) {\n        return obj.stream;\n    }\n    else if (obj.streamId !== undefined) {\n        return obj.streamId;\n    }\n    else {\n        throw new Error('streamDefinition: object must have property: \"id\", \"stream\", or \"streamId\"');\n    }\n}\nfunction parseRawDefinition(definition) {\n    if (typeof definition === 'string') {\n        return StreamPartIDUtils.parseRawElements(definition);\n    }\n    else if (typeof definition === 'object') {\n        return [pickStreamId(definition), definition.partition];\n    }\n    else {\n        throw new Error('streamDefinition: must be of type string or object');\n    }\n}\nlet StreamIDBuilder = class StreamIDBuilder {\n    identity;\n    constructor(identity) {\n        this.identity = identity;\n    }\n    async toStreamID(streamIdOrPath) {\n        let address;\n        if (StreamIDUtils.isPathOnlyFormat(streamIdOrPath)) {\n            address = toEthereumAddress(await this.identity.getUserId());\n        }\n        return toStreamID(streamIdOrPath, address);\n    }\n    async toStreamPartID(definition) {\n        const [streamId, streamPartition] = await this.toStreamPartElements(definition);\n        return toStreamPartID(streamId, streamPartition ?? DEFAULT_PARTITION);\n    }\n    async toStreamPartElements(definition) {\n        const [streamId, streamPartition] = parseRawDefinition(definition);\n        return [await this.toStreamID(streamId), streamPartition];\n    }\n    async getMatcher(definition) {\n        const [targetStreamId, targetPartition] = await this.toStreamPartElements(definition);\n        return ((streamPartId) => {\n            return targetStreamId === StreamPartIDUtils.getStreamID(streamPartId)\n                && (targetPartition === undefined || targetPartition === StreamPartIDUtils.getStreamPartition(streamPartId));\n        });\n    }\n};\nStreamIDBuilder = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(0, inject(IdentityInjectionToken)),\n    __metadata(\"design:paramtypes\", [Identity])\n], StreamIDBuilder);\nexport { StreamIDBuilder };\n","import { DEFAULT_PARTITION_COUNT, ensureValidStreamPartitionCount } from '@streamr/utils';\nimport { StreamrClientError } from './StreamrClientError';\nexport const parseMetadata = (metadata) => {\n    try {\n        return JSON.parse(metadata);\n    }\n    catch (_ignored) {\n        return {};\n    }\n};\nexport const getPartitionCount = (metadata) => {\n    const metadataValue = metadata.partitions;\n    if (metadataValue !== undefined) {\n        try {\n            ensureValidStreamPartitionCount(metadataValue);\n        }\n        catch {\n            throw new StreamrClientError(`Invalid partition count: ${metadataValue}`, 'INVALID_STREAM_METADATA');\n        }\n    }\n    return metadataValue ?? DEFAULT_PARTITION_COUNT;\n};\n","import { toUserId } from '@streamr/utils';\nimport { MaxUint256 } from 'ethers';\nexport var StreamPermission;\n(function (StreamPermission) {\n    StreamPermission[\"EDIT\"] = \"edit\";\n    StreamPermission[\"DELETE\"] = \"delete\";\n    StreamPermission[\"PUBLISH\"] = \"publish\";\n    StreamPermission[\"SUBSCRIBE\"] = \"subscribe\";\n    StreamPermission[\"GRANT\"] = \"grant\";\n})(StreamPermission || (StreamPermission = {}));\nexport const PUBLIC_PERMISSION_USER_ID = '0x0000000000000000000000000000000000000000';\nexport const isPublicPermissionQuery = (query) => {\n    return query.public === true;\n};\nexport const toInternalPermissionQuery = async (query, streamIdBuilder) => {\n    const typedBaseQuery = {\n        ...query,\n        streamId: await streamIdBuilder.toStreamID(query.streamId)\n    };\n    return ('userId' in typedBaseQuery)\n        ? { ...typedBaseQuery, userId: toUserId(typedBaseQuery.userId) }\n        : typedBaseQuery;\n};\nexport const isPublicPermissionAssignment = (assignment) => {\n    return assignment.public === true;\n};\nexport const toInternalPermissionAssignment = (assignment) => {\n    return ('userId' in assignment)\n        ? { ...assignment, userId: toUserId(assignment.userId) }\n        : assignment;\n};\nexport const streamPermissionToSolidityType = (permission) => {\n    switch (permission) {\n        case StreamPermission.EDIT:\n            return 0n;\n        case StreamPermission.DELETE:\n            return 1n;\n        case StreamPermission.PUBLISH:\n            return 2n;\n        case StreamPermission.SUBSCRIBE:\n            return 3n;\n        case StreamPermission.GRANT:\n            return 4n;\n        default:\n            break;\n    }\n    return 0n;\n};\nexport const convertChainPermissionsToStreamPermissions = (chainPermissions) => {\n    const now = Math.round(Date.now() / 1000);\n    const permissions = [];\n    if (chainPermissions.canEdit) {\n        permissions.push(StreamPermission.EDIT);\n    }\n    if (chainPermissions.canDelete) {\n        permissions.push(StreamPermission.DELETE);\n    }\n    if (chainPermissions.publishExpiration > now) {\n        permissions.push(StreamPermission.PUBLISH);\n    }\n    if (chainPermissions.subscribeExpiration > now) {\n        permissions.push(StreamPermission.SUBSCRIBE);\n    }\n    if (chainPermissions.canGrant) {\n        permissions.push(StreamPermission.GRANT);\n    }\n    return permissions;\n};\nexport const convertStreamPermissionsToChainPermission = (permissions) => {\n    return {\n        canEdit: permissions.includes(StreamPermission.EDIT),\n        canDelete: permissions.includes(StreamPermission.DELETE),\n        publishExpiration: permissions.includes(StreamPermission.PUBLISH) ? MaxUint256 : 0n,\n        subscribeExpiration: permissions.includes(StreamPermission.SUBSCRIBE) ? MaxUint256 : 0n,\n        canGrant: permissions.includes(StreamPermission.GRANT)\n    };\n};\n","import { LRUCache } from 'lru-cache';\nimport { formLookupKey } from './utils';\n/*\n * A map that lazily creates values. The factory function is called only when a key\n * is accessed for the first time. Subsequent calls to `get()` return the cached value\n * unless it has been evicted due to `maxSize` or `maxAge` limits.\n *\n * It is possible to implement e.g. positive cache by using `isCacheableValue()`\n * config option. If that method returns `false`, the value is not stored to cache.\n * Note that using this option doesn't change the concurrent promise handling:\n * also in this case all concurrent `get()` calls are grouped so that only one\n * call to `valueFactory` is made. (If we wouldn't group these calls, all concurrent\n * `get()` calls were cache misses, i.e. affecting significantly cases where the\n * `isCacheableValue()` returns `true`.)\n */\nexport class Mapping {\n    delegate;\n    pendingPromises = new Map();\n    opts;\n    /**\n     * Prefer constructing the class via createCacheMap() and createLazyMap()\n     *\n     * @internal\n     **/\n    constructor(opts) {\n        if ('maxSize' in opts) {\n            this.delegate = new LRUCache({\n                maxSize: opts.maxSize,\n                sizeCalculation: () => 1,\n                ttl: opts.maxAge\n            });\n        }\n        else {\n            this.delegate = new Map();\n        }\n        this.opts = {\n            isCacheableValue: () => true,\n            ...opts\n        };\n    }\n    async get(key) {\n        const lookupKey = formLookupKey(key);\n        const pendingPromise = this.pendingPromises.get(lookupKey);\n        if (pendingPromise !== undefined) {\n            return await pendingPromise;\n        }\n        else {\n            let item = this.delegate.get(lookupKey);\n            if (item === undefined) {\n                const promise = this.opts.valueFactory(key);\n                this.pendingPromises.set(lookupKey, promise);\n                let value;\n                try {\n                    value = await promise;\n                }\n                finally {\n                    this.pendingPromises.delete(lookupKey);\n                }\n                item = { key, value };\n                if (this.opts.isCacheableValue(value)) {\n                    this.delegate.set(lookupKey, item);\n                }\n            }\n            return item.value;\n        }\n    }\n    set(key, value) {\n        this.delegate.set(formLookupKey(key), { key, value });\n    }\n    invalidate(predicate) {\n        for (const [lookupKey, item] of this.delegate.entries()) {\n            if (predicate(item.key)) {\n                this.delegate.delete(lookupKey);\n            }\n        }\n    }\n    *values() {\n        for (const item of this.delegate.values()) {\n            yield item.value;\n        }\n    }\n}\nexport const createCacheMap = (opts) => {\n    return new Mapping(opts);\n};\nexport const createLazyMap = (opts) => {\n    return new Mapping(opts);\n};\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Logger, randomString, scheduleAtInterval, toEthereumAddress, wait } from '@streamr/utils';\nimport { Interface } from 'ethers';\nimport remove from 'lodash/remove';\nimport sample from 'lodash/sample';\nimport uniq from 'lodash/uniq';\nimport { inject, Lifecycle, scoped } from 'tsyringe';\nimport { ConfigInjectionToken } from '../ConfigTypes';\nimport { RpcProviderSource } from '../RpcProviderSource';\nconst BLOCK_NUMBER_QUERY_RETRY_DELAY = 1000;\nexport const POLLS_SINCE_LAST_FROM_BLOCK_UPDATE_THRESHOLD = 30;\nlet ChainEventPoller = class ChainEventPoller {\n    listeners = [];\n    providers;\n    pollInterval;\n    abortController;\n    constructor(rpcProviderSource, config) {\n        this.providers = rpcProviderSource.getSubProviders();\n        this.pollInterval = config.contracts.pollInterval;\n    }\n    on(definition) {\n        const started = this.listeners.length > 0;\n        this.listeners.push(definition);\n        if (!started) {\n            this.start();\n        }\n    }\n    off(definition) {\n        const started = this.listeners.length > 0;\n        remove(this.listeners, (l) => {\n            return (l.contractAddress === definition.contractAddress)\n                && (l.contractInterfaceFragment.topicHash === definition.contractInterfaceFragment.topicHash)\n                && (l.onEvent == definition.onEvent);\n        });\n        if (started && this.listeners.length === 0) {\n            this.abortController.abort();\n        }\n    }\n    start() {\n        const abortController = new AbortController();\n        this.abortController = abortController;\n        setImmediate(async () => {\n            const logger = new Logger('ChainEventPoller', { sessionId: randomString(6) });\n            logger.debug('Start polling', { pollInterval: this.pollInterval });\n            let fromBlock = undefined;\n            do {\n                try {\n                    fromBlock = await sample(this.providers).getBlockNumber();\n                }\n                catch (err) {\n                    logger.debug('Failed to query block number', { err });\n                    await wait(BLOCK_NUMBER_QUERY_RETRY_DELAY); // TODO: pass signal?\n                }\n            } while (fromBlock === undefined);\n            let pollsSinceFromBlockUpdate = 0;\n            await scheduleAtInterval(async () => {\n                const provider = sample(this.providers);\n                const eventNames = this.listeners.map((l) => l.contractInterfaceFragment.name);\n                let newFromBlock = 0;\n                let events = undefined;\n                try {\n                    // If we haven't updated `fromBlock` for a while, fetch the latest block number explicitly. If\n                    // `fromBlock` falls too much behind the current block number, the RPCs may start rejecting our\n                    // eth_getLogs requests (presumably for performance reasons).\n                    if (pollsSinceFromBlockUpdate >= POLLS_SINCE_LAST_FROM_BLOCK_UPDATE_THRESHOLD) {\n                        newFromBlock = await provider.getBlockNumber() + 1;\n                        logger.debug('Fetch next block number explicitly', { newFromBlock });\n                        if (abortController.signal.aborted) {\n                            return;\n                        }\n                    }\n                    logger.debug('Polling', { fromBlock, eventNames });\n                    // This creates a filter with the following criteria: \n                    // - logs must originate from any of the specified addresses: [address1, address2] (OR condition)\n                    // - logs must match any of the specified topics: [[topic1, topic2, topic3]] (OR condition for topic[0])\n                    // - logs must be within the specified fromBlock range\n                    //\n                    // In the topics filter:\n                    // - the inner array ([topic1, topic2, topic3]) applies an OR condition, meaning the log’s first topic can be any of these\n                    // - the outer array ([[topic1, topic2, topic3]]) applies an AND condition across topic positions (i.e. only one AND expression)\n                    //   See: https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter\n                    //\n                    // Ideally, we would specify exact address-topic pairs, such as:\n                    //   (addr=111 AND topic=222) OR (addr=333 AND topic=444)\n                    // However, Ethereum's API does not support this level of filtering.\n                    //\n                    // As a result, this filter may return additional logs beyond the intended matches. \n                    // For example, if we want:\n                    //   - Topic T1 from addresses A1 and A2\n                    //   - Topic T2 from address A3\n                    // We might also receive:\n                    //   - T2 from A1 or A2\n                    //   - T1 from A3\n                    // These extra events are safely ignored, as the event propagation logic (see line 148) ensures that\n                    // only relevant listeners process them.\n                    const filter = {\n                        address: uniq(this.listeners.map((l) => l.contractAddress)),\n                        topics: [uniq(this.listeners.map((l) => l.contractInterfaceFragment.topicHash))],\n                        fromBlock\n                    };\n                    const logItems = await provider.getLogs(filter);\n                    events = [];\n                    for (const logItem of logItems) {\n                        const definition = this.listeners.find((l) => {\n                            return (l.contractAddress === toEthereumAddress(logItem.address))\n                                && (l.contractInterfaceFragment.topicHash === logItem.topics[0]);\n                        });\n                        if (definition !== undefined) {\n                            const contractInterface = new Interface([definition.contractInterfaceFragment.format('minimal')]);\n                            const args = contractInterface.decodeEventLog(definition.contractInterfaceFragment.name, logItem.data, logItem.topics);\n                            events.push({\n                                contractAddress: definition.contractAddress,\n                                name: definition.contractInterfaceFragment.name,\n                                args,\n                                blockNumber: logItem.blockNumber\n                            });\n                        }\n                    }\n                    logger.debug('Polled', { fromBlock, events: events.length });\n                }\n                catch (err) {\n                    logger.debug('Failed to poll', { reason: err?.reason, eventNames, fromBlock });\n                }\n                if (abortController.signal.aborted) {\n                    return;\n                }\n                if (events !== undefined && events.length > 0) {\n                    for (const event of events) {\n                        const listeners = this.listeners.filter((l) => (l.contractAddress === event.contractAddress) && (l.contractInterfaceFragment.name === event.name));\n                        for (const listener of listeners) {\n                            listener.onEvent(event.args, event.blockNumber);\n                        }\n                    }\n                    newFromBlock = Math.max(...events.map((e) => e.blockNumber)) + 1;\n                }\n                // note: do not update fromBlock if polling events failed\n                if (events !== undefined && newFromBlock > fromBlock) {\n                    logger.debug('Forward fromBlock', { before: fromBlock, after: newFromBlock });\n                    fromBlock = newFromBlock;\n                    // eslint-disable-next-line require-atomic-updates\n                    pollsSinceFromBlockUpdate = 0;\n                }\n                else {\n                    pollsSinceFromBlockUpdate += 1;\n                }\n            }, this.pollInterval, true, abortController.signal);\n        });\n    }\n};\nChainEventPoller = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(1, inject(ConfigInjectionToken)),\n    __metadata(\"design:paramtypes\", [RpcProviderSource, Object])\n], ChainEventPoller);\nexport { ChainEventPoller };\n","import { toUserId } from '@streamr/utils';\nimport { PUBLIC_PERMISSION_USER_ID, StreamPermission } from '../permission';\nexport const toInternalSearchStreamsPermissionFilter = (filter) => {\n    return {\n        ...filter,\n        userId: toUserId(filter.userId)\n    };\n};\nexport async function* searchStreams(term, permissionFilter, theGraphClient) {\n    yield* theGraphClient.queryEntities((lastId, pageSize) => buildQuery(term, permissionFilter, lastId, pageSize));\n}\nconst escapeStringValue = (s) => s.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"'); // escape backslashes and double quotes\nconst wrapWithQuotes = (s) => `\"${s}\"`;\nconst wrapSubExpression = (s) => `{ ${s} }`;\nconst createPermissionFilterExpression = (permissions, operator, nowTimestampInSeconds) => {\n    const subExpressions = [];\n    if (permissions.includes(StreamPermission.EDIT)) {\n        subExpressions.push('canEdit: true');\n    }\n    if (permissions.includes(StreamPermission.DELETE)) {\n        subExpressions.push('canDelete: true');\n    }\n    if (permissions.includes(StreamPermission.PUBLISH)) {\n        subExpressions.push(`publishExpiration_gt: \"${nowTimestampInSeconds}\"`);\n    }\n    if (permissions.includes(StreamPermission.SUBSCRIBE)) {\n        subExpressions.push(`subscribeExpiration_gt: \"${nowTimestampInSeconds}\"`);\n    }\n    if (permissions.includes(StreamPermission.GRANT)) {\n        subExpressions.push('canGrant: true');\n    }\n    return `${operator}: [${subExpressions.map(wrapSubExpression).join(', ')}]`;\n};\nconst buildQuery = (term, permissionFilter, lastId, pageSize) => {\n    const whereExpressions = [];\n    whereExpressions.push(`id_gt: \"${escapeStringValue(lastId)}\"`);\n    if (term !== undefined) {\n        whereExpressions.push(`idAsString_contains: \"${escapeStringValue(term)}\"`);\n    }\n    if (permissionFilter !== undefined) {\n        const permissionExpressions = [];\n        const userId = [permissionFilter.userId];\n        if (permissionFilter.allowPublic) {\n            userId.push(PUBLIC_PERMISSION_USER_ID);\n        }\n        permissionExpressions.push(`userId_in: [${userId.map(wrapWithQuotes).join(',')}]`);\n        const nowTimestampInSeconds = Math.round(Date.now() / 1000);\n        if (permissionFilter.allOf !== undefined) {\n            permissionExpressions.push(createPermissionFilterExpression(permissionFilter.allOf, 'and', nowTimestampInSeconds));\n        }\n        /*\n         * There are situations where the The Graph may contain empty assignments (all boolean flags false,\n         * and all expirations in the past). E.g.:\n         * - if we granted some permissions to a user, but then removed all those permissions\n         * - if we granted an expirable permission (subscribe or publish), and it has now expired\n         * We don't want to return empty assignments to the user, because from user's perspective those are\n         * non-existing assignments. That's why we apply this extra virtual anyOf filter if none of the user-given\n         * permission filters limit the result set in any way.\n         */\n        const anyOfFilter = permissionFilter.anyOf\n            ?? (((permissionFilter.allOf === undefined) || (permissionFilter.allOf.length === 0))\n                ? Object.values(StreamPermission)\n                : undefined);\n        if (anyOfFilter !== undefined) {\n            permissionExpressions.push(createPermissionFilterExpression(anyOfFilter, 'or', nowTimestampInSeconds));\n        }\n        whereExpressions.push(`permissions_: { and: [${permissionExpressions.map(wrapSubExpression).join(', ')}] }`);\n    }\n    const query = `\n        query {\n            streams (\n                first: ${pageSize}\n                orderBy: \"id\"\n                where: {\n                    ${whereExpressions.join(', ')}\n                }\n            ) {\n                id\n                metadata\n            }\n        }`;\n    return { query };\n};\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar StreamRegistry_1;\nimport { StreamRegistryABI } from '@streamr/network-contracts';\nimport { StreamIDUtils, TheGraphClient, collect, isENSName, isEthereumAddressUserId, toEthereumAddress, toStreamID, toUserId, until } from '@streamr/utils';\nimport { Interface } from 'ethers';\nimport intersection from 'lodash/intersection';\nimport { Lifecycle, inject, scoped } from 'tsyringe';\nimport { Identity, IdentityInjectionToken } from '../identity/Identity';\nimport { ConfigInjectionToken } from '../ConfigTypes';\nimport { RpcProviderSource } from '../RpcProviderSource';\nimport { StreamIDBuilder } from '../StreamIDBuilder';\nimport { parseMetadata } from '../StreamMetadata';\nimport { StreamrClientError } from '../StreamrClientError';\nimport { getEthersOverrides } from '../ethereumUtils';\nimport { StreamrClientEventEmitter } from '../events';\nimport { PUBLIC_PERMISSION_USER_ID, StreamPermission, convertChainPermissionsToStreamPermissions, convertStreamPermissionsToChainPermission, isPublicPermissionAssignment, isPublicPermissionQuery, streamPermissionToSolidityType } from '../permission';\nimport { filter, map } from '../utils/GeneratorUtils';\nimport { LoggerFactory } from '../utils/LoggerFactory';\nimport { createCacheMap } from '../utils/Mapping';\nimport { ChainEventPoller } from './ChainEventPoller';\nimport { ContractFactory } from './ContractFactory';\nimport { initContractEventGateway, waitForTx } from './contract';\nimport { searchStreams as _searchStreams } from './searchStreams';\nconst validatePermissionAssignments = (assignments) => {\n    for (const assignment of assignments) {\n        // In the StreamRegistry v5 contract, these permissions can only be assigned to users\n        // who have EthereumAddress as their userId. Also public permission is not allowed\n        // for these users.\n        const ADMIN_PERMISSION_TYPES = [StreamPermission.EDIT, StreamPermission.DELETE, StreamPermission.GRANT];\n        const adminPermissions = intersection(assignment.permissions, ADMIN_PERMISSION_TYPES);\n        if (adminPermissions.length > 0) {\n            const createError = (prefix) => {\n                return new StreamrClientError(`${prefix} is not supported for permission types: ${adminPermissions.map((p) => p.toUpperCase()).join(', ')}`, 'UNSUPPORTED_OPERATION');\n            };\n            if (isPublicPermissionAssignment(assignment)) {\n                throw createError('Public permission');\n            }\n            else if (!isEthereumAddressUserId(assignment.userId)) {\n                throw createError('Non-Ethereum user id');\n            }\n        }\n    }\n};\nconst streamContractErrorProcessor = (err, streamId, registry) => {\n    if (err.reason?.code === 'CALL_EXCEPTION') {\n        throw new StreamrClientError('Stream not found: id=' + streamId, 'STREAM_NOT_FOUND');\n    }\n    else {\n        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n        throw new Error(`Could not reach the ${registry} Smart Contract: ${err.message}`);\n    }\n};\nconst invalidateCache = (cache, streamId) => {\n    cache.invalidate((key) => {\n        const cachedStreamId = Array.isArray(key) ? key[0] : key;\n        return cachedStreamId === streamId;\n    });\n};\nlet StreamRegistry = StreamRegistry_1 = class StreamRegistry {\n    streamRegistryContract;\n    streamRegistryContractReadonly;\n    contractFactory;\n    rpcProviderSource;\n    theGraphClient;\n    streamIdBuilder;\n    /** @internal */\n    config;\n    identity;\n    logger;\n    metadataCache;\n    publisherCache;\n    subscriberCache;\n    publicSubscribePermissionCache;\n    /** @internal */\n    constructor(contractFactory, rpcProviderSource, chainEventPoller, theGraphClient, streamIdBuilder, config, identity, eventEmitter, loggerFactory) {\n        this.contractFactory = contractFactory;\n        this.rpcProviderSource = rpcProviderSource;\n        this.theGraphClient = theGraphClient;\n        this.streamIdBuilder = streamIdBuilder;\n        this.config = config;\n        this.identity = identity;\n        this.logger = loggerFactory.createLogger('StreamRegistry');\n        this.streamRegistryContractReadonly = this.contractFactory.createReadContract(toEthereumAddress(this.config.contracts.streamRegistryChainAddress), StreamRegistryABI, this.rpcProviderSource.getProvider(), 'streamRegistry');\n        initContractEventGateway({\n            sourceDefinition: {\n                contractInterfaceFragment: new Interface(StreamRegistryABI).getEvent('StreamCreated'),\n                contractAddress: toEthereumAddress(this.config.contracts.streamRegistryChainAddress)\n            },\n            sourceEmitter: chainEventPoller,\n            targetName: 'streamCreated',\n            targetEmitter: eventEmitter,\n            transformation: ([streamId, metadata], blockNumber) => ({\n                streamId: toStreamID(streamId),\n                metadata: parseMetadata(metadata),\n                blockNumber\n            }),\n            loggerFactory\n        });\n        this.metadataCache = createCacheMap({\n            valueFactory: (streamId) => {\n                return this.getStreamMetadata_nonCached(streamId);\n            },\n            ...config.cache\n        });\n        this.publisherCache = createCacheMap({\n            valueFactory: ([streamId, userId]) => {\n                return this.isStreamPublisherOrSubscriber_nonCached(streamId, userId, StreamPermission.PUBLISH);\n            },\n            ...config.cache\n        });\n        this.subscriberCache = createCacheMap({\n            valueFactory: ([streamId, userId]) => {\n                return this.isStreamPublisherOrSubscriber_nonCached(streamId, userId, StreamPermission.SUBSCRIBE);\n            },\n            ...config.cache\n        });\n        this.publicSubscribePermissionCache = createCacheMap({\n            valueFactory: (streamId) => {\n                return this.hasPermission({\n                    streamId,\n                    public: true,\n                    permission: StreamPermission.SUBSCRIBE\n                });\n            },\n            ...config.cache\n        });\n    }\n    async connectToContract() {\n        if (this.streamRegistryContract === undefined) {\n            const chainSigner = await this.identity.getTransactionSigner(this.rpcProviderSource);\n            this.streamRegistryContract = this.contractFactory.createWriteContract(toEthereumAddress(this.config.contracts.streamRegistryChainAddress), StreamRegistryABI, chainSigner, 'streamRegistry');\n        }\n    }\n    async createStream(streamId, metadata) {\n        const ethersOverrides = await getEthersOverrides(this.rpcProviderSource, this.config);\n        const domainAndPath = StreamIDUtils.getDomainAndPath(streamId);\n        if (domainAndPath === undefined) {\n            throw new Error(`stream id \"${streamId}\" not valid`);\n        }\n        const [domain, path] = domainAndPath;\n        await this.connectToContract();\n        if (isENSName(domain)) {\n            /*\n                The call to createStreamWithENS delegates the ENS ownership check, and therefore the\n                call doesn't fail e.g. if the user doesn't own the ENS name. To see whether the stream\n                creation succeeeds, we need to poll the chain for stream existence. If the polling timeouts, we don't\n                know what the actual error was. (Most likely it has nothing to do with timeout\n                -> we don't use the error from until(), but throw an explicit error instead.)\n            */\n            await waitForTx(this.streamRegistryContract.createStreamWithENS(domain, path, JSON.stringify(metadata), ethersOverrides));\n            try {\n                await until(async () => this.streamExistsOnChain(streamId), \n                // eslint-disable-next-line no-underscore-dangle\n                this.config._timeouts.ensStreamCreation.timeout, \n                // eslint-disable-next-line no-underscore-dangle\n                this.config._timeouts.ensStreamCreation.retryInterval);\n            }\n            catch {\n                throw new Error(`unable to create stream \"${streamId}\"`);\n            }\n        }\n        else {\n            await this.ensureStreamIdInNamespaceOfAuthenticatedUser(domain, streamId);\n            await waitForTx(this.streamRegistryContract.createStream(path, JSON.stringify(metadata), ethersOverrides));\n        }\n        this.populateMetadataCache(streamId, metadata);\n    }\n    async ensureStreamIdInNamespaceOfAuthenticatedUser(address, streamId) {\n        const userAddress = toEthereumAddress(await this.identity.getUserId());\n        if (address !== userAddress) {\n            throw new Error(`stream id \"${streamId}\" not in namespace of authenticated user \"${userAddress}\"`);\n        }\n    }\n    async setStreamMetadata(streamId, metadata) {\n        await this.connectToContract();\n        const ethersOverrides = await getEthersOverrides(this.rpcProviderSource, this.config);\n        await waitForTx(this.streamRegistryContract.updateStreamMetadata(streamId, JSON.stringify(metadata), ethersOverrides));\n        this.populateMetadataCache(streamId, metadata);\n    }\n    async deleteStream(streamIdOrPath) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        await this.connectToContract();\n        const ethersOverrides = await getEthersOverrides(this.rpcProviderSource, this.config);\n        await waitForTx(this.streamRegistryContract.deleteStream(streamId, ethersOverrides));\n        invalidateCache(this.metadataCache, streamId);\n        this.invalidatePermissionCaches(streamId);\n    }\n    async streamExistsOnChain(streamIdOrPath) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        this.logger.debug('Check if stream exists on chain', { streamId });\n        return this.streamRegistryContractReadonly.exists(streamId);\n    }\n    async getStreamMetadata_nonCached(streamId) {\n        let metadata;\n        try {\n            metadata = await this.streamRegistryContractReadonly.getStreamMetadata(streamId);\n        }\n        catch (err) {\n            return streamContractErrorProcessor(err, streamId, 'StreamRegistry');\n        }\n        return parseMetadata(metadata);\n    }\n    async *searchStreams(term, permissionFilter) {\n        const queryResult = _searchStreams(term, permissionFilter, this.theGraphClient);\n        for await (const item of queryResult) {\n            const id = toStreamID(item.id);\n            this.populateMetadataCache(id, parseMetadata(item.metadata));\n            yield id;\n        }\n    }\n    getStreamPublishers(streamIdOrPath) {\n        return this.getStreamPublishersOrSubscribersList(streamIdOrPath, 'publishExpiration');\n    }\n    getStreamSubscribers(streamIdOrPath) {\n        return this.getStreamPublishersOrSubscribersList(streamIdOrPath, 'subscribeExpiration');\n    }\n    async *getStreamPublishersOrSubscribersList(streamIdOrPath, fieldName) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        const backendResults = this.theGraphClient.queryEntities((lastId, pageSize) => StreamRegistry_1.buildStreamPublishersOrSubscribersQuery(streamId, fieldName, lastId, pageSize));\n        /*\n         * There can be orphaned permission entities if a stream is deleted (currently\n         * we don't remove the assigned permissions, see ETH-222)\n         * TODO remove the filtering when ETH-222 has been implemented, and remove also\n         * stream result field in buildStreamPublishersOrSubscribersQuery as it is\n         * no longer needed\n         */\n        const validItems = filter(backendResults, (p) => p.stream !== null);\n        yield* map(validItems, (item) => toUserId(item.userId));\n    }\n    static buildStreamPublishersOrSubscribersQuery(streamId, fieldName, lastId, pageSize) {\n        const query = `\n        {\n            streamPermissions (\n                first: ${pageSize}\n                orderBy: \"id\"\n                where: {\n                    id_gt: \"${lastId}\"\n                    stream: \"${streamId}\"\n                    ${fieldName}_gt: \"${Math.round(Date.now() / 1000)}\"\n                }\n            ) {\n                id\n                userId\n                stream {\n                    id\n                }\n            }\n        }`;\n        return { query };\n    }\n    // --------------------------------------------------------------------------------------------\n    // Permissions\n    // --------------------------------------------------------------------------------------------\n    async hasPermission(query) {\n        if (isPublicPermissionQuery(query)) {\n            const permissionType = streamPermissionToSolidityType(query.permission);\n            return this.streamRegistryContractReadonly.hasPublicPermission(query.streamId, permissionType);\n        }\n        else {\n            const chainPermissions = query.allowPublic\n                ? await this.streamRegistryContractReadonly.getPermissionsForUserId(query.streamId, query.userId)\n                : await this.streamRegistryContractReadonly.getDirectPermissionsForUserId(query.streamId, query.userId);\n            const permissions = convertChainPermissionsToStreamPermissions(chainPermissions);\n            return permissions.includes(query.permission);\n        }\n    }\n    async getPermissions(streamIdOrPath) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        const queryResults = await collect(this.theGraphClient.queryEntities((lastId, pageSize) => {\n            const query = `{\n                    stream (id: \"${streamId}\") {\n                        id\n                        metadata\n                        permissions(first: ${pageSize} orderBy: \"id\" where: { id_gt: \"${lastId}\"}) {\n                            id\n                            userId\n                            canEdit\n                            canDelete\n                            publishExpiration\n                            subscribeExpiration\n                            canGrant\n                        }\n                    }\n                }`;\n            return { query };\n        }, (response) => {\n            if (response.stream !== null) {\n                return response.stream.permissions;\n            }\n            else {\n                throw new StreamrClientError('Stream not found: id=' + streamId, 'STREAM_NOT_FOUND');\n            }\n        }));\n        const assignments = [];\n        queryResults.forEach((permissionResult) => {\n            const permissions = convertChainPermissionsToStreamPermissions(permissionResult);\n            /*\n            * There can be query results, which don't contain any permissions. That happens if a\n            * user revokes all permissions from a stream. Currently we don't remove these empty assignments\n            * from The Graph index. TODO remove the \"permission.length > 0\" if/when we implement the\n            * empty assignments cleanup in The Graph.\n            */\n            if (permissions.length > 0) {\n                if (permissionResult.userId === PUBLIC_PERMISSION_USER_ID) {\n                    assignments.push({\n                        public: true,\n                        permissions\n                    });\n                }\n                else {\n                    assignments.push({\n                        userId: toUserId(permissionResult.userId),\n                        permissions\n                    });\n                }\n            }\n        });\n        return assignments;\n    }\n    async grantPermissions(streamIdOrPath, ...assignments) {\n        validatePermissionAssignments(assignments);\n        const overrides = await getEthersOverrides(this.rpcProviderSource, this.config);\n        return this.updatePermissions(streamIdOrPath, (streamId, userId, solidityType) => {\n            return (userId === undefined)\n                ? this.streamRegistryContract.grantPublicPermission(streamId, solidityType, overrides)\n                : this.streamRegistryContract.grantPermissionForUserId(streamId, userId, solidityType, overrides);\n        }, ...assignments);\n    }\n    async revokePermissions(streamIdOrPath, ...assignments) {\n        validatePermissionAssignments(assignments);\n        const overrides = await getEthersOverrides(this.rpcProviderSource, this.config);\n        return this.updatePermissions(streamIdOrPath, (streamId, userId, solidityType) => {\n            return (userId === undefined)\n                ? this.streamRegistryContract.revokePublicPermission(streamId, solidityType, overrides)\n                : this.streamRegistryContract.revokePermissionForUserId(streamId, userId, solidityType, overrides);\n        }, ...assignments);\n    }\n    async updatePermissions(streamIdOrPath, createTransaction, ...assignments) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        this.invalidatePermissionCaches(streamId);\n        await this.connectToContract();\n        for (const assignment of assignments) {\n            for (const permission of assignment.permissions) {\n                const solidityType = streamPermissionToSolidityType(permission);\n                const userId = isPublicPermissionAssignment(assignment) ? undefined : assignment.userId;\n                const txToSubmit = createTransaction(streamId, userId, solidityType);\n                await waitForTx(txToSubmit);\n            }\n        }\n    }\n    async setPermissions(...items) {\n        const streamIds = [];\n        const targets = [];\n        const chainPermissions = [];\n        for (const item of items) {\n            validatePermissionAssignments(item.assignments);\n            const streamId = await this.streamIdBuilder.toStreamID(item.streamId);\n            this.invalidatePermissionCaches(streamId);\n            streamIds.push(streamId);\n            targets.push(item.assignments.map((assignment) => {\n                return isPublicPermissionAssignment(assignment) ? PUBLIC_PERMISSION_USER_ID : assignment.userId;\n            }));\n            chainPermissions.push(item.assignments.map((assignment) => {\n                return convertStreamPermissionsToChainPermission(assignment.permissions);\n            }));\n        }\n        await this.connectToContract();\n        const ethersOverrides = await getEthersOverrides(this.rpcProviderSource, this.config);\n        const txToSubmit = this.streamRegistryContract.setMultipleStreamPermissionsForUserIds(streamIds, targets, chainPermissions, ethersOverrides);\n        await waitForTx(txToSubmit);\n    }\n    async isStreamPublisherOrSubscriber_nonCached(streamId, userId, permission) {\n        try {\n            return await this.hasPermission({ streamId, userId, permission, allowPublic: true });\n        }\n        catch (err) {\n            return streamContractErrorProcessor(err, streamId, 'StreamPermission');\n        }\n    }\n    // --------------------------------------------------------------------------------------------\n    // Caching\n    // --------------------------------------------------------------------------------------------\n    getStreamMetadata(streamId) {\n        return this.metadataCache.get(streamId);\n    }\n    isStreamPublisher(streamId, userId) {\n        return this.publisherCache.get([streamId, userId]);\n    }\n    isStreamSubscriber(streamId, userId) {\n        return this.subscriberCache.get([streamId, userId]);\n    }\n    hasPublicSubscribePermission(streamId) {\n        return this.publicSubscribePermissionCache.get(streamId);\n    }\n    populateMetadataCache(streamId, metadata) {\n        this.metadataCache.set(streamId, metadata);\n    }\n    invalidatePermissionCaches(streamId) {\n        this.logger.trace('Clear permission caches for stream', { streamId });\n        invalidateCache(this.publisherCache, streamId);\n        invalidateCache(this.subscriberCache, streamId);\n        // TODO should also clear cache for hasPublicSubscribePermission?\n    }\n};\nStreamRegistry = StreamRegistry_1 = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(5, inject(ConfigInjectionToken)),\n    __param(6, inject(IdentityInjectionToken)),\n    __metadata(\"design:paramtypes\", [ContractFactory,\n        RpcProviderSource,\n        ChainEventPoller,\n        TheGraphClient,\n        StreamIDBuilder, Object, Identity,\n        StreamrClientEventEmitter,\n        LoggerFactory])\n], StreamRegistry);\nexport { StreamRegistry };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { StreamStorageRegistryABI } from '@streamr/network-contracts';\nimport { TheGraphClient, collect, toEthereumAddress, toStreamID } from '@streamr/utils';\nimport { Interface } from 'ethers';\nimport min from 'lodash/min';\nimport { Lifecycle, inject, scoped } from 'tsyringe';\nimport { Identity, IdentityInjectionToken } from '../identity/Identity';\nimport { ConfigInjectionToken } from '../ConfigTypes';\nimport { RpcProviderSource } from '../RpcProviderSource';\nimport { StreamIDBuilder } from '../StreamIDBuilder';\nimport { parseMetadata } from '../StreamMetadata';\nimport { getEthersOverrides } from '../ethereumUtils';\nimport { StreamrClientEventEmitter } from '../events';\nimport { LoggerFactory } from '../utils/LoggerFactory';\nimport { createCacheMap } from '../utils/Mapping';\nimport { ChainEventPoller } from './ChainEventPoller';\nimport { ContractFactory } from './ContractFactory';\nimport { initContractEventGateway, waitForTx } from './contract';\nconst GET_ALL_STORAGE_NODES = Symbol('GET_ALL_STORAGE_NODES');\n/**\n * Stores storage node assignments (mapping of streamIds <-> storage nodes addresses)\n */\nlet StreamStorageRegistry = class StreamStorageRegistry {\n    streamStorageRegistryContract;\n    streamStorageRegistryContractReadonly;\n    streamIdBuilder;\n    contractFactory;\n    rpcProviderSource;\n    theGraphClient;\n    config;\n    identity;\n    logger;\n    storageNodesCache;\n    constructor(streamIdBuilder, contractFactory, rpcProviderSource, chainEventPoller, theGraphClient, config, identity, eventEmitter, loggerFactory) {\n        this.streamIdBuilder = streamIdBuilder;\n        this.contractFactory = contractFactory;\n        this.rpcProviderSource = rpcProviderSource;\n        this.theGraphClient = theGraphClient;\n        this.config = config;\n        this.identity = identity;\n        this.logger = loggerFactory.createLogger('StreamStorageRegistry');\n        this.streamStorageRegistryContractReadonly = this.contractFactory.createReadContract(toEthereumAddress(this.config.contracts.streamStorageRegistryChainAddress), StreamStorageRegistryABI, rpcProviderSource.getProvider(), 'streamStorageRegistry');\n        this.initStreamAssignmentEventListeners(eventEmitter, chainEventPoller, loggerFactory);\n        this.storageNodesCache = createCacheMap({\n            valueFactory: (query) => {\n                return this.getStorageNodes_nonCached(query);\n            },\n            ...config.cache\n        });\n    }\n    initStreamAssignmentEventListeners(eventEmitter, chainEventPoller, loggerFactory) {\n        const transformation = ([streamId, nodeAddress], blockNumber) => ({\n            streamId: toStreamID(streamId),\n            nodeAddress: toEthereumAddress(nodeAddress),\n            blockNumber\n        });\n        const contractAddress = toEthereumAddress(this.config.contracts.streamStorageRegistryChainAddress);\n        const contractInterface = new Interface(StreamStorageRegistryABI);\n        initContractEventGateway({\n            sourceDefinition: {\n                contractInterfaceFragment: contractInterface.getEvent('Added'),\n                contractAddress\n            },\n            sourceEmitter: chainEventPoller,\n            targetName: 'streamAddedToStorageNode',\n            targetEmitter: eventEmitter,\n            transformation,\n            loggerFactory\n        });\n        initContractEventGateway({\n            sourceDefinition: {\n                contractInterfaceFragment: contractInterface.getEvent('Removed'),\n                contractAddress\n            },\n            sourceEmitter: chainEventPoller,\n            targetName: 'streamRemovedFromStorageNode',\n            targetEmitter: eventEmitter,\n            transformation,\n            loggerFactory\n        });\n    }\n    async connectToContract() {\n        if (!this.streamStorageRegistryContract) {\n            const chainSigner = await this.identity.getTransactionSigner(this.rpcProviderSource);\n            this.streamStorageRegistryContract = this.contractFactory.createWriteContract(toEthereumAddress(this.config.contracts.streamStorageRegistryChainAddress), StreamStorageRegistryABI, chainSigner, 'streamStorageRegistry');\n        }\n    }\n    async addStreamToStorageNode(streamIdOrPath, nodeAddress) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        this.logger.debug('Add stream to storage node', { streamId, nodeAddress });\n        await this.connectToContract();\n        const ethersOverrides = await getEthersOverrides(this.rpcProviderSource, this.config);\n        await waitForTx(this.streamStorageRegistryContract.addStorageNode(streamId, nodeAddress, ethersOverrides));\n        this.storageNodesCache.invalidate((key) => key === streamId);\n    }\n    async removeStreamFromStorageNode(streamIdOrPath, nodeAddress) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        this.logger.debug('Remove stream from storage node', { streamId, nodeAddress });\n        await this.connectToContract();\n        const ethersOverrides = await getEthersOverrides(this.rpcProviderSource, this.config);\n        await waitForTx(this.streamStorageRegistryContract.removeStorageNode(streamId, nodeAddress, ethersOverrides));\n        this.storageNodesCache.invalidate((key) => key === streamId);\n    }\n    async isStoredStream(streamIdOrPath, nodeAddress) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        this.logger.debug('Check if stream is stored in storage node', { streamId, nodeAddress });\n        return await this.streamStorageRegistryContractReadonly.isStorageNodeOf(streamId, nodeAddress);\n    }\n    async getStoredStreams(nodeAddress) {\n        this.logger.debug('Get stored streams of storage node', { nodeAddress });\n        const blockNumbers = [];\n        const res = await collect(this.theGraphClient.queryEntities((lastId, pageSize) => {\n            const query = `{\n                    node (id: \"${nodeAddress}\") {\n                        id\n                        metadata\n                        lastSeen\n                        storedStreams (first: ${pageSize} orderBy: \"id\" where: { id_gt: \"${lastId}\"}) {\n                            id,\n                            metadata\n                        }\n                    }\n                    _meta {\n                        block {\n                            number\n                        }\n                    }\n                }`;\n            return { query };\n        }, (response) => {\n            // eslint-disable-next-line no-underscore-dangle\n            blockNumbers.push(response._meta.block.number);\n            return (response.node !== null) ? response.node.storedStreams : [];\n        }));\n        const streams = res.map((stream) => {\n            return { id: toStreamID(stream.id), metadata: parseMetadata(stream.metadata) }; // toStreamID() not strictly necessary\n        });\n        return {\n            streams,\n            blockNumber: min(blockNumbers)\n        };\n    }\n    async getStorageNodes(streamIdOrPath) {\n        const query = (streamIdOrPath !== undefined) ? await this.streamIdBuilder.toStreamID(streamIdOrPath) : GET_ALL_STORAGE_NODES;\n        return this.storageNodesCache.get(query);\n    }\n    async getStorageNodes_nonCached(query) {\n        let queryResults;\n        if (query !== GET_ALL_STORAGE_NODES) {\n            const streamId = query;\n            this.logger.debug('Get storage nodes of stream', { streamId });\n            queryResults = await collect(this.theGraphClient.queryEntities((lastId, pageSize) => {\n                const query = `{\n                        stream (id: \"${streamId}\") {\n                            id\n                            metadata\n                            storageNodes (first: ${pageSize} orderBy: \"id\" where: { id_gt: \"${lastId}\"}) {\n                                id\n                                metadata\n                                lastSeen\n                            }\n                        }\n                    }`;\n                return { query };\n            }, (response) => {\n                return (response.stream !== null) ? response.stream.storageNodes : [];\n            }));\n        }\n        else {\n            this.logger.debug('Get all storage nodes');\n            queryResults = await collect(this.theGraphClient.queryEntities((lastId, pageSize) => {\n                const query = `{\n                        nodes (first: ${pageSize} orderBy: \"id\" where: { id_gt: \"${lastId}\"}) {\n                            id\n                            metadata\n                            lastSeen\n                        }\n                    }`;\n                return { query };\n            }));\n        }\n        return queryResults.map((node) => toEthereumAddress(node.id));\n    }\n};\nStreamStorageRegistry = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(5, inject(ConfigInjectionToken)),\n    __param(6, inject(IdentityInjectionToken)),\n    __metadata(\"design:paramtypes\", [StreamIDBuilder,\n        ContractFactory,\n        RpcProviderSource,\n        ChainEventPoller,\n        TheGraphClient, Object, Identity,\n        StreamrClientEventEmitter,\n        LoggerFactory])\n], StreamStorageRegistry);\nexport { StreamStorageRegistry };\n","import { ml_kem1024 } from '@noble/post-quantum/ml-kem';\nimport { randomBytes } from '@noble/post-quantum/utils';\nimport { StreamrClientError } from '../StreamrClientError';\nimport { AsymmetricEncryptionType } from '@streamr/trackerless-network';\nimport { binaryToUtf8, createCipheriv, createDecipheriv, getSubtle, privateDecrypt, publicEncrypt } from '@streamr/utils';\nexport const INITIALIZATION_VECTOR_LENGTH = 16;\nconst INFO = Buffer.from('streamr-key-exchange');\nconst KEM_CIPHER_LENGTH_BYTES = 1568;\nconst KDF_SALT_LENGTH_BYTES = 64;\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class EncryptionUtil {\n    /**\n     * Public API for asymmetric encryption, unified interface across the different AsymmetricEncryptionTypes\n     */\n    static async encryptForPublicKey(plaintext, publicKey, type) {\n        if (type === AsymmetricEncryptionType.ML_KEM) {\n            return this.encryptWithMLKEMPublicKey(plaintext, publicKey);\n        }\n        if (type === AsymmetricEncryptionType.RSA) {\n            return this.encryptWithRSAPublicKey(plaintext, publicKey);\n        }\n        throw new Error(`Unexpected encryption type: ${type}`);\n    }\n    static async decryptWithPrivateKey(cipher, privateKey, type) {\n        if (type === AsymmetricEncryptionType.ML_KEM) {\n            return this.decryptWithMLKEMPrivateKey(cipher, privateKey);\n        }\n        if (type === AsymmetricEncryptionType.RSA) {\n            return this.decryptWithRSAPrivateKey(cipher, privateKey);\n        }\n        throw new Error(`Unexpected encryption type: ${type}`);\n    }\n    /**\n     * RSA\n     */\n    static toRSAPublicKeyString(publicKey) {\n        // RSA publicKey passed around in string format for legacy reasons\n        const keyString = binaryToUtf8(publicKey);\n        if (!keyString.startsWith('-----BEGIN PUBLIC KEY-----')\n            || !keyString.endsWith('-----END PUBLIC KEY-----\\n')) {\n            throw new Error('\"publicKey\" must be an RSA public key (SPKI) in PEM format, encoded in UTF-8');\n        }\n        return keyString;\n    }\n    static toRSAPrivateKeyString(privateKey) {\n        // RSA privateKey passed around in string format for legacy reasons\n        const keyString = binaryToUtf8(privateKey);\n        if (!keyString.startsWith('-----BEGIN PRIVATE KEY-----')\n            || !keyString.endsWith('-----END PRIVATE KEY-----\\n')) {\n            throw new Error('\"privateKey\" must be a PKCS#8 RSA private key in PEM format, encoded in UTF-8');\n        }\n        return keyString;\n    }\n    static encryptWithRSAPublicKey(plaintextBuffer, publicKey) {\n        const keyString = this.toRSAPublicKeyString(publicKey);\n        const ciphertextBuffer = publicEncrypt(keyString, plaintextBuffer);\n        return ciphertextBuffer;\n    }\n    static decryptWithRSAPrivateKey(ciphertext, privateKey) {\n        const keyString = this.toRSAPrivateKeyString(privateKey);\n        return privateDecrypt(keyString, ciphertext);\n    }\n    /**\n     * ML-KEM\n     */\n    static async deriveAESWrapperKey(sharedSecret, kdfSalt) {\n        const subtle = getSubtle();\n        const keyMaterial = await subtle.importKey('raw', sharedSecret, { name: 'HKDF' }, false, ['deriveKey']);\n        const derivedKey = await subtle.deriveKey({\n            name: 'HKDF',\n            hash: 'SHA-512',\n            salt: kdfSalt,\n            info: INFO\n        }, keyMaterial, { name: 'AES-CTR', length: 256 }, true, ['encrypt', 'decrypt']);\n        const exportedKey = await subtle.exportKey('raw', derivedKey);\n        return new Uint8Array(exportedKey);\n    }\n    static async encryptWithMLKEMPublicKey(plaintextBuffer, publicKey) {\n        // Encapsulate to get kemCipher and shared secret\n        // The recipient will be able to derive sharedSecret using privateKey and kemCipher\n        const { cipherText: kemCipher, sharedSecret } = ml_kem1024.encapsulate(publicKey);\n        if (kemCipher.length !== KEM_CIPHER_LENGTH_BYTES) {\n            throw new Error(`Expected KEM cipher to be ${KEM_CIPHER_LENGTH_BYTES}, but it was ${kemCipher.length} bytes`);\n        }\n        // Derive an AES wrapping key from the shared secret using HKDF\n        // The recipient will be able to repeat this computation to derive the same key\n        const kdfSalt = randomBytes(KDF_SALT_LENGTH_BYTES);\n        const wrappingAESKey = await this.deriveAESWrapperKey(sharedSecret, kdfSalt);\n        // Encrypt plaintext with the AES wrapping key\n        const aesEncryptedPlaintext = this.encryptWithAES(plaintextBuffer, Buffer.from(wrappingAESKey));\n        // Concatenate the deliverables into a binary package\n        return Buffer.concat([kemCipher, kdfSalt, aesEncryptedPlaintext]);\n    }\n    static async decryptWithMLKEMPrivateKey(cipherPackage, privateKey) {\n        // Split the cipherPackage, see encryptWithMLKEMPublicKey how it's constructed\n        let pos = 0;\n        const kemCipher = cipherPackage.slice(0, KEM_CIPHER_LENGTH_BYTES);\n        pos += KEM_CIPHER_LENGTH_BYTES;\n        const kdfSalt = cipherPackage.slice(pos, pos + KDF_SALT_LENGTH_BYTES);\n        pos += KDF_SALT_LENGTH_BYTES;\n        const aesEncryptedPlaintext = cipherPackage.slice(pos);\n        // Derive the shared secret using the private key and kemCipher\n        const sharedSecret = ml_kem1024.decapsulate(kemCipher, privateKey);\n        // Derive the wrappingAESKey\n        const wrappingAESKey = await this.deriveAESWrapperKey(sharedSecret, kdfSalt);\n        // Decrypt the aesEncryptedPlaintext\n        return this.decryptWithAES(aesEncryptedPlaintext, Buffer.from(wrappingAESKey));\n    }\n    /*\n     * Returns a hex string without the '0x' prefix.\n     */\n    static encryptWithAES(data, cipherKey) {\n        const iv = randomBytes(INITIALIZATION_VECTOR_LENGTH); // always need a fresh IV when using CTR mode\n        const cipher = createCipheriv('aes-256-ctr', cipherKey, iv);\n        return Buffer.concat([iv, cipher.update(data), cipher.final()]);\n    }\n    /*\n     * 'ciphertext' must be a hex string (without '0x' prefix), 'groupKey' must be a GroupKey. Returns a Buffer.\n     */\n    static decryptWithAES(cipher, cipherKey) {\n        const iv = cipher.slice(0, INITIALIZATION_VECTOR_LENGTH);\n        const decipher = createDecipheriv('aes-256-ctr', cipherKey, iv);\n        return Buffer.concat([decipher.update(cipher.slice(INITIALIZATION_VECTOR_LENGTH)), decipher.final()]);\n    }\n    static decryptStreamMessage(streamMessage, groupKey) {\n        let content;\n        try {\n            content = this.decryptWithAES(streamMessage.content, groupKey.data);\n        }\n        catch {\n            throw new StreamrClientError('AES decryption failed', 'DECRYPT_ERROR', streamMessage);\n        }\n        let newGroupKey = undefined;\n        if (streamMessage.newGroupKey) {\n            try {\n                newGroupKey = groupKey.decryptNextGroupKey(streamMessage.newGroupKey);\n            }\n            catch {\n                throw new StreamrClientError('Could not decrypt new encryption key', 'DECRYPT_ERROR', streamMessage);\n            }\n        }\n        return [content, newGroupKey];\n    }\n}\n","import { uuid } from '../utils/uuid';\nimport { EncryptionUtil } from './EncryptionUtil';\nimport { randomBytes } from '@noble/post-quantum/utils';\nexport class GroupKeyError extends Error {\n    groupKey;\n    constructor(message, groupKey) {\n        super(message);\n        this.groupKey = groupKey;\n    }\n}\n/**\n * GroupKeys are AES cipher keys, which are used to encrypt/decrypt StreamMessages (when encryptionType is AES).\n * Each group key contains 256 random bits of key data and an UUID.\n */\nexport class GroupKey {\n    /** @internal */\n    id;\n    /** @internal */\n    data;\n    constructor(id, data) {\n        this.id = id;\n        if (!id) {\n            throw new GroupKeyError(`groupKeyId must not be falsey ${id}`);\n        }\n        if (!data) {\n            throw new GroupKeyError(`groupKeyBufferOrHexString must not be falsey ${data}`);\n        }\n        this.data = data;\n        GroupKey.validate(this);\n    }\n    static validate(maybeGroupKey) {\n        if (!maybeGroupKey) {\n            throw new GroupKeyError(`value must be a ${this.name}: ${maybeGroupKey}`, maybeGroupKey);\n        }\n        if (!(maybeGroupKey instanceof this)) {\n            throw new GroupKeyError(`value must be a ${this.name}: ${maybeGroupKey}`, maybeGroupKey);\n        }\n        if (!maybeGroupKey.id || typeof maybeGroupKey.id !== 'string') {\n            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n            throw new GroupKeyError(`${this.name} id must be a string: ${maybeGroupKey}`, maybeGroupKey);\n        }\n        if (maybeGroupKey.id.includes('---BEGIN')) {\n            throw new GroupKeyError(\n            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n            `${this.name} public/private key is not a valid group key id: ${maybeGroupKey}`, maybeGroupKey);\n        }\n        if (!maybeGroupKey.data || !Buffer.isBuffer(maybeGroupKey.data)) {\n            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n            throw new GroupKeyError(`${this.name} data must be a Buffer: ${maybeGroupKey}`, maybeGroupKey);\n        }\n        if (maybeGroupKey.data.length !== 32) {\n            throw new GroupKeyError(`Group key must have a size of 256 bits, not ${maybeGroupKey.data.length * 8}`, maybeGroupKey);\n        }\n    }\n    static generate(id = uuid('GroupKey')) {\n        const keyBytes = randomBytes(32);\n        return new GroupKey(id, Buffer.from(keyBytes));\n    }\n    /** @internal */\n    encryptNextGroupKey(nextGroupKey) {\n        return {\n            id: nextGroupKey.id,\n            data: EncryptionUtil.encryptWithAES(nextGroupKey.data, this.data)\n        };\n    }\n    /** @internal */\n    decryptNextGroupKey(nextGroupKey) {\n        return new GroupKey(nextGroupKey.id, EncryptionUtil.decryptWithAES(nextGroupKey.data, this.data));\n    }\n}\n","import { openDB } from 'idb';\n/**\n * This file is a ES module (.mts) instead of CommonJS. It was converted to ESM to resolve\n * an import issue with the `idb` package.\n *\n * When it was CommonJS the `npm run check` failed with error:\n * \"The current file is a CommonJS module whose imports will produce 'require' calls;\n * however, the referenced file is an ECMAScript module and cannot be imported with 'require'.\n * Consider writing a dynamic 'import(\"idb\")' call instead.\"\n *\n * Although `idb` has a default export of \"index.cjs\", switching to ESM fixed the issue.\n * If we find another solution, we may revert this file to CommonJS.\n *\n * See https://github.com/streamr-dev/network/pull/2848\n */\nexport class Persistence {\n    db;\n    static async createInstance(opts) {\n        const db = await openDB(`streamr-sdk::${opts.ownerId}`, 1, {\n            upgrade(db) {\n                opts.namespaces.forEach((namespace) => db.createObjectStore(namespace));\n            }\n        });\n        return new Persistence(db);\n    }\n    constructor(db) {\n        this.db = db;\n    }\n    // eslint-disable-next-line class-methods-use-this\n    async exists() {\n        throw new Error('Method not implemented in browser Persistence.');\n    }\n    async get(key, namespace) {\n        return this.db.get(namespace, key);\n    }\n    async set(key, value, namespace) {\n        await this.db.put(namespace, value, key);\n    }\n    // eslint-disable-next-line class-methods-use-this\n    async close() {\n        // noop\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { inject, Lifecycle, scoped } from 'tsyringe';\nimport { Identity, IdentityInjectionToken } from './identity/Identity';\nimport { DestroySignal } from './DestroySignal';\nimport { LoggerFactory } from './utils/LoggerFactory';\nimport { Persistence } from '@/Persistence';\nexport const NAMESPACES = {\n    ENCRYPTION_KEYS: 'EncryptionKeys',\n    LATEST_ENCRYPTION_KEY_IDS: 'LatestEncryptionKeyIds'\n};\nlet PersistenceManager = class PersistenceManager {\n    persistence;\n    identity;\n    loggerFactory;\n    /* eslint-disable indent */\n    constructor(identity, destroySignal, loggerFactory) {\n        this.identity = identity;\n        this.loggerFactory = loggerFactory;\n        destroySignal.onDestroy.listen(() => {\n            if (this.persistence !== undefined) {\n                return this.persistence.close();\n            }\n        });\n    }\n    async ensureInitialized() {\n        this.persistence ??= await Persistence.createInstance({\n            loggerFactory: this.loggerFactory,\n            ownerId: await this.identity.getUserId(),\n            namespaces: Object.values(NAMESPACES),\n            migrationsUrl: new URL(/* webpackIgnore: true */ './encryption/migrations', import.meta.url),\n        });\n    }\n    async getPersistence(namespace) {\n        await this.ensureInitialized();\n        return {\n            get: (key) => {\n                return this.persistence.get(key, namespace);\n            },\n            set: (key, value) => {\n                return this.persistence.set(key, value, namespace);\n            }\n        };\n    }\n};\nPersistenceManager = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(0, inject(IdentityInjectionToken)),\n    __metadata(\"design:paramtypes\", [Identity,\n        DestroySignal,\n        LoggerFactory])\n], PersistenceManager);\nexport { PersistenceManager };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Lifecycle, scoped } from 'tsyringe';\nimport { NAMESPACES, PersistenceManager } from '../PersistenceManager';\nimport { StreamrClientEventEmitter } from '../events';\nimport { LoggerFactory } from '../utils/LoggerFactory';\nimport { GroupKey } from './GroupKey';\nfunction formLookupKey1(keyId, publisherId) {\n    return `${publisherId}::${keyId}`;\n}\nfunction formLookupKey2(publisherId, streamId) {\n    return `${publisherId}::${streamId}`;\n}\nlet LocalGroupKeyStore = class LocalGroupKeyStore {\n    persistenceManager;\n    eventEmitter;\n    logger;\n    constructor(persistenceManager, eventEmitter, loggerFactory) {\n        this.persistenceManager = persistenceManager;\n        this.eventEmitter = eventEmitter;\n        this.logger = loggerFactory.createLogger('LocalGroupKeyStore');\n    }\n    async get(keyId, publisherId) {\n        const persistence = await this.persistenceManager.getPersistence(NAMESPACES.ENCRYPTION_KEYS);\n        const value = await persistence.get(formLookupKey1(keyId, publisherId));\n        if (value !== undefined) {\n            return new GroupKey(keyId, Buffer.from(value, 'hex'));\n        }\n        else {\n            return undefined;\n        }\n    }\n    async set(keyId, publisherId, data) {\n        const persistence = await this.persistenceManager.getPersistence(NAMESPACES.ENCRYPTION_KEYS);\n        await persistence.set(formLookupKey1(keyId, publisherId), Buffer.from(data).toString('hex'));\n        this.logger.debug('Set key', { keyId, publisherId });\n        this.eventEmitter.emit('encryptionKeyStoredToLocalStore', keyId);\n    }\n    async setLatestEncryptionKeyId(keyId, publisherId, streamId) {\n        const persistence = await this.persistenceManager.getPersistence(NAMESPACES.LATEST_ENCRYPTION_KEY_IDS);\n        this.logger.debug('Set latest encryptionKeyId', { keyId, publisherId, streamId });\n        await persistence.set(formLookupKey2(publisherId, streamId), keyId);\n    }\n    async getLatestEncryptionKeyId(publisherId, streamId) {\n        const persistence = await this.persistenceManager.getPersistence(NAMESPACES.LATEST_ENCRYPTION_KEY_IDS);\n        const value = await persistence.get(formLookupKey2(publisherId, streamId));\n        return value;\n    }\n};\nLocalGroupKeyStore = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __metadata(\"design:paramtypes\", [PersistenceManager,\n        StreamrClientEventEmitter,\n        LoggerFactory])\n], LocalGroupKeyStore);\nexport { LocalGroupKeyStore };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { TheGraphClient, toEthereumAddress } from '@streamr/utils';\nimport shuffle from 'lodash/shuffle';\nimport { Lifecycle, scoped } from 'tsyringe';\nimport { LoggerFactory } from '../utils/LoggerFactory';\nlet OperatorRegistry = class OperatorRegistry {\n    theGraphClient;\n    logger;\n    constructor(theGraphClient, loggerFactory) {\n        this.theGraphClient = theGraphClient;\n        this.logger = loggerFactory.createLogger('OperatorRegistry');\n    }\n    async findRandomNetworkEntrypoints(maxEntryPoints, maxQueryResults, maxHeartbeatAgeHours) {\n        const createQuery = () => {\n            return {\n                query: `{\n                    operators(\n                        orderBy: latestHeartbeatTimestamp\n                        orderDirection: desc\n                        first: ${maxQueryResults}\n                        where: {\n                            latestHeartbeatMetadata_contains: \"\\\\\"tls\\\\\":true\", \n                            latestHeartbeatTimestamp_gt: \"${Math.floor(Date.now() / 1000) - (maxHeartbeatAgeHours * 60 * 60)}\"\n                        }\n                    ) {\n                        id\n                        latestHeartbeatMetadata\n                    }\n                }`\n            };\n        };\n        const operatorMetadatas = this.theGraphClient.queryEntities(createQuery);\n        const peerDescriptors = [];\n        for await (const operator of operatorMetadatas) {\n            peerDescriptors.push(JSON.parse(operator.latestHeartbeatMetadata));\n        }\n        const picked = shuffle(peerDescriptors).slice(0, maxEntryPoints);\n        this.logger.debug(`Found ${peerDescriptors.length} network entrypoints, picked ${picked.length}`, { picked });\n        return picked;\n    }\n    async findOperatorsOnStream(streamId, maxQueryResults, maxHeartbeatAgeHours) {\n        const query = {\n            query: `{\n                stream(id: \"${streamId}\") {\n                    sponsorships(where: { isRunning: true }) {\n                        stakes(first: ${maxQueryResults}, orderBy: updateTimestamp, orderDirection: desc) {\n                            operator (\n                                where: {\n                                    latestHeartbeatMetadata_contains: \"\\\\\"tls\\\\\":true\", \n                                    latestHeartbeatTimestamp_gt: \"${Math.floor(Date.now() / 1000) - (maxHeartbeatAgeHours * 60 * 60)}\"\n                                }\n                            ) {\n                                id\n                                latestHeartbeatMetadata\n                            }\n                        }\n                    }\n                }\n            }`\n        };\n        const queryResult = await this.theGraphClient.queryEntity(query);\n        const operatorPeerDescriptors = queryResult.stream.sponsorships\n            .flatMap((sponsorship) => sponsorship.stakes\n            .map((stake) => ({\n            operatorId: toEthereumAddress(stake.operator.id),\n            peerDescriptor: JSON.parse(stake.operator.latestHeartbeatMetadata)\n        })));\n        return operatorPeerDescriptors;\n    }\n};\nOperatorRegistry = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __metadata(\"design:paramtypes\", [TheGraphClient,\n        LoggerFactory])\n], OperatorRegistry);\nexport { OperatorRegistry };\n","import { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\n// @generated message type with reflection information, may provide speed optimized methods\nclass Empty$Type extends MessageType {\n    constructor() {\n        super(\"google.protobuf.Empty\", []);\n    }\n    create(value) {\n        const message = globalThis.Object.create((this.messagePrototype));\n        if (value !== undefined)\n            reflectionMergePartial(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader, length, options, target) {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message, writer, options) {\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message google.protobuf.Empty\n */\nexport const Empty = new Empty$Type();\n","import { WireType } from \"@protobuf-ts/runtime\";\nimport { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { isJsonObject } from \"@protobuf-ts/runtime\";\nimport { typeofJsonValue } from \"@protobuf-ts/runtime\";\nimport { jsonWriteOptions } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\n// @generated message type with reflection information, may provide speed optimized methods\nclass Any$Type extends MessageType {\n    constructor() {\n        super(\"google.protobuf.Any\", [\n            { no: 1, name: \"type_url\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"value\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ }\n        ]);\n    }\n    /**\n     * Pack the message into a new `Any`.\n     *\n     * Uses 'type.googleapis.com/full.type.name' as the type URL.\n     */\n    pack(message, type) {\n        return {\n            typeUrl: this.typeNameToUrl(type.typeName), value: type.toBinary(message),\n        };\n    }\n    /**\n     * Unpack the message from the `Any`.\n     */\n    unpack(any, type, options) {\n        if (!this.contains(any, type))\n            throw new Error(\"Cannot unpack google.protobuf.Any with typeUrl '\" + any.typeUrl + \"' as \" + type.typeName + \".\");\n        return type.fromBinary(any.value, options);\n    }\n    /**\n     * Does the given `Any` contain a packed message of the given type?\n     */\n    contains(any, type) {\n        if (!any.typeUrl.length)\n            return false;\n        let wants = typeof type == \"string\" ? type : type.typeName;\n        let has = this.typeUrlToName(any.typeUrl);\n        return wants === has;\n    }\n    /**\n     * Convert the message to canonical JSON value.\n     *\n     * You have to provide the `typeRegistry` option so that the\n     * packed message can be converted to JSON.\n     *\n     * The `typeRegistry` option is also required to read\n     * `google.protobuf.Any` from JSON format.\n     */\n    internalJsonWrite(any, options) {\n        if (any.typeUrl === \"\")\n            return {};\n        let typeName = this.typeUrlToName(any.typeUrl);\n        let opt = jsonWriteOptions(options);\n        let type = opt.typeRegistry?.find(t => t.typeName === typeName);\n        if (!type)\n            throw new globalThis.Error(\"Unable to convert google.protobuf.Any with typeUrl '\" + any.typeUrl + \"' to JSON. The specified type \" + typeName + \" is not available in the type registry.\");\n        let value = type.fromBinary(any.value, { readUnknownField: false });\n        let json = type.internalJsonWrite(value, opt);\n        if (typeName.startsWith(\"google.protobuf.\") || !isJsonObject(json))\n            json = { value: json };\n        json[\"@type\"] = any.typeUrl;\n        return json;\n    }\n    internalJsonRead(json, options, target) {\n        if (!isJsonObject(json))\n            throw new globalThis.Error(\"Unable to parse google.protobuf.Any from JSON \" + typeofJsonValue(json) + \".\");\n        if (typeof json[\"@type\"] != \"string\" || json[\"@type\"] == \"\")\n            return this.create();\n        let typeName = this.typeUrlToName(json[\"@type\"]);\n        let type = options?.typeRegistry?.find(t => t.typeName == typeName);\n        if (!type)\n            throw new globalThis.Error(\"Unable to parse google.protobuf.Any from JSON. The specified type \" + typeName + \" is not available in the type registry.\");\n        let value;\n        if (typeName.startsWith(\"google.protobuf.\") && json.hasOwnProperty(\"value\"))\n            value = type.fromJson(json[\"value\"], options);\n        else {\n            let copy = Object.assign({}, json);\n            delete copy[\"@type\"];\n            value = type.fromJson(copy, options);\n        }\n        if (target === undefined)\n            target = this.create();\n        target.typeUrl = json[\"@type\"];\n        target.value = type.toBinary(value);\n        return target;\n    }\n    typeNameToUrl(name) {\n        if (!name.length)\n            throw new Error(\"invalid type name: \" + name);\n        return \"type.googleapis.com/\" + name;\n    }\n    typeUrlToName(url) {\n        if (!url.length)\n            throw new Error(\"invalid type url: \" + url);\n        let slash = url.lastIndexOf(\"/\");\n        let name = slash > 0 ? url.substring(slash + 1) : url;\n        if (!name.length)\n            throw new Error(\"invalid type url: \" + url);\n        return name;\n    }\n    create(value) {\n        const message = globalThis.Object.create((this.messagePrototype));\n        message.typeUrl = \"\";\n        message.value = new Uint8Array(0);\n        if (value !== undefined)\n            reflectionMergePartial(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader, length, options, target) {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* string type_url */ 1:\n                    message.typeUrl = reader.string();\n                    break;\n                case /* bytes value */ 2:\n                    message.value = reader.bytes();\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message, writer, options) {\n        /* string type_url = 1; */\n        if (message.typeUrl !== \"\")\n            writer.tag(1, WireType.LengthDelimited).string(message.typeUrl);\n        /* bytes value = 2; */\n        if (message.value.length)\n            writer.tag(2, WireType.LengthDelimited).bytes(message.value);\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message google.protobuf.Any\n */\nexport const Any = new Any$Type();\n","// @generated by protobuf-ts 2.11.1 with parameter server_generic,generate_dependencies,long_type_number\n// @generated from protobuf file \"packages/proto-rpc/protos/ProtoRpc.proto\" (package \"protorpc\", syntax proto3)\n// tslint:disable\nimport { MessageType } from \"@protobuf-ts/runtime\";\nimport { Empty } from \"../../../google/protobuf/empty\";\nimport { Any } from \"../../../google/protobuf/any\";\n/**\n * @generated from protobuf enum protorpc.RpcErrorType\n */\nexport var RpcErrorType;\n(function (RpcErrorType) {\n    /**\n     * @generated from protobuf enum value: SERVER_TIMEOUT = 0;\n     */\n    RpcErrorType[RpcErrorType[\"SERVER_TIMEOUT\"] = 0] = \"SERVER_TIMEOUT\";\n    /**\n     * @generated from protobuf enum value: CLIENT_TIMEOUT = 1;\n     */\n    RpcErrorType[RpcErrorType[\"CLIENT_TIMEOUT\"] = 1] = \"CLIENT_TIMEOUT\";\n    /**\n     * @generated from protobuf enum value: UNKNOWN_RPC_METHOD = 2;\n     */\n    RpcErrorType[RpcErrorType[\"UNKNOWN_RPC_METHOD\"] = 2] = \"UNKNOWN_RPC_METHOD\";\n    /**\n     * @generated from protobuf enum value: CLIENT_ERROR = 3;\n     */\n    RpcErrorType[RpcErrorType[\"CLIENT_ERROR\"] = 3] = \"CLIENT_ERROR\";\n    /**\n     * @generated from protobuf enum value: SERVER_ERROR = 4;\n     */\n    RpcErrorType[RpcErrorType[\"SERVER_ERROR\"] = 4] = \"SERVER_ERROR\";\n})(RpcErrorType || (RpcErrorType = {}));\n// @generated message type with reflection information, may provide speed optimized methods\nclass RpcMessage$Type extends MessageType {\n    constructor() {\n        super(\"protorpc.RpcMessage\", [\n            { no: 1, name: \"header\", kind: \"map\", K: 9 /*ScalarType.STRING*/, V: { kind: \"scalar\", T: 9 /*ScalarType.STRING*/ } },\n            { no: 2, name: \"body\", kind: \"message\", T: () => Any },\n            { no: 3, name: \"requestId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 4, name: \"errorType\", kind: \"enum\", opt: true, T: () => [\"protorpc.RpcErrorType\", RpcErrorType] },\n            { no: 5, name: \"errorClassName\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 6, name: \"errorCode\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 7, name: \"errorMessage\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message protorpc.RpcMessage\n */\nexport const RpcMessage = new RpcMessage$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass Mnfo2uhnf92hvqi2nviouq2hv9puhq$Type extends MessageType {\n    constructor() {\n        super(\"protorpc.Mnfo2uhnf92hvqi2nviouq2hv9puhq\", [\n            { no: 1, name: \"empty\", kind: \"message\", T: () => Empty }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message protorpc.Mnfo2uhnf92hvqi2nviouq2hv9puhq\n */\nexport const Mnfo2uhnf92hvqi2nviouq2hv9puhq = new Mnfo2uhnf92hvqi2nviouq2hv9puhq$Type();\n","import { WireType } from \"@protobuf-ts/runtime\";\nimport { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { typeofJsonValue } from \"@protobuf-ts/runtime\";\nimport { PbLong } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\n// @generated message type with reflection information, may provide speed optimized methods\nclass Timestamp$Type extends MessageType {\n    constructor() {\n        super(\"google.protobuf.Timestamp\", [\n            { no: 1, name: \"seconds\", kind: \"scalar\", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },\n            { no: 2, name: \"nanos\", kind: \"scalar\", T: 5 /*ScalarType.INT32*/ }\n        ]);\n    }\n    /**\n     * Creates a new `Timestamp` for the current time.\n     */\n    now() {\n        const msg = this.create();\n        const ms = Date.now();\n        msg.seconds = PbLong.from(Math.floor(ms / 1000)).toNumber();\n        msg.nanos = (ms % 1000) * 1000000;\n        return msg;\n    }\n    /**\n     * Converts a `Timestamp` to a JavaScript Date.\n     */\n    toDate(message) {\n        return new Date(PbLong.from(message.seconds).toNumber() * 1000 + Math.ceil(message.nanos / 1000000));\n    }\n    /**\n     * Converts a JavaScript Date to a `Timestamp`.\n     */\n    fromDate(date) {\n        const msg = this.create();\n        const ms = date.getTime();\n        msg.seconds = PbLong.from(Math.floor(ms / 1000)).toNumber();\n        msg.nanos = ((ms % 1000) + (ms < 0 && ms % 1000 !== 0 ? 1000 : 0)) * 1000000;\n        return msg;\n    }\n    /**\n     * In JSON format, the `Timestamp` type is encoded as a string\n     * in the RFC 3339 format.\n     */\n    internalJsonWrite(message, options) {\n        let ms = PbLong.from(message.seconds).toNumber() * 1000;\n        if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\"))\n            throw new Error(\"Unable to encode Timestamp to JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n        if (message.nanos < 0)\n            throw new Error(\"Unable to encode invalid Timestamp to JSON. Nanos must not be negative.\");\n        let z = \"Z\";\n        if (message.nanos > 0) {\n            let nanosStr = (message.nanos + 1000000000).toString().substring(1);\n            if (nanosStr.substring(3) === \"000000\")\n                z = \".\" + nanosStr.substring(0, 3) + \"Z\";\n            else if (nanosStr.substring(6) === \"000\")\n                z = \".\" + nanosStr.substring(0, 6) + \"Z\";\n            else\n                z = \".\" + nanosStr + \"Z\";\n        }\n        return new Date(ms).toISOString().replace(\".000Z\", z);\n    }\n    /**\n     * In JSON format, the `Timestamp` type is encoded as a string\n     * in the RFC 3339 format.\n     */\n    internalJsonRead(json, options, target) {\n        if (typeof json !== \"string\")\n            throw new Error(\"Unable to parse Timestamp from JSON \" + typeofJsonValue(json) + \".\");\n        let matches = json.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);\n        if (!matches)\n            throw new Error(\"Unable to parse Timestamp from JSON. Invalid format.\");\n        let ms = Date.parse(matches[1] + \"-\" + matches[2] + \"-\" + matches[3] + \"T\" + matches[4] + \":\" + matches[5] + \":\" + matches[6] + (matches[8] ? matches[8] : \"Z\"));\n        if (Number.isNaN(ms))\n            throw new Error(\"Unable to parse Timestamp from JSON. Invalid value.\");\n        if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\"))\n            throw new globalThis.Error(\"Unable to parse Timestamp from JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n        if (!target)\n            target = this.create();\n        target.seconds = PbLong.from(ms / 1000).toNumber();\n        target.nanos = 0;\n        if (matches[7])\n            target.nanos = (parseInt(\"1\" + matches[7] + \"0\".repeat(9 - matches[7].length)) - 1000000000);\n        return target;\n    }\n    create(value) {\n        const message = globalThis.Object.create((this.messagePrototype));\n        message.seconds = 0;\n        message.nanos = 0;\n        if (value !== undefined)\n            reflectionMergePartial(this, message, value);\n        return message;\n    }\n    internalBinaryRead(reader, length, options, target) {\n        let message = target ?? this.create(), end = reader.pos + length;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case /* int64 seconds */ 1:\n                    message.seconds = reader.int64().toNumber();\n                    break;\n                case /* int32 nanos */ 2:\n                    message.nanos = reader.int32();\n                    break;\n                default:\n                    let u = options.readUnknownField;\n                    if (u === \"throw\")\n                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n                    let d = reader.skip(wireType);\n                    if (u !== false)\n                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n            }\n        }\n        return message;\n    }\n    internalBinaryWrite(message, writer, options) {\n        /* int64 seconds = 1; */\n        if (message.seconds !== 0)\n            writer.tag(1, WireType.Varint).int64(message.seconds);\n        /* int32 nanos = 2; */\n        if (message.nanos !== 0)\n            writer.tag(2, WireType.Varint).int32(message.nanos);\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n        return writer;\n    }\n}\n/**\n * @generated MessageType for protobuf message google.protobuf.Timestamp\n */\nexport const Timestamp = new Timestamp$Type();\n","// @generated by protobuf-ts 2.11.1 with parameter server_generic,generate_dependencies,long_type_number\n// @generated from protobuf file \"packages/dht/protos/DhtRpc.proto\" (package \"dht\", syntax proto3)\n// tslint:disable\nimport { Empty } from \"../../../google/protobuf/empty\";\nimport { ServiceType } from \"@protobuf-ts/runtime-rpc\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\nimport { RpcMessage } from \"../../proto-rpc/protos/ProtoRpc\";\nimport { Timestamp } from \"../../../google/protobuf/timestamp\";\nimport { Any } from \"../../../google/protobuf/any\";\n/**\n * @generated from protobuf enum dht.RecursiveOperation\n */\nexport var RecursiveOperation;\n(function (RecursiveOperation) {\n    /**\n     * @generated from protobuf enum value: FIND_CLOSEST_NODES = 0;\n     */\n    RecursiveOperation[RecursiveOperation[\"FIND_CLOSEST_NODES\"] = 0] = \"FIND_CLOSEST_NODES\";\n    /**\n     * @generated from protobuf enum value: FETCH_DATA = 1;\n     */\n    RecursiveOperation[RecursiveOperation[\"FETCH_DATA\"] = 1] = \"FETCH_DATA\";\n    /**\n     * @generated from protobuf enum value: DELETE_DATA = 2;\n     */\n    RecursiveOperation[RecursiveOperation[\"DELETE_DATA\"] = 2] = \"DELETE_DATA\";\n})(RecursiveOperation || (RecursiveOperation = {}));\n/**\n * @generated from protobuf enum dht.NodeType\n */\nexport var NodeType;\n(function (NodeType) {\n    /**\n     * @generated from protobuf enum value: NODEJS = 0;\n     */\n    NodeType[NodeType[\"NODEJS\"] = 0] = \"NODEJS\";\n    /**\n     * @generated from protobuf enum value: BROWSER = 1;\n     */\n    NodeType[NodeType[\"BROWSER\"] = 1] = \"BROWSER\";\n})(NodeType || (NodeType = {}));\n/**\n * @generated from protobuf enum dht.RpcResponseError\n */\nexport var RpcResponseError;\n(function (RpcResponseError) {\n    /**\n     * @generated from protobuf enum value: SERVER_TIMOUT = 0;\n     */\n    RpcResponseError[RpcResponseError[\"SERVER_TIMOUT\"] = 0] = \"SERVER_TIMOUT\";\n    /**\n     * @generated from protobuf enum value: CLIENT_TIMEOUT = 1;\n     */\n    RpcResponseError[RpcResponseError[\"CLIENT_TIMEOUT\"] = 1] = \"CLIENT_TIMEOUT\";\n    /**\n     * @generated from protobuf enum value: SERVER_ERROR = 2;\n     */\n    RpcResponseError[RpcResponseError[\"SERVER_ERROR\"] = 2] = \"SERVER_ERROR\";\n    /**\n     * @generated from protobuf enum value: UNKNOWN_RPC_METHOD = 3;\n     */\n    RpcResponseError[RpcResponseError[\"UNKNOWN_RPC_METHOD\"] = 3] = \"UNKNOWN_RPC_METHOD\";\n})(RpcResponseError || (RpcResponseError = {}));\n/**\n * @generated from protobuf enum dht.RouteMessageError\n */\nexport var RouteMessageError;\n(function (RouteMessageError) {\n    /**\n     * @generated from protobuf enum value: NO_TARGETS = 0;\n     */\n    RouteMessageError[RouteMessageError[\"NO_TARGETS\"] = 0] = \"NO_TARGETS\";\n    /**\n     * @generated from protobuf enum value: DUPLICATE = 1;\n     */\n    RouteMessageError[RouteMessageError[\"DUPLICATE\"] = 1] = \"DUPLICATE\";\n    /**\n     * TODO: can this be removed? If DhtNode is already stopped the server side requests\n     * should not be processed\n     *\n     * @generated from protobuf enum value: STOPPED = 2;\n     */\n    RouteMessageError[RouteMessageError[\"STOPPED\"] = 2] = \"STOPPED\";\n})(RouteMessageError || (RouteMessageError = {}));\n/**\n * @generated from protobuf enum dht.HandshakeError\n */\nexport var HandshakeError;\n(function (HandshakeError) {\n    /**\n     * @generated from protobuf enum value: DUPLICATE_CONNECTION = 0;\n     */\n    HandshakeError[HandshakeError[\"DUPLICATE_CONNECTION\"] = 0] = \"DUPLICATE_CONNECTION\";\n    /**\n     * @generated from protobuf enum value: INVALID_TARGET_PEER_DESCRIPTOR = 1;\n     */\n    HandshakeError[HandshakeError[\"INVALID_TARGET_PEER_DESCRIPTOR\"] = 1] = \"INVALID_TARGET_PEER_DESCRIPTOR\";\n    /**\n     * @generated from protobuf enum value: UNSUPPORTED_PROTOCOL_VERSION = 2;\n     */\n    HandshakeError[HandshakeError[\"UNSUPPORTED_PROTOCOL_VERSION\"] = 2] = \"UNSUPPORTED_PROTOCOL_VERSION\";\n})(HandshakeError || (HandshakeError = {}));\n/**\n * @generated from protobuf enum dht.DisconnectMode\n */\nexport var DisconnectMode;\n(function (DisconnectMode) {\n    /**\n     * @generated from protobuf enum value: NORMAL = 0;\n     */\n    DisconnectMode[DisconnectMode[\"NORMAL\"] = 0] = \"NORMAL\";\n    /**\n     * @generated from protobuf enum value: LEAVING = 1;\n     */\n    DisconnectMode[DisconnectMode[\"LEAVING\"] = 1] = \"LEAVING\";\n})(DisconnectMode || (DisconnectMode = {}));\n// @generated message type with reflection information, may provide speed optimized methods\nclass StoreDataRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.StoreDataRequest\", [\n            { no: 1, name: \"key\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ },\n            { no: 2, name: \"data\", kind: \"message\", T: () => Any },\n            { no: 3, name: \"creator\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ },\n            { no: 4, name: \"createdAt\", kind: \"message\", T: () => Timestamp },\n            { no: 5, name: \"ttl\", kind: \"scalar\", T: 13 /*ScalarType.UINT32*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.StoreDataRequest\n */\nexport const StoreDataRequest = new StoreDataRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass StoreDataResponse$Type extends MessageType {\n    constructor() {\n        super(\"dht.StoreDataResponse\", []);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.StoreDataResponse\n */\nexport const StoreDataResponse = new StoreDataResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ExternalStoreDataRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.ExternalStoreDataRequest\", [\n            { no: 1, name: \"key\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ },\n            { no: 2, name: \"data\", kind: \"message\", T: () => Any }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ExternalStoreDataRequest\n */\nexport const ExternalStoreDataRequest = new ExternalStoreDataRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ExternalStoreDataResponse$Type extends MessageType {\n    constructor() {\n        super(\"dht.ExternalStoreDataResponse\", [\n            { no: 1, name: \"storers\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PeerDescriptor }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ExternalStoreDataResponse\n */\nexport const ExternalStoreDataResponse = new ExternalStoreDataResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ReplicateDataRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.ReplicateDataRequest\", [\n            { no: 1, name: \"entry\", kind: \"message\", T: () => DataEntry }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ReplicateDataRequest\n */\nexport const ReplicateDataRequest = new ReplicateDataRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass DataEntry$Type extends MessageType {\n    constructor() {\n        super(\"dht.DataEntry\", [\n            { no: 1, name: \"key\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ },\n            { no: 2, name: \"data\", kind: \"message\", T: () => Any },\n            { no: 3, name: \"creator\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ },\n            { no: 4, name: \"createdAt\", kind: \"message\", T: () => Timestamp },\n            { no: 5, name: \"storedAt\", kind: \"message\", T: () => Timestamp },\n            { no: 6, name: \"ttl\", kind: \"scalar\", T: 13 /*ScalarType.UINT32*/ },\n            { no: 7, name: \"stale\", kind: \"scalar\", T: 8 /*ScalarType.BOOL*/ },\n            { no: 8, name: \"deleted\", kind: \"scalar\", T: 8 /*ScalarType.BOOL*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.DataEntry\n */\nexport const DataEntry = new DataEntry$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ClosestPeersRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.ClosestPeersRequest\", [\n            { no: 1, name: \"nodeId\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ },\n            { no: 2, name: \"requestId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ClosestPeersRequest\n */\nexport const ClosestPeersRequest = new ClosestPeersRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ClosestPeersResponse$Type extends MessageType {\n    constructor() {\n        super(\"dht.ClosestPeersResponse\", [\n            { no: 1, name: \"peers\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PeerDescriptor },\n            { no: 2, name: \"requestId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ClosestPeersResponse\n */\nexport const ClosestPeersResponse = new ClosestPeersResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ClosestRingPeersRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.ClosestRingPeersRequest\", [\n            { no: 1, name: \"ringId\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ },\n            { no: 2, name: \"requestId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ClosestRingPeersRequest\n */\nexport const ClosestRingPeersRequest = new ClosestRingPeersRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ClosestRingPeersResponse$Type extends MessageType {\n    constructor() {\n        super(\"dht.ClosestRingPeersResponse\", [\n            { no: 1, name: \"leftPeers\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PeerDescriptor },\n            { no: 2, name: \"rightPeers\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PeerDescriptor },\n            { no: 3, name: \"requestId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ClosestRingPeersResponse\n */\nexport const ClosestRingPeersResponse = new ClosestRingPeersResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass RecursiveOperationRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.RecursiveOperationRequest\", [\n            { no: 1, name: \"sessionId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"operation\", kind: \"enum\", T: () => [\"dht.RecursiveOperation\", RecursiveOperation] }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.RecursiveOperationRequest\n */\nexport const RecursiveOperationRequest = new RecursiveOperationRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass RecursiveOperationResponse$Type extends MessageType {\n    constructor() {\n        super(\"dht.RecursiveOperationResponse\", [\n            { no: 1, name: \"closestConnectedNodes\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PeerDescriptor },\n            { no: 2, name: \"dataEntries\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => DataEntry },\n            { no: 3, name: \"noCloserNodesFound\", kind: \"scalar\", T: 8 /*ScalarType.BOOL*/ },\n            { no: 4, name: \"routingPath\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PeerDescriptor }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.RecursiveOperationResponse\n */\nexport const RecursiveOperationResponse = new RecursiveOperationResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass PingRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.PingRequest\", [\n            { no: 1, name: \"requestId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.PingRequest\n */\nexport const PingRequest = new PingRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass PingResponse$Type extends MessageType {\n    constructor() {\n        super(\"dht.PingResponse\", [\n            { no: 1, name: \"requestId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.PingResponse\n */\nexport const PingResponse = new PingResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass LeaveNotice$Type extends MessageType {\n    constructor() {\n        super(\"dht.LeaveNotice\", []);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.LeaveNotice\n */\nexport const LeaveNotice = new LeaveNotice$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass PeerDescriptor$Type extends MessageType {\n    constructor() {\n        super(\"dht.PeerDescriptor\", [\n            { no: 1, name: \"nodeId\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ },\n            { no: 2, name: \"type\", kind: \"enum\", T: () => [\"dht.NodeType\", NodeType] },\n            { no: 3, name: \"udp\", kind: \"message\", T: () => ConnectivityMethod },\n            { no: 4, name: \"tcp\", kind: \"message\", T: () => ConnectivityMethod },\n            { no: 5, name: \"websocket\", kind: \"message\", T: () => ConnectivityMethod },\n            { no: 6, name: \"region\", kind: \"scalar\", opt: true, T: 13 /*ScalarType.UINT32*/ },\n            { no: 7, name: \"ipAddress\", kind: \"scalar\", opt: true, T: 13 /*ScalarType.UINT32*/ },\n            { no: 8, name: \"publicKey\", kind: \"scalar\", opt: true, T: 12 /*ScalarType.BYTES*/ },\n            { no: 9, name: \"signature\", kind: \"scalar\", opt: true, T: 12 /*ScalarType.BYTES*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.PeerDescriptor\n */\nexport const PeerDescriptor = new PeerDescriptor$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ConnectivityMethod$Type extends MessageType {\n    constructor() {\n        super(\"dht.ConnectivityMethod\", [\n            { no: 1, name: \"port\", kind: \"scalar\", T: 13 /*ScalarType.UINT32*/ },\n            { no: 2, name: \"host\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 3, name: \"tls\", kind: \"scalar\", T: 8 /*ScalarType.BOOL*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ConnectivityMethod\n */\nexport const ConnectivityMethod = new ConnectivityMethod$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass RouteMessageWrapper$Type extends MessageType {\n    constructor() {\n        super(\"dht.RouteMessageWrapper\", [\n            { no: 1, name: \"requestId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"sourcePeer\", kind: \"message\", T: () => PeerDescriptor },\n            { no: 3, name: \"target\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ },\n            { no: 4, name: \"message\", kind: \"message\", T: () => Message },\n            { no: 5, name: \"reachableThrough\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PeerDescriptor },\n            { no: 6, name: \"routingPath\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PeerDescriptor },\n            { no: 7, name: \"parallelRootNodeIds\", kind: \"scalar\", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.RouteMessageWrapper\n */\nexport const RouteMessageWrapper = new RouteMessageWrapper$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass RouteMessageAck$Type extends MessageType {\n    constructor() {\n        super(\"dht.RouteMessageAck\", [\n            { no: 1, name: \"requestId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"error\", kind: \"enum\", opt: true, T: () => [\"dht.RouteMessageError\", RouteMessageError] }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.RouteMessageAck\n */\nexport const RouteMessageAck = new RouteMessageAck$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ConnectivityRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.ConnectivityRequest\", [\n            { no: 1, name: \"port\", kind: \"scalar\", T: 13 /*ScalarType.UINT32*/ },\n            { no: 2, name: \"tls\", kind: \"scalar\", T: 8 /*ScalarType.BOOL*/ },\n            { no: 3, name: \"host\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n            { no: 4, name: \"allowSelfSignedCertificate\", kind: \"scalar\", T: 8 /*ScalarType.BOOL*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ConnectivityRequest\n */\nexport const ConnectivityRequest = new ConnectivityRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ConnectivityResponse$Type extends MessageType {\n    constructor() {\n        super(\"dht.ConnectivityResponse\", [\n            { no: 1, name: \"host\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"natType\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 3, name: \"websocket\", kind: \"message\", T: () => ConnectivityMethod },\n            { no: 4, name: \"ipAddress\", kind: \"scalar\", T: 13 /*ScalarType.UINT32*/ },\n            { no: 5, name: \"protocolVersion\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 6, name: \"latitude\", kind: \"scalar\", opt: true, T: 1 /*ScalarType.DOUBLE*/ },\n            { no: 7, name: \"longitude\", kind: \"scalar\", opt: true, T: 1 /*ScalarType.DOUBLE*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ConnectivityResponse\n */\nexport const ConnectivityResponse = new ConnectivityResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass HandshakeRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.HandshakeRequest\", [\n            { no: 1, name: \"sourcePeerDescriptor\", kind: \"message\", T: () => PeerDescriptor },\n            { no: 2, name: \"targetPeerDescriptor\", kind: \"message\", T: () => PeerDescriptor },\n            { no: 3, name: \"protocolVersion\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 4, name: \"applicationVersion\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.HandshakeRequest\n */\nexport const HandshakeRequest = new HandshakeRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass HandshakeResponse$Type extends MessageType {\n    constructor() {\n        super(\"dht.HandshakeResponse\", [\n            { no: 1, name: \"sourcePeerDescriptor\", kind: \"message\", T: () => PeerDescriptor },\n            { no: 2, name: \"error\", kind: \"enum\", opt: true, T: () => [\"dht.HandshakeError\", HandshakeError] },\n            { no: 3, name: \"protocolVersion\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 4, name: \"applicationVersion\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.HandshakeResponse\n */\nexport const HandshakeResponse = new HandshakeResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass Message$Type extends MessageType {\n    constructor() {\n        super(\"dht.Message\", [\n            { no: 1, name: \"messageId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"sourceDescriptor\", kind: \"message\", T: () => PeerDescriptor },\n            { no: 3, name: \"targetDescriptor\", kind: \"message\", T: () => PeerDescriptor },\n            { no: 4, name: \"serviceId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 5, name: \"rpcMessage\", kind: \"message\", oneof: \"body\", T: () => RpcMessage },\n            { no: 6, name: \"connectivityRequest\", kind: \"message\", oneof: \"body\", T: () => ConnectivityRequest },\n            { no: 7, name: \"connectivityResponse\", kind: \"message\", oneof: \"body\", T: () => ConnectivityResponse },\n            { no: 8, name: \"handshakeRequest\", kind: \"message\", oneof: \"body\", T: () => HandshakeRequest },\n            { no: 9, name: \"handshakeResponse\", kind: \"message\", oneof: \"body\", T: () => HandshakeResponse },\n            { no: 10, name: \"recursiveOperationRequest\", kind: \"message\", oneof: \"body\", T: () => RecursiveOperationRequest }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.Message\n */\nexport const Message = new Message$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass WebsocketConnectionRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.WebsocketConnectionRequest\", []);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.WebsocketConnectionRequest\n */\nexport const WebsocketConnectionRequest = new WebsocketConnectionRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass WebrtcConnectionRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.WebrtcConnectionRequest\", []);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.WebrtcConnectionRequest\n */\nexport const WebrtcConnectionRequest = new WebrtcConnectionRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass RtcOffer$Type extends MessageType {\n    constructor() {\n        super(\"dht.RtcOffer\", [\n            { no: 1, name: \"description\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"connectionId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.RtcOffer\n */\nexport const RtcOffer = new RtcOffer$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass RtcAnswer$Type extends MessageType {\n    constructor() {\n        super(\"dht.RtcAnswer\", [\n            { no: 1, name: \"description\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"connectionId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.RtcAnswer\n */\nexport const RtcAnswer = new RtcAnswer$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass IceCandidate$Type extends MessageType {\n    constructor() {\n        super(\"dht.IceCandidate\", [\n            { no: 1, name: \"candidate\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 2, name: \"mid\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n            { no: 3, name: \"connectionId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.IceCandidate\n */\nexport const IceCandidate = new IceCandidate$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass LockRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.LockRequest\", [\n            { no: 1, name: \"lockId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.LockRequest\n */\nexport const LockRequest = new LockRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass UnlockRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.UnlockRequest\", [\n            { no: 1, name: \"lockId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.UnlockRequest\n */\nexport const UnlockRequest = new UnlockRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass LockResponse$Type extends MessageType {\n    constructor() {\n        super(\"dht.LockResponse\", [\n            { no: 1, name: \"accepted\", kind: \"scalar\", T: 8 /*ScalarType.BOOL*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.LockResponse\n */\nexport const LockResponse = new LockResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass DisconnectNotice$Type extends MessageType {\n    constructor() {\n        super(\"dht.DisconnectNotice\", [\n            { no: 1, name: \"disconnectMode\", kind: \"enum\", T: () => [\"dht.DisconnectMode\", DisconnectMode] }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.DisconnectNotice\n */\nexport const DisconnectNotice = new DisconnectNotice$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass SetPrivateRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.SetPrivateRequest\", [\n            { no: 1, name: \"isPrivate\", kind: \"scalar\", T: 8 /*ScalarType.BOOL*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.SetPrivateRequest\n */\nexport const SetPrivateRequest = new SetPrivateRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ExternalFetchDataRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.ExternalFetchDataRequest\", [\n            { no: 1, name: \"key\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ExternalFetchDataRequest\n */\nexport const ExternalFetchDataRequest = new ExternalFetchDataRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ExternalFetchDataResponse$Type extends MessageType {\n    constructor() {\n        super(\"dht.ExternalFetchDataResponse\", [\n            { no: 1, name: \"entries\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => DataEntry }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ExternalFetchDataResponse\n */\nexport const ExternalFetchDataResponse = new ExternalFetchDataResponse$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ExternalFindClosestNodesRequest$Type extends MessageType {\n    constructor() {\n        super(\"dht.ExternalFindClosestNodesRequest\", [\n            { no: 1, name: \"nodeId\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ExternalFindClosestNodesRequest\n */\nexport const ExternalFindClosestNodesRequest = new ExternalFindClosestNodesRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ExternalFindClosestNodesResponse$Type extends MessageType {\n    constructor() {\n        super(\"dht.ExternalFindClosestNodesResponse\", [\n            { no: 1, name: \"closestNodes\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PeerDescriptor }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message dht.ExternalFindClosestNodesResponse\n */\nexport const ExternalFindClosestNodesResponse = new ExternalFindClosestNodesResponse$Type();\n/**\n * @generated ServiceType for protobuf service dht.DhtNodeRpc\n */\nexport const DhtNodeRpc = new ServiceType(\"dht.DhtNodeRpc\", [\n    { name: \"getClosestPeers\", options: {}, I: ClosestPeersRequest, O: ClosestPeersResponse },\n    { name: \"getClosestRingPeers\", options: {}, I: ClosestRingPeersRequest, O: ClosestRingPeersResponse },\n    { name: \"ping\", options: {}, I: PingRequest, O: PingResponse },\n    { name: \"leaveNotice\", options: {}, I: LeaveNotice, O: Empty }\n]);\n/**\n * @generated ServiceType for protobuf service dht.RouterRpc\n */\nexport const RouterRpc = new ServiceType(\"dht.RouterRpc\", [\n    { name: \"routeMessage\", options: {}, I: RouteMessageWrapper, O: RouteMessageAck },\n    { name: \"forwardMessage\", options: {}, I: RouteMessageWrapper, O: RouteMessageAck }\n]);\n/**\n * @generated ServiceType for protobuf service dht.RecursiveOperationRpc\n */\nexport const RecursiveOperationRpc = new ServiceType(\"dht.RecursiveOperationRpc\", [\n    { name: \"routeRequest\", options: {}, I: RouteMessageWrapper, O: RouteMessageAck }\n]);\n/**\n * @generated ServiceType for protobuf service dht.StoreRpc\n */\nexport const StoreRpc = new ServiceType(\"dht.StoreRpc\", [\n    { name: \"storeData\", options: {}, I: StoreDataRequest, O: StoreDataResponse },\n    { name: \"replicateData\", options: {}, I: ReplicateDataRequest, O: Empty }\n]);\n/**\n * @generated ServiceType for protobuf service dht.RecursiveOperationSessionRpc\n */\nexport const RecursiveOperationSessionRpc = new ServiceType(\"dht.RecursiveOperationSessionRpc\", [\n    { name: \"sendResponse\", options: {}, I: RecursiveOperationResponse, O: Empty }\n]);\n/**\n * @generated ServiceType for protobuf service dht.WebsocketClientConnectorRpc\n */\nexport const WebsocketClientConnectorRpc = new ServiceType(\"dht.WebsocketClientConnectorRpc\", [\n    { name: \"requestConnection\", options: {}, I: WebsocketConnectionRequest, O: Empty }\n]);\n/**\n * @generated ServiceType for protobuf service dht.WebrtcConnectorRpc\n */\nexport const WebrtcConnectorRpc = new ServiceType(\"dht.WebrtcConnectorRpc\", [\n    { name: \"requestConnection\", options: {}, I: WebrtcConnectionRequest, O: Empty },\n    { name: \"rtcOffer\", options: {}, I: RtcOffer, O: Empty },\n    { name: \"rtcAnswer\", options: {}, I: RtcAnswer, O: Empty },\n    { name: \"iceCandidate\", options: {}, I: IceCandidate, O: Empty }\n]);\n/**\n * @generated ServiceType for protobuf service dht.ConnectionLockRpc\n */\nexport const ConnectionLockRpc = new ServiceType(\"dht.ConnectionLockRpc\", [\n    { name: \"lockRequest\", options: {}, I: LockRequest, O: LockResponse },\n    { name: \"unlockRequest\", options: {}, I: UnlockRequest, O: Empty },\n    { name: \"gracefulDisconnect\", options: {}, I: DisconnectNotice, O: Empty },\n    { name: \"setPrivate\", options: {}, I: SetPrivateRequest, O: Empty }\n]);\n/**\n * @generated ServiceType for protobuf service dht.ExternalApiRpc\n */\nexport const ExternalApiRpc = new ServiceType(\"dht.ExternalApiRpc\", [\n    { name: \"externalFetchData\", options: {}, I: ExternalFetchDataRequest, O: ExternalFetchDataResponse },\n    { name: \"externalStoreData\", options: {}, I: ExternalStoreDataRequest, O: ExternalStoreDataResponse },\n    { name: \"externalFindClosestNodes\", options: {}, I: ExternalFindClosestNodesRequest, O: ExternalFindClosestNodesResponse }\n]);\n","// @generated by protobuf-ts 2.11.1 with parameter server_generic,generate_dependencies,long_type_number\n// @generated from protobuf file \"packages/sdk/protos/SdkRpc.proto\" (syntax proto3)\n// tslint:disable\nimport { ServiceType } from \"@protobuf-ts/runtime-rpc\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\nimport { PeerDescriptor } from \"../../dht/protos/DhtRpc\";\n// @generated message type with reflection information, may provide speed optimized methods\nclass OperatorDiscoveryRequest$Type extends MessageType {\n    constructor() {\n        super(\"OperatorDiscoveryRequest\", [\n            { no: 1, name: \"streamPartId\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message OperatorDiscoveryRequest\n */\nexport const OperatorDiscoveryRequest = new OperatorDiscoveryRequest$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass OperatorDiscoveryResponse$Type extends MessageType {\n    constructor() {\n        super(\"OperatorDiscoveryResponse\", [\n            { no: 1, name: \"operators\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PeerDescriptor }\n        ]);\n    }\n}\n/**\n * @generated MessageType for protobuf message OperatorDiscoveryResponse\n */\nexport const OperatorDiscoveryResponse = new OperatorDiscoveryResponse$Type();\n/**\n * @generated ServiceType for protobuf service OperatorDiscovery\n */\nexport const OperatorDiscovery = new ServiceType(\"OperatorDiscovery\", [\n    { name: \"discoverOperators\", options: {}, I: OperatorDiscoveryRequest, O: OperatorDiscoveryResponse }\n]);\n","import { OperatorDiscovery } from \"./SdkRpc\";\nimport { stackIntercept } from \"@protobuf-ts/runtime-rpc\";\n/**\n * @generated from protobuf service OperatorDiscovery\n */\nexport class OperatorDiscoveryClient {\n    _transport;\n    typeName = OperatorDiscovery.typeName;\n    methods = OperatorDiscovery.methods;\n    options = OperatorDiscovery.options;\n    constructor(_transport) {\n        this._transport = _transport;\n    }\n    /**\n     * @generated from protobuf rpc: discoverOperators\n     */\n    discoverOperators(input, options) {\n        const method = this.methods[0], opt = this._transport.mergeOptions(options);\n        return stackIntercept(\"unary\", this._transport, method, opt, input);\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { createNetworkNode as createNetworkNode_ } from '@streamr/trackerless-network';\nimport { Logger, MetricsContext, StreamPartIDUtils } from '@streamr/utils';\nimport { EventEmitter } from 'eventemitter3';\nimport pull from 'lodash/pull';\nimport omit from 'lodash/omit';\nimport { Lifecycle, inject, scoped } from 'tsyringe';\nimport { Identity, IdentityInjectionToken } from './identity/Identity';\nimport { ConfigInjectionToken } from './ConfigTypes';\nimport { DestroySignal } from './DestroySignal';\nimport { OperatorRegistry } from './contracts/OperatorRegistry';\nimport { OperatorDiscoveryRequest, OperatorDiscoveryResponse } from './generated/packages/sdk/protos/SdkRpc';\nimport { OperatorDiscoveryClient } from './generated/packages/sdk/protos/SdkRpc.client';\nimport { StreamMessageTranslator } from './protocol/StreamMessageTranslator';\nimport { pOnce } from './utils/promises';\nimport { convertPeerDescriptorToNetworkPeerDescriptor, peerDescriptorTranslator } from './utils/utils';\n/**\n * The factory is used so that integration tests can replace the real network node with a fake instance\n */\n/* eslint-disable class-methods-use-this */\nlet NetworkNodeFactory = class NetworkNodeFactory {\n    createNetworkNode(opts) {\n        return createNetworkNode_(opts);\n    }\n};\nNetworkNodeFactory = __decorate([\n    scoped(Lifecycle.ContainerScoped)\n], NetworkNodeFactory);\nexport { NetworkNodeFactory };\nconst logger = new Logger('NetworkNodeFacade');\n/**\n * Wrap a network node.\n * Lazily creates & starts node on first call to getNode().\n */\nlet NetworkNodeFacade = class NetworkNodeFacade {\n    cachedNode;\n    startNodeCalled = false;\n    startNodeComplete = false;\n    messageListeners = [];\n    networkNodeFactory;\n    operatorRegistry;\n    config;\n    identity;\n    eventEmitter;\n    destroySignal;\n    constructor(networkNodeFactory, operatorRegistry, config, identity, destroySignal) {\n        this.networkNodeFactory = networkNodeFactory;\n        this.operatorRegistry = operatorRegistry;\n        this.config = config;\n        this.identity = identity;\n        this.eventEmitter = new EventEmitter();\n        this.destroySignal = destroySignal;\n        destroySignal.onDestroy.listen(this.destroy);\n    }\n    async getNetworkOptions() {\n        const entryPoints = await this.getEntryPoints();\n        const localPeerDescriptor = this.config.network.controlLayer.peerDescriptor ?\n            peerDescriptorTranslator(this.config.network.controlLayer.peerDescriptor) : undefined;\n        return {\n            layer0: {\n                ...this.config.network.controlLayer,\n                entryPoints: entryPoints.map(peerDescriptorTranslator),\n                peerDescriptor: localPeerDescriptor,\n                websocketPortRange: (this.config.network.controlLayer.websocketPortRange !== null)\n                    ? this.config.network.controlLayer.websocketPortRange\n                    : undefined\n            },\n            networkNode: {\n                ...omit(this.config.network.node, 'contentDeliveryBufferWhileConnecting'),\n                bufferWhileConnecting: this.config.network.node.contentDeliveryBufferWhileConnecting\n            },\n            metricsContext: new MetricsContext()\n        };\n    }\n    /**\n     * Stop network node, or wait for it to stop if already stopping.\n     * Subsequent calls to getNode/start will fail.\n     */\n    destroy = pOnce(async () => {\n        const node = this.cachedNode;\n        this.cachedNode = undefined;\n        // stop node only if started or in progress\n        if (node && this.startNodeCalled) {\n            if (!this.startNodeComplete) {\n                // wait for start to finish before stopping node\n                const startNodeTask = this.startNodeTask();\n                this.startNodeTask.reset(); // allow subsequent calls to fail\n                await startNodeTask;\n            }\n            await node.stop();\n        }\n        this.startNodeTask.reset(); // allow subsequent calls to fail\n    });\n    /**\n     * Start network node, or wait for it to start if already started.\n     */\n    // TODO: doJoin parameter seems problematic here; see ticket NET-1319\n    startNodeTask = pOnce(async (doJoin = true) => {\n        this.startNodeCalled = true;\n        try {\n            const node = await this.initNode();\n            if (!this.destroySignal.isDestroyed()) {\n                await node.start(doJoin);\n            }\n            node.addMessageListener((msg) => {\n                if (this.messageListeners.length > 0) {\n                    try {\n                        const translated = StreamMessageTranslator.toClientProtocol(msg);\n                        for (const listener of this.messageListeners) {\n                            listener(translated);\n                        }\n                    }\n                    catch (err) {\n                        logger.trace(`Could not translate message`, { err });\n                    }\n                }\n            });\n            if (this.destroySignal.isDestroyed()) {\n                await node.stop();\n            }\n            else {\n                this.eventEmitter.emit('start');\n            }\n            this.destroySignal.assertNotDestroyed();\n            return node;\n        }\n        finally {\n            this.startNodeComplete = true;\n        }\n    });\n    async initNode() {\n        this.destroySignal.assertNotDestroyed();\n        if (this.cachedNode) {\n            return this.cachedNode;\n        }\n        const node = this.networkNodeFactory.createNetworkNode(await this.getNetworkOptions());\n        if (!this.destroySignal.isDestroyed()) {\n            this.cachedNode = node;\n        }\n        return node;\n    }\n    startNode = this.startNodeTask;\n    getNode() {\n        this.destroySignal.assertNotDestroyed();\n        return this.startNodeTask();\n    }\n    async getNodeId() {\n        const node = await this.getNode();\n        return node.getNodeId();\n    }\n    async join(streamPartId, neighborRequirement, deliveryOptions) {\n        const node = await this.getNode();\n        await node.join(streamPartId, neighborRequirement, deliveryOptions);\n    }\n    async leave(streamPartId) {\n        const node = await this.getNode();\n        await node.leave(streamPartId);\n    }\n    async broadcast(msg, deliveryOptions) {\n        const node = await this.getNode();\n        node.broadcast(StreamMessageTranslator.toProtobuf(msg), deliveryOptions);\n    }\n    addMessageListener(listener) {\n        this.messageListeners.push(listener);\n    }\n    removeMessageListener(listener) {\n        pull(this.messageListeners, listener);\n    }\n    async isProxiedStreamPart(streamPartId) {\n        const node = await this.getNode();\n        return node.isProxiedStreamPart(streamPartId);\n    }\n    async getMetricsContext() {\n        const node = await this.getNode();\n        return node.getMetricsContext();\n    }\n    async getPeerDescriptor() {\n        const node = await this.getNode();\n        return node.getPeerDescriptor();\n    }\n    async getDiagnosticInfo() {\n        const node = await this.getNode();\n        return node.getDiagnosticInfo();\n    }\n    async getStreamParts() {\n        const node = await this.getNode();\n        return node.getStreamParts();\n    }\n    async getNeighbors(streamPartId) {\n        const node = await this.getNode();\n        return node.getNeighbors(streamPartId);\n    }\n    async getOptions() {\n        const node = await this.getNode();\n        return node.getOptions();\n    }\n    async inspect(node, streamPartId) {\n        if (this.isStarting()) {\n            await this.startNodeTask(false);\n        }\n        const peerDescriptor = peerDescriptorTranslator(node);\n        return this.cachedNode.inspect(peerDescriptor, streamPartId);\n    }\n    async setProxies(streamPartId, nodes, direction, connectionCount) {\n        if (this.isStarting()) {\n            await this.startNodeTask(false);\n        }\n        const peerDescriptors = nodes.map(peerDescriptorTranslator);\n        await this.cachedNode.setProxies(streamPartId, peerDescriptors, await this.identity.getUserId(), direction, connectionCount);\n    }\n    async setStreamPartEntryPoints(streamPartId, nodeDescriptors) {\n        if (this.isStarting()) {\n            await this.startNodeTask(false);\n        }\n        const peerDescriptors = nodeDescriptors.map(peerDescriptorTranslator);\n        this.cachedNode.setStreamPartEntryPoints(streamPartId, peerDescriptors);\n    }\n    async discoverOperators(leader, streamPartId) {\n        const client = await this.createExternalRpcClient(OperatorDiscoveryClient);\n        const response = await client.discoverOperators(OperatorDiscoveryRequest.create({ streamPartId }), {\n            sourceDescriptor: await this.getPeerDescriptor(),\n            targetDescriptor: peerDescriptorTranslator(leader)\n        });\n        return response.operators.map((operator) => convertPeerDescriptorToNetworkPeerDescriptor(operator));\n    }\n    async createExternalRpcClient(clientClass) {\n        if (this.isStarting()) {\n            await this.startNodeTask(false);\n        }\n        return this.cachedNode.createExternalRpcClient(clientClass);\n    }\n    async registerOperator(opts) {\n        const node = await this.getNode();\n        node.registerExternalNetworkRpcMethod(OperatorDiscoveryRequest, OperatorDiscoveryResponse, 'discoverOperators', async (request) => {\n            const streamPartId = StreamPartIDUtils.parse(request.streamPartId);\n            const operators = opts.getAssignedNodesForStreamPart(streamPartId);\n            return OperatorDiscoveryResponse.create({ operators: operators.map((operator) => peerDescriptorTranslator(operator)) });\n        });\n    }\n    isStarting() {\n        return !this.cachedNode || !this.startNodeComplete;\n    }\n    once(eventName, listener) {\n        this.eventEmitter.once(eventName, listener);\n    }\n    async getEntryPoints() {\n        const discoveryConfig = this.config.network.controlLayer.entryPointDiscovery;\n        const discoveredEntryPoints = (discoveryConfig?.enabled)\n            ? await this.operatorRegistry.findRandomNetworkEntrypoints(discoveryConfig.maxEntryPoints, discoveryConfig.maxQueryResults, discoveryConfig.maxHeartbeatAgeHours)\n            : [];\n        return [...this.config.network.controlLayer.entryPoints, ...discoveredEntryPoints];\n    }\n};\nNetworkNodeFacade = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(2, inject(ConfigInjectionToken)),\n    __param(3, inject(IdentityInjectionToken)),\n    __metadata(\"design:paramtypes\", [NetworkNodeFactory,\n        OperatorRegistry, Object, Identity,\n        DestroySignal])\n], NetworkNodeFacade);\nexport { NetworkNodeFacade };\n","import { MessageRef } from '../protocol/MessageRef';\nimport { randomString } from '@streamr/utils';\nexport const createRandomMsgChainId = () => randomString(20);\n/**\n * Generate the next message MessageID for a message chain.\n * Messages with same timestamp get incremented sequence numbers.\n */\nexport const createMessageRef = (timestamp, prevMsgRef) => {\n    // NOTE: publishing back-dated (i.e. non-sequentially timestamped) messages will 'break' sequencing.\n    // i.e. we lose track of biggest sequence number whenever timestamp changes for stream id+partition combo\n    // so backdated messages will start at sequence 0 again, regardless of the sequencing of existing messages.\n    // storage considers timestamp+sequence number unique, so the newer messages will clobber the older messages\n    // Not feasible to keep greatest sequence number for every millisecond timestamp so not sure a good way around this.\n    // Possible we should keep a global sequence number\n    // The sequence breaking issue above can be \"fixed\" if we throw an exception for backdated timestamp.\n    // In that case we don't publish the message and the backdated timestamp won't be useds as prevMsgRef\n    // for a possible subsequent publish request.\n    const isBackdated = (prevMsgRef !== undefined) && (timestamp < prevMsgRef.timestamp);\n    if (isBackdated) {\n        throw new Error('prevMessageRef must come before current');\n    }\n    const isSameTimestamp = prevMsgRef?.timestamp === timestamp;\n    const nextSequenceNumber = isSameTimestamp ? prevMsgRef.sequenceNumber + 1 : 0;\n    const createdMessageRef = new MessageRef(timestamp, nextSequenceNumber);\n    return createdMessageRef;\n};\n","import { GroupKeyRequest as NewGroupKeyRequest, GroupKeyResponse as NewGroupKeyResponse } from '@streamr/trackerless-network';\nimport { utf8ToBinary } from '@streamr/utils';\nimport { StreamMessageType } from '../protocol/StreamMessage';\nexport const createSignaturePayload = (opts) => {\n    const header = Buffer.concat([\n        Buffer.from(`${opts.messageId.streamId}${opts.messageId.streamPartition}${opts.messageId.timestamp}`\n            + `${opts.messageId.sequenceNumber}${opts.messageId.publisherId}${opts.messageId.msgChainId}`),\n        (opts.prevMsgRef !== undefined) ? Buffer.from(`${opts.prevMsgRef.timestamp}${opts.prevMsgRef.sequenceNumber}`) : new Uint8Array(0)\n    ]);\n    if (opts.messageType === StreamMessageType.MESSAGE) {\n        const newGroupKeyId = opts.newGroupKey ? Buffer.from(opts.newGroupKey.id) : undefined;\n        return Buffer.concat([\n            header,\n            opts.content,\n            newGroupKeyId ?? new Uint8Array(0),\n            opts.newGroupKey?.data ?? new Uint8Array(0),\n        ]);\n    }\n    else if (opts.messageType === StreamMessageType.GROUP_KEY_REQUEST) {\n        // NOTE: this conversion will be removed in the future when we migrate all usages of\n        // protocol package's StreamMessage class to the trackerless-network's StreamMessage class\n        const request = NewGroupKeyRequest.fromBinary(opts.content);\n        return Buffer.concat([\n            header,\n            utf8ToBinary(request.requestId),\n            request.recipientId,\n            request.publicKey,\n            Buffer.concat(request.groupKeyIds.map((k) => utf8ToBinary(k)))\n        ]);\n    }\n    else if (opts.messageType === StreamMessageType.GROUP_KEY_RESPONSE) {\n        // NOTE: this conversion will be removed in the future when we migrate all usages of\n        // protocol package's StreamMessage class to the trackerless-network's StreamMessage class\n        const response = NewGroupKeyResponse.fromBinary(opts.content);\n        return Buffer.concat([\n            header,\n            utf8ToBinary(response.requestId),\n            response.recipientId,\n            Buffer.concat(response.groupKeys.map((k) => Buffer.concat([utf8ToBinary(k.id), k.data])))\n        ]);\n    }\n    else {\n        throw new Error(`Assertion failed: unknown message type ${opts.messageType}`);\n    }\n};\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { inject, Lifecycle, scoped } from 'tsyringe';\nimport { Identity, IdentityInjectionToken } from '../identity/Identity';\nimport { StreamMessage } from '../protocol/StreamMessage';\nimport { createSignaturePayload } from './createSignaturePayload';\nlet MessageSigner = class MessageSigner {\n    identity;\n    constructor(identity) {\n        this.identity = identity;\n    }\n    async createSignedMessage(opts, signatureType) {\n        const signature = await this.identity.createMessageSignature(createSignaturePayload(opts));\n        return new StreamMessage({\n            ...opts,\n            signature,\n            signatureType\n        });\n    }\n};\nMessageSigner = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(0, inject(IdentityInjectionToken)),\n    __metadata(\"design:paramtypes\", [Identity])\n], MessageSigner);\nexport { MessageSigner };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { EcdsaSecp256k1Evm, MapWithTtl, toUserId } from '@streamr/utils';\nimport { Lifecycle, scoped } from 'tsyringe';\nimport { RpcProviderSource } from '../RpcProviderSource';\nimport ERC1271ContractArtifact from '../ethereumArtifacts/IERC1271Abi.json';\nimport { createLazyMap } from '../utils/Mapping';\nimport { ContractFactory } from './ContractFactory';\nexport const SUCCESS_MAGIC_VALUE = '0x1626ba7e'; // Magic value for success as defined by ERC-1271\nconst CACHE_TTL = 10 * 60 * 1000; // 10 minutes\nconst signingUtil = new EcdsaSecp256k1Evm();\nfunction formCacheKey(contractAddress, signerUserId) {\n    return `${contractAddress}_${signerUserId}`;\n}\nlet ERC1271ContractFacade = class ERC1271ContractFacade {\n    contractsByAddress;\n    publisherCache = new MapWithTtl(() => CACHE_TTL);\n    constructor(contractFactory, rpcProviderSource) {\n        this.contractsByAddress = createLazyMap({\n            valueFactory: async (address) => {\n                return contractFactory.createReadContract(address, ERC1271ContractArtifact, rpcProviderSource.getProvider(), 'erc1271Contract');\n            }\n        });\n    }\n    async isValidSignature(contractAddress, payload, signature) {\n        const recoveredSignerUserId = toUserId(signingUtil.recoverSignerUserId(signature, payload));\n        const cacheKey = formCacheKey(contractAddress, recoveredSignerUserId);\n        const cachedValue = this.publisherCache.get(cacheKey);\n        if (cachedValue !== undefined) {\n            return cachedValue;\n        }\n        else {\n            const contract = await this.contractsByAddress.get(contractAddress);\n            const result = await contract.isValidSignature(signingUtil.keccakHash(payload), signature);\n            const isValid = result === SUCCESS_MAGIC_VALUE;\n            this.publisherCache.set(cacheKey, isValid);\n            return isValid;\n        }\n    }\n};\nERC1271ContractFacade = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __metadata(\"design:paramtypes\", [ContractFactory,\n        RpcProviderSource])\n], ERC1271ContractFacade);\nexport { ERC1271ContractFacade };\n","import { binaryToHex, binaryToUtf8 } from '@streamr/utils';\nimport { EncryptionType } from '@streamr/trackerless-network';\nconst serializeGroupKey = ({ id, data }) => {\n    return JSON.stringify([id, binaryToHex(data)]);\n};\n/**\n * Only to be used for LEGACY_SECP256K1 signature type.\n */\nexport const createLegacySignaturePayload = (opts) => {\n    const prev = ((opts.prevMsgRef !== undefined) ? `${opts.prevMsgRef.timestamp}${opts.prevMsgRef.sequenceNumber}` : '');\n    const newGroupKey = ((opts.newGroupKey !== undefined) ? serializeGroupKey(opts.newGroupKey) : '');\n    // In the legacy signature type, encrypted content was signed as a hex-encoded string\n    const contentAsString = (opts.encryptionType === EncryptionType.NONE)\n        ? binaryToUtf8(opts.content)\n        : binaryToHex(opts.content);\n    return Buffer.from(`${opts.messageId.streamId}${opts.messageId.streamPartition}${opts.messageId.timestamp}${opts.messageId.sequenceNumber}`\n        + `${opts.messageId.publisherId}${opts.messageId.msgChainId}${prev}${contentAsString}${newGroupKey}`);\n};\n","import { toUserId } from '@streamr/utils';\nimport { Identity } from './Identity';\n/**\n * KeyPairIdentity is an Identity that is defined by a public key and a private key.\n * It uses the public key as the UserID.\n */\nexport class KeyPairIdentity extends Identity {\n    publicKeyString;\n    publicKey;\n    privateKey;\n    constructor(publicKey, privateKey) {\n        super();\n        this.publicKey = publicKey;\n        this.privateKey = privateKey;\n        this.publicKeyString = toUserId(this.publicKey);\n        this.assertValidKeyPair();\n    }\n    async getUserIdRaw() {\n        return this.publicKey;\n    }\n    async getUserId() {\n        return this.publicKeyString;\n    }\n    async getPrivateKey() {\n        return this.privateKey;\n    }\n    // eslint-disable-next-line class-methods-use-this\n    async getTransactionSigner(_rpcProviderSource) {\n        throw new Error('This key pair can not sign transactions!');\n    }\n    /** @internal */\n    static getKeyPairFromConfig(config) {\n        const result = config.auth;\n        if (!result.privateKey) {\n            throw new Error('A privateKey was expected in the config, but none is defined!');\n        }\n        return result;\n    }\n}\n","import { binaryToHex, EcdsaSecp256k1Evm, hexToBinary } from '@streamr/utils';\nimport { Wallet } from 'ethers';\nimport { SignatureType } from '@streamr/trackerless-network';\nimport { KeyPairIdentity } from './KeyPairIdentity';\nconst signingUtil = new EcdsaSecp256k1Evm();\n/**\n * An Identity that derives an Ethereum address from a secp256k1 private key\n * and uses that as the UserID instead of the actual public key.\n */\nexport class EthereumKeyPairIdentity extends KeyPairIdentity {\n    assertValidKeyPair() {\n        signingUtil.assertValidKeyPair(this.publicKey, this.privateKey);\n    }\n    // eslint-disable-next-line class-methods-use-this\n    getSignatureType() {\n        return SignatureType.ECDSA_SECP256K1_EVM;\n    }\n    async createMessageSignature(payload) {\n        return signingUtil.createSignature(payload, this.privateKey);\n    }\n    async getTransactionSigner(rpcProviderSource) {\n        const primaryProvider = rpcProviderSource.getProvider();\n        return new Wallet(binaryToHex(this.privateKey), primaryProvider);\n    }\n    /** @internal */\n    static fromConfig(config) {\n        const privateKey = config.auth.privateKey;\n        const address = config.auth.publicKey;\n        return EthereumKeyPairIdentity.fromPrivateKey(privateKey, address);\n    }\n    static fromPrivateKey(privateKey, address) {\n        return new EthereumKeyPairIdentity(hexToBinary(address ?? new Wallet(privateKey).address), hexToBinary(privateKey));\n    }\n    static generate() {\n        const keyPair = signingUtil.generateKeyPair();\n        return new EthereumKeyPairIdentity(keyPair.publicKey, keyPair.privateKey);\n    }\n}\n","import { hexToBinary, toUserId, toUserIdRaw, wait } from '@streamr/utils';\nimport { BrowserProvider } from 'ethers';\nimport { pLimitFn } from '../utils/promises';\nimport { Identity } from './Identity';\nimport { SignatureType } from '@streamr/trackerless-network';\n/**\n * An identity that uses an Ethereum provider (= external wallet) to sign messages\n */\nexport class EthereumProviderIdentity extends Identity {\n    provider;\n    expectedChainId;\n    signer;\n    cachedUserIdString;\n    cachedUserIdBytes;\n    rateLimitedSigner;\n    constructor(provider, expectedChainId) {\n        super();\n        this.provider = provider;\n        this.expectedChainId = expectedChainId;\n        this.signer = provider.getSigner();\n        this.rateLimitedSigner = pLimitFn(async (payload) => {\n            // sign one at a time & wait a moment before asking for next signature\n            // otherwise MetaMask extension may not show the prompt window\n            const sig = await (await this.signer).signMessage(payload);\n            await wait(50);\n            return hexToBinary(sig);\n        }, 1);\n    }\n    async getUserIdRaw() {\n        this.cachedUserIdBytes ??= toUserIdRaw(await this.getUserId());\n        return this.cachedUserIdBytes;\n    }\n    async getUserId() {\n        this.cachedUserIdString ??= toUserId(await (await this.signer).getAddress());\n        return this.cachedUserIdString;\n    }\n    // eslint-disable-next-line class-methods-use-this\n    getSignatureType() {\n        return SignatureType.ECDSA_SECP256K1_EVM;\n    }\n    async createMessageSignature(payload) {\n        return this.rateLimitedSigner(payload);\n    }\n    async getTransactionSigner() {\n        if (this.expectedChainId === undefined) {\n            throw new Error('Streamr chainId not configuredin the StreamrClient options!');\n        }\n        const actualChainId = (await this.provider.getNetwork()).chainId;\n        if (actualChainId !== BigInt(this.expectedChainId)) {\n            throw new Error(`Connect your wallet to the chain with chainId ${this.expectedChainId} (chainId of currently selected chain is ${actualChainId})`);\n        }\n        return this.signer;\n    }\n    /** @internal */\n    static fromConfig(config) {\n        const ethereum = config.auth?.ethereum;\n        const provider = new BrowserProvider(ethereum);\n        return new EthereumProviderIdentity(provider, config.contracts.ethereumNetwork.chainId);\n    }\n}\n","import { hexToBinary, SigningUtil } from '@streamr/utils';\nimport { KeyPairIdentity } from './KeyPairIdentity';\nimport { SignatureType } from '@streamr/trackerless-network';\nconst signingUtil = SigningUtil.getInstance('ML_DSA_87');\n/**\n * An identity that uses a quantum-resistant ML-DSA-87 key pair to sign messages.\n */\nexport class MLDSAKeyPairIdentity extends KeyPairIdentity {\n    assertValidKeyPair() {\n        signingUtil.assertValidKeyPair(this.publicKey, this.privateKey);\n    }\n    // eslint-disable-next-line class-methods-use-this\n    getSignatureType() {\n        return SignatureType.ML_DSA_87;\n    }\n    async createMessageSignature(payload) {\n        return signingUtil.createSignature(payload, this.privateKey);\n    }\n    /** @internal */\n    static fromConfig(config) {\n        const keyPairConfig = KeyPairIdentity.getKeyPairFromConfig(config);\n        if (!keyPairConfig.publicKey) {\n            throw new Error(`ML-DSA identity requires a publicKey to be given in the config!`);\n        }\n        return new MLDSAKeyPairIdentity(hexToBinary(keyPairConfig.publicKey), hexToBinary(keyPairConfig.privateKey));\n    }\n    static generate() {\n        const keyPair = signingUtil.generateKeyPair();\n        return new MLDSAKeyPairIdentity(keyPair.publicKey, keyPair.privateKey);\n    }\n}\n","import { hexToBinary, EcdsaSecp256r1 } from '@streamr/utils';\nimport { KeyPairIdentity } from './KeyPairIdentity';\nimport { SignatureType } from '@streamr/trackerless-network';\nconst signingUtil = new EcdsaSecp256r1();\n/**\n * An identity that uses ECDSA on the SECP256R1 curve\n */\nexport class ECDSAKeyPairIdentity extends KeyPairIdentity {\n    cachedJWK;\n    assertValidKeyPair() {\n        signingUtil.assertValidKeyPair(this.publicKey, this.privateKey);\n    }\n    // eslint-disable-next-line class-methods-use-this\n    getSignatureType() {\n        return SignatureType.ECDSA_SECP256R1;\n    }\n    async createMessageSignature(payload) {\n        // Cache the privateKey in JWK format for a performance optimization\n        this.cachedJWK ??= signingUtil.privateKeyToJWK(this.privateKey);\n        return signingUtil.createSignature(payload, this.cachedJWK);\n    }\n    /** @internal */\n    static fromConfig(config) {\n        const keyPairConfig = KeyPairIdentity.getKeyPairFromConfig(config);\n        const privateKey = hexToBinary(keyPairConfig.privateKey);\n        const publicKey = keyPairConfig.publicKey ? hexToBinary(keyPairConfig.publicKey) : signingUtil.getPublicKeyFromPrivateKey(privateKey);\n        return new ECDSAKeyPairIdentity(publicKey, privateKey);\n    }\n    static generate() {\n        const keyPair = signingUtil.generateKeyPair();\n        return new ECDSAKeyPairIdentity(keyPair.publicKey, keyPair.privateKey);\n    }\n}\n","import { KEY_TYPES } from '@streamr/utils';\nimport { SignatureType } from '@streamr/trackerless-network';\nimport { EthereumKeyPairIdentity } from './EthereumKeyPairIdentity';\nimport { EthereumProviderIdentity } from './EthereumProviderIdentity';\nimport { MLDSAKeyPairIdentity } from './MLDSAKeyPairIdentity';\nimport { ECDSAKeyPairIdentity } from './ECDSAKeyPairIdentity';\n/**\n * This is where config keyTypes are connected to Identity implementations.\n *\n * How to configure new Identity types:\n * 1. Add a new SignatureType entry to NetworkRpc.proto in network package\n * 2. Add the needed SigningUtil to SigningUtil.ts and tests to SigningUtil.test.ts\n * 3. Add the new SigningUtil to exports.ts in the utils package\n * 3. Create the Identity implementation itself (eg. extend KeyPairIdentity) and tests for it\n * 4. Wire everything together below\n */\nexport const IDENTITY_MAPPING = [\n    {\n        keyType: 'ECDSA_SECP256K1_EVM',\n        fromConfig: EthereumKeyPairIdentity.fromConfig,\n        signatureType: SignatureType.ECDSA_SECP256K1_EVM,\n    },\n    {\n        keyType: 'ECDSA_SECP256R1',\n        fromConfig: ECDSAKeyPairIdentity.fromConfig,\n        signatureType: SignatureType.ECDSA_SECP256R1,\n    },\n    {\n        keyType: 'ML_DSA_87',\n        fromConfig: MLDSAKeyPairIdentity.fromConfig,\n        signatureType: SignatureType.ML_DSA_87,\n    },\n];\nexport const DEFAULT_KEY_TYPE = 'ECDSA_SECP256K1_EVM';\n// Static check that all valid key types have corresponding factory functions above\nKEY_TYPES.forEach((keyType) => {\n    if (!IDENTITY_MAPPING.find((id) => id.keyType === keyType)) {\n        throw new Error(`keyType missing from IDENTITIES: ${keyType}`);\n    }\n});\n/**\n * Creates an Identity instance based on what's in the StreamrClient config\n */\nexport function createIdentityFromConfig(config) {\n    // Key pair -based identities\n    if (config.auth?.privateKey !== undefined) {\n        // Default key type is secp256k1 private key (=\"Ethereum private key\")\n        const keyType = config.auth.keyType ?? DEFAULT_KEY_TYPE;\n        const idMapping = IDENTITY_MAPPING.find((id) => id.keyType === keyType);\n        if (idMapping) {\n            return idMapping.fromConfig(config);\n        }\n        else {\n            throw new Error(`Unsupported keyType given in config: ${keyType}`);\n        }\n    }\n    // If a custom identity implementation is given, simply use that\n    if (config.auth?.identity !== undefined) {\n        return config.auth?.identity;\n    }\n    // Ethereum provider\n    if (config.auth?.ethereum !== undefined) {\n        return EthereumProviderIdentity.fromConfig(config);\n    }\n    // If no identity is configured, generate a random EthereumKeyPairIdentity\n    return EthereumKeyPairIdentity.generate();\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { toEthereumAddress, toUserIdRaw, SigningUtil } from '@streamr/utils';\nimport { Lifecycle, scoped } from 'tsyringe';\nimport { ERC1271ContractFacade } from '../contracts/ERC1271ContractFacade';\nimport { StreamrClientError } from '../StreamrClientError';\nimport { createLegacySignaturePayload } from './createLegacySignaturePayload';\nimport { createSignaturePayload } from './createSignaturePayload';\nimport { SignatureType } from '@streamr/trackerless-network';\nimport { IDENTITY_MAPPING } from '../identity/IdentityMapping';\n// Lookup structure SignatureType -> SigningUtil\nconst signingUtilBySignatureType = Object.fromEntries(IDENTITY_MAPPING.map((idMapping) => [idMapping.signatureType, SigningUtil.getInstance(idMapping.keyType)]));\nconst evmSigner = SigningUtil.getInstance('ECDSA_SECP256K1_EVM');\nlet SignatureValidator = class SignatureValidator {\n    erc1271ContractFacade;\n    constructor(erc1271ContractFacade) {\n        this.erc1271ContractFacade = erc1271ContractFacade;\n    }\n    /**\n     * Checks that the signature in the given StreamMessage is cryptographically valid.\n     * Resolves if valid, rejects otherwise.\n     */\n    async assertSignatureIsValid(streamMessage) {\n        let success;\n        try {\n            success = await this.validate(streamMessage);\n        }\n        catch (err) {\n            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n            throw new StreamrClientError(`An error occurred during address recovery from signature: ${err}`, 'INVALID_SIGNATURE', streamMessage);\n        }\n        if (!success) {\n            throw new StreamrClientError('Signature validation failed', 'INVALID_SIGNATURE', streamMessage);\n        }\n    }\n    async validate(streamMessage) {\n        const signingUtil = signingUtilBySignatureType[streamMessage.signatureType];\n        // Common case\n        if (signingUtil) {\n            return signingUtil.verifySignature(toUserIdRaw(streamMessage.getPublisherId()), createSignaturePayload(streamMessage), streamMessage.signature);\n        }\n        // Special handling: different payload computation, same SigningUtil\n        if (streamMessage.signatureType === SignatureType.ECDSA_SECP256K1_LEGACY) {\n            return evmSigner.verifySignature(\n            // publisherId is hex encoded Ethereum address string\n            toUserIdRaw(streamMessage.getPublisherId()), createLegacySignaturePayload(streamMessage), streamMessage.signature);\n        }\n        // Special handling: check signature with ERC-1271 contract facade\n        if (streamMessage.signatureType === SignatureType.ERC_1271) {\n            return this.erc1271ContractFacade.isValidSignature(toEthereumAddress(streamMessage.getPublisherId()), createSignaturePayload(streamMessage), streamMessage.signature);\n        }\n        throw new Error(`Cannot validate message signature, unsupported signatureType: \"${streamMessage.signatureType}\"`);\n    }\n};\nSignatureValidator = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __metadata(\"design:paramtypes\", [ERC1271ContractFacade])\n], SignatureValidator);\nexport { SignatureValidator };\n","import { toUserId } from '@streamr/utils';\nimport { StreamMessageType } from '../protocol/StreamMessage';\nimport { getPartitionCount } from '../StreamMetadata';\nimport { StreamrClientError } from '../StreamrClientError';\nimport { GroupKeyRequest, GroupKeyResponse } from '@streamr/trackerless-network';\nexport const validateStreamMessage = async (msg, streamRegistry, signatureValidator, config) => {\n    await doValidate(msg, streamRegistry, signatureValidator, config).catch((err) => {\n        // all StreamMessageError already have this streamMessage, maybe this is\n        // here if e.g. contract call fails? TODO is this really needed as\n        // the onError callback in messagePipeline knows which message\n        // it is handling?\n        err.streamMessage ??= msg;\n        throw err;\n    });\n};\n/**\n * Checks that the given StreamMessage satisfies the requirements of the protocol.\n * This includes checking permissions as well as signature. The method supports all\n * message types defined by the protocol.\n *\n * Resolves the promise if the message is valid, rejects otherwise.\n *\n * @param streamMessage the StreamMessage to validate.\n */\nconst doValidate = async (streamMessage, streamRegistry, signatureValidator, config) => {\n    await signatureValidator.assertSignatureIsValid(streamMessage);\n    switch (streamMessage.messageType) {\n        case StreamMessageType.MESSAGE:\n            return validateMessage(streamMessage, streamRegistry, config);\n        case StreamMessageType.GROUP_KEY_REQUEST:\n            return validateGroupKeyMessage(streamMessage, toUserId(GroupKeyRequest.fromBinary(streamMessage.content).recipientId), streamMessage.getPublisherId(), streamRegistry, config);\n        case StreamMessageType.GROUP_KEY_RESPONSE:\n            return validateGroupKeyMessage(streamMessage, streamMessage.getPublisherId(), toUserId(GroupKeyResponse.fromBinary(streamMessage.content).recipientId), streamRegistry, config);\n        default:\n            throw new StreamrClientError(`Unknown message type: ${streamMessage.messageType}!`, 'ASSERTION_FAILED', streamMessage);\n    }\n};\nconst validateMessage = async (streamMessage, streamRegistry, config) => {\n    const streamId = streamMessage.getStreamId();\n    if (config.validation.partitions) {\n        const streamMetadata = await streamRegistry.getStreamMetadata(streamId);\n        const partitionCount = getPartitionCount(streamMetadata);\n        if (streamMessage.getStreamPartition() < 0 || streamMessage.getStreamPartition() >= partitionCount) {\n            throw new StreamrClientError(`Partition ${streamMessage.getStreamPartition()} is out of range (0..${partitionCount - 1})`, 'INVALID_PARTITION', streamMessage);\n        }\n    }\n    if (config.validation.permissions) {\n        const sender = streamMessage.getPublisherId();\n        const isPublisher = await streamRegistry.isStreamPublisher(streamId, sender);\n        if (!isPublisher) {\n            throw new StreamrClientError(`${sender} is not a publisher on stream ${streamId}`, 'MISSING_PERMISSION', streamMessage);\n        }\n    }\n};\nconst validateGroupKeyMessage = async (streamMessage, expectedPublisherId, expectedSubscriberId, streamRegistry, config) => {\n    if (config.validation.permissions) {\n        const streamId = streamMessage.getStreamId();\n        const isPublisher = await streamRegistry.isStreamPublisher(streamId, expectedPublisherId);\n        if (!isPublisher) {\n            throw new StreamrClientError(`${expectedPublisherId} is not a publisher on stream ${streamId}`, 'MISSING_PERMISSION', streamMessage);\n        }\n        const isSubscriber = await streamRegistry.isStreamSubscriber(streamId, expectedSubscriberId);\n        if (!isSubscriber) {\n            throw new StreamrClientError(`${expectedSubscriberId} is not a subscriber on stream ${streamId}`, 'MISSING_PERMISSION', streamMessage);\n        }\n    }\n};\n","import { getSubtle } from '@streamr/utils';\nfunction arrayBufferToString(buffer) {\n    return String.fromCharCode.apply(null, [...new Uint8Array(buffer)]);\n}\nasync function exportCryptoKey(key, { isPrivate = false } = {}) {\n    const keyType = isPrivate ? 'pkcs8' : 'spki';\n    const exported = await getSubtle().exportKey(keyType, key);\n    const exportedAsString = arrayBufferToString(exported);\n    const exportedAsBase64 = btoa(exportedAsString);\n    const TYPE = isPrivate ? 'PRIVATE' : 'PUBLIC';\n    return `-----BEGIN ${TYPE} KEY-----\\n${exportedAsBase64}\\n-----END ${TYPE} KEY-----\\n`;\n}\nexport async function createRSAKeyPair(keyLength) {\n    const { publicKey, privateKey } = await getSubtle().generateKey({\n        name: 'RSA-OAEP',\n        modulusLength: keyLength,\n        publicExponent: new Uint8Array([1, 0, 1]), // 65537\n        hash: 'SHA-256',\n    }, true, ['encrypt', 'decrypt']);\n    const [exportedPrivate, exportedPublic] = await Promise.all([\n        exportCryptoKey(privateKey, {\n            isPrivate: true,\n        }),\n        exportCryptoKey(publicKey, {\n            isPrivate: false,\n        }),\n    ]);\n    return { privateKey: exportedPrivate, publicKey: exportedPublic };\n}\n","import { AsymmetricEncryptionType } from '@streamr/trackerless-network';\nimport { utf8ToBinary } from '@streamr/utils';\nimport { createRSAKeyPair } from '@/createRSAKeyPair';\n/**\n * The length of encrypted data determines the minimum length. In StreamrClient we use RSA\n * for encrypting 32 byte GroupKeys. In Node environment 585 bits is enough, but in\n * browser environment we need 640.\n * https://en.wikipedia.org/wiki/Optimal_asymmetric_encryption_padding\n */\nexport const MIN_KEY_LENGTH = 640;\nexport class RSAKeyPair {\n    // the keys are in PEM format\n    privateKey;\n    publicKey;\n    constructor(privateKey, publicKey) {\n        this.privateKey = privateKey;\n        this.publicKey = publicKey;\n    }\n    getPublicKey() {\n        // Note: the public key is passed around as an utf-8 encoded string for some legacy reasons\n        return utf8ToBinary(this.publicKey);\n    }\n    getPrivateKey() {\n        // Note: the public key is passed around as an utf-8 encoded string for some legacy reasons\n        return utf8ToBinary(this.privateKey);\n    }\n    // eslint-disable-next-line class-methods-use-this\n    getEncryptionType() {\n        return AsymmetricEncryptionType.RSA;\n    }\n    static async create(keyLength) {\n        const { privateKey, publicKey } = await createRSAKeyPair(keyLength);\n        return new RSAKeyPair(privateKey, publicKey);\n    }\n}\n","import { ml_kem1024 } from '@noble/post-quantum/ml-kem';\nimport { AsymmetricEncryptionType } from '@streamr/trackerless-network';\nexport class MLKEMKeyPair {\n    privateKey;\n    publicKey;\n    constructor(privateKey, publicKey) {\n        this.privateKey = privateKey;\n        this.publicKey = publicKey;\n    }\n    getPublicKey() {\n        return this.publicKey;\n    }\n    getPrivateKey() {\n        return this.privateKey;\n    }\n    // eslint-disable-next-line class-methods-use-this\n    getEncryptionType() {\n        return AsymmetricEncryptionType.ML_KEM;\n    }\n    static create() {\n        const keyPair = ml_kem1024.keygen();\n        return new MLKEMKeyPair(Buffer.from(keyPair.secretKey), Buffer.from(keyPair.publicKey));\n    }\n}\n","import { AsymmetricEncryptionType, EncryptionType, SignatureType } from '@streamr/trackerless-network';\nimport { RSAKeyPair } from '../encryption/RSAKeyPair';\nimport { MLKEMKeyPair } from '../encryption/MLKEMKeyPair';\nimport { StreamrClientError } from '../StreamrClientError';\nconst quantumResistantSignatureTypes = new Set([SignatureType.ML_DSA_87]);\nconst quantumResistantAsymmetricEncryptionTypes = new Set([AsymmetricEncryptionType.ML_KEM]);\nconst quantumResistantEncryptionTypes = new Set([EncryptionType.AES]);\nexport function assertCompliantIdentity(identity, config) {\n    const isQuantumResistant = isQuantumResistantIdentity(identity);\n    const quantumResistanceIsRequired = config.encryption?.requireQuantumResistantSignatures;\n    if (quantumResistanceIsRequired && !isQuantumResistant) {\n        throw new StreamrClientError(`Quantum resistant signatures are required, but the configured key type doesn't enable quantum resistance!`, 'SIGNATURE_POLICY_VIOLATION');\n    }\n}\nexport function isCompliantAsymmetricEncryptionType(encryptionType, config) {\n    const isQuantumResistant = quantumResistantAsymmetricEncryptionTypes.has(encryptionType);\n    const quantumResistanceIsRequired = config.encryption?.requireQuantumResistantKeyExchange;\n    return isQuantumResistant || !quantumResistanceIsRequired;\n}\nexport function isCompliantEncryptionType(encryptionType, config) {\n    const isQuantumResistant = quantumResistantEncryptionTypes.has(encryptionType);\n    const quantumResistanceIsRequired = config.encryption?.requireQuantumResistantEncryption;\n    return isQuantumResistant || !quantumResistanceIsRequired;\n}\nexport function isCompliantSignatureType(signatureType, config) {\n    const isQuantumResistant = quantumResistantSignatureTypes.has(signatureType);\n    const quantumResistanceIsRequired = config.encryption?.requireQuantumResistantSignatures;\n    return isQuantumResistant || !quantumResistanceIsRequired;\n}\nfunction isQuantumResistantIdentity(identity) {\n    return quantumResistantSignatureTypes.has(identity.getSignatureType());\n}\n/**\n * Creates a suitable key pair for key exchange based in configured Identity and config.\n * Uses ML-KEM if required by config, OR if the identity keys imply quantum secure signatures.\n */\nexport async function createCompliantExchangeKeys(identity, config) {\n    if (config.encryption.requireQuantumResistantKeyExchange || isQuantumResistantIdentity(identity)) {\n        return MLKEMKeyPair.create();\n    }\n    else {\n        return RSAKeyPair.create(config.encryption.rsaKeyLength);\n    }\n}\n","export const Tokens = {\n    Resends: Symbol('Resends'),\n    Subscriber: Symbol('Subscriber')\n};\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { StreamPartIDUtils, toUserId, toUserIdRaw } from '@streamr/utils';\nimport { Lifecycle, delay, inject, scoped } from 'tsyringe';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Identity, IdentityInjectionToken } from '../identity/Identity';\nimport { ConfigInjectionToken } from '../ConfigTypes';\nimport { NetworkNodeFacade } from '../NetworkNodeFacade';\nimport { StreamRegistry } from '../contracts/StreamRegistry';\nimport { MessageID } from '../protocol/MessageID';\nimport { StreamMessageType } from '../protocol/StreamMessage';\nimport { createRandomMsgChainId } from '../publish/messageChain';\nimport { MessageSigner } from '../signature/MessageSigner';\nimport { SignatureValidator } from '../signature/SignatureValidator';\nimport { LoggerFactory } from '../utils/LoggerFactory';\nimport { pOnce, withThrottling } from '../utils/promises';\nimport { MaxSizedSet } from '../utils/utils';\nimport { validateStreamMessage } from '../utils/validateStreamMessage';\nimport { LocalGroupKeyStore } from './LocalGroupKeyStore';\nimport { EncryptionUtil } from './EncryptionUtil';\nimport { AsymmetricEncryptionType, ContentType, EncryptionType, GroupKeyRequest, GroupKeyResponse, SignatureType } from '@streamr/trackerless-network';\nimport { createCompliantExchangeKeys } from '../utils/encryptionCompliance';\nimport { StreamrClientError } from '../StreamrClientError';\nimport { Tokens } from '../tokens';\nconst MAX_PENDING_REQUEST_COUNT = 50000; // just some limit, we can tweak the number if needed\n/*\n * Sends group key requests and receives group key responses\n */\nlet SubscriberKeyExchange = class SubscriberKeyExchange {\n    keyPair;\n    pendingRequests = new MaxSizedSet(MAX_PENDING_REQUEST_COUNT);\n    networkNodeFacade;\n    streamRegistry;\n    signatureValidator;\n    messageSigner;\n    store;\n    subscriber;\n    identity;\n    logger;\n    ensureStarted;\n    config;\n    requestGroupKey;\n    constructor(networkNodeFacade, streamRegistry, signatureValidator, messageSigner, store, subscriber, config, identity, loggerFactory) {\n        this.networkNodeFacade = networkNodeFacade;\n        this.streamRegistry = streamRegistry;\n        this.signatureValidator = signatureValidator;\n        this.messageSigner = messageSigner;\n        this.store = store;\n        this.subscriber = subscriber;\n        this.identity = identity;\n        this.logger = loggerFactory.createLogger('SubscriberKeyExchange');\n        this.config = config;\n        // Setting explicit keys disables the key-exchange\n        if (config.encryption.keys === undefined) {\n            this.ensureStarted = pOnce(async () => {\n                this.keyPair = await createCompliantExchangeKeys(identity, config);\n                networkNodeFacade.addMessageListener((msg) => this.onMessage(msg));\n                this.logger.debug('Started');\n            });\n            this.requestGroupKey = withThrottling((groupKeyId, publisherId, streamPartId) => {\n                return this.doRequestGroupKey(groupKeyId, publisherId, streamPartId);\n            }, config.encryption.maxKeyRequestsPerSecond);\n        }\n        else {\n            this.ensureStarted = async () => {\n                throw new StreamrClientError('Assertion failed', 'ASSERTION_FAILED');\n            };\n            this.requestGroupKey = async () => {\n                throw new StreamrClientError('Assertion failed', 'ASSERTION_FAILED');\n            };\n        }\n    }\n    async doRequestGroupKey(groupKeyId, publisherId, streamPartId) {\n        await this.ensureStarted();\n        const requestId = uuidv4();\n        const { message, request } = await this.createRequest(groupKeyId, streamPartId, publisherId, requestId);\n        await this.networkNodeFacade.broadcast(message);\n        this.pendingRequests.add(requestId);\n        this.logger.debug('Sent group key request (waiting for response)', {\n            groupKeyId,\n            requestId,\n            publisherId,\n            keyEncryptionType: AsymmetricEncryptionType[request.encryptionType]\n        });\n    }\n    async createRequest(groupKeyId, streamPartId, publisherId, requestId) {\n        const request = {\n            recipientId: toUserIdRaw(publisherId),\n            requestId,\n            publicKey: this.keyPair.getPublicKey(),\n            groupKeyIds: [groupKeyId],\n            encryptionType: this.keyPair.getEncryptionType(),\n        };\n        const erc1271contract = this.subscriber.getERC1271ContractAddress(streamPartId);\n        const message = await this.messageSigner.createSignedMessage({\n            messageId: new MessageID(StreamPartIDUtils.getStreamID(streamPartId), StreamPartIDUtils.getStreamPartition(streamPartId), Date.now(), 0, erc1271contract === undefined ? await this.identity.getUserId() : toUserId(erc1271contract), createRandomMsgChainId()),\n            content: GroupKeyRequest.toBinary(request),\n            contentType: ContentType.BINARY,\n            messageType: StreamMessageType.GROUP_KEY_REQUEST,\n            encryptionType: EncryptionType.NONE,\n        }, erc1271contract === undefined ? this.identity.getSignatureType() : SignatureType.ERC_1271);\n        return { message, request };\n    }\n    async onMessage(msg) {\n        if (msg.messageType === StreamMessageType.GROUP_KEY_RESPONSE) {\n            try {\n                const { requestId, recipientId, groupKeys: encryptedGroupKeys, encryptionType } = GroupKeyResponse.fromBinary(msg.content);\n                const recipientUserId = toUserId(recipientId);\n                if (await this.isAssignedToMe(msg.getStreamPartID(), recipientUserId, requestId)) {\n                    this.logger.debug('Handle group key response', { requestId });\n                    this.pendingRequests.delete(requestId);\n                    await validateStreamMessage(msg, this.streamRegistry, this.signatureValidator, this.config);\n                    await Promise.all(encryptedGroupKeys.map(async (encryptedKey) => {\n                        const key = await EncryptionUtil.decryptWithPrivateKey(encryptedKey.data, this.keyPair.getPrivateKey(), encryptionType);\n                        await this.store.set(encryptedKey.id, msg.getPublisherId(), key);\n                    }));\n                }\n            }\n            catch (err) {\n                this.logger.debug('Failed to handle group key response', { err });\n            }\n        }\n    }\n    async isAssignedToMe(streamPartId, recipientId, requestId) {\n        if (this.pendingRequests.has(requestId)) {\n            const myId = await this.identity.getUserId();\n            const erc1271Contract = this.subscriber.getERC1271ContractAddress(streamPartId);\n            return (recipientId === myId) || ((erc1271Contract !== undefined) && (recipientId === toUserId(erc1271Contract)));\n        }\n        return false;\n    }\n};\nSubscriberKeyExchange = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(1, inject(delay(() => StreamRegistry))),\n    __param(5, inject(Tokens.Subscriber)),\n    __param(6, inject(ConfigInjectionToken)),\n    __param(7, inject(IdentityInjectionToken)),\n    __metadata(\"design:paramtypes\", [NetworkNodeFacade,\n        StreamRegistry,\n        SignatureValidator,\n        MessageSigner,\n        LocalGroupKeyStore, Function, Object, Identity,\n        LoggerFactory])\n], SubscriberKeyExchange);\nexport { SubscriberKeyExchange };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { hexToBinary, StreamPartIDUtils, waitForEvent } from '@streamr/utils';\nimport { randomBytes } from '@noble/post-quantum/utils';\nimport { Lifecycle, inject, scoped } from 'tsyringe';\nimport { Identity, IdentityInjectionToken } from '../identity/Identity';\nimport { ConfigInjectionToken } from '../ConfigTypes';\nimport { DestroySignal } from '../DestroySignal';\nimport { StreamrClientEventEmitter } from '../events';\nimport { uuid } from '../utils/uuid';\nimport { GroupKey } from './GroupKey';\nimport { LocalGroupKeyStore } from './LocalGroupKeyStore';\nimport { SubscriberKeyExchange } from './SubscriberKeyExchange';\nimport { StreamIDBuilder } from '../StreamIDBuilder';\nimport { createLazyMap } from '../utils/Mapping';\nimport { StreamrClientError } from '../StreamrClientError';\n/**\n * Gets an explicit encryption key from config for a given stream.\n * Returns undefined if no key is configured for the stream.\n */\nexport const getExplicitKey = async (streamId, streamIdBuilder, config) => {\n    if (config.keys !== undefined) {\n        for (const entry of Object.entries(config.keys)) {\n            if (await streamIdBuilder.toStreamID(entry[0]) === streamId) {\n                return new GroupKey(entry[1].id, Buffer.from(hexToBinary(entry[1].data)));\n            }\n        }\n    }\n    return undefined;\n};\nlet GroupKeyManager = class GroupKeyManager {\n    subscriberKeyExchange;\n    localGroupKeyStore;\n    explicitKeys;\n    config;\n    identity;\n    eventEmitter;\n    destroySignal;\n    constructor(subscriberKeyExchange, localGroupKeyStore, streamIdBuilder, config, identity, eventEmitter, destroySignal) {\n        this.subscriberKeyExchange = subscriberKeyExchange;\n        this.localGroupKeyStore = localGroupKeyStore;\n        this.config = config;\n        this.identity = identity;\n        this.eventEmitter = eventEmitter;\n        this.destroySignal = destroySignal;\n        if (config.encryption.keys !== undefined) {\n            this.explicitKeys = createLazyMap({\n                valueFactory: async (streamId) => {\n                    return getExplicitKey(streamId, streamIdBuilder, config.encryption);\n                }\n            });\n        }\n    }\n    async fetchKey(streamPartId, groupKeyId, publisherId) {\n        // If explicit keys are defined only those keys are used.\n        if (this.explicitKeys !== undefined) {\n            const explicitKey = await this.explicitKeys.get(StreamPartIDUtils.getStreamID(streamPartId));\n            if (explicitKey !== undefined) {\n                return explicitKey;\n            }\n            throw new StreamrClientError(`No encryption key available for stream part ID: groupKeyId=${groupKeyId}, streamPartId=${streamPartId}`, 'UNEXPECTED_INPUT');\n        }\n        // 2nd try: local storage\n        let groupKey = await this.localGroupKeyStore.get(groupKeyId, publisherId);\n        if (groupKey !== undefined) {\n            return groupKey;\n        }\n        // 3rd try: Streamr key-exchange\n        await this.subscriberKeyExchange.requestGroupKey(groupKeyId, publisherId, streamPartId);\n        const groupKeyIds = await waitForEvent(\n        // TODO remove \"as any\" type casing in NET-889\n        this.eventEmitter, 'encryptionKeyStoredToLocalStore', this.config.encryption.keyRequestTimeout, (storedGroupKeyId) => storedGroupKeyId === groupKeyId, this.destroySignal.abortSignal);\n        groupKey = await this.localGroupKeyStore.get(groupKeyIds[0], publisherId);\n        return groupKey;\n    }\n    async fetchLatestEncryptionKey(publisherId, streamId) {\n        if (publisherId !== (await this.identity.getUserId())) {\n            throw new Error('storeKey: fetching latest encryption keys for other publishers not supported.');\n        }\n        const keyId = await this.localGroupKeyStore.getLatestEncryptionKeyId(publisherId, streamId);\n        return keyId !== undefined ? this.localGroupKeyStore.get(keyId, publisherId) : undefined;\n    }\n    async storeKey(groupKey, publisherId, streamId) {\n        if (publisherId !== (await this.identity.getUserId())) { // TODO: unit test?\n            throw new Error('storeKey: storing latest encryption keys for other publishers not supported.');\n        }\n        if (groupKey === undefined) {\n            const keyData = Buffer.from(randomBytes(32));\n            groupKey = new GroupKey(uuid('GroupKey'), keyData);\n        }\n        await this.localGroupKeyStore.set(groupKey.id, publisherId, groupKey.data);\n        await this.localGroupKeyStore.setLatestEncryptionKeyId(groupKey.id, publisherId, streamId);\n        return groupKey;\n    }\n    addKeyToLocalStore(groupKey, publisherId) {\n        return this.localGroupKeyStore.set(groupKey.id, publisherId, groupKey.data);\n    }\n};\nGroupKeyManager = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(3, inject(ConfigInjectionToken)),\n    __param(4, inject(IdentityInjectionToken)),\n    __metadata(\"design:paramtypes\", [SubscriberKeyExchange,\n        LocalGroupKeyStore,\n        StreamIDBuilder, Object, Identity,\n        StreamrClientEventEmitter,\n        DestroySignal])\n], GroupKeyManager);\nexport { GroupKeyManager };\n","import { EncryptionType } from '@streamr/trackerless-network';\nimport { EncryptionUtil } from '../encryption/EncryptionUtil';\nimport { StreamMessage } from '../protocol/StreamMessage';\nimport { StreamrClientError } from '../StreamrClientError';\n// TODO if this.destroySignal.isDestroyed() is true, would it make sense to reject the promise\n// and not to return the original encrypted message?\n// - e.g. StoppedError, which is not visible to end-user\nexport const decrypt = async (streamMessage, groupKeyManager, destroySignal) => {\n    if (destroySignal.isDestroyed()) {\n        return streamMessage;\n    }\n    let groupKey;\n    try {\n        groupKey = await groupKeyManager.fetchKey(streamMessage.getStreamPartID(), streamMessage.groupKeyId, streamMessage.getPublisherId());\n    }\n    catch {\n        if (destroySignal.isDestroyed()) {\n            return streamMessage;\n        }\n        throw new StreamrClientError(`Could not get encryption key ${streamMessage.groupKeyId}`, 'DECRYPT_ERROR', streamMessage);\n    }\n    if (destroySignal.isDestroyed()) {\n        return streamMessage;\n    }\n    const [content, newGroupKey] = EncryptionUtil.decryptStreamMessage(streamMessage, groupKey);\n    if (newGroupKey !== undefined) {\n        await groupKeyManager.addKeyToLocalStore(newGroupKey, streamMessage.getPublisherId());\n    }\n    return new StreamMessage({\n        ...streamMessage,\n        content,\n        encryptionType: EncryptionType.NONE\n    });\n};\n","import { Gate } from '@streamr/utils';\nimport { PushBuffer } from './../utils/PushBuffer';\nclass MsgChainProcessor {\n    busy = new Gate(true);\n    inputBuffer = [];\n    outputBuffer;\n    processMessageFn;\n    onError;\n    constructor(outputBuffer, processMessageFn, onError) {\n        this.outputBuffer = outputBuffer;\n        this.processMessageFn = processMessageFn;\n        this.onError = onError;\n    }\n    async addMessage(message) {\n        this.inputBuffer.push(message);\n        if (this.busy.isOpen()) {\n            this.busy.close();\n            while (this.inputBuffer.length > 0) {\n                const nextMessage = this.inputBuffer.shift();\n                try {\n                    const processedMessage = await this.processMessageFn(nextMessage);\n                    this.outputBuffer.push(processedMessage);\n                }\n                catch (e) {\n                    this.onError.trigger(e);\n                }\n            }\n            this.busy.open();\n        }\n    }\n}\nexport class MsgChainUtil {\n    outputBuffer = new PushBuffer();\n    processors = new Map();\n    processMessageFn;\n    onError;\n    constructor(processMessageFn, onError) {\n        this.processMessageFn = processMessageFn;\n        this.onError = onError;\n    }\n    addMessage(message) {\n        const id = `${message.getPublisherId()}-${message.getMsgChainId()}`;\n        let processor = this.processors.get(id);\n        if (processor === undefined) {\n            processor = new MsgChainProcessor(this.outputBuffer, this.processMessageFn, this.onError);\n            this.processors.set(id, processor);\n        }\n        processor.addMessage(message); // add a task, but don't wait for it to complete\n    }\n    async flush() {\n        await Promise.all(Array.from(this.processors.values()).map((p) => p.busy.waitUntilOpen()));\n    }\n    stop(err) {\n        this.outputBuffer.endWrite(err);\n    }\n    [Symbol.asyncIterator]() {\n        return this.outputBuffer;\n    }\n}\n","import { Logger, wait } from '@streamr/utils';\nimport sample from 'lodash/sample';\nconst logger = new Logger('GapFiller');\nconst runAbortableTask = async (run) => {\n    try {\n        await run();\n    }\n    catch (e) {\n        if (e.code !== 'AbortError') {\n            throw e;\n        }\n    }\n};\nexport class GapFiller {\n    currentTask = undefined;\n    chain;\n    resend;\n    getStorageNodeAddresses;\n    strategy;\n    initialWaitTime;\n    retryWaitTime;\n    maxRequestsPerGap;\n    constructor(opts) {\n        this.chain = opts.chain;\n        this.resend = opts.resend;\n        this.getStorageNodeAddresses = opts.getStorageNodeAddresses;\n        this.strategy = opts.strategy;\n        this.initialWaitTime = opts.initialWaitTime;\n        this.retryWaitTime = opts.retryWaitTime;\n        this.maxRequestsPerGap = opts.maxRequestsPerGap;\n        opts.abortSignal.addEventListener('abort', () => {\n            this.currentTask?.abortController.abort();\n        });\n    }\n    start() {\n        this.chain.on('gapFound', (gap) => this.onGapFound(gap));\n        this.chain.on('gapResolved', () => this.onGapResolved());\n    }\n    async onGapFound(gap) {\n        const abortController = new AbortController();\n        this.currentTask = {\n            gap,\n            abortController\n        };\n        try {\n            await runAbortableTask(async () => {\n                await wait(this.initialWaitTime, abortController.signal);\n                if (this.maxRequestsPerGap > 0) {\n                    await this.fetchFromStorageNode(gap, abortController.signal);\n                }\n                /*\n                 * The \"fetchFromStorageNode\" typically provides all the missing messages and the chain emits the\n                 * \"gapResolved\" event. In that case \"chain.on('gapResolved')\" callback aborts this task\n                 * before we reach this line. Alternatively the callback may have been called by the chain because\n                 * it received the missing messages from another source (i.e. the real-time pipeline). But if\n                 * this task has not been aborted by either of these reasons, we resolve the gap manually as we\n                 * don't try to fill it anymore.\n                 */\n                if (this.strategy === 'full') {\n                    this.chain.resolveMessages(gap.to.getMessageRef(), true);\n                }\n                else if (this.strategy === 'light') {\n                    this.chain.resolveMessages(undefined, false);\n                }\n                else {\n                    throw new Error(`Assertion failed: unexpected gap fill strategy \"${this.strategy}\"`);\n                }\n            });\n        }\n        catch (err) {\n            this.onError(err, gap);\n        }\n    }\n    onGapResolved() {\n        if (this.currentTask !== undefined) {\n            this.currentTask.abortController.abort();\n            this.currentTask = undefined;\n        }\n    }\n    async fetchFromStorageNode(gap, abortSignal) {\n        const addresses = await this.getStorageNodeAddresses();\n        if (addresses.length > 0) {\n            for (let i = 0; i < this.maxRequestsPerGap; i++) {\n                try {\n                    await runAbortableTask(async () => {\n                        const msgs = this.resend(gap, sample(addresses), abortSignal);\n                        for await (const msg of msgs) {\n                            this.chain.addMessage(msg);\n                        }\n                    });\n                }\n                catch (err) {\n                    this.onError(err, gap);\n                }\n                if (i !== this.maxRequestsPerGap - 1) {\n                    await wait(this.retryWaitTime, abortSignal);\n                }\n            }\n        }\n    }\n    onError(error, gap) {\n        logger.debug('Unable to fill gap', {\n            error: {\n                message: error?.message,\n                code: error?.code,\n            },\n            context: this.chain.getContext(),\n            from: gap.from.getMessageRef(),\n            to: gap.to.getMessageRef()\n        });\n    }\n}\n","import { Gate, Heap, Logger } from '@streamr/utils';\nimport { EventEmitter } from 'eventemitter3';\nconst logger = new Logger('OrderedMessageChain');\nconst areEqualRefs = (ref1, ref2) => {\n    return ref1.compareTo(ref2) === 0;\n};\n/*\n * This class represents a chain of messages, in which message are in ascencing order.\n\n * There is always one message reference (timestamp + sequence number) to the head of the chain,\n * and a message can be immediately added to the chain if the \"prevMsgRef\" of the new message is equal\n * to the head of the chain. If a message can't be immediately added to the chain, it is stored to\n * an internal heap structure (a priority queue which is ordered my message references).\n *\n * Messages are added to the chain by calling \"addMessage\" method. If the new message can be immediately\n * added to the chain, the \"orderedMessageAdded\" event is emitted.\n *\n * If the new message can't be immediately added to the chain, there must be some missing messages\n * which we need before the message can be processed. In that case we emit the \"gapFound\" event.\n *\n * Typically the \"gapFound\" triggers some component to provide us more messages (e.g. fetching\n * messages from a storage node). Also the component which produced the original message continues\n * to provide more messages. Both of these sources provide messages by calling the \"addMessage\" method.\n *\n * The sources may provide us messages which can be immediately added to the chain. In that case\n * the messages is added and the \"orderedMessageAdded\" event is emitted. As the head of the chain changes,\n * there may be also some messages in the heap which can also be added now. The \"orderedMessageAdded\"\n * is emmitted for those messages, too.\n *\n * If the sources provide message which can't be immediatelly added to the chain, we store the message\n * to the internal heap structure normally, but don't emit \"gapFound\" event as there is already\n * an existing gap.\n *\n * It is very likely that eventually the sources will produce all the missing messages. When that happens\n * the gap is now filled and the \"gapResolved\" event is emitted.\n *\n * Alternatively if don't get all the missing messages from the sources, an external component may call\n * the \"resolveMessages\" method. It enforces us to ignore the remaining missing messages and allows the\n * chain to proceed with new messages. In that case we iterate the internal heap and some of the messages\n * to the  chain, and typically the last of the messages resolves the gap (and therefore \"gapResolved\"\n * is emitted).\n *\n * The consequence from rules above is that we always process on gap at a time. For each \"gapFound\" event\n * there is always a matching \"gapResolved\" event emitted before new \"gapFound\" event can be emitted.\n *\n * Implementation:\n * - The \"prevMessageRef\" field of a message tells us whether there are missing messages between\n *   that message and some other messages. Typically all messages contain that field.\n *   If a message doesn't contain \"prevMessageRef\" field, we can't know if there are some missing\n *   messages, and therefore we just add that message to the chain as a latest message (if\n *   it is newer than the current latest message).\n * - There is a check about stale messages in \"addMessage\". It ensures that we don't re-process\n *   any messages which we've already processed.\n */\nexport class OrderedMessageChain {\n    lastOrderedMsg;\n    currentGap;\n    pendingMsgs;\n    eventEmitter;\n    context;\n    abortSignal;\n    constructor(context, abortSignal) {\n        this.context = context;\n        this.pendingMsgs = new Heap((msg1, msg2) => {\n            return msg1.getMessageRef().compareTo(msg2.getMessageRef());\n        });\n        this.eventEmitter = new EventEmitter();\n        this.abortSignal = abortSignal;\n        abortSignal.addEventListener('abort', () => {\n            this.eventEmitter.removeAllListeners();\n        });\n    }\n    addMessage(msg) {\n        if (!this.isStaleMessage(msg)) {\n            this.pendingMsgs.push(msg);\n            this.consumePendingOrderedMessages((msg) => this.isNextOrderedMessage(msg));\n        }\n    }\n    resolveMessages(to, gapCheckEnabled) {\n        this.consumePendingOrderedMessages((msg) => {\n            if (this.isNextOrderedMessage(msg)) {\n                return true;\n            }\n            else if ((to === undefined) || (msg.getMessageRef().compareTo(to) <= 0)) {\n                const gap = {\n                    from: this.lastOrderedMsg,\n                    to: msg\n                };\n                this.eventEmitter.emit('unfillableGap', gap);\n                return true;\n            }\n            else {\n                return false;\n            }\n        }, gapCheckEnabled);\n    }\n    async waitUntilIdle() {\n        const isIdle = () => this.pendingMsgs.isEmpty() || this.abortSignal.aborted;\n        if (!isIdle()) {\n            const gate = new Gate(false);\n            const listener = () => {\n                if (isIdle()) {\n                    gate.open();\n                }\n            };\n            this.on('orderedMessageAdded', listener);\n            this.abortSignal.addEventListener('abort', listener);\n            await gate.waitUntilOpen();\n            this.off('orderedMessageAdded', listener);\n            this.abortSignal.removeEventListener('abort', listener);\n        }\n    }\n    consumePendingOrderedMessages(isConsumable, gapCheckEnabled = true) {\n        while (!this.pendingMsgs.isEmpty() && isConsumable(this.pendingMsgs.peek())) {\n            const next = this.pendingMsgs.pop();\n            this.lastOrderedMsg = next;\n            this.eventEmitter.emit('orderedMessageAdded', next);\n            this.checkGapResolved();\n        }\n        if (gapCheckEnabled) {\n            this.checkGapFound();\n        }\n    }\n    checkGapFound() {\n        if (!this.pendingMsgs.isEmpty() && (this.currentGap === undefined)) {\n            this.currentGap = {\n                from: this.lastOrderedMsg,\n                to: this.pendingMsgs.peek()\n            };\n            logger.debug('Gap found', {\n                context: this.context,\n                from: this.currentGap.from.getMessageRef(),\n                to: this.currentGap.to.getMessageRef()\n            });\n            this.eventEmitter.emit('gapFound', this.currentGap);\n        }\n    }\n    checkGapResolved() {\n        if ((this.currentGap !== undefined) && areEqualRefs(this.lastOrderedMsg.getMessageRef(), this.currentGap.to.getMessageRef())) {\n            const gap = this.currentGap;\n            this.currentGap = undefined;\n            logger.debug('Gap resolved', {\n                context: this.context,\n                from: gap.from.getMessageRef(),\n                to: gap.to.getMessageRef()\n            });\n            this.eventEmitter.emit('gapResolved');\n        }\n    }\n    isNextOrderedMessage(msg) {\n        const previousRef = msg.prevMsgRef;\n        return (this.lastOrderedMsg === undefined) || (previousRef === undefined) || areEqualRefs(previousRef, this.lastOrderedMsg.getMessageRef());\n    }\n    isStaleMessage(msg) {\n        return ((this.lastOrderedMsg !== undefined) && (msg.getMessageRef().compareTo(this.lastOrderedMsg.getMessageRef()) <= 0))\n            || this.pendingMsgs.contains(msg);\n    }\n    getContext() {\n        return this.context;\n    }\n    on(eventName, listener) {\n        this.eventEmitter.on(eventName, listener);\n    }\n    once(eventName, listener) {\n        this.eventEmitter.on(eventName, listener);\n    }\n    off(eventName, listener) {\n        this.eventEmitter.off(eventName, listener);\n    }\n}\n","import { StreamPartIDUtils, executeSafePromise } from '@streamr/utils';\nimport { createLazyMap } from '../../utils/Mapping';\nimport { PushBuffer } from '../../utils/PushBuffer';\nimport { GapFiller } from './GapFiller';\nimport { OrderedMessageChain } from './OrderedMessageChain';\nconst createMessageChain = (context, getStorageNodes, onUnfillableGap, resends, config, abortSignal) => {\n    const resend = async function* (gap, storageNodeAddress, abortSignal) {\n        const msgs = await resends.resend(context.streamPartId, {\n            from: {\n                timestamp: gap.from.getMessageRef().timestamp,\n                sequenceNumber: gap.from.getMessageRef().sequenceNumber + 1,\n            },\n            to: gap.to.prevMsgRef,\n            publisherId: context.publisherId,\n            msgChainId: context.msgChainId,\n            raw: true\n        }, async () => [storageNodeAddress], abortSignal);\n        yield* msgs;\n    };\n    const chain = new OrderedMessageChain(context, abortSignal);\n    chain.on('unfillableGap', (gap) => onUnfillableGap(gap));\n    const gapFiller = new GapFiller({\n        chain,\n        resend,\n        getStorageNodeAddresses: () => getStorageNodes(StreamPartIDUtils.getStreamID(context.streamPartId)),\n        strategy: config.gapFillStrategy,\n        initialWaitTime: config.gapFillTimeout,\n        retryWaitTime: config.retryResendAfter,\n        maxRequestsPerGap: (config.gapFill) ? config.maxGapRequests : 0,\n        abortSignal\n    });\n    gapFiller.start();\n    return chain;\n};\n/**\n * Manages message ordering and gap filling (per stream part). Provides an iterator\n * to read the sequence of messages which are in ascending order and gaps are filled\n * (if enabled, and the missing message available in a storage node)\n */\nexport class OrderMessages {\n    chains;\n    outBuffer = new PushBuffer();\n    abortController = new AbortController();\n    constructor(streamPartId, getStorageNodes, onUnfillableGap, resends, config) {\n        this.chains = createLazyMap({\n            valueFactory: async ([publisherId, msgChainId]) => {\n                const chain = createMessageChain({\n                    streamPartId,\n                    publisherId,\n                    msgChainId\n                }, getStorageNodes, onUnfillableGap, resends, config, this.abortController.signal);\n                chain.on('orderedMessageAdded', (msg) => this.onOrdered(msg));\n                return chain;\n            }\n        });\n    }\n    onOrdered(orderedMessage) {\n        if (!this.outBuffer.isDone()) {\n            executeSafePromise(() => this.outBuffer.push(orderedMessage));\n        }\n    }\n    destroy() {\n        this.outBuffer.endWrite();\n        this.abortController.abort();\n    }\n    async addMessages(src) {\n        try {\n            for await (const msg of src) {\n                if (this.abortController.signal.aborted) {\n                    return;\n                }\n                const chain = await this.chains.get([msg.getPublisherId(), msg.getMsgChainId()]);\n                chain.addMessage(msg);\n            }\n            await Promise.all([...this.chains.values()].map((chain) => chain.waitUntilIdle()));\n            this.outBuffer.endWrite();\n        }\n        catch (err) {\n            this.outBuffer.endWrite(err);\n        }\n    }\n    [Symbol.asyncIterator]() {\n        return this.outBuffer;\n    }\n}\n","import { decrypt } from '../encryption/decrypt';\nimport { StreamMessage } from '../protocol/StreamMessage';\nimport { PushPipeline } from '../utils/PushPipeline';\nimport { validateStreamMessage } from '../utils/validateStreamMessage';\nimport { MsgChainUtil } from './MsgChainUtil';\nimport { OrderMessages } from './ordering/OrderMessages';\nimport { StreamrClientError } from '../StreamrClientError';\nimport { isCompliantEncryptionType, isCompliantSignatureType } from '../utils/encryptionCompliance';\nimport { EncryptionType } from '@streamr/trackerless-network';\nexport const createMessagePipeline = (opts) => {\n    const logger = opts.loggerFactory.createLogger('messagePipeline');\n    const onError = (error, streamMessage) => {\n        if (streamMessage) {\n            ignoreMessages.add(streamMessage.messageId);\n        }\n        if (error && 'messageId' in error && error.messageId) {\n            ignoreMessages.add(error.messageId);\n        }\n        throw error;\n    };\n    const messageStream = new PushPipeline;\n    const msgChainUtil = new MsgChainUtil(async (msg) => {\n        await validateStreamMessage(msg, opts.streamRegistry, opts.signatureValidator, opts.config);\n        if (msg.encryptionType !== EncryptionType.NONE && !isCompliantEncryptionType(msg.encryptionType, opts.config)) {\n            throw new StreamrClientError(`A message in stream ${msg.getStreamId()} was rejected because the encryption type violates configured requirements (encryptionType: ${msg.encryptionType})!`, 'ENCRYPTION_POLICY_VIOLATION', msg);\n        }\n        if (!isCompliantSignatureType(msg.signatureType, opts.config)) {\n            throw new StreamrClientError(`A message in stream ${msg.getStreamId()} was rejected because the signature type violates configured requirements (signatureType: ${msg.encryptionType})!`, 'SIGNATURE_POLICY_VIOLATION', msg);\n        }\n        let decrypted;\n        if (StreamMessage.isAESEncrypted(msg)) {\n            try {\n                decrypted = await decrypt(msg, opts.groupKeyManager, opts.destroySignal);\n            }\n            catch (err) {\n                // TODO log this in onError? if we want to log all errors?\n                logger.debug('Failed to decrypt', { messageId: msg.messageId, err });\n                // clear cached permissions if cannot decrypt, likely permissions need updating\n                opts.streamRegistry.invalidatePermissionCaches(msg.getStreamId());\n                throw err;\n            }\n        }\n        else {\n            decrypted = msg;\n        }\n        decrypted.getParsedContent(); // throws if content is not parsable (e.g. not valid JSON)\n        return decrypted;\n    }, messageStream.onError);\n    // collect messages that fail validation/parsing, do not push out of pipeline\n    // NOTE: we let failed messages be processed and only removed at end so they don't\n    // end up acting as gaps that we repeatedly try to fill.\n    const ignoreMessages = new WeakSet();\n    messageStream.onError.listen(onError);\n    if (opts.config.orderMessages) {\n        // order messages and fill gaps\n        const orderMessages = new OrderMessages(opts.streamPartId, opts.getStorageNodes, () => { }, // TODO send some error to messageStream (NET-987)\n        opts.resends, opts.config);\n        messageStream.pipe(async function* (src) {\n            setImmediate(() => {\n                orderMessages.addMessages(src);\n            });\n            yield* orderMessages;\n        });\n        messageStream.onBeforeFinally.listen(() => {\n            orderMessages.destroy();\n        });\n    }\n    messageStream\n        .pipe(async function* (src) {\n        setImmediate(async () => {\n            let err = undefined;\n            try {\n                for await (const msg of src) {\n                    msgChainUtil.addMessage(msg);\n                }\n            }\n            catch (e) {\n                err = e;\n            }\n            await msgChainUtil.flush();\n            msgChainUtil.stop(err);\n        });\n        yield* msgChainUtil;\n    })\n        // ignore any failed messages\n        .filter((streamMessage) => {\n        return !ignoreMessages.has(streamMessage.messageId);\n    });\n    return messageStream;\n};\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Lifecycle, delay, inject, scoped } from 'tsyringe';\nimport { ConfigInjectionToken } from '../ConfigTypes';\nimport { DestroySignal } from '../DestroySignal';\nimport { StreamRegistry } from '../contracts/StreamRegistry';\nimport { StreamStorageRegistry } from '../contracts/StreamStorageRegistry';\nimport { GroupKeyManager } from '../encryption/GroupKeyManager';\nimport { SignatureValidator } from '../signature/SignatureValidator';\nimport { LoggerFactory } from '../utils/LoggerFactory';\nimport { createMessagePipeline as _createMessagePipeline } from './messagePipeline';\nimport { Tokens } from '../tokens';\nlet MessagePipelineFactory = class MessagePipelineFactory {\n    resends;\n    streamStorageRegistry;\n    streamRegistry;\n    signatureValidator;\n    groupKeyManager;\n    config;\n    destroySignal;\n    loggerFactory;\n    /* eslint-disable indent */\n    constructor(resends, streamStorageRegistry, streamRegistry, signatureValidator, groupKeyManager, config, destroySignal, loggerFactory) {\n        this.resends = resends;\n        this.streamStorageRegistry = streamStorageRegistry;\n        this.streamRegistry = streamRegistry;\n        this.signatureValidator = signatureValidator;\n        this.groupKeyManager = groupKeyManager;\n        this.config = config;\n        this.destroySignal = destroySignal;\n        this.loggerFactory = loggerFactory;\n    }\n    createMessagePipeline(opts) {\n        return _createMessagePipeline({\n            ...opts,\n            getStorageNodes: opts.getStorageNodes ?? ((streamId) => this.streamStorageRegistry.getStorageNodes(streamId)),\n            resends: this.resends,\n            streamRegistry: this.streamRegistry,\n            signatureValidator: this.signatureValidator,\n            groupKeyManager: this.groupKeyManager,\n            config: opts.config ?? this.config,\n            destroySignal: this.destroySignal,\n            loggerFactory: this.loggerFactory\n        });\n    }\n};\nMessagePipelineFactory = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(0, inject(Tokens.Resends)),\n    __param(2, inject(delay(() => StreamRegistry))),\n    __param(4, inject(delay(() => GroupKeyManager))),\n    __param(5, inject(ConfigInjectionToken)),\n    __metadata(\"design:paramtypes\", [Function, StreamStorageRegistry,\n        StreamRegistry,\n        SignatureValidator,\n        GroupKeyManager, Object, DestroySignal,\n        LoggerFactory])\n], MessagePipelineFactory);\nexport { MessagePipelineFactory };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { StreamPartIDUtils, randomString, toUserId } from '@streamr/utils';\nimport random from 'lodash/random';\nimport sample from 'lodash/sample';\nimport without from 'lodash/without';\nimport { delay, inject, injectable } from 'tsyringe';\nimport { ConfigInjectionToken } from '../ConfigTypes';\nimport { StreamrClientError } from '../StreamrClientError';\nimport { StorageNodeRegistry } from '../contracts/StorageNodeRegistry';\nimport { convertBytesToStreamMessage } from '../protocol/oldStreamMessageBinaryUtils';\nimport { forEach, map, transformError } from '../utils/GeneratorUtils';\nimport { LoggerFactory } from '../utils/LoggerFactory';\nimport { pull } from '../utils/PushBuffer';\nimport { PushPipeline } from '../utils/PushPipeline';\nimport { FetchHttpStreamResponseError, createQueryString, fetchLengthPrefixedFrameHttpBinaryStream } from '../utils/utils';\nimport { MessagePipelineFactory } from './MessagePipelineFactory';\nfunction isResendLast(options) {\n    return options && typeof options === 'object' && 'last' in options && options.last != null;\n}\nfunction isResendFrom(options) {\n    return options && typeof options === 'object' && 'from' in options && !('to' in options) && options.from != null;\n}\nfunction isResendRange(options) {\n    return options && typeof options === 'object' && 'from' in options && 'to' in options && options.to && options.from != null;\n}\nconst createUrl = (baseUrl, endpointSuffix, streamPartId, query = {}) => {\n    const queryMap = {\n        ...query,\n        format: 'raw'\n    };\n    const [streamId, streamPartition] = StreamPartIDUtils.getStreamIDAndPartition(streamPartId);\n    const queryString = createQueryString(queryMap);\n    return `${baseUrl}/streams/${encodeURIComponent(streamId)}/data/partitions/${streamPartition}/${endpointSuffix}?${queryString}`;\n};\nconst getHttpErrorTransform = () => {\n    return async (err) => {\n        let message;\n        if (err instanceof FetchHttpStreamResponseError) {\n            const body = await err.response.text();\n            let descriptionSnippet;\n            try {\n                const json = JSON.parse(body);\n                // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n                descriptionSnippet = `: ${json.error}`;\n            }\n            catch {\n                descriptionSnippet = '';\n            }\n            message = `Storage node fetch failed${descriptionSnippet}, httpStatus=${err.response.status}, url=${err.response.url}`;\n        }\n        else {\n            message = err?.message ?? 'Unknown error';\n        }\n        return new StreamrClientError(message, 'STORAGE_NODE_ERROR');\n    };\n};\nexport const toInternalResendOptions = (options) => {\n    return {\n        ...options,\n        publisherId: (('publisherId' in options) && (options.publisherId !== undefined)) ? toUserId(options.publisherId) : undefined\n    };\n};\nlet Resends = class Resends {\n    storageNodeRegistry;\n    messagePipelineFactory;\n    config;\n    logger;\n    /* eslint-disable indent */\n    constructor(storageNodeRegistry, messagePipelineFactory, config, loggerFactory) {\n        this.storageNodeRegistry = storageNodeRegistry;\n        this.messagePipelineFactory = messagePipelineFactory;\n        this.config = config;\n        this.logger = loggerFactory.createLogger('Resends');\n    }\n    async resend(streamPartId, options, getStorageNodes, abortSignal) {\n        const raw = options.raw ?? false;\n        if (isResendLast(options)) {\n            if (options.last <= 0) {\n                const emptyStream = new PushPipeline();\n                emptyStream.endWrite();\n                return emptyStream;\n            }\n            return this.fetchStream('last', streamPartId, {\n                count: options.last\n            }, raw, getStorageNodes, abortSignal);\n        }\n        else if (isResendRange(options)) {\n            return this.fetchStream('range', streamPartId, {\n                fromTimestamp: new Date(options.from.timestamp).getTime(),\n                fromSequenceNumber: options.from.sequenceNumber,\n                toTimestamp: new Date(options.to.timestamp).getTime(),\n                toSequenceNumber: options.to.sequenceNumber,\n                publisherId: options.publisherId,\n                msgChainId: options.msgChainId\n            }, raw, getStorageNodes, abortSignal);\n        }\n        else if (isResendFrom(options)) {\n            return this.fetchStream('from', streamPartId, {\n                fromTimestamp: new Date(options.from.timestamp).getTime(),\n                fromSequenceNumber: options.from.sequenceNumber,\n                publisherId: options.publisherId\n            }, raw, getStorageNodes, abortSignal);\n        }\n        else {\n            throw new StreamrClientError(`can not resend without valid resend options: ${JSON.stringify({ streamPartId, options })}`, 'INVALID_ARGUMENT');\n        }\n    }\n    async fetchStream(resendType, streamPartId, query, raw, getStorageNodes, abortSignal) {\n        const traceId = randomString(5);\n        this.logger.debug('Fetch resend data', {\n            loggerIdx: traceId,\n            resendType,\n            streamPartId,\n            query\n        });\n        const streamId = StreamPartIDUtils.getStreamID(streamPartId);\n        const nodeAddresses = await getStorageNodes(streamId);\n        if (!nodeAddresses.length) {\n            throw new StreamrClientError(`no storage assigned: ${streamId}`, 'NO_STORAGE_NODES');\n        }\n        const nodeAddress = nodeAddresses[random(0, nodeAddresses.length - 1)];\n        const nodeUrls = (await this.storageNodeRegistry.getStorageNodeMetadata(nodeAddress)).urls;\n        const url = createUrl(sample(nodeUrls), resendType, streamPartId, query);\n        const messageStream = raw ? new PushPipeline() : this.messagePipelineFactory.createMessagePipeline({\n            streamPartId,\n            /*\n             * Disable ordering if the source of this resend is the only storage node. In that case there is no\n             * other storage node from which we could fetch the gaps. When we set \"disableMessageOrdering\"\n             * to true, we disable both gap filling and message ordering. As resend messages always arrive\n             * in ascending order, we don't need the ordering functionality.\n             */\n            getStorageNodes: async () => without(nodeAddresses, nodeAddress),\n            config: (nodeAddresses.length === 1) ? { ...this.config, orderMessages: false } : this.config\n        });\n        const lines = transformError(fetchLengthPrefixedFrameHttpBinaryStream(url, abortSignal), getHttpErrorTransform());\n        setImmediate(async () => {\n            let count = 0;\n            const messages = map(lines, (bytes) => convertBytesToStreamMessage(bytes));\n            await pull(forEach(messages, () => count++), messageStream);\n            this.logger.debug('Finished resend', { loggerIdx: traceId, messageCount: count });\n        });\n        return messageStream;\n    }\n};\nResends = __decorate([\n    injectable(),\n    __param(0, inject(delay(() => StorageNodeRegistry))),\n    __param(1, inject(delay(() => MessagePipelineFactory))),\n    __param(2, inject(ConfigInjectionToken)),\n    __metadata(\"design:paramtypes\", [StorageNodeRegistry,\n        MessagePipelineFactory, Object, LoggerFactory])\n], Resends);\nexport { Resends };\n","/**\n * An Error of Errors\n * Pass an array of errors + message to create\n * Single error without throwing away other errors\n * Specifically not using AggregateError name as this has slightly different API\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n */\nfunction joinMessages(msgs) {\n    return msgs.filter(Boolean).join('\\n');\n}\nfunction getStacks(err) {\n    if (err instanceof AggregatedError) {\n        return [\n            err.ownStack,\n            ...[...err.errors].map(({ stack }) => stack)\n        ];\n    }\n    return [err.stack];\n}\nfunction joinStackTraces(errs) {\n    return errs.flatMap((err) => getStacks(err)).filter(Boolean).join('\\n');\n}\nexport class AggregatedError extends Error {\n    errors;\n    ownMessage;\n    ownStack;\n    constructor(errors = [], errorMessage = '') {\n        const message = joinMessages([\n            errorMessage,\n            ...errors.map((err) => err.message)\n        ]);\n        super(message);\n        errors.forEach((err) => {\n            Object.assign(this, err);\n        });\n        this.message = message;\n        this.ownMessage = errorMessage;\n        this.errors = new Set(errors);\n        this.ownStack = this.stack;\n        this.stack = joinStackTraces([this, ...errors]);\n    }\n    /**\n     * Combine any errors from Promise.allSettled into AggregatedError.\n     */\n    static fromAllSettled(results = [], errorMessage = '') {\n        const errs = results.map(({ reason }) => reason).filter(Boolean);\n        if (!errs.length) {\n            return undefined;\n        }\n        return new this(errs, errorMessage);\n    }\n    /**\n     * Combine any errors from Promise.allSettled into AggregatedError and throw it.\n     */\n    static throwAllSettled(results = [], errorMessage = '') {\n        const err = this.fromAllSettled(results, errorMessage);\n        if (err) {\n            throw err;\n        }\n    }\n    /**\n     * Handles 'upgrading' an existing error to an AggregatedError when necesary.\n     */\n    static from(oldErr, newErr, msg) {\n        if (!newErr) {\n            if (oldErr && msg) {\n                // copy message\n                oldErr.message = joinMessages([oldErr.message, msg]);\n            }\n            return oldErr;\n        }\n        // When no oldErr, just return newErr\n        if (!oldErr) {\n            if (newErr && msg) {\n                // copy message\n                newErr.message = joinMessages([newErr.message, msg]);\n            }\n            return newErr;\n        }\n        // When oldErr is an AggregatedError, extend it\n        if (oldErr instanceof AggregatedError) {\n            return oldErr.extend(newErr, msg, this);\n        }\n        // Otherwise create new AggregatedError from oldErr and newErr\n        return new this([oldErr]).extend(newErr, msg);\n    }\n    /**\n     * Create a new error that adds err to list of errors\n     */\n    extend(err, message = '', baseClass = this.constructor) {\n        if (err === this || this.errors.has(err)) {\n            return this;\n        }\n        const errors = [err, ...this.errors];\n        return new baseClass(errors, joinMessages([message, this.ownMessage]));\n    }\n}\n","import pLimit from 'p-limit';\nimport { AggregatedError } from './AggregatedError';\nconst noop = () => { };\nexport function Scaffold(\n// eslint-disable-next-line @typescript-eslint/default-param-last\nsequence = [], _checkFn, { id = '', onError, onDone, onChange } = {}) {\n    let error;\n    // ignore error if check fails\n    const nextSteps = sequence.slice().reverse().map((fn) => (async () => {\n        const downFn = await fn();\n        return (typeof downFn === 'function'\n            ? downFn\n            : noop);\n    }));\n    const prevSteps = [];\n    const onDownSteps = [];\n    const queue = pLimit(1);\n    let isDone = false;\n    let didStart = false;\n    function collectErrors(err) {\n        try {\n            if (typeof onError === 'function') {\n                onError(err); // give option to suppress error\n            }\n            else {\n                throw err; // rethrow\n            }\n        }\n        catch (newErr) {\n            error = AggregatedError.from(error, newErr, `ScaffoldError:${id}`);\n        }\n    }\n    const checkShouldUp = async () => {\n        if (error) {\n            return false;\n        }\n        try {\n            return await _checkFn();\n        }\n        catch (err) {\n            collectErrors(err);\n        }\n        return false;\n    };\n    let shouldUp = false;\n    let prevShouldUp = false;\n    const innerQueue = pLimit(1);\n    async function nextScaffoldStep() {\n        shouldUp = await checkShouldUp();\n        const didChange = prevShouldUp !== shouldUp;\n        prevShouldUp = shouldUp;\n        if (didChange && typeof onChange === 'function') {\n            try {\n                await onChange(shouldUp);\n            }\n            catch (err) {\n                collectErrors(err);\n            }\n            return nextScaffoldStep();\n        }\n        if (shouldUp) {\n            if (nextSteps.length) {\n                isDone = false;\n                didStart = true;\n                let onDownStep;\n                const stepFn = nextSteps.pop();\n                prevSteps.push(stepFn);\n                try {\n                    onDownStep = await stepFn();\n                }\n                catch (err) {\n                    collectErrors(err);\n                }\n                onDownSteps.push(onDownStep ?? (() => { }));\n                await nextScaffoldStep(); // return await gives us a better stack trace\n                return;\n            }\n        }\n        else if (onDownSteps.length) {\n            isDone = false;\n            didStart = true;\n            const stepFn = onDownSteps.pop(); // exists because checked onDownSteps.length\n            try {\n                await stepFn();\n            }\n            catch (err) {\n                collectErrors(err);\n            }\n            nextSteps.push(prevSteps.pop());\n            await nextScaffoldStep(); // return await gives us a better stack trace\n            return;\n        }\n        else if (error) {\n            const err = error;\n            error = undefined;\n            isDone = true;\n            throw err;\n        }\n        isDone = true;\n        return Promise.resolve();\n    }\n    function isActive() {\n        return !(didStart\n            && isDone\n            && !queue.activeCount\n            && !queue.pendingCount);\n    }\n    const nextDone = async () => {\n        await innerQueue(() => nextScaffoldStep());\n    };\n    let currentStep;\n    const queuedNext = async () => {\n        let stepErr;\n        try {\n            currentStep = queue(() => nextDone());\n            await currentStep;\n        }\n        catch (err) {\n            stepErr = err;\n            throw err;\n        }\n        finally {\n            if (!isActive()) {\n                didStart = false;\n                if (typeof onDone === 'function') {\n                    const err = stepErr;\n                    stepErr = undefined;\n                    await onDone(shouldUp, err);\n                }\n            }\n        }\n    };\n    return Object.assign(queuedNext, {\n        next: nextDone,\n        isActive,\n        getCurrentStep() {\n            return currentStep;\n        },\n        get activeCount() {\n            return queue.activeCount;\n        },\n        get pendingCount() {\n            return queue.pendingCount;\n        },\n        setError(err) {\n            error = AggregatedError.from(error, err);\n        },\n        getError() {\n            return error;\n        },\n        clearError() {\n            const err = error;\n            error = undefined;\n            return err;\n        }\n    });\n}\n","import { StreamMessageType } from '../protocol/StreamMessage';\nimport { Scaffold } from '../utils/Scaffold';\nimport { Signal } from '../utils/Signal';\n/**\n * Manages adding & removing subscriptions to node as needed.\n * A session contains one or more subscriptions to a single streamId + streamPartition pair.\n */\nconst getAnyItemFromSet = (set) => {\n    return set.values().next().value;\n};\nexport class SubscriptionSession {\n    streamPartId;\n    onRetired = Signal.once();\n    isRetired = false;\n    isStopped = false;\n    subscriptions = new Set();\n    pendingRemoval = new WeakSet();\n    pipeline;\n    node;\n    constructor(streamPartId, messagePipelineFactory, node) {\n        this.streamPartId = streamPartId;\n        this.distributeMessage = this.distributeMessage.bind(this);\n        this.node = node;\n        this.onError = this.onError.bind(this);\n        this.pipeline = messagePipelineFactory.createMessagePipeline({\n            streamPartId\n        });\n        this.pipeline.onError.listen(this.onError);\n        this.pipeline\n            .pipe(this.distributeMessage)\n            .onBeforeFinally.listen(async () => {\n            if (!this.isStopped) {\n                await this.stop();\n            }\n        });\n        this.pipeline.flow();\n    }\n    async retire() {\n        if (this.isRetired) {\n            return;\n        }\n        this.isRetired = true;\n        await this.onRetired.trigger();\n    }\n    async onError(error) {\n        // eslint-disable-next-line promise/no-promise-in-callback\n        await Promise.allSettled([...this.subscriptions].map(async (sub) => {\n            await sub.handleError(error);\n        }));\n    }\n    async *distributeMessage(src) {\n        for await (const msg of src) {\n            await Promise.all([...this.subscriptions].map(async (sub) => {\n                await sub.push(msg);\n            }));\n            yield msg;\n        }\n    }\n    onMessageInput = async (msg) => {\n        if (!msg || this.isStopped || this.isRetired) {\n            return;\n        }\n        if (msg.getStreamPartID() !== this.streamPartId) {\n            return;\n        }\n        if (msg.messageType !== StreamMessageType.MESSAGE) {\n            return;\n        }\n        const tasks = [];\n        let hasNormalSubscriptions = false;\n        for (const sub of this.subscriptions.values()) {\n            if (sub.isRaw) {\n                tasks.push(sub.push(msg));\n            }\n            else {\n                hasNormalSubscriptions = true;\n            }\n        }\n        if (hasNormalSubscriptions) {\n            tasks.push(this.pipeline.push(msg));\n        }\n        await Promise.all(tasks);\n    };\n    async subscribe() {\n        this.node.addMessageListener(this.onMessageInput);\n        if (!await this.node.isProxiedStreamPart(this.streamPartId)) {\n            const deliveryOptions = getAnyItemFromSet(this.subscriptions).deliveryOptions;\n            await this.node.join(this.streamPartId, undefined, deliveryOptions);\n        }\n    }\n    async unsubscribe() {\n        this.pipeline.end();\n        this.pipeline.return();\n        this.pipeline.onError.end(new Error('done'));\n        this.node.removeMessageListener(this.onMessageInput);\n        await this.node.leave(this.streamPartId);\n    }\n    updateNodeSubscriptions = (() => {\n        return Scaffold([\n            async () => {\n                await this.subscribe();\n                return async () => {\n                    await this.unsubscribe();\n                    await this.stop();\n                };\n            },\n        ], () => this.shouldBeSubscribed());\n    })();\n    async updateSubscriptions() {\n        await this.updateNodeSubscriptions();\n        if (!this.shouldBeSubscribed() && !this.isStopped) {\n            await this.stop();\n        }\n    }\n    shouldBeSubscribed() {\n        return !this.isRetired && !this.isStopped && !!this.count();\n    }\n    async stop() {\n        this.isStopped = true;\n        this.pipeline.end();\n        await this.retire();\n        await this.pipeline.return();\n    }\n    has(sub) {\n        return this.subscriptions.has(sub);\n    }\n    /**\n     * Add subscription & appropriate connection handle.\n     */\n    async add(sub) {\n        if (!sub || this.subscriptions.has(sub) || this.pendingRemoval.has(sub)) {\n            return;\n        } // already has\n        const activeErc1271ContractAddress = this.getERC1271ContractAddress();\n        if (this.subscriptions.size > 0 && activeErc1271ContractAddress !== sub.erc1271ContractAddress) {\n            throw new Error('Subscription ERC-1271 mismatch');\n        }\n        this.subscriptions.add(sub);\n        sub.onBeforeFinally.listen(() => {\n            return this.remove(sub);\n        });\n        await this.updateSubscriptions();\n    }\n    /**\n     * Remove subscription & appropriate connection handle.\n     */\n    async remove(sub) {\n        if (!sub || this.pendingRemoval.has(sub) || !this.subscriptions.has(sub)) {\n            return;\n        }\n        this.pendingRemoval.add(sub);\n        this.subscriptions.delete(sub);\n        try {\n            if (!sub.isDone()) {\n                await sub.unsubscribe();\n            }\n        }\n        finally {\n            await this.updateSubscriptions();\n        }\n    }\n    getERC1271ContractAddress() {\n        for (const sub of this.subscriptions) {\n            if (sub.erc1271ContractAddress !== undefined) {\n                return sub.erc1271ContractAddress;\n            }\n        }\n        return undefined;\n    }\n    /**\n     * How many subscriptions\n     */\n    count() {\n        return this.subscriptions.size;\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { delay, inject, injectable } from 'tsyringe';\nimport { NetworkNodeFacade } from '../NetworkNodeFacade';\nimport { LoggerFactory } from '../utils/LoggerFactory';\nimport { MessagePipelineFactory } from './MessagePipelineFactory';\nimport { SubscriptionSession } from './SubscriptionSession';\nlet Subscriber = class Subscriber {\n    subSessions = new Map();\n    node;\n    messagePipelineFactory;\n    logger;\n    constructor(node, messagePipelineFactory, loggerFactory) {\n        this.node = node;\n        this.messagePipelineFactory = messagePipelineFactory;\n        this.logger = loggerFactory.createLogger('Subscriber');\n    }\n    getOrCreateSubscriptionSession(streamPartId) {\n        if (this.subSessions.has(streamPartId)) {\n            return this.getSubscriptionSession(streamPartId);\n        }\n        const subSession = new SubscriptionSession(streamPartId, this.messagePipelineFactory, this.node);\n        this.subSessions.set(streamPartId, subSession);\n        subSession.onRetired.listen(() => {\n            this.subSessions.delete(streamPartId);\n        });\n        this.logger.debug('Created new SubscriptionSession', { streamPartId });\n        return subSession;\n    }\n    async add(sub) {\n        const subSession = this.getOrCreateSubscriptionSession(sub.streamPartId);\n        // add subscription to subSession\n        try {\n            await subSession.add(sub);\n        }\n        catch (err) {\n            this.logger.debug('Failed to add Subscription to SubscriptionSession', err);\n            // clean up if fail\n            await this.remove(sub);\n            throw err;\n        }\n    }\n    async remove(sub) {\n        const subSession = this.subSessions.get(sub.streamPartId);\n        if (!subSession) {\n            return;\n        }\n        await subSession.remove(sub);\n    }\n    getSubscriptions() {\n        return [...this.subSessions.values()].reduce((o, s) => {\n            // @ts-expect-error private\n            o.push(...s.subscriptions);\n            return o;\n        }, []);\n    }\n    getERC1271ContractAddress(streamPartId) {\n        return this.subSessions.get(streamPartId)?.getERC1271ContractAddress();\n    }\n    /**\n     * Get subscription session for matching sub options.\n     */\n    getSubscriptionSession(streamPartId) {\n        return this.subSessions.get(streamPartId);\n    }\n    countSubscriptionSessions() {\n        return this.subSessions.size;\n    }\n};\nSubscriber = __decorate([\n    injectable(),\n    __param(1, inject(delay(() => MessagePipelineFactory))),\n    __metadata(\"design:paramtypes\", [NetworkNodeFacade,\n        MessagePipelineFactory,\n        LoggerFactory])\n], Subscriber);\nexport { Subscriber };\n","import 'reflect-metadata';\nimport { container, Lifecycle } from 'tsyringe';\nimport { Resends } from './subscribe/Resends';\nimport { Subscriber } from './subscribe/Subscriber';\nimport { Tokens } from './tokens';\ncontainer.register(Tokens.Resends, {\n    useClass: Resends,\n}, {\n    lifecycle: Lifecycle.ContainerScoped,\n});\ncontainer.register(Tokens.Subscriber, {\n    useClass: Subscriber,\n}, {\n    lifecycle: Lifecycle.ContainerScoped,\n});\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\n// horrible, hacky workaround to prevent tsyringe from replacing useful,\n// specific errors produced by constructors with tsyringe-specific errors that\n// look like \"Cannot inject the dependency\".  These errors lose the original\n// error's stack, constructor and any additional context that was attached for\n// control flow or debugging purposes e.g. err.code or err.syscall.\n//\n// See: https://github.com/microsoft/tsyringe/issues/177\n// @ts-nocheck\nimport { container } from 'tsyringe';\n// `dist` import below are intentional. Will not work properly if imported directly.\n// eslint-disable-next-line no-restricted-imports\nimport { isTokenDescriptor, isTransformDescriptor } from 'tsyringe/dist/cjs/providers/injection-token';\n// eslint-disable-next-line no-restricted-imports\nimport { formatErrorCtor } from 'tsyringe/dist/cjs/error-helpers';\n// Should be identical to original resolveParams, but replaces new Error with err.message = formatErrorCtor\n// See: https://github.com/microsoft/tsyringe/blob/0cb911b799ccd0b3079629865f1a8fb04cc49658/src/dependency-container.ts#L495-L525\ncontainer.constructor.prototype.resolveParams = function resolveParams(context, ctor) {\n    return (param, idx) => {\n        try {\n            if (isTokenDescriptor(param)) {\n                if (isTransformDescriptor(param)) {\n                    return param.multiple\n                        ? this.resolve(param.transform).transform(this.resolveAll(param.token), ...param.transformArgs)\n                        : this.resolve(param.transform).transform(this.resolve(param.token, context), ...param.transformArgs);\n                }\n                else {\n                    return param.multiple\n                        ? this.resolveAll(param.token)\n                        : this.resolve(param.token, context);\n                }\n            }\n            else if (isTransformDescriptor(param)) {\n                return this.resolve(param.transform, context).transform(this.resolve(param.token, context), ...param.transformArgs);\n            }\n            return this.resolve(param, context);\n        }\n        catch (e) {\n            e.message = formatErrorCtor(ctor, idx, e);\n            throw e;\n        }\n    };\n};\n","export class GroupKeyQueue {\n    currentGroupKey;\n    queuedGroupKey; // a group key queued to be rotated into use after the call to useGroupKey\n    streamId;\n    identity;\n    groupKeyManager;\n    static async createInstance(streamId, identity, groupKeyManager, currentGroupKey) {\n        const instance = new GroupKeyQueue(streamId, identity, groupKeyManager);\n        instance.currentGroupKey = currentGroupKey ?? await instance.groupKeyManager.fetchLatestEncryptionKey(await identity.getUserId(), streamId) ?? undefined;\n        return instance;\n    }\n    constructor(streamId, identity, groupKeyManager) {\n        this.streamId = streamId;\n        this.identity = identity;\n        this.groupKeyManager = groupKeyManager;\n    }\n    async useGroupKey() {\n        // Ensure we have a current key by picking a queued key or generating a new one\n        if (!this.currentGroupKey) {\n            this.currentGroupKey = this.queuedGroupKey ?? await this.rekey();\n            this.queuedGroupKey = undefined;\n        }\n        // Always return an array consisting of currentGroupKey and queuedGroupKey (latter may be undefined)\n        const result = {\n            current: this.currentGroupKey,\n            next: this.queuedGroupKey,\n        };\n        // Perform the rotate if there's a next key queued\n        if (this.queuedGroupKey) {\n            this.currentGroupKey = this.queuedGroupKey;\n            this.queuedGroupKey = undefined;\n        }\n        return result;\n    }\n    async rotate(newKey) {\n        const publisherId = await this.identity.getUserId();\n        newKey = await this.groupKeyManager.storeKey(newKey, publisherId, this.streamId);\n        this.queuedGroupKey = newKey;\n        return newKey;\n    }\n    async rekey(newKey) {\n        const publisherId = await this.identity.getUserId();\n        newKey = await this.groupKeyManager.storeKey(newKey, publisherId, this.streamId);\n        this.currentGroupKey = newKey;\n        this.queuedGroupKey = undefined;\n        return newKey;\n    }\n}\n","import { keyToArrayIndex, toEthereumAddress, toUserId, utf8ToBinary } from '@streamr/utils';\nimport { ContentType, EncryptionType, SignatureType } from '@streamr/trackerless-network';\nimport random from 'lodash/random';\nimport { getPartitionCount } from '../StreamMetadata';\nimport { StreamrClientError } from '../StreamrClientError';\nimport { EncryptionUtil } from '../encryption/EncryptionUtil';\nimport { MessageID } from '../protocol/MessageID';\nimport { StreamMessageType } from '../protocol/StreamMessage';\nimport { createLazyMap } from '../utils/Mapping';\nimport { formLookupKey } from '../utils/utils';\nimport { createMessageRef, createRandomMsgChainId } from './messageChain';\nimport { isCompliantEncryptionType } from '../utils/encryptionCompliance';\nexport class MessageFactory {\n    streamId;\n    identity;\n    defaultPartition;\n    defaultMessageChainIds;\n    prevMsgRefs = new Map();\n    // eslint-disable-next-line max-len\n    streamRegistry;\n    groupKeyQueue;\n    signatureValidator;\n    messageSigner;\n    config;\n    firstMessage = true;\n    constructor(opts) {\n        this.streamId = opts.streamId;\n        this.identity = opts.identity;\n        this.streamRegistry = opts.streamRegistry;\n        this.groupKeyQueue = opts.groupKeyQueue;\n        this.signatureValidator = opts.signatureValidator;\n        this.messageSigner = opts.messageSigner;\n        this.config = opts.config;\n        this.defaultMessageChainIds = createLazyMap({\n            valueFactory: async () => {\n                return createRandomMsgChainId();\n            }\n        });\n    }\n    async createMessage(content, metadata, explicitPartition) {\n        const publisherId = await this.getPublisherId(metadata);\n        if (this.config.validation.permissions) {\n            const isPublisher = await this.streamRegistry.isStreamPublisher(this.streamId, publisherId);\n            if (!isPublisher) {\n                this.streamRegistry.invalidatePermissionCaches(this.streamId);\n                throw new StreamrClientError(`You don't have permission to publish to this stream. Using address: ${publisherId}`, 'MISSING_PERMISSION');\n            }\n        }\n        let partition;\n        if (!this.config.validation.partitions) {\n            if (explicitPartition === undefined) {\n                throw new Error(`Explicit partition must be set when partition validation is disabled`);\n            }\n            partition = explicitPartition;\n        }\n        else {\n            const streamMetadata = await this.streamRegistry.getStreamMetadata(this.streamId);\n            const partitionCount = getPartitionCount(streamMetadata);\n            if (explicitPartition !== undefined) {\n                if ((explicitPartition < 0 || explicitPartition >= partitionCount)) {\n                    throw new Error(`Partition ${explicitPartition} is out of range (0..${partitionCount - 1})`);\n                }\n                if (metadata.partitionKey !== undefined) {\n                    throw new Error('Invalid combination of \"partition\" and \"partitionKey\"');\n                }\n                partition = explicitPartition;\n            }\n            else {\n                partition = (metadata.partitionKey !== undefined)\n                    ? keyToArrayIndex(partitionCount, metadata.partitionKey)\n                    : this.getDefaultPartition(partitionCount);\n            }\n        }\n        const msgChainId = metadata.msgChainId ?? await this.defaultMessageChainIds.get(partition);\n        const msgChainKey = formLookupKey([partition, msgChainId]);\n        const prevMsgRef = this.prevMsgRefs.get(msgChainKey);\n        const msgRef = createMessageRef(metadata.timestamp, prevMsgRef);\n        this.prevMsgRefs.set(msgChainKey, msgRef);\n        const messageId = new MessageID(this.streamId, partition, msgRef.timestamp, msgRef.sequenceNumber, publisherId, msgChainId);\n        const encryptionType = this.config.validation.permissions\n            ? await this.streamRegistry.hasPublicSubscribePermission(this.streamId)\n                ? EncryptionType.NONE\n                : EncryptionType.AES\n            : EncryptionType.AES;\n        if (!isCompliantEncryptionType(encryptionType, this.config)) {\n            throw new StreamrClientError(`Publishing to stream ${this.streamId} was prevented because configuration requires encryption!`, 'ENCRYPTION_POLICY_VIOLATION');\n        }\n        let groupKeyId;\n        let newGroupKey;\n        let rawContent;\n        let contentType;\n        if (content instanceof Uint8Array) {\n            contentType = ContentType.BINARY;\n            rawContent = content;\n        }\n        else {\n            contentType = ContentType.JSON;\n            rawContent = utf8ToBinary(JSON.stringify(content));\n        }\n        if (encryptionType === EncryptionType.AES) {\n            const keySequence = await this.groupKeyQueue.useGroupKey();\n            rawContent = EncryptionUtil.encryptWithAES(rawContent, keySequence.current.data);\n            groupKeyId = keySequence.current.id;\n            if (keySequence.next !== undefined) {\n                newGroupKey = keySequence.current.encryptNextGroupKey(keySequence.next);\n            }\n        }\n        const msg = await this.messageSigner.createSignedMessage({\n            messageId,\n            messageType: StreamMessageType.MESSAGE,\n            content: rawContent,\n            prevMsgRef,\n            encryptionType,\n            groupKeyId,\n            newGroupKey,\n            contentType\n        }, metadata.erc1271Contract !== undefined ? SignatureType.ERC_1271 : this.identity.getSignatureType());\n        // Assert the signature is valid for the first message. This is done here to improve user experience\n        // in case the client signer is not authorized for the ERC-1271 contract.\n        if (this.firstMessage) {\n            this.firstMessage = false;\n            if (metadata.erc1271Contract !== undefined) {\n                await this.signatureValidator.assertSignatureIsValid(msg);\n            }\n        }\n        return msg;\n    }\n    async getPublisherId(metadata) {\n        if (metadata.erc1271Contract !== undefined) {\n            // calling also toEthereumAddress() as it has stricter input validation than toUserId()\n            return toUserId(toEthereumAddress(metadata.erc1271Contract));\n        }\n        else {\n            return this.identity.getUserId();\n        }\n    }\n    getDefaultPartition(partitionCount) {\n        // we want to (re-)select a random partition in these two situations\n        // 1) this is the first publish, and we have not yet selected any partition (the most typical case)\n        // 2) the partition count may have decreased since we initially selected a random partitions, and it\n        //    is now out-of-range (very rare case)\n        if ((this.defaultPartition === undefined) || (this.defaultPartition >= partitionCount)) {\n            this.defaultPartition = random(partitionCount - 1);\n        }\n        return this.defaultPartition;\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport isString from 'lodash/isString';\nimport pLimit from 'p-limit';\nimport { inject, Lifecycle, scoped } from 'tsyringe';\nimport { Identity, IdentityInjectionToken } from '../identity/Identity';\nimport { NetworkNodeFacade } from '../NetworkNodeFacade';\nimport { StreamIDBuilder } from '../StreamIDBuilder';\nimport { StreamrClientError } from '../StreamrClientError';\nimport { StreamRegistry } from '../contracts/StreamRegistry';\nimport { getExplicitKey, GroupKeyManager } from '../encryption/GroupKeyManager';\nimport { MessageSigner } from '../signature/MessageSigner';\nimport { SignatureValidator } from '../signature/SignatureValidator';\nimport { createLazyMap } from '../utils/Mapping';\nimport { GroupKeyQueue } from './GroupKeyQueue';\nimport { MessageFactory } from './MessageFactory';\nimport { ConfigInjectionToken } from '../ConfigTypes';\nconst parseTimestamp = (metadata) => {\n    if (metadata?.timestamp === undefined) {\n        return Date.now();\n    }\n    else {\n        return metadata.timestamp instanceof Date\n            ? metadata.timestamp.getTime()\n            : isString(metadata.timestamp)\n                ? new Date(metadata.timestamp).getTime()\n                : metadata.timestamp;\n    }\n};\nlet Publisher = class Publisher {\n    messageFactories;\n    groupKeyQueues;\n    concurrencyLimit = pLimit(1);\n    node;\n    streamRegistry;\n    streamIdBuilder;\n    identity;\n    signatureValidator;\n    messageSigner;\n    config;\n    constructor(node, streamRegistry, groupKeyManager, streamIdBuilder, identity, signatureValidator, messageSigner, config) {\n        this.node = node;\n        this.streamRegistry = streamRegistry;\n        this.streamIdBuilder = streamIdBuilder;\n        this.identity = identity;\n        this.signatureValidator = signatureValidator;\n        this.messageSigner = messageSigner;\n        this.config = config;\n        this.messageFactories = createLazyMap({\n            valueFactory: async (streamId) => {\n                return this.createMessageFactory(streamId);\n            }\n        });\n        this.groupKeyQueues = createLazyMap({\n            valueFactory: async (streamId) => {\n                const explicitKey = await getExplicitKey(streamId, this.streamIdBuilder, this.config.encryption);\n                return await GroupKeyQueue.createInstance(streamId, this.identity, groupKeyManager, explicitKey);\n            }\n        });\n    }\n    async publish(streamDefinition, content, metadata, deliveryOptions) {\n        const timestamp = parseTimestamp(metadata);\n        /*\n         * There are some steps in the publish process which need to be done sequentially:\n         * - message chaining\n         * - consuming a group key from a queue\n         *\n         * It is also good if messages are published to node in the same sequence (within\n         * a message chain), as that can avoid unnecessary gap fills: if a subscriber would\n         * receive messages m1, m2, m3 in order m1, m3, m2 it would try to get m2 via\n         * a gap fill resend before it receives it normally).\n         *\n         * Currently we limit that there can be only one publish task at any given time.\n         * That way message chaining and group keys consuming is done properly. If we want\n         * to improve concurrency, we could maybe offload message encryptions to a separate\n         * tasks which we'd execute in parallel.\n         */\n        return this.concurrencyLimit(async () => {\n            const [streamId, partition] = await this.streamIdBuilder.toStreamPartElements(streamDefinition);\n            try {\n                const messageFactory = await this.messageFactories.get(streamId);\n                const message = await messageFactory.createMessage(content, {\n                    ...metadata,\n                    timestamp\n                }, partition);\n                await this.node.broadcast(message, deliveryOptions);\n                return message;\n            }\n            catch (e) {\n                const errorCode = (e instanceof StreamrClientError) ? e.code : 'UNKNOWN_ERROR';\n                // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n                throw new StreamrClientError(`Failed to publish to stream ${streamId}. Cause: ${e.message}`, errorCode);\n            }\n        });\n    }\n    getGroupKeyQueue(streamId) {\n        return this.groupKeyQueues.get(streamId);\n    }\n    async createMessageFactory(streamId) {\n        return new MessageFactory({\n            streamId,\n            identity: this.identity,\n            streamRegistry: this.streamRegistry,\n            groupKeyQueue: await this.groupKeyQueues.get(streamId),\n            signatureValidator: this.signatureValidator,\n            messageSigner: this.messageSigner,\n            config: this.config,\n        });\n    }\n};\nPublisher = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(4, inject(IdentityInjectionToken)),\n    __param(7, inject(ConfigInjectionToken)),\n    __metadata(\"design:paramtypes\", [NetworkNodeFacade,\n        StreamRegistry,\n        GroupKeyManager,\n        StreamIDBuilder,\n        Identity,\n        SignatureValidator,\n        MessageSigner, Object])\n], Publisher);\nexport { Publisher };\n","\"use strict\";\nmodule.exports = validate10;\nmodule.exports.default = validate10;\nconst schema11 = { \"$id\": \"config.schema.json\", \"$schema\": \"http://json-schema.org/draft-07/schema#\", \"description\": \"Client configuration format\", \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"environment\": { \"type\": \"string\", \"enum\": [\"polygon\", \"polygonAmoy\", \"peaq\", \"iotex\", \"dev2\"], \"description\": \"applies all environment-specific defaults for the given environment\" }, \"id\": { \"type\": \"string\" }, \"logLevel\": { \"type\": \"string\", \"enum\": [\"silent\", \"fatal\", \"error\", \"warn\", \"info\", \"debug\", \"trace\"], \"default\": \"info\" }, \"auth\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"publicKey\": { \"type\": \"string\", \"format\": \"hex-string\" }, \"privateKey\": { \"type\": \"string\", \"format\": \"hex-string\" }, \"keyType\": { \"type\": \"string\", \"default\": \"ECDSA_SECP256K1_EVM\" }, \"ethereum\": { \"type\": \"object\" }, \"identity\": { \"type\": \"object\" } } }, \"orderMessages\": { \"type\": \"boolean\", \"default\": true }, \"gapFill\": { \"type\": \"boolean\", \"default\": true }, \"maxGapRequests\": { \"type\": \"number\", \"default\": 5 }, \"retryResendAfter\": { \"type\": \"number\", \"default\": 5000 }, \"gapFillTimeout\": { \"type\": \"number\", \"default\": 5000 }, \"gapFillStrategy\": { \"type\": \"string\", \"enum\": [\"light\", \"full\"], \"default\": \"light\" }, \"network\": { \"type\": \"object\", \"additionalProperties\": false, \"required\": [], \"properties\": { \"controlLayer\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"entryPoints\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/peerDescriptor\" } }, \"entryPointDiscovery\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"enabled\": { \"type\": \"boolean\" }, \"maxEntryPoints\": { \"type\": \"number\" }, \"maxQueryResults\": { \"type\": \"number\" }, \"maxHeartbeatAgeHours\": { \"type\": \"number\" } }, \"default\": { \"enabled\": true, \"maxEntryPoints\": 5, \"maxQueryResults\": 50, \"maxHeartbeatAgeHours\": 24 } }, \"websocketPortRange\": { \"anyOf\": [{ \"type\": \"null\" }, { \"$ref\": \"#/definitions/portRange\" }], \"default\": { \"min\": 32200, \"max\": 32250 } }, \"websocketHost\": { \"type\": \"string\", \"format\": \"hostname\" }, \"peerDescriptor\": { \"$ref\": \"#/definitions/peerDescriptor\" }, \"maxConnections\": { \"type\": \"number\", \"default\": 80 }, \"tlsCertificate\": { \"description\": \"Files to use for TLS\", \"type\": \"object\", \"required\": [\"certFileName\", \"privateKeyFileName\"], \"additionalProperties\": false, \"properties\": { \"certFileName\": { \"type\": \"string\", \"description\": \"Path of certificate file\" }, \"privateKeyFileName\": { \"type\": \"string\", \"description\": \"Path of private key file\" } } }, \"iceServers\": { \"type\": \"array\", \"items\": { \"type\": \"object\", \"required\": [\"url\", \"port\"], \"additionalProperties\": false, \"properties\": { \"url\": { \"type\": \"string\" }, \"port\": { \"type\": \"number\" }, \"username\": { \"type\": \"string\" }, \"password\": { \"type\": \"string\" }, \"tcp\": { \"type\": \"boolean\" } } }, \"default\": [{ \"url\": \"stun:stun.streamr.network\", \"port\": 5349 }, { \"url\": \"turn:turn.streamr.network\", \"port\": 5349, \"username\": \"BrubeckTurn1\", \"password\": \"MIlbgtMw4nhpmbgqRrht1Q==\" }, { \"url\": \"turn:turn.streamr.network\", \"port\": 5349, \"username\": \"BrubeckTurn1\", \"password\": \"MIlbgtMw4nhpmbgqRrht1Q==\", \"tcp\": true }] }, \"webrtcAllowPrivateAddresses\": { \"type\": \"boolean\", \"default\": false }, \"webrtcDatachannelBufferThresholdLow\": { \"type\": \"number\", \"default\": 32768 }, \"webrtcDatachannelBufferThresholdHigh\": { \"type\": \"number\", \"default\": 131072 }, \"maxMessageSize\": { \"type\": \"number\", \"default\": 1048576 }, \"externalIp\": { \"type\": \"string\", \"format\": \"ipv4\" }, \"webrtcPortRange\": { \"$ref\": \"#/definitions/portRange\", \"default\": { \"min\": 50000, \"max\": 64000 } }, \"networkConnectivityTimeout\": { \"type\": \"number\", \"default\": 10000 }, \"websocketServerEnableTls\": { \"type\": \"boolean\", \"default\": true }, \"autoCertifierUrl\": { \"type\": \"string\", \"default\": \"https://ns1.streamr-nodes.xyz:59833\" }, \"autoCertifierConfigFile\": { \"type\": \"string\", \"default\": \"~/.streamr/certificate.json\" }, \"geoIpDatabaseFolder\": { \"type\": \"string\" } }, \"default\": {} }, \"node\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"streamPartitionNeighborTargetCount\": { \"type\": \"number\", \"default\": 4 }, \"streamPartitionMinPropagationTargets\": { \"type\": \"number\", \"default\": 2 }, \"streamPartitionMaxPropagationBufferSize\": { \"type\": \"number\", \"default\": 150 }, \"contentDeliveryBufferWhileConnecting\": { \"type\": \"boolean\", \"default\": true }, \"acceptProxyConnections\": { \"type\": \"boolean\", \"default\": false } }, \"default\": {} } }, \"default\": {} }, \"contracts\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"ethereumNetwork\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"chainId\": { \"type\": \"number\" }, \"overrides\": { \"type\": \"object\" }, \"highGasPriceStrategy\": { \"type\": \"boolean\" } }, \"default\": {} }, \"streamRegistryChainAddress\": { \"type\": \"string\", \"format\": \"ethereum-address\" }, \"streamStorageRegistryChainAddress\": { \"type\": \"string\", \"format\": \"ethereum-address\" }, \"storageNodeRegistryChainAddress\": { \"type\": \"string\", \"format\": \"ethereum-address\" }, \"sponsorshipFactoryChainAddress\": { \"type\": \"string\", \"format\": \"ethereum-address\" }, \"rpcs\": { \"type\": \"array\", \"items\": { \"type\": \"object\", \"$ref\": \"#/definitions/rpcProviderConfig\" }, \"minItems\": 1 }, \"rpcQuorum\": { \"type\": \"number\", \"default\": 2 }, \"theGraphUrl\": { \"type\": \"string\", \"format\": \"uri\" }, \"maxConcurrentCalls\": { \"type\": \"number\", \"default\": 10 }, \"pollInterval\": { \"type\": \"number\", \"default\": 4000 } }, \"default\": {} }, \"encryption\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"keyRequestTimeout\": { \"type\": \"number\", \"default\": 30000 }, \"maxKeyRequestsPerSecond\": { \"type\": \"number\", \"default\": 20 }, \"rsaKeyLength\": { \"type\": \"number\", \"default\": 4096 }, \"requireQuantumResistantKeyExchange\": { \"type\": \"boolean\", \"default\": false }, \"requireQuantumResistantSignatures\": { \"type\": \"boolean\", \"default\": false }, \"requireQuantumResistantEncryption\": { \"type\": \"boolean\", \"default\": false }, \"keys\": { \"type\": \"object\", \"propertyNames\": { \"$ref\": \"#/definitions/streamIdOrPath\" }, \"additionalProperties\": { \"$ref\": \"#/definitions/encryptionKey\" } } }, \"default\": {} }, \"validation\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"permissions\": { \"type\": \"boolean\", \"default\": true }, \"partitions\": { \"type\": \"boolean\", \"default\": true } }, \"default\": {} }, \"metrics\": { \"anyOf\": [{ \"type\": \"boolean\" }, { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"periods\": { \"type\": \"array\", \"items\": { \"type\": \"object\", \"required\": [\"streamId\", \"duration\"], \"properties\": { \"id\": { \"type\": \"string\" }, \"duration\": { \"type\": \"number\" } } } }, \"maxPublishDelay\": { \"type\": \"number\" } } }] }, \"cache\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"maxSize\": { \"type\": \"number\", \"default\": 10000 }, \"maxAge\": { \"type\": \"number\", \"default\": 86400000 } }, \"default\": {} }, \"_timeouts\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"theGraph\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"indexTimeout\": { \"type\": \"number\", \"default\": 60000 }, \"indexPollInterval\": { \"type\": \"number\", \"default\": 1000 }, \"fetchTimeout\": { \"type\": \"number\", \"default\": 30000 } }, \"default\": {} }, \"storageNode\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"timeout\": { \"type\": \"number\", \"default\": 30000 }, \"retryInterval\": { \"type\": \"number\", \"default\": 1000 } }, \"default\": {} }, \"ensStreamCreation\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"timeout\": { \"type\": \"number\", \"default\": 180000 }, \"retryInterval\": { \"type\": \"number\", \"default\": 1000 } }, \"default\": {} }, \"jsonRpcTimeout\": { \"type\": \"number\", \"default\": 30000 } }, \"default\": {} } }, \"definitions\": { \"rpcProviderConfig\": { \"type\": \"object\", \"required\": [\"url\"], \"properties\": { \"url\": { \"type\": \"string\", \"format\": \"uri\" } } }, \"peerDescriptor\": { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"nodeId\": { \"type\": \"string\" }, \"id\": { \"type\": \"string\", \"description\": \"legacy: remove this property and make nodeId required\" }, \"type\": { \"$ref\": \"#/definitions/nodeType\" }, \"websocket\": { \"$ref\": \"#/definitions/connectivityMethod\" } } }, \"nodeType\": { \"type\": \"string\", \"enum\": [\"browser\", \"nodejs\"] }, \"connectivityMethod\": { \"type\": \"object\", \"additionalProperties\": false, \"required\": [\"host\", \"port\", \"tls\"], \"properties\": { \"host\": { \"type\": \"string\" }, \"port\": { \"type\": \"number\" }, \"tls\": { \"type\": \"boolean\" } } }, \"portRange\": { \"type\": \"object\", \"additionalProperties\": false, \"required\": [\"min\", \"max\"], \"properties\": { \"min\": { \"type\": \"number\" }, \"max\": { \"type\": \"number\" } } }, \"streamIdOrPath\": { \"type\": \"string\" }, \"encryptionKey\": { \"type\": \"object\", \"properties\": { \"id\": { \"type\": \"string\" }, \"data\": { \"type\": \"string\", \"format\": \"hex-string\" } }, \"required\": [\"id\", \"data\"] } } };\nconst schema15 = { \"type\": \"object\", \"additionalProperties\": false, \"required\": [\"min\", \"max\"], \"properties\": { \"min\": { \"type\": \"number\" }, \"max\": { \"type\": \"number\" } } };\nconst schema17 = { \"type\": \"object\", \"required\": [\"url\"], \"properties\": { \"url\": { \"type\": \"string\", \"format\": \"uri\" } } };\nconst schema18 = { \"type\": \"string\" };\nconst schema19 = { \"type\": \"object\", \"properties\": { \"id\": { \"type\": \"string\" }, \"data\": { \"type\": \"string\", \"format\": \"hex-string\" } }, \"required\": [\"id\", \"data\"] };\nconst func2 = Object.prototype.hasOwnProperty;\nconst formats0 = /^(0x)?[a-fA-F0-9]+$/;\nconst formats4 = /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i;\nconst formats6 = /^(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)$/;\nconst formats8 = /^0x[a-fA-F0-9]{40}$/;\nconst formats16 = /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i;\nconst schema12 = { \"type\": \"object\", \"additionalProperties\": false, \"properties\": { \"nodeId\": { \"type\": \"string\" }, \"id\": { \"type\": \"string\", \"description\": \"legacy: remove this property and make nodeId required\" }, \"type\": { \"$ref\": \"#/definitions/nodeType\" }, \"websocket\": { \"$ref\": \"#/definitions/connectivityMethod\" } } };\nconst schema13 = { \"type\": \"string\", \"enum\": [\"browser\", \"nodejs\"] };\nconst schema14 = { \"type\": \"object\", \"additionalProperties\": false, \"required\": [\"host\", \"port\", \"tls\"], \"properties\": { \"host\": { \"type\": \"string\" }, \"port\": { \"type\": \"number\" }, \"tls\": { \"type\": \"boolean\" } } };\nfunction validate11(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; if (errors === 0) {\n    if (data && typeof data == \"object\" && !Array.isArray(data)) {\n        const _errs1 = errors;\n        for (const key0 in data) {\n            if (!((((key0 === \"nodeId\") || (key0 === \"id\")) || (key0 === \"type\")) || (key0 === \"websocket\"))) {\n                validate11.errors = [{ instancePath, schemaPath: \"#/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key0 }, message: \"must NOT have additional properties\" }];\n                return false;\n                break;\n            }\n        }\n        if (_errs1 === errors) {\n            if (data.nodeId !== undefined) {\n                const _errs2 = errors;\n                if (typeof data.nodeId !== \"string\") {\n                    validate11.errors = [{ instancePath: instancePath + \"/nodeId\", schemaPath: \"#/properties/nodeId/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                    return false;\n                }\n                var valid0 = _errs2 === errors;\n            }\n            else {\n                var valid0 = true;\n            }\n            if (valid0) {\n                if (data.id !== undefined) {\n                    const _errs4 = errors;\n                    if (typeof data.id !== \"string\") {\n                        validate11.errors = [{ instancePath: instancePath + \"/id\", schemaPath: \"#/properties/id/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                        return false;\n                    }\n                    var valid0 = _errs4 === errors;\n                }\n                else {\n                    var valid0 = true;\n                }\n                if (valid0) {\n                    if (data.type !== undefined) {\n                        let data2 = data.type;\n                        const _errs6 = errors;\n                        if (typeof data2 !== \"string\") {\n                            validate11.errors = [{ instancePath: instancePath + \"/type\", schemaPath: \"#/definitions/nodeType/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                            return false;\n                        }\n                        if (!((data2 === \"browser\") || (data2 === \"nodejs\"))) {\n                            validate11.errors = [{ instancePath: instancePath + \"/type\", schemaPath: \"#/definitions/nodeType/enum\", keyword: \"enum\", params: { allowedValues: schema13.enum }, message: \"must be equal to one of the allowed values\" }];\n                            return false;\n                        }\n                        var valid0 = _errs6 === errors;\n                    }\n                    else {\n                        var valid0 = true;\n                    }\n                    if (valid0) {\n                        if (data.websocket !== undefined) {\n                            let data3 = data.websocket;\n                            const _errs9 = errors;\n                            const _errs10 = errors;\n                            if (errors === _errs10) {\n                                if (data3 && typeof data3 == \"object\" && !Array.isArray(data3)) {\n                                    let missing0;\n                                    if ((((data3.host === undefined) && (missing0 = \"host\")) || ((data3.port === undefined) && (missing0 = \"port\"))) || ((data3.tls === undefined) && (missing0 = \"tls\"))) {\n                                        validate11.errors = [{ instancePath: instancePath + \"/websocket\", schemaPath: \"#/definitions/connectivityMethod/required\", keyword: \"required\", params: { missingProperty: missing0 }, message: \"must have required property '\" + missing0 + \"'\" }];\n                                        return false;\n                                    }\n                                    else {\n                                        const _errs12 = errors;\n                                        for (const key1 in data3) {\n                                            if (!(((key1 === \"host\") || (key1 === \"port\")) || (key1 === \"tls\"))) {\n                                                validate11.errors = [{ instancePath: instancePath + \"/websocket\", schemaPath: \"#/definitions/connectivityMethod/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key1 }, message: \"must NOT have additional properties\" }];\n                                                return false;\n                                                break;\n                                            }\n                                        }\n                                        if (_errs12 === errors) {\n                                            if (data3.host !== undefined) {\n                                                const _errs13 = errors;\n                                                if (typeof data3.host !== \"string\") {\n                                                    validate11.errors = [{ instancePath: instancePath + \"/websocket/host\", schemaPath: \"#/definitions/connectivityMethod/properties/host/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                    return false;\n                                                }\n                                                var valid3 = _errs13 === errors;\n                                            }\n                                            else {\n                                                var valid3 = true;\n                                            }\n                                            if (valid3) {\n                                                if (data3.port !== undefined) {\n                                                    let data5 = data3.port;\n                                                    const _errs15 = errors;\n                                                    if (!((typeof data5 == \"number\") && (isFinite(data5)))) {\n                                                        validate11.errors = [{ instancePath: instancePath + \"/websocket/port\", schemaPath: \"#/definitions/connectivityMethod/properties/port/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                        return false;\n                                                    }\n                                                    var valid3 = _errs15 === errors;\n                                                }\n                                                else {\n                                                    var valid3 = true;\n                                                }\n                                                if (valid3) {\n                                                    if (data3.tls !== undefined) {\n                                                        const _errs17 = errors;\n                                                        if (typeof data3.tls !== \"boolean\") {\n                                                            validate11.errors = [{ instancePath: instancePath + \"/websocket/tls\", schemaPath: \"#/definitions/connectivityMethod/properties/tls/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                                            return false;\n                                                        }\n                                                        var valid3 = _errs17 === errors;\n                                                    }\n                                                    else {\n                                                        var valid3 = true;\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n                                }\n                                else {\n                                    validate11.errors = [{ instancePath: instancePath + \"/websocket\", schemaPath: \"#/definitions/connectivityMethod/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                    return false;\n                                }\n                            }\n                            var valid0 = _errs9 === errors;\n                        }\n                        else {\n                            var valid0 = true;\n                        }\n                    }\n                }\n            }\n        }\n    }\n    else {\n        validate11.errors = [{ instancePath, schemaPath: \"#/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n        return false;\n    }\n} validate11.errors = vErrors; return errors === 0; }\nfunction validate10(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) { /*# sourceURL=\"config.schema.json\" */ ; let vErrors = null; let errors = 0; if (errors === 0) {\n    if (data && typeof data == \"object\" && !Array.isArray(data)) {\n        if (data.logLevel === undefined) {\n            data.logLevel = \"info\";\n        }\n        if (data.orderMessages === undefined) {\n            data.orderMessages = true;\n        }\n        if (data.gapFill === undefined) {\n            data.gapFill = true;\n        }\n        if (data.maxGapRequests === undefined) {\n            data.maxGapRequests = 5;\n        }\n        if (data.retryResendAfter === undefined) {\n            data.retryResendAfter = 5000;\n        }\n        if (data.gapFillTimeout === undefined) {\n            data.gapFillTimeout = 5000;\n        }\n        if (data.gapFillStrategy === undefined) {\n            data.gapFillStrategy = \"light\";\n        }\n        if (data.network === undefined) {\n            data.network = {};\n        }\n        if (data.contracts === undefined) {\n            data.contracts = {};\n        }\n        if (data.encryption === undefined) {\n            data.encryption = {};\n        }\n        if (data.validation === undefined) {\n            data.validation = {};\n        }\n        if (data.cache === undefined) {\n            data.cache = {};\n        }\n        if (data._timeouts === undefined) {\n            data._timeouts = {};\n        }\n        const _errs1 = errors;\n        for (const key0 in data) {\n            if (!(func2.call(schema11.properties, key0))) {\n                validate10.errors = [{ instancePath, schemaPath: \"#/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key0 }, message: \"must NOT have additional properties\" }];\n                return false;\n                break;\n            }\n        }\n        if (_errs1 === errors) {\n            if (data.environment !== undefined) {\n                let data0 = data.environment;\n                const _errs2 = errors;\n                if (typeof data0 !== \"string\") {\n                    validate10.errors = [{ instancePath: instancePath + \"/environment\", schemaPath: \"#/properties/environment/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                    return false;\n                }\n                if (!(((((data0 === \"polygon\") || (data0 === \"polygonAmoy\")) || (data0 === \"peaq\")) || (data0 === \"iotex\")) || (data0 === \"dev2\"))) {\n                    validate10.errors = [{ instancePath: instancePath + \"/environment\", schemaPath: \"#/properties/environment/enum\", keyword: \"enum\", params: { allowedValues: schema11.properties.environment.enum }, message: \"must be equal to one of the allowed values\" }];\n                    return false;\n                }\n                var valid0 = _errs2 === errors;\n            }\n            else {\n                var valid0 = true;\n            }\n            if (valid0) {\n                if (data.id !== undefined) {\n                    const _errs4 = errors;\n                    if (typeof data.id !== \"string\") {\n                        validate10.errors = [{ instancePath: instancePath + \"/id\", schemaPath: \"#/properties/id/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                        return false;\n                    }\n                    var valid0 = _errs4 === errors;\n                }\n                else {\n                    var valid0 = true;\n                }\n                if (valid0) {\n                    let data2 = data.logLevel;\n                    const _errs6 = errors;\n                    if (typeof data2 !== \"string\") {\n                        validate10.errors = [{ instancePath: instancePath + \"/logLevel\", schemaPath: \"#/properties/logLevel/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                        return false;\n                    }\n                    if (!(((((((data2 === \"silent\") || (data2 === \"fatal\")) || (data2 === \"error\")) || (data2 === \"warn\")) || (data2 === \"info\")) || (data2 === \"debug\")) || (data2 === \"trace\"))) {\n                        validate10.errors = [{ instancePath: instancePath + \"/logLevel\", schemaPath: \"#/properties/logLevel/enum\", keyword: \"enum\", params: { allowedValues: schema11.properties.logLevel.enum }, message: \"must be equal to one of the allowed values\" }];\n                        return false;\n                    }\n                    var valid0 = _errs6 === errors;\n                    if (valid0) {\n                        if (data.auth !== undefined) {\n                            let data3 = data.auth;\n                            const _errs8 = errors;\n                            if (errors === _errs8) {\n                                if (data3 && typeof data3 == \"object\" && !Array.isArray(data3)) {\n                                    if (data3.keyType === undefined) {\n                                        data3.keyType = \"ECDSA_SECP256K1_EVM\";\n                                    }\n                                    const _errs10 = errors;\n                                    for (const key1 in data3) {\n                                        if (!(((((key1 === \"publicKey\") || (key1 === \"privateKey\")) || (key1 === \"keyType\")) || (key1 === \"ethereum\")) || (key1 === \"identity\"))) {\n                                            validate10.errors = [{ instancePath: instancePath + \"/auth\", schemaPath: \"#/properties/auth/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key1 }, message: \"must NOT have additional properties\" }];\n                                            return false;\n                                            break;\n                                        }\n                                    }\n                                    if (_errs10 === errors) {\n                                        if (data3.publicKey !== undefined) {\n                                            let data4 = data3.publicKey;\n                                            const _errs11 = errors;\n                                            if (errors === _errs11) {\n                                                if (errors === _errs11) {\n                                                    if (typeof data4 === \"string\") {\n                                                        if (!(formats0.test(data4))) {\n                                                            validate10.errors = [{ instancePath: instancePath + \"/auth/publicKey\", schemaPath: \"#/properties/auth/properties/publicKey/format\", keyword: \"format\", params: { format: \"hex-string\" }, message: \"must match format \\\"\" + \"hex-string\" + \"\\\"\" }];\n                                                            return false;\n                                                        }\n                                                    }\n                                                    else {\n                                                        validate10.errors = [{ instancePath: instancePath + \"/auth/publicKey\", schemaPath: \"#/properties/auth/properties/publicKey/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                        return false;\n                                                    }\n                                                }\n                                            }\n                                            var valid1 = _errs11 === errors;\n                                        }\n                                        else {\n                                            var valid1 = true;\n                                        }\n                                        if (valid1) {\n                                            if (data3.privateKey !== undefined) {\n                                                let data5 = data3.privateKey;\n                                                const _errs13 = errors;\n                                                if (errors === _errs13) {\n                                                    if (errors === _errs13) {\n                                                        if (typeof data5 === \"string\") {\n                                                            if (!(formats0.test(data5))) {\n                                                                validate10.errors = [{ instancePath: instancePath + \"/auth/privateKey\", schemaPath: \"#/properties/auth/properties/privateKey/format\", keyword: \"format\", params: { format: \"hex-string\" }, message: \"must match format \\\"\" + \"hex-string\" + \"\\\"\" }];\n                                                                return false;\n                                                            }\n                                                        }\n                                                        else {\n                                                            validate10.errors = [{ instancePath: instancePath + \"/auth/privateKey\", schemaPath: \"#/properties/auth/properties/privateKey/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                            return false;\n                                                        }\n                                                    }\n                                                }\n                                                var valid1 = _errs13 === errors;\n                                            }\n                                            else {\n                                                var valid1 = true;\n                                            }\n                                            if (valid1) {\n                                                const _errs15 = errors;\n                                                if (typeof data3.keyType !== \"string\") {\n                                                    validate10.errors = [{ instancePath: instancePath + \"/auth/keyType\", schemaPath: \"#/properties/auth/properties/keyType/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                    return false;\n                                                }\n                                                var valid1 = _errs15 === errors;\n                                                if (valid1) {\n                                                    if (data3.ethereum !== undefined) {\n                                                        let data7 = data3.ethereum;\n                                                        const _errs17 = errors;\n                                                        if (!(data7 && typeof data7 == \"object\" && !Array.isArray(data7))) {\n                                                            validate10.errors = [{ instancePath: instancePath + \"/auth/ethereum\", schemaPath: \"#/properties/auth/properties/ethereum/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                            return false;\n                                                        }\n                                                        var valid1 = _errs17 === errors;\n                                                    }\n                                                    else {\n                                                        var valid1 = true;\n                                                    }\n                                                    if (valid1) {\n                                                        if (data3.identity !== undefined) {\n                                                            let data8 = data3.identity;\n                                                            const _errs19 = errors;\n                                                            if (!(data8 && typeof data8 == \"object\" && !Array.isArray(data8))) {\n                                                                validate10.errors = [{ instancePath: instancePath + \"/auth/identity\", schemaPath: \"#/properties/auth/properties/identity/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                return false;\n                                                            }\n                                                            var valid1 = _errs19 === errors;\n                                                        }\n                                                        else {\n                                                            var valid1 = true;\n                                                        }\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n                                }\n                                else {\n                                    validate10.errors = [{ instancePath: instancePath + \"/auth\", schemaPath: \"#/properties/auth/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                    return false;\n                                }\n                            }\n                            var valid0 = _errs8 === errors;\n                        }\n                        else {\n                            var valid0 = true;\n                        }\n                        if (valid0) {\n                            const _errs21 = errors;\n                            if (typeof data.orderMessages !== \"boolean\") {\n                                validate10.errors = [{ instancePath: instancePath + \"/orderMessages\", schemaPath: \"#/properties/orderMessages/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                return false;\n                            }\n                            var valid0 = _errs21 === errors;\n                            if (valid0) {\n                                const _errs23 = errors;\n                                if (typeof data.gapFill !== \"boolean\") {\n                                    validate10.errors = [{ instancePath: instancePath + \"/gapFill\", schemaPath: \"#/properties/gapFill/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                    return false;\n                                }\n                                var valid0 = _errs23 === errors;\n                                if (valid0) {\n                                    let data11 = data.maxGapRequests;\n                                    const _errs25 = errors;\n                                    if (!((typeof data11 == \"number\") && (isFinite(data11)))) {\n                                        validate10.errors = [{ instancePath: instancePath + \"/maxGapRequests\", schemaPath: \"#/properties/maxGapRequests/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                        return false;\n                                    }\n                                    var valid0 = _errs25 === errors;\n                                    if (valid0) {\n                                        let data12 = data.retryResendAfter;\n                                        const _errs27 = errors;\n                                        if (!((typeof data12 == \"number\") && (isFinite(data12)))) {\n                                            validate10.errors = [{ instancePath: instancePath + \"/retryResendAfter\", schemaPath: \"#/properties/retryResendAfter/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                            return false;\n                                        }\n                                        var valid0 = _errs27 === errors;\n                                        if (valid0) {\n                                            let data13 = data.gapFillTimeout;\n                                            const _errs29 = errors;\n                                            if (!((typeof data13 == \"number\") && (isFinite(data13)))) {\n                                                validate10.errors = [{ instancePath: instancePath + \"/gapFillTimeout\", schemaPath: \"#/properties/gapFillTimeout/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                return false;\n                                            }\n                                            var valid0 = _errs29 === errors;\n                                            if (valid0) {\n                                                let data14 = data.gapFillStrategy;\n                                                const _errs31 = errors;\n                                                if (typeof data14 !== \"string\") {\n                                                    validate10.errors = [{ instancePath: instancePath + \"/gapFillStrategy\", schemaPath: \"#/properties/gapFillStrategy/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                    return false;\n                                                }\n                                                if (!((data14 === \"light\") || (data14 === \"full\"))) {\n                                                    validate10.errors = [{ instancePath: instancePath + \"/gapFillStrategy\", schemaPath: \"#/properties/gapFillStrategy/enum\", keyword: \"enum\", params: { allowedValues: schema11.properties.gapFillStrategy.enum }, message: \"must be equal to one of the allowed values\" }];\n                                                    return false;\n                                                }\n                                                var valid0 = _errs31 === errors;\n                                                if (valid0) {\n                                                    let data15 = data.network;\n                                                    const _errs33 = errors;\n                                                    if (errors === _errs33) {\n                                                        if (data15 && typeof data15 == \"object\" && !Array.isArray(data15)) {\n                                                            if (data15.controlLayer === undefined) {\n                                                                data15.controlLayer = {};\n                                                            }\n                                                            if (data15.node === undefined) {\n                                                                data15.node = {};\n                                                            }\n                                                            const _errs35 = errors;\n                                                            for (const key2 in data15) {\n                                                                if (!((key2 === \"controlLayer\") || (key2 === \"node\"))) {\n                                                                    validate10.errors = [{ instancePath: instancePath + \"/network\", schemaPath: \"#/properties/network/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key2 }, message: \"must NOT have additional properties\" }];\n                                                                    return false;\n                                                                    break;\n                                                                }\n                                                            }\n                                                            if (_errs35 === errors) {\n                                                                let data16 = data15.controlLayer;\n                                                                const _errs36 = errors;\n                                                                if (errors === _errs36) {\n                                                                    if (data16 && typeof data16 == \"object\" && !Array.isArray(data16)) {\n                                                                        if (data16.entryPointDiscovery === undefined) {\n                                                                            data16.entryPointDiscovery = { \"enabled\": true, \"maxEntryPoints\": 5, \"maxQueryResults\": 50, \"maxHeartbeatAgeHours\": 24 };\n                                                                        }\n                                                                        if (data16.websocketPortRange === undefined) {\n                                                                            data16.websocketPortRange = { \"min\": 32200, \"max\": 32250 };\n                                                                        }\n                                                                        if (data16.maxConnections === undefined) {\n                                                                            data16.maxConnections = 80;\n                                                                        }\n                                                                        if (data16.iceServers === undefined) {\n                                                                            data16.iceServers = [{ \"url\": \"stun:stun.streamr.network\", \"port\": 5349 }, { \"url\": \"turn:turn.streamr.network\", \"port\": 5349, \"username\": \"BrubeckTurn1\", \"password\": \"MIlbgtMw4nhpmbgqRrht1Q==\" }, { \"url\": \"turn:turn.streamr.network\", \"port\": 5349, \"username\": \"BrubeckTurn1\", \"password\": \"MIlbgtMw4nhpmbgqRrht1Q==\", \"tcp\": true }];\n                                                                        }\n                                                                        if (data16.webrtcAllowPrivateAddresses === undefined) {\n                                                                            data16.webrtcAllowPrivateAddresses = false;\n                                                                        }\n                                                                        if (data16.webrtcDatachannelBufferThresholdLow === undefined) {\n                                                                            data16.webrtcDatachannelBufferThresholdLow = 32768;\n                                                                        }\n                                                                        if (data16.webrtcDatachannelBufferThresholdHigh === undefined) {\n                                                                            data16.webrtcDatachannelBufferThresholdHigh = 131072;\n                                                                        }\n                                                                        if (data16.maxMessageSize === undefined) {\n                                                                            data16.maxMessageSize = 1048576;\n                                                                        }\n                                                                        if (data16.webrtcPortRange === undefined) {\n                                                                            data16.webrtcPortRange = { \"min\": 50000, \"max\": 64000 };\n                                                                        }\n                                                                        if (data16.networkConnectivityTimeout === undefined) {\n                                                                            data16.networkConnectivityTimeout = 10000;\n                                                                        }\n                                                                        if (data16.websocketServerEnableTls === undefined) {\n                                                                            data16.websocketServerEnableTls = true;\n                                                                        }\n                                                                        if (data16.autoCertifierUrl === undefined) {\n                                                                            data16.autoCertifierUrl = \"https://ns1.streamr-nodes.xyz:59833\";\n                                                                        }\n                                                                        if (data16.autoCertifierConfigFile === undefined) {\n                                                                            data16.autoCertifierConfigFile = \"~/.streamr/certificate.json\";\n                                                                        }\n                                                                        const _errs38 = errors;\n                                                                        for (const key3 in data16) {\n                                                                            if (!(func2.call(schema11.properties.network.properties.controlLayer.properties, key3))) {\n                                                                                validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer\", schemaPath: \"#/properties/network/properties/controlLayer/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key3 }, message: \"must NOT have additional properties\" }];\n                                                                                return false;\n                                                                                break;\n                                                                            }\n                                                                        }\n                                                                        if (_errs38 === errors) {\n                                                                            if (data16.entryPoints !== undefined) {\n                                                                                let data17 = data16.entryPoints;\n                                                                                const _errs39 = errors;\n                                                                                if (errors === _errs39) {\n                                                                                    if (Array.isArray(data17)) {\n                                                                                        var valid4 = true;\n                                                                                        const len0 = data17.length;\n                                                                                        for (let i0 = 0; i0 < len0; i0++) {\n                                                                                            const _errs41 = errors;\n                                                                                            if (!(validate11(data17[i0], { instancePath: instancePath + \"/network/controlLayer/entryPoints/\" + i0, parentData: data17, parentDataProperty: i0, rootData }))) {\n                                                                                                vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);\n                                                                                                errors = vErrors.length;\n                                                                                            }\n                                                                                            var valid4 = _errs41 === errors;\n                                                                                            if (!valid4) {\n                                                                                                break;\n                                                                                            }\n                                                                                        }\n                                                                                    }\n                                                                                    else {\n                                                                                        validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/entryPoints\", schemaPath: \"#/properties/network/properties/controlLayer/properties/entryPoints/type\", keyword: \"type\", params: { type: \"array\" }, message: \"must be array\" }];\n                                                                                        return false;\n                                                                                    }\n                                                                                }\n                                                                                var valid3 = _errs39 === errors;\n                                                                            }\n                                                                            else {\n                                                                                var valid3 = true;\n                                                                            }\n                                                                            if (valid3) {\n                                                                                let data19 = data16.entryPointDiscovery;\n                                                                                const _errs42 = errors;\n                                                                                if (errors === _errs42) {\n                                                                                    if (data19 && typeof data19 == \"object\" && !Array.isArray(data19)) {\n                                                                                        const _errs44 = errors;\n                                                                                        for (const key4 in data19) {\n                                                                                            if (!((((key4 === \"enabled\") || (key4 === \"maxEntryPoints\")) || (key4 === \"maxQueryResults\")) || (key4 === \"maxHeartbeatAgeHours\"))) {\n                                                                                                validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/entryPointDiscovery\", schemaPath: \"#/properties/network/properties/controlLayer/properties/entryPointDiscovery/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key4 }, message: \"must NOT have additional properties\" }];\n                                                                                                return false;\n                                                                                                break;\n                                                                                            }\n                                                                                        }\n                                                                                        if (_errs44 === errors) {\n                                                                                            if (data19.enabled !== undefined) {\n                                                                                                const _errs45 = errors;\n                                                                                                if (typeof data19.enabled !== \"boolean\") {\n                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/entryPointDiscovery/enabled\", schemaPath: \"#/properties/network/properties/controlLayer/properties/entryPointDiscovery/properties/enabled/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                                                                                    return false;\n                                                                                                }\n                                                                                                var valid5 = _errs45 === errors;\n                                                                                            }\n                                                                                            else {\n                                                                                                var valid5 = true;\n                                                                                            }\n                                                                                            if (valid5) {\n                                                                                                if (data19.maxEntryPoints !== undefined) {\n                                                                                                    let data21 = data19.maxEntryPoints;\n                                                                                                    const _errs47 = errors;\n                                                                                                    if (!((typeof data21 == \"number\") && (isFinite(data21)))) {\n                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/entryPointDiscovery/maxEntryPoints\", schemaPath: \"#/properties/network/properties/controlLayer/properties/entryPointDiscovery/properties/maxEntryPoints/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                        return false;\n                                                                                                    }\n                                                                                                    var valid5 = _errs47 === errors;\n                                                                                                }\n                                                                                                else {\n                                                                                                    var valid5 = true;\n                                                                                                }\n                                                                                                if (valid5) {\n                                                                                                    if (data19.maxQueryResults !== undefined) {\n                                                                                                        let data22 = data19.maxQueryResults;\n                                                                                                        const _errs49 = errors;\n                                                                                                        if (!((typeof data22 == \"number\") && (isFinite(data22)))) {\n                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/entryPointDiscovery/maxQueryResults\", schemaPath: \"#/properties/network/properties/controlLayer/properties/entryPointDiscovery/properties/maxQueryResults/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                            return false;\n                                                                                                        }\n                                                                                                        var valid5 = _errs49 === errors;\n                                                                                                    }\n                                                                                                    else {\n                                                                                                        var valid5 = true;\n                                                                                                    }\n                                                                                                    if (valid5) {\n                                                                                                        if (data19.maxHeartbeatAgeHours !== undefined) {\n                                                                                                            let data23 = data19.maxHeartbeatAgeHours;\n                                                                                                            const _errs51 = errors;\n                                                                                                            if (!((typeof data23 == \"number\") && (isFinite(data23)))) {\n                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/entryPointDiscovery/maxHeartbeatAgeHours\", schemaPath: \"#/properties/network/properties/controlLayer/properties/entryPointDiscovery/properties/maxHeartbeatAgeHours/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                                return false;\n                                                                                                            }\n                                                                                                            var valid5 = _errs51 === errors;\n                                                                                                        }\n                                                                                                        else {\n                                                                                                            var valid5 = true;\n                                                                                                        }\n                                                                                                    }\n                                                                                                }\n                                                                                            }\n                                                                                        }\n                                                                                    }\n                                                                                    else {\n                                                                                        validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/entryPointDiscovery\", schemaPath: \"#/properties/network/properties/controlLayer/properties/entryPointDiscovery/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                        return false;\n                                                                                    }\n                                                                                }\n                                                                                var valid3 = _errs42 === errors;\n                                                                                if (valid3) {\n                                                                                    let data24 = data16.websocketPortRange;\n                                                                                    const _errs53 = errors;\n                                                                                    const _errs54 = errors;\n                                                                                    let valid6 = false;\n                                                                                    const _errs55 = errors;\n                                                                                    if (data24 !== null) {\n                                                                                        const err0 = { instancePath: instancePath + \"/network/controlLayer/websocketPortRange\", schemaPath: \"#/properties/network/properties/controlLayer/properties/websocketPortRange/anyOf/0/type\", keyword: \"type\", params: { type: \"null\" }, message: \"must be null\" };\n                                                                                        if (vErrors === null) {\n                                                                                            vErrors = [err0];\n                                                                                        }\n                                                                                        else {\n                                                                                            vErrors.push(err0);\n                                                                                        }\n                                                                                        errors++;\n                                                                                    }\n                                                                                    var _valid0 = _errs55 === errors;\n                                                                                    valid6 = valid6 || _valid0;\n                                                                                    if (!valid6) {\n                                                                                        const _errs57 = errors;\n                                                                                        const _errs58 = errors;\n                                                                                        if (errors === _errs58) {\n                                                                                            if (data24 && typeof data24 == \"object\" && !Array.isArray(data24)) {\n                                                                                                let missing0;\n                                                                                                if (((data24.min === undefined) && (missing0 = \"min\")) || ((data24.max === undefined) && (missing0 = \"max\"))) {\n                                                                                                    const err1 = { instancePath: instancePath + \"/network/controlLayer/websocketPortRange\", schemaPath: \"#/definitions/portRange/required\", keyword: \"required\", params: { missingProperty: missing0 }, message: \"must have required property '\" + missing0 + \"'\" };\n                                                                                                    if (vErrors === null) {\n                                                                                                        vErrors = [err1];\n                                                                                                    }\n                                                                                                    else {\n                                                                                                        vErrors.push(err1);\n                                                                                                    }\n                                                                                                    errors++;\n                                                                                                }\n                                                                                                else {\n                                                                                                    const _errs60 = errors;\n                                                                                                    for (const key5 in data24) {\n                                                                                                        if (!((key5 === \"min\") || (key5 === \"max\"))) {\n                                                                                                            const err2 = { instancePath: instancePath + \"/network/controlLayer/websocketPortRange\", schemaPath: \"#/definitions/portRange/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key5 }, message: \"must NOT have additional properties\" };\n                                                                                                            if (vErrors === null) {\n                                                                                                                vErrors = [err2];\n                                                                                                            }\n                                                                                                            else {\n                                                                                                                vErrors.push(err2);\n                                                                                                            }\n                                                                                                            errors++;\n                                                                                                            break;\n                                                                                                        }\n                                                                                                    }\n                                                                                                    if (_errs60 === errors) {\n                                                                                                        if (data24.min !== undefined) {\n                                                                                                            let data25 = data24.min;\n                                                                                                            const _errs61 = errors;\n                                                                                                            if (!((typeof data25 == \"number\") && (isFinite(data25)))) {\n                                                                                                                const err3 = { instancePath: instancePath + \"/network/controlLayer/websocketPortRange/min\", schemaPath: \"#/definitions/portRange/properties/min/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" };\n                                                                                                                if (vErrors === null) {\n                                                                                                                    vErrors = [err3];\n                                                                                                                }\n                                                                                                                else {\n                                                                                                                    vErrors.push(err3);\n                                                                                                                }\n                                                                                                                errors++;\n                                                                                                            }\n                                                                                                            var valid8 = _errs61 === errors;\n                                                                                                        }\n                                                                                                        else {\n                                                                                                            var valid8 = true;\n                                                                                                        }\n                                                                                                        if (valid8) {\n                                                                                                            if (data24.max !== undefined) {\n                                                                                                                let data26 = data24.max;\n                                                                                                                const _errs63 = errors;\n                                                                                                                if (!((typeof data26 == \"number\") && (isFinite(data26)))) {\n                                                                                                                    const err4 = { instancePath: instancePath + \"/network/controlLayer/websocketPortRange/max\", schemaPath: \"#/definitions/portRange/properties/max/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" };\n                                                                                                                    if (vErrors === null) {\n                                                                                                                        vErrors = [err4];\n                                                                                                                    }\n                                                                                                                    else {\n                                                                                                                        vErrors.push(err4);\n                                                                                                                    }\n                                                                                                                    errors++;\n                                                                                                                }\n                                                                                                                var valid8 = _errs63 === errors;\n                                                                                                            }\n                                                                                                            else {\n                                                                                                                var valid8 = true;\n                                                                                                            }\n                                                                                                        }\n                                                                                                    }\n                                                                                                }\n                                                                                            }\n                                                                                            else {\n                                                                                                const err5 = { instancePath: instancePath + \"/network/controlLayer/websocketPortRange\", schemaPath: \"#/definitions/portRange/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" };\n                                                                                                if (vErrors === null) {\n                                                                                                    vErrors = [err5];\n                                                                                                }\n                                                                                                else {\n                                                                                                    vErrors.push(err5);\n                                                                                                }\n                                                                                                errors++;\n                                                                                            }\n                                                                                        }\n                                                                                        var _valid0 = _errs57 === errors;\n                                                                                        valid6 = valid6 || _valid0;\n                                                                                    }\n                                                                                    if (!valid6) {\n                                                                                        const err6 = { instancePath: instancePath + \"/network/controlLayer/websocketPortRange\", schemaPath: \"#/properties/network/properties/controlLayer/properties/websocketPortRange/anyOf\", keyword: \"anyOf\", params: {}, message: \"must match a schema in anyOf\" };\n                                                                                        if (vErrors === null) {\n                                                                                            vErrors = [err6];\n                                                                                        }\n                                                                                        else {\n                                                                                            vErrors.push(err6);\n                                                                                        }\n                                                                                        errors++;\n                                                                                        validate10.errors = vErrors;\n                                                                                        return false;\n                                                                                    }\n                                                                                    else {\n                                                                                        errors = _errs54;\n                                                                                        if (vErrors !== null) {\n                                                                                            if (_errs54) {\n                                                                                                vErrors.length = _errs54;\n                                                                                            }\n                                                                                            else {\n                                                                                                vErrors = null;\n                                                                                            }\n                                                                                        }\n                                                                                    }\n                                                                                    var valid3 = _errs53 === errors;\n                                                                                    if (valid3) {\n                                                                                        if (data16.websocketHost !== undefined) {\n                                                                                            let data27 = data16.websocketHost;\n                                                                                            const _errs65 = errors;\n                                                                                            if (errors === _errs65) {\n                                                                                                if (errors === _errs65) {\n                                                                                                    if (typeof data27 === \"string\") {\n                                                                                                        if (!(formats4.test(data27))) {\n                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/websocketHost\", schemaPath: \"#/properties/network/properties/controlLayer/properties/websocketHost/format\", keyword: \"format\", params: { format: \"hostname\" }, message: \"must match format \\\"\" + \"hostname\" + \"\\\"\" }];\n                                                                                                            return false;\n                                                                                                        }\n                                                                                                    }\n                                                                                                    else {\n                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/websocketHost\", schemaPath: \"#/properties/network/properties/controlLayer/properties/websocketHost/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                        return false;\n                                                                                                    }\n                                                                                                }\n                                                                                            }\n                                                                                            var valid3 = _errs65 === errors;\n                                                                                        }\n                                                                                        else {\n                                                                                            var valid3 = true;\n                                                                                        }\n                                                                                        if (valid3) {\n                                                                                            if (data16.peerDescriptor !== undefined) {\n                                                                                                const _errs67 = errors;\n                                                                                                if (!(validate11(data16.peerDescriptor, { instancePath: instancePath + \"/network/controlLayer/peerDescriptor\", parentData: data16, parentDataProperty: \"peerDescriptor\", rootData }))) {\n                                                                                                    vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);\n                                                                                                    errors = vErrors.length;\n                                                                                                }\n                                                                                                var valid3 = _errs67 === errors;\n                                                                                            }\n                                                                                            else {\n                                                                                                var valid3 = true;\n                                                                                            }\n                                                                                            if (valid3) {\n                                                                                                let data29 = data16.maxConnections;\n                                                                                                const _errs68 = errors;\n                                                                                                if (!((typeof data29 == \"number\") && (isFinite(data29)))) {\n                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/maxConnections\", schemaPath: \"#/properties/network/properties/controlLayer/properties/maxConnections/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                    return false;\n                                                                                                }\n                                                                                                var valid3 = _errs68 === errors;\n                                                                                                if (valid3) {\n                                                                                                    if (data16.tlsCertificate !== undefined) {\n                                                                                                        let data30 = data16.tlsCertificate;\n                                                                                                        const _errs70 = errors;\n                                                                                                        if (errors === _errs70) {\n                                                                                                            if (data30 && typeof data30 == \"object\" && !Array.isArray(data30)) {\n                                                                                                                let missing1;\n                                                                                                                if (((data30.certFileName === undefined) && (missing1 = \"certFileName\")) || ((data30.privateKeyFileName === undefined) && (missing1 = \"privateKeyFileName\"))) {\n                                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/tlsCertificate\", schemaPath: \"#/properties/network/properties/controlLayer/properties/tlsCertificate/required\", keyword: \"required\", params: { missingProperty: missing1 }, message: \"must have required property '\" + missing1 + \"'\" }];\n                                                                                                                    return false;\n                                                                                                                }\n                                                                                                                else {\n                                                                                                                    const _errs72 = errors;\n                                                                                                                    for (const key6 in data30) {\n                                                                                                                        if (!((key6 === \"certFileName\") || (key6 === \"privateKeyFileName\"))) {\n                                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/tlsCertificate\", schemaPath: \"#/properties/network/properties/controlLayer/properties/tlsCertificate/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key6 }, message: \"must NOT have additional properties\" }];\n                                                                                                                            return false;\n                                                                                                                            break;\n                                                                                                                        }\n                                                                                                                    }\n                                                                                                                    if (_errs72 === errors) {\n                                                                                                                        if (data30.certFileName !== undefined) {\n                                                                                                                            const _errs73 = errors;\n                                                                                                                            if (typeof data30.certFileName !== \"string\") {\n                                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/tlsCertificate/certFileName\", schemaPath: \"#/properties/network/properties/controlLayer/properties/tlsCertificate/properties/certFileName/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                                                return false;\n                                                                                                                            }\n                                                                                                                            var valid9 = _errs73 === errors;\n                                                                                                                        }\n                                                                                                                        else {\n                                                                                                                            var valid9 = true;\n                                                                                                                        }\n                                                                                                                        if (valid9) {\n                                                                                                                            if (data30.privateKeyFileName !== undefined) {\n                                                                                                                                const _errs75 = errors;\n                                                                                                                                if (typeof data30.privateKeyFileName !== \"string\") {\n                                                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/tlsCertificate/privateKeyFileName\", schemaPath: \"#/properties/network/properties/controlLayer/properties/tlsCertificate/properties/privateKeyFileName/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                                                    return false;\n                                                                                                                                }\n                                                                                                                                var valid9 = _errs75 === errors;\n                                                                                                                            }\n                                                                                                                            else {\n                                                                                                                                var valid9 = true;\n                                                                                                                            }\n                                                                                                                        }\n                                                                                                                    }\n                                                                                                                }\n                                                                                                            }\n                                                                                                            else {\n                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/tlsCertificate\", schemaPath: \"#/properties/network/properties/controlLayer/properties/tlsCertificate/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                                                return false;\n                                                                                                            }\n                                                                                                        }\n                                                                                                        var valid3 = _errs70 === errors;\n                                                                                                    }\n                                                                                                    else {\n                                                                                                        var valid3 = true;\n                                                                                                    }\n                                                                                                    if (valid3) {\n                                                                                                        let data33 = data16.iceServers;\n                                                                                                        const _errs77 = errors;\n                                                                                                        if (errors === _errs77) {\n                                                                                                            if (Array.isArray(data33)) {\n                                                                                                                var valid10 = true;\n                                                                                                                const len1 = data33.length;\n                                                                                                                for (let i1 = 0; i1 < len1; i1++) {\n                                                                                                                    let data34 = data33[i1];\n                                                                                                                    const _errs79 = errors;\n                                                                                                                    if (errors === _errs79) {\n                                                                                                                        if (data34 && typeof data34 == \"object\" && !Array.isArray(data34)) {\n                                                                                                                            let missing2;\n                                                                                                                            if (((data34.url === undefined) && (missing2 = \"url\")) || ((data34.port === undefined) && (missing2 = \"port\"))) {\n                                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/iceServers/\" + i1, schemaPath: \"#/properties/network/properties/controlLayer/properties/iceServers/items/required\", keyword: \"required\", params: { missingProperty: missing2 }, message: \"must have required property '\" + missing2 + \"'\" }];\n                                                                                                                                return false;\n                                                                                                                            }\n                                                                                                                            else {\n                                                                                                                                const _errs81 = errors;\n                                                                                                                                for (const key7 in data34) {\n                                                                                                                                    if (!(((((key7 === \"url\") || (key7 === \"port\")) || (key7 === \"username\")) || (key7 === \"password\")) || (key7 === \"tcp\"))) {\n                                                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/iceServers/\" + i1, schemaPath: \"#/properties/network/properties/controlLayer/properties/iceServers/items/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key7 }, message: \"must NOT have additional properties\" }];\n                                                                                                                                        return false;\n                                                                                                                                        break;\n                                                                                                                                    }\n                                                                                                                                }\n                                                                                                                                if (_errs81 === errors) {\n                                                                                                                                    if (data34.url !== undefined) {\n                                                                                                                                        const _errs82 = errors;\n                                                                                                                                        if (typeof data34.url !== \"string\") {\n                                                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/iceServers/\" + i1 + \"/url\", schemaPath: \"#/properties/network/properties/controlLayer/properties/iceServers/items/properties/url/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                                                            return false;\n                                                                                                                                        }\n                                                                                                                                        var valid11 = _errs82 === errors;\n                                                                                                                                    }\n                                                                                                                                    else {\n                                                                                                                                        var valid11 = true;\n                                                                                                                                    }\n                                                                                                                                    if (valid11) {\n                                                                                                                                        if (data34.port !== undefined) {\n                                                                                                                                            let data36 = data34.port;\n                                                                                                                                            const _errs84 = errors;\n                                                                                                                                            if (!((typeof data36 == \"number\") && (isFinite(data36)))) {\n                                                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/iceServers/\" + i1 + \"/port\", schemaPath: \"#/properties/network/properties/controlLayer/properties/iceServers/items/properties/port/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                                                                return false;\n                                                                                                                                            }\n                                                                                                                                            var valid11 = _errs84 === errors;\n                                                                                                                                        }\n                                                                                                                                        else {\n                                                                                                                                            var valid11 = true;\n                                                                                                                                        }\n                                                                                                                                        if (valid11) {\n                                                                                                                                            if (data34.username !== undefined) {\n                                                                                                                                                const _errs86 = errors;\n                                                                                                                                                if (typeof data34.username !== \"string\") {\n                                                                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/iceServers/\" + i1 + \"/username\", schemaPath: \"#/properties/network/properties/controlLayer/properties/iceServers/items/properties/username/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                                                                    return false;\n                                                                                                                                                }\n                                                                                                                                                var valid11 = _errs86 === errors;\n                                                                                                                                            }\n                                                                                                                                            else {\n                                                                                                                                                var valid11 = true;\n                                                                                                                                            }\n                                                                                                                                            if (valid11) {\n                                                                                                                                                if (data34.password !== undefined) {\n                                                                                                                                                    const _errs88 = errors;\n                                                                                                                                                    if (typeof data34.password !== \"string\") {\n                                                                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/iceServers/\" + i1 + \"/password\", schemaPath: \"#/properties/network/properties/controlLayer/properties/iceServers/items/properties/password/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                                                                        return false;\n                                                                                                                                                    }\n                                                                                                                                                    var valid11 = _errs88 === errors;\n                                                                                                                                                }\n                                                                                                                                                else {\n                                                                                                                                                    var valid11 = true;\n                                                                                                                                                }\n                                                                                                                                                if (valid11) {\n                                                                                                                                                    if (data34.tcp !== undefined) {\n                                                                                                                                                        const _errs90 = errors;\n                                                                                                                                                        if (typeof data34.tcp !== \"boolean\") {\n                                                                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/iceServers/\" + i1 + \"/tcp\", schemaPath: \"#/properties/network/properties/controlLayer/properties/iceServers/items/properties/tcp/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                                                                                                                                            return false;\n                                                                                                                                                        }\n                                                                                                                                                        var valid11 = _errs90 === errors;\n                                                                                                                                                    }\n                                                                                                                                                    else {\n                                                                                                                                                        var valid11 = true;\n                                                                                                                                                    }\n                                                                                                                                                }\n                                                                                                                                            }\n                                                                                                                                        }\n                                                                                                                                    }\n                                                                                                                                }\n                                                                                                                            }\n                                                                                                                        }\n                                                                                                                        else {\n                                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/iceServers/\" + i1, schemaPath: \"#/properties/network/properties/controlLayer/properties/iceServers/items/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                                                            return false;\n                                                                                                                        }\n                                                                                                                    }\n                                                                                                                    var valid10 = _errs79 === errors;\n                                                                                                                    if (!valid10) {\n                                                                                                                        break;\n                                                                                                                    }\n                                                                                                                }\n                                                                                                            }\n                                                                                                            else {\n                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/iceServers\", schemaPath: \"#/properties/network/properties/controlLayer/properties/iceServers/type\", keyword: \"type\", params: { type: \"array\" }, message: \"must be array\" }];\n                                                                                                                return false;\n                                                                                                            }\n                                                                                                        }\n                                                                                                        var valid3 = _errs77 === errors;\n                                                                                                        if (valid3) {\n                                                                                                            const _errs92 = errors;\n                                                                                                            if (typeof data16.webrtcAllowPrivateAddresses !== \"boolean\") {\n                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/webrtcAllowPrivateAddresses\", schemaPath: \"#/properties/network/properties/controlLayer/properties/webrtcAllowPrivateAddresses/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                                                                                                return false;\n                                                                                                            }\n                                                                                                            var valid3 = _errs92 === errors;\n                                                                                                            if (valid3) {\n                                                                                                                let data41 = data16.webrtcDatachannelBufferThresholdLow;\n                                                                                                                const _errs94 = errors;\n                                                                                                                if (!((typeof data41 == \"number\") && (isFinite(data41)))) {\n                                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/webrtcDatachannelBufferThresholdLow\", schemaPath: \"#/properties/network/properties/controlLayer/properties/webrtcDatachannelBufferThresholdLow/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                                    return false;\n                                                                                                                }\n                                                                                                                var valid3 = _errs94 === errors;\n                                                                                                                if (valid3) {\n                                                                                                                    let data42 = data16.webrtcDatachannelBufferThresholdHigh;\n                                                                                                                    const _errs96 = errors;\n                                                                                                                    if (!((typeof data42 == \"number\") && (isFinite(data42)))) {\n                                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/webrtcDatachannelBufferThresholdHigh\", schemaPath: \"#/properties/network/properties/controlLayer/properties/webrtcDatachannelBufferThresholdHigh/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                                        return false;\n                                                                                                                    }\n                                                                                                                    var valid3 = _errs96 === errors;\n                                                                                                                    if (valid3) {\n                                                                                                                        let data43 = data16.maxMessageSize;\n                                                                                                                        const _errs98 = errors;\n                                                                                                                        if (!((typeof data43 == \"number\") && (isFinite(data43)))) {\n                                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/maxMessageSize\", schemaPath: \"#/properties/network/properties/controlLayer/properties/maxMessageSize/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                                            return false;\n                                                                                                                        }\n                                                                                                                        var valid3 = _errs98 === errors;\n                                                                                                                        if (valid3) {\n                                                                                                                            if (data16.externalIp !== undefined) {\n                                                                                                                                let data44 = data16.externalIp;\n                                                                                                                                const _errs100 = errors;\n                                                                                                                                if (errors === _errs100) {\n                                                                                                                                    if (errors === _errs100) {\n                                                                                                                                        if (typeof data44 === \"string\") {\n                                                                                                                                            if (!(formats6.test(data44))) {\n                                                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/externalIp\", schemaPath: \"#/properties/network/properties/controlLayer/properties/externalIp/format\", keyword: \"format\", params: { format: \"ipv4\" }, message: \"must match format \\\"\" + \"ipv4\" + \"\\\"\" }];\n                                                                                                                                                return false;\n                                                                                                                                            }\n                                                                                                                                        }\n                                                                                                                                        else {\n                                                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/externalIp\", schemaPath: \"#/properties/network/properties/controlLayer/properties/externalIp/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                                                            return false;\n                                                                                                                                        }\n                                                                                                                                    }\n                                                                                                                                }\n                                                                                                                                var valid3 = _errs100 === errors;\n                                                                                                                            }\n                                                                                                                            else {\n                                                                                                                                var valid3 = true;\n                                                                                                                            }\n                                                                                                                            if (valid3) {\n                                                                                                                                let data45 = data16.webrtcPortRange;\n                                                                                                                                const _errs102 = errors;\n                                                                                                                                const _errs103 = errors;\n                                                                                                                                if (errors === _errs103) {\n                                                                                                                                    if (data45 && typeof data45 == \"object\" && !Array.isArray(data45)) {\n                                                                                                                                        let missing3;\n                                                                                                                                        if (((data45.min === undefined) && (missing3 = \"min\")) || ((data45.max === undefined) && (missing3 = \"max\"))) {\n                                                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/webrtcPortRange\", schemaPath: \"#/definitions/portRange/required\", keyword: \"required\", params: { missingProperty: missing3 }, message: \"must have required property '\" + missing3 + \"'\" }];\n                                                                                                                                            return false;\n                                                                                                                                        }\n                                                                                                                                        else {\n                                                                                                                                            const _errs105 = errors;\n                                                                                                                                            for (const key8 in data45) {\n                                                                                                                                                if (!((key8 === \"min\") || (key8 === \"max\"))) {\n                                                                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/webrtcPortRange\", schemaPath: \"#/definitions/portRange/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key8 }, message: \"must NOT have additional properties\" }];\n                                                                                                                                                    return false;\n                                                                                                                                                    break;\n                                                                                                                                                }\n                                                                                                                                            }\n                                                                                                                                            if (_errs105 === errors) {\n                                                                                                                                                if (data45.min !== undefined) {\n                                                                                                                                                    let data46 = data45.min;\n                                                                                                                                                    const _errs106 = errors;\n                                                                                                                                                    if (!((typeof data46 == \"number\") && (isFinite(data46)))) {\n                                                                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/webrtcPortRange/min\", schemaPath: \"#/definitions/portRange/properties/min/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                                                                        return false;\n                                                                                                                                                    }\n                                                                                                                                                    var valid13 = _errs106 === errors;\n                                                                                                                                                }\n                                                                                                                                                else {\n                                                                                                                                                    var valid13 = true;\n                                                                                                                                                }\n                                                                                                                                                if (valid13) {\n                                                                                                                                                    if (data45.max !== undefined) {\n                                                                                                                                                        let data47 = data45.max;\n                                                                                                                                                        const _errs108 = errors;\n                                                                                                                                                        if (!((typeof data47 == \"number\") && (isFinite(data47)))) {\n                                                                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/webrtcPortRange/max\", schemaPath: \"#/definitions/portRange/properties/max/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                                                                            return false;\n                                                                                                                                                        }\n                                                                                                                                                        var valid13 = _errs108 === errors;\n                                                                                                                                                    }\n                                                                                                                                                    else {\n                                                                                                                                                        var valid13 = true;\n                                                                                                                                                    }\n                                                                                                                                                }\n                                                                                                                                            }\n                                                                                                                                        }\n                                                                                                                                    }\n                                                                                                                                    else {\n                                                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/webrtcPortRange\", schemaPath: \"#/definitions/portRange/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                                                                        return false;\n                                                                                                                                    }\n                                                                                                                                }\n                                                                                                                                var valid3 = _errs102 === errors;\n                                                                                                                                if (valid3) {\n                                                                                                                                    let data48 = data16.networkConnectivityTimeout;\n                                                                                                                                    const _errs110 = errors;\n                                                                                                                                    if (!((typeof data48 == \"number\") && (isFinite(data48)))) {\n                                                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/networkConnectivityTimeout\", schemaPath: \"#/properties/network/properties/controlLayer/properties/networkConnectivityTimeout/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                                                        return false;\n                                                                                                                                    }\n                                                                                                                                    var valid3 = _errs110 === errors;\n                                                                                                                                    if (valid3) {\n                                                                                                                                        const _errs112 = errors;\n                                                                                                                                        if (typeof data16.websocketServerEnableTls !== \"boolean\") {\n                                                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/websocketServerEnableTls\", schemaPath: \"#/properties/network/properties/controlLayer/properties/websocketServerEnableTls/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                                                                                                                            return false;\n                                                                                                                                        }\n                                                                                                                                        var valid3 = _errs112 === errors;\n                                                                                                                                        if (valid3) {\n                                                                                                                                            const _errs114 = errors;\n                                                                                                                                            if (typeof data16.autoCertifierUrl !== \"string\") {\n                                                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/autoCertifierUrl\", schemaPath: \"#/properties/network/properties/controlLayer/properties/autoCertifierUrl/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                                                                return false;\n                                                                                                                                            }\n                                                                                                                                            var valid3 = _errs114 === errors;\n                                                                                                                                            if (valid3) {\n                                                                                                                                                const _errs116 = errors;\n                                                                                                                                                if (typeof data16.autoCertifierConfigFile !== \"string\") {\n                                                                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/autoCertifierConfigFile\", schemaPath: \"#/properties/network/properties/controlLayer/properties/autoCertifierConfigFile/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                                                                    return false;\n                                                                                                                                                }\n                                                                                                                                                var valid3 = _errs116 === errors;\n                                                                                                                                                if (valid3) {\n                                                                                                                                                    if (data16.geoIpDatabaseFolder !== undefined) {\n                                                                                                                                                        const _errs118 = errors;\n                                                                                                                                                        if (typeof data16.geoIpDatabaseFolder !== \"string\") {\n                                                                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer/geoIpDatabaseFolder\", schemaPath: \"#/properties/network/properties/controlLayer/properties/geoIpDatabaseFolder/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                                                                            return false;\n                                                                                                                                                        }\n                                                                                                                                                        var valid3 = _errs118 === errors;\n                                                                                                                                                    }\n                                                                                                                                                    else {\n                                                                                                                                                        var valid3 = true;\n                                                                                                                                                    }\n                                                                                                                                                }\n                                                                                                                                            }\n                                                                                                                                        }\n                                                                                                                                    }\n                                                                                                                                }\n                                                                                                                            }\n                                                                                                                        }\n                                                                                                                    }\n                                                                                                                }\n                                                                                                            }\n                                                                                                        }\n                                                                                                    }\n                                                                                                }\n                                                                                            }\n                                                                                        }\n                                                                                    }\n                                                                                }\n                                                                            }\n                                                                        }\n                                                                    }\n                                                                    else {\n                                                                        validate10.errors = [{ instancePath: instancePath + \"/network/controlLayer\", schemaPath: \"#/properties/network/properties/controlLayer/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                        return false;\n                                                                    }\n                                                                }\n                                                                var valid2 = _errs36 === errors;\n                                                                if (valid2) {\n                                                                    let data53 = data15.node;\n                                                                    const _errs120 = errors;\n                                                                    if (errors === _errs120) {\n                                                                        if (data53 && typeof data53 == \"object\" && !Array.isArray(data53)) {\n                                                                            if (data53.streamPartitionNeighborTargetCount === undefined) {\n                                                                                data53.streamPartitionNeighborTargetCount = 4;\n                                                                            }\n                                                                            if (data53.streamPartitionMinPropagationTargets === undefined) {\n                                                                                data53.streamPartitionMinPropagationTargets = 2;\n                                                                            }\n                                                                            if (data53.streamPartitionMaxPropagationBufferSize === undefined) {\n                                                                                data53.streamPartitionMaxPropagationBufferSize = 150;\n                                                                            }\n                                                                            if (data53.contentDeliveryBufferWhileConnecting === undefined) {\n                                                                                data53.contentDeliveryBufferWhileConnecting = true;\n                                                                            }\n                                                                            if (data53.acceptProxyConnections === undefined) {\n                                                                                data53.acceptProxyConnections = false;\n                                                                            }\n                                                                            const _errs122 = errors;\n                                                                            for (const key9 in data53) {\n                                                                                if (!(((((key9 === \"streamPartitionNeighborTargetCount\") || (key9 === \"streamPartitionMinPropagationTargets\")) || (key9 === \"streamPartitionMaxPropagationBufferSize\")) || (key9 === \"contentDeliveryBufferWhileConnecting\")) || (key9 === \"acceptProxyConnections\"))) {\n                                                                                    validate10.errors = [{ instancePath: instancePath + \"/network/node\", schemaPath: \"#/properties/network/properties/node/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key9 }, message: \"must NOT have additional properties\" }];\n                                                                                    return false;\n                                                                                    break;\n                                                                                }\n                                                                            }\n                                                                            if (_errs122 === errors) {\n                                                                                let data54 = data53.streamPartitionNeighborTargetCount;\n                                                                                const _errs123 = errors;\n                                                                                if (!((typeof data54 == \"number\") && (isFinite(data54)))) {\n                                                                                    validate10.errors = [{ instancePath: instancePath + \"/network/node/streamPartitionNeighborTargetCount\", schemaPath: \"#/properties/network/properties/node/properties/streamPartitionNeighborTargetCount/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                    return false;\n                                                                                }\n                                                                                var valid14 = _errs123 === errors;\n                                                                                if (valid14) {\n                                                                                    let data55 = data53.streamPartitionMinPropagationTargets;\n                                                                                    const _errs125 = errors;\n                                                                                    if (!((typeof data55 == \"number\") && (isFinite(data55)))) {\n                                                                                        validate10.errors = [{ instancePath: instancePath + \"/network/node/streamPartitionMinPropagationTargets\", schemaPath: \"#/properties/network/properties/node/properties/streamPartitionMinPropagationTargets/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                        return false;\n                                                                                    }\n                                                                                    var valid14 = _errs125 === errors;\n                                                                                    if (valid14) {\n                                                                                        let data56 = data53.streamPartitionMaxPropagationBufferSize;\n                                                                                        const _errs127 = errors;\n                                                                                        if (!((typeof data56 == \"number\") && (isFinite(data56)))) {\n                                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/node/streamPartitionMaxPropagationBufferSize\", schemaPath: \"#/properties/network/properties/node/properties/streamPartitionMaxPropagationBufferSize/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                            return false;\n                                                                                        }\n                                                                                        var valid14 = _errs127 === errors;\n                                                                                        if (valid14) {\n                                                                                            const _errs129 = errors;\n                                                                                            if (typeof data53.contentDeliveryBufferWhileConnecting !== \"boolean\") {\n                                                                                                validate10.errors = [{ instancePath: instancePath + \"/network/node/contentDeliveryBufferWhileConnecting\", schemaPath: \"#/properties/network/properties/node/properties/contentDeliveryBufferWhileConnecting/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                                                                                return false;\n                                                                                            }\n                                                                                            var valid14 = _errs129 === errors;\n                                                                                            if (valid14) {\n                                                                                                const _errs131 = errors;\n                                                                                                if (typeof data53.acceptProxyConnections !== \"boolean\") {\n                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/network/node/acceptProxyConnections\", schemaPath: \"#/properties/network/properties/node/properties/acceptProxyConnections/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                                                                                    return false;\n                                                                                                }\n                                                                                                var valid14 = _errs131 === errors;\n                                                                                            }\n                                                                                        }\n                                                                                    }\n                                                                                }\n                                                                            }\n                                                                        }\n                                                                        else {\n                                                                            validate10.errors = [{ instancePath: instancePath + \"/network/node\", schemaPath: \"#/properties/network/properties/node/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                            return false;\n                                                                        }\n                                                                    }\n                                                                    var valid2 = _errs120 === errors;\n                                                                }\n                                                            }\n                                                        }\n                                                        else {\n                                                            validate10.errors = [{ instancePath: instancePath + \"/network\", schemaPath: \"#/properties/network/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                            return false;\n                                                        }\n                                                    }\n                                                    var valid0 = _errs33 === errors;\n                                                    if (valid0) {\n                                                        let data59 = data.contracts;\n                                                        const _errs133 = errors;\n                                                        if (errors === _errs133) {\n                                                            if (data59 && typeof data59 == \"object\" && !Array.isArray(data59)) {\n                                                                if (data59.ethereumNetwork === undefined) {\n                                                                    data59.ethereumNetwork = {};\n                                                                }\n                                                                if (data59.rpcQuorum === undefined) {\n                                                                    data59.rpcQuorum = 2;\n                                                                }\n                                                                if (data59.maxConcurrentCalls === undefined) {\n                                                                    data59.maxConcurrentCalls = 10;\n                                                                }\n                                                                if (data59.pollInterval === undefined) {\n                                                                    data59.pollInterval = 4000;\n                                                                }\n                                                                const _errs135 = errors;\n                                                                for (const key10 in data59) {\n                                                                    if (!(func2.call(schema11.properties.contracts.properties, key10))) {\n                                                                        validate10.errors = [{ instancePath: instancePath + \"/contracts\", schemaPath: \"#/properties/contracts/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key10 }, message: \"must NOT have additional properties\" }];\n                                                                        return false;\n                                                                        break;\n                                                                    }\n                                                                }\n                                                                if (_errs135 === errors) {\n                                                                    let data60 = data59.ethereumNetwork;\n                                                                    const _errs136 = errors;\n                                                                    if (errors === _errs136) {\n                                                                        if (data60 && typeof data60 == \"object\" && !Array.isArray(data60)) {\n                                                                            const _errs138 = errors;\n                                                                            for (const key11 in data60) {\n                                                                                if (!(((key11 === \"chainId\") || (key11 === \"overrides\")) || (key11 === \"highGasPriceStrategy\"))) {\n                                                                                    validate10.errors = [{ instancePath: instancePath + \"/contracts/ethereumNetwork\", schemaPath: \"#/properties/contracts/properties/ethereumNetwork/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key11 }, message: \"must NOT have additional properties\" }];\n                                                                                    return false;\n                                                                                    break;\n                                                                                }\n                                                                            }\n                                                                            if (_errs138 === errors) {\n                                                                                if (data60.chainId !== undefined) {\n                                                                                    let data61 = data60.chainId;\n                                                                                    const _errs139 = errors;\n                                                                                    if (!((typeof data61 == \"number\") && (isFinite(data61)))) {\n                                                                                        validate10.errors = [{ instancePath: instancePath + \"/contracts/ethereumNetwork/chainId\", schemaPath: \"#/properties/contracts/properties/ethereumNetwork/properties/chainId/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                        return false;\n                                                                                    }\n                                                                                    var valid16 = _errs139 === errors;\n                                                                                }\n                                                                                else {\n                                                                                    var valid16 = true;\n                                                                                }\n                                                                                if (valid16) {\n                                                                                    if (data60.overrides !== undefined) {\n                                                                                        let data62 = data60.overrides;\n                                                                                        const _errs141 = errors;\n                                                                                        if (!(data62 && typeof data62 == \"object\" && !Array.isArray(data62))) {\n                                                                                            validate10.errors = [{ instancePath: instancePath + \"/contracts/ethereumNetwork/overrides\", schemaPath: \"#/properties/contracts/properties/ethereumNetwork/properties/overrides/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                            return false;\n                                                                                        }\n                                                                                        var valid16 = _errs141 === errors;\n                                                                                    }\n                                                                                    else {\n                                                                                        var valid16 = true;\n                                                                                    }\n                                                                                    if (valid16) {\n                                                                                        if (data60.highGasPriceStrategy !== undefined) {\n                                                                                            const _errs143 = errors;\n                                                                                            if (typeof data60.highGasPriceStrategy !== \"boolean\") {\n                                                                                                validate10.errors = [{ instancePath: instancePath + \"/contracts/ethereumNetwork/highGasPriceStrategy\", schemaPath: \"#/properties/contracts/properties/ethereumNetwork/properties/highGasPriceStrategy/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                                                                                return false;\n                                                                                            }\n                                                                                            var valid16 = _errs143 === errors;\n                                                                                        }\n                                                                                        else {\n                                                                                            var valid16 = true;\n                                                                                        }\n                                                                                    }\n                                                                                }\n                                                                            }\n                                                                        }\n                                                                        else {\n                                                                            validate10.errors = [{ instancePath: instancePath + \"/contracts/ethereumNetwork\", schemaPath: \"#/properties/contracts/properties/ethereumNetwork/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                            return false;\n                                                                        }\n                                                                    }\n                                                                    var valid15 = _errs136 === errors;\n                                                                    if (valid15) {\n                                                                        if (data59.streamRegistryChainAddress !== undefined) {\n                                                                            let data64 = data59.streamRegistryChainAddress;\n                                                                            const _errs145 = errors;\n                                                                            if (errors === _errs145) {\n                                                                                if (errors === _errs145) {\n                                                                                    if (typeof data64 === \"string\") {\n                                                                                        if (!(formats8.test(data64))) {\n                                                                                            validate10.errors = [{ instancePath: instancePath + \"/contracts/streamRegistryChainAddress\", schemaPath: \"#/properties/contracts/properties/streamRegistryChainAddress/format\", keyword: \"format\", params: { format: \"ethereum-address\" }, message: \"must match format \\\"\" + \"ethereum-address\" + \"\\\"\" }];\n                                                                                            return false;\n                                                                                        }\n                                                                                    }\n                                                                                    else {\n                                                                                        validate10.errors = [{ instancePath: instancePath + \"/contracts/streamRegistryChainAddress\", schemaPath: \"#/properties/contracts/properties/streamRegistryChainAddress/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                        return false;\n                                                                                    }\n                                                                                }\n                                                                            }\n                                                                            var valid15 = _errs145 === errors;\n                                                                        }\n                                                                        else {\n                                                                            var valid15 = true;\n                                                                        }\n                                                                        if (valid15) {\n                                                                            if (data59.streamStorageRegistryChainAddress !== undefined) {\n                                                                                let data65 = data59.streamStorageRegistryChainAddress;\n                                                                                const _errs147 = errors;\n                                                                                if (errors === _errs147) {\n                                                                                    if (errors === _errs147) {\n                                                                                        if (typeof data65 === \"string\") {\n                                                                                            if (!(formats8.test(data65))) {\n                                                                                                validate10.errors = [{ instancePath: instancePath + \"/contracts/streamStorageRegistryChainAddress\", schemaPath: \"#/properties/contracts/properties/streamStorageRegistryChainAddress/format\", keyword: \"format\", params: { format: \"ethereum-address\" }, message: \"must match format \\\"\" + \"ethereum-address\" + \"\\\"\" }];\n                                                                                                return false;\n                                                                                            }\n                                                                                        }\n                                                                                        else {\n                                                                                            validate10.errors = [{ instancePath: instancePath + \"/contracts/streamStorageRegistryChainAddress\", schemaPath: \"#/properties/contracts/properties/streamStorageRegistryChainAddress/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                            return false;\n                                                                                        }\n                                                                                    }\n                                                                                }\n                                                                                var valid15 = _errs147 === errors;\n                                                                            }\n                                                                            else {\n                                                                                var valid15 = true;\n                                                                            }\n                                                                            if (valid15) {\n                                                                                if (data59.storageNodeRegistryChainAddress !== undefined) {\n                                                                                    let data66 = data59.storageNodeRegistryChainAddress;\n                                                                                    const _errs149 = errors;\n                                                                                    if (errors === _errs149) {\n                                                                                        if (errors === _errs149) {\n                                                                                            if (typeof data66 === \"string\") {\n                                                                                                if (!(formats8.test(data66))) {\n                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/contracts/storageNodeRegistryChainAddress\", schemaPath: \"#/properties/contracts/properties/storageNodeRegistryChainAddress/format\", keyword: \"format\", params: { format: \"ethereum-address\" }, message: \"must match format \\\"\" + \"ethereum-address\" + \"\\\"\" }];\n                                                                                                    return false;\n                                                                                                }\n                                                                                            }\n                                                                                            else {\n                                                                                                validate10.errors = [{ instancePath: instancePath + \"/contracts/storageNodeRegistryChainAddress\", schemaPath: \"#/properties/contracts/properties/storageNodeRegistryChainAddress/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                return false;\n                                                                                            }\n                                                                                        }\n                                                                                    }\n                                                                                    var valid15 = _errs149 === errors;\n                                                                                }\n                                                                                else {\n                                                                                    var valid15 = true;\n                                                                                }\n                                                                                if (valid15) {\n                                                                                    if (data59.sponsorshipFactoryChainAddress !== undefined) {\n                                                                                        let data67 = data59.sponsorshipFactoryChainAddress;\n                                                                                        const _errs151 = errors;\n                                                                                        if (errors === _errs151) {\n                                                                                            if (errors === _errs151) {\n                                                                                                if (typeof data67 === \"string\") {\n                                                                                                    if (!(formats8.test(data67))) {\n                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/contracts/sponsorshipFactoryChainAddress\", schemaPath: \"#/properties/contracts/properties/sponsorshipFactoryChainAddress/format\", keyword: \"format\", params: { format: \"ethereum-address\" }, message: \"must match format \\\"\" + \"ethereum-address\" + \"\\\"\" }];\n                                                                                                        return false;\n                                                                                                    }\n                                                                                                }\n                                                                                                else {\n                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/contracts/sponsorshipFactoryChainAddress\", schemaPath: \"#/properties/contracts/properties/sponsorshipFactoryChainAddress/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                    return false;\n                                                                                                }\n                                                                                            }\n                                                                                        }\n                                                                                        var valid15 = _errs151 === errors;\n                                                                                    }\n                                                                                    else {\n                                                                                        var valid15 = true;\n                                                                                    }\n                                                                                    if (valid15) {\n                                                                                        if (data59.rpcs !== undefined) {\n                                                                                            let data68 = data59.rpcs;\n                                                                                            const _errs153 = errors;\n                                                                                            if (errors === _errs153) {\n                                                                                                if (Array.isArray(data68)) {\n                                                                                                    if (data68.length < 1) {\n                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/contracts/rpcs\", schemaPath: \"#/properties/contracts/properties/rpcs/minItems\", keyword: \"minItems\", params: { limit: 1 }, message: \"must NOT have fewer than 1 items\" }];\n                                                                                                        return false;\n                                                                                                    }\n                                                                                                    else {\n                                                                                                        var valid17 = true;\n                                                                                                        const len2 = data68.length;\n                                                                                                        for (let i2 = 0; i2 < len2; i2++) {\n                                                                                                            let data69 = data68[i2];\n                                                                                                            const _errs155 = errors;\n                                                                                                            if (!(data69 && typeof data69 == \"object\" && !Array.isArray(data69))) {\n                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/contracts/rpcs/\" + i2, schemaPath: \"#/properties/contracts/properties/rpcs/items/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                                                return false;\n                                                                                                            }\n                                                                                                            const _errs156 = errors;\n                                                                                                            if (errors === _errs156) {\n                                                                                                                if (data69 && typeof data69 == \"object\" && !Array.isArray(data69)) {\n                                                                                                                    let missing4;\n                                                                                                                    if ((data69.url === undefined) && (missing4 = \"url\")) {\n                                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/contracts/rpcs/\" + i2, schemaPath: \"#/definitions/rpcProviderConfig/required\", keyword: \"required\", params: { missingProperty: missing4 }, message: \"must have required property '\" + missing4 + \"'\" }];\n                                                                                                                        return false;\n                                                                                                                    }\n                                                                                                                    else {\n                                                                                                                        if (data69.url !== undefined) {\n                                                                                                                            let data70 = data69.url;\n                                                                                                                            const _errs158 = errors;\n                                                                                                                            if (errors === _errs158) {\n                                                                                                                                if (errors === _errs158) {\n                                                                                                                                    if (typeof data70 === \"string\") {\n                                                                                                                                        if (!(formats16.test(data70))) {\n                                                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/contracts/rpcs/\" + i2 + \"/url\", schemaPath: \"#/definitions/rpcProviderConfig/properties/url/format\", keyword: \"format\", params: { format: \"uri\" }, message: \"must match format \\\"\" + \"uri\" + \"\\\"\" }];\n                                                                                                                                            return false;\n                                                                                                                                        }\n                                                                                                                                    }\n                                                                                                                                    else {\n                                                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/contracts/rpcs/\" + i2 + \"/url\", schemaPath: \"#/definitions/rpcProviderConfig/properties/url/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                                                        return false;\n                                                                                                                                    }\n                                                                                                                                }\n                                                                                                                            }\n                                                                                                                        }\n                                                                                                                    }\n                                                                                                                }\n                                                                                                                else {\n                                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/contracts/rpcs/\" + i2, schemaPath: \"#/definitions/rpcProviderConfig/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                                                    return false;\n                                                                                                                }\n                                                                                                            }\n                                                                                                            var valid17 = _errs155 === errors;\n                                                                                                            if (!valid17) {\n                                                                                                                break;\n                                                                                                            }\n                                                                                                        }\n                                                                                                    }\n                                                                                                }\n                                                                                                else {\n                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/contracts/rpcs\", schemaPath: \"#/properties/contracts/properties/rpcs/type\", keyword: \"type\", params: { type: \"array\" }, message: \"must be array\" }];\n                                                                                                    return false;\n                                                                                                }\n                                                                                            }\n                                                                                            var valid15 = _errs153 === errors;\n                                                                                        }\n                                                                                        else {\n                                                                                            var valid15 = true;\n                                                                                        }\n                                                                                        if (valid15) {\n                                                                                            let data71 = data59.rpcQuorum;\n                                                                                            const _errs161 = errors;\n                                                                                            if (!((typeof data71 == \"number\") && (isFinite(data71)))) {\n                                                                                                validate10.errors = [{ instancePath: instancePath + \"/contracts/rpcQuorum\", schemaPath: \"#/properties/contracts/properties/rpcQuorum/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                return false;\n                                                                                            }\n                                                                                            var valid15 = _errs161 === errors;\n                                                                                            if (valid15) {\n                                                                                                if (data59.theGraphUrl !== undefined) {\n                                                                                                    let data72 = data59.theGraphUrl;\n                                                                                                    const _errs163 = errors;\n                                                                                                    if (errors === _errs163) {\n                                                                                                        if (errors === _errs163) {\n                                                                                                            if (typeof data72 === \"string\") {\n                                                                                                                if (!(formats16.test(data72))) {\n                                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/contracts/theGraphUrl\", schemaPath: \"#/properties/contracts/properties/theGraphUrl/format\", keyword: \"format\", params: { format: \"uri\" }, message: \"must match format \\\"\" + \"uri\" + \"\\\"\" }];\n                                                                                                                    return false;\n                                                                                                                }\n                                                                                                            }\n                                                                                                            else {\n                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/contracts/theGraphUrl\", schemaPath: \"#/properties/contracts/properties/theGraphUrl/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                                return false;\n                                                                                                            }\n                                                                                                        }\n                                                                                                    }\n                                                                                                    var valid15 = _errs163 === errors;\n                                                                                                }\n                                                                                                else {\n                                                                                                    var valid15 = true;\n                                                                                                }\n                                                                                                if (valid15) {\n                                                                                                    let data73 = data59.maxConcurrentCalls;\n                                                                                                    const _errs165 = errors;\n                                                                                                    if (!((typeof data73 == \"number\") && (isFinite(data73)))) {\n                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/contracts/maxConcurrentCalls\", schemaPath: \"#/properties/contracts/properties/maxConcurrentCalls/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                        return false;\n                                                                                                    }\n                                                                                                    var valid15 = _errs165 === errors;\n                                                                                                    if (valid15) {\n                                                                                                        let data74 = data59.pollInterval;\n                                                                                                        const _errs167 = errors;\n                                                                                                        if (!((typeof data74 == \"number\") && (isFinite(data74)))) {\n                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/contracts/pollInterval\", schemaPath: \"#/properties/contracts/properties/pollInterval/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                            return false;\n                                                                                                        }\n                                                                                                        var valid15 = _errs167 === errors;\n                                                                                                    }\n                                                                                                }\n                                                                                            }\n                                                                                        }\n                                                                                    }\n                                                                                }\n                                                                            }\n                                                                        }\n                                                                    }\n                                                                }\n                                                            }\n                                                            else {\n                                                                validate10.errors = [{ instancePath: instancePath + \"/contracts\", schemaPath: \"#/properties/contracts/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                return false;\n                                                            }\n                                                        }\n                                                        var valid0 = _errs133 === errors;\n                                                        if (valid0) {\n                                                            let data75 = data.encryption;\n                                                            const _errs169 = errors;\n                                                            if (errors === _errs169) {\n                                                                if (data75 && typeof data75 == \"object\" && !Array.isArray(data75)) {\n                                                                    if (data75.keyRequestTimeout === undefined) {\n                                                                        data75.keyRequestTimeout = 30000;\n                                                                    }\n                                                                    if (data75.maxKeyRequestsPerSecond === undefined) {\n                                                                        data75.maxKeyRequestsPerSecond = 20;\n                                                                    }\n                                                                    if (data75.rsaKeyLength === undefined) {\n                                                                        data75.rsaKeyLength = 4096;\n                                                                    }\n                                                                    if (data75.requireQuantumResistantKeyExchange === undefined) {\n                                                                        data75.requireQuantumResistantKeyExchange = false;\n                                                                    }\n                                                                    if (data75.requireQuantumResistantSignatures === undefined) {\n                                                                        data75.requireQuantumResistantSignatures = false;\n                                                                    }\n                                                                    if (data75.requireQuantumResistantEncryption === undefined) {\n                                                                        data75.requireQuantumResistantEncryption = false;\n                                                                    }\n                                                                    const _errs171 = errors;\n                                                                    for (const key12 in data75) {\n                                                                        if (!(((((((key12 === \"keyRequestTimeout\") || (key12 === \"maxKeyRequestsPerSecond\")) || (key12 === \"rsaKeyLength\")) || (key12 === \"requireQuantumResistantKeyExchange\")) || (key12 === \"requireQuantumResistantSignatures\")) || (key12 === \"requireQuantumResistantEncryption\")) || (key12 === \"keys\"))) {\n                                                                            validate10.errors = [{ instancePath: instancePath + \"/encryption\", schemaPath: \"#/properties/encryption/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key12 }, message: \"must NOT have additional properties\" }];\n                                                                            return false;\n                                                                            break;\n                                                                        }\n                                                                    }\n                                                                    if (_errs171 === errors) {\n                                                                        let data76 = data75.keyRequestTimeout;\n                                                                        const _errs172 = errors;\n                                                                        if (!((typeof data76 == \"number\") && (isFinite(data76)))) {\n                                                                            validate10.errors = [{ instancePath: instancePath + \"/encryption/keyRequestTimeout\", schemaPath: \"#/properties/encryption/properties/keyRequestTimeout/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                            return false;\n                                                                        }\n                                                                        var valid20 = _errs172 === errors;\n                                                                        if (valid20) {\n                                                                            let data77 = data75.maxKeyRequestsPerSecond;\n                                                                            const _errs174 = errors;\n                                                                            if (!((typeof data77 == \"number\") && (isFinite(data77)))) {\n                                                                                validate10.errors = [{ instancePath: instancePath + \"/encryption/maxKeyRequestsPerSecond\", schemaPath: \"#/properties/encryption/properties/maxKeyRequestsPerSecond/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                return false;\n                                                                            }\n                                                                            var valid20 = _errs174 === errors;\n                                                                            if (valid20) {\n                                                                                let data78 = data75.rsaKeyLength;\n                                                                                const _errs176 = errors;\n                                                                                if (!((typeof data78 == \"number\") && (isFinite(data78)))) {\n                                                                                    validate10.errors = [{ instancePath: instancePath + \"/encryption/rsaKeyLength\", schemaPath: \"#/properties/encryption/properties/rsaKeyLength/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                    return false;\n                                                                                }\n                                                                                var valid20 = _errs176 === errors;\n                                                                                if (valid20) {\n                                                                                    const _errs178 = errors;\n                                                                                    if (typeof data75.requireQuantumResistantKeyExchange !== \"boolean\") {\n                                                                                        validate10.errors = [{ instancePath: instancePath + \"/encryption/requireQuantumResistantKeyExchange\", schemaPath: \"#/properties/encryption/properties/requireQuantumResistantKeyExchange/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                                                                        return false;\n                                                                                    }\n                                                                                    var valid20 = _errs178 === errors;\n                                                                                    if (valid20) {\n                                                                                        const _errs180 = errors;\n                                                                                        if (typeof data75.requireQuantumResistantSignatures !== \"boolean\") {\n                                                                                            validate10.errors = [{ instancePath: instancePath + \"/encryption/requireQuantumResistantSignatures\", schemaPath: \"#/properties/encryption/properties/requireQuantumResistantSignatures/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                                                                            return false;\n                                                                                        }\n                                                                                        var valid20 = _errs180 === errors;\n                                                                                        if (valid20) {\n                                                                                            const _errs182 = errors;\n                                                                                            if (typeof data75.requireQuantumResistantEncryption !== \"boolean\") {\n                                                                                                validate10.errors = [{ instancePath: instancePath + \"/encryption/requireQuantumResistantEncryption\", schemaPath: \"#/properties/encryption/properties/requireQuantumResistantEncryption/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                                                                                return false;\n                                                                                            }\n                                                                                            var valid20 = _errs182 === errors;\n                                                                                            if (valid20) {\n                                                                                                if (data75.keys !== undefined) {\n                                                                                                    let data82 = data75.keys;\n                                                                                                    const _errs184 = errors;\n                                                                                                    if (errors === _errs184) {\n                                                                                                        if (data82 && typeof data82 == \"object\" && !Array.isArray(data82)) {\n                                                                                                            for (const key13 in data82) {\n                                                                                                                const _errs186 = errors;\n                                                                                                                if (typeof key13 !== \"string\") {\n                                                                                                                    const err7 = { instancePath: instancePath + \"/encryption/keys\", schemaPath: \"#/definitions/streamIdOrPath/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\", propertyName: key13 };\n                                                                                                                    if (vErrors === null) {\n                                                                                                                        vErrors = [err7];\n                                                                                                                    }\n                                                                                                                    else {\n                                                                                                                        vErrors.push(err7);\n                                                                                                                    }\n                                                                                                                    errors++;\n                                                                                                                }\n                                                                                                                var valid21 = _errs186 === errors;\n                                                                                                                if (!valid21) {\n                                                                                                                    const err8 = { instancePath: instancePath + \"/encryption/keys\", schemaPath: \"#/properties/encryption/properties/keys/propertyNames\", keyword: \"propertyNames\", params: { propertyName: key13 }, message: \"property name must be valid\" };\n                                                                                                                    if (vErrors === null) {\n                                                                                                                        vErrors = [err8];\n                                                                                                                    }\n                                                                                                                    else {\n                                                                                                                        vErrors.push(err8);\n                                                                                                                    }\n                                                                                                                    errors++;\n                                                                                                                    validate10.errors = vErrors;\n                                                                                                                    return false;\n                                                                                                                    break;\n                                                                                                                }\n                                                                                                            }\n                                                                                                            if (valid21) {\n                                                                                                                for (const key14 in data82) {\n                                                                                                                    let data83 = data82[key14];\n                                                                                                                    const _errs190 = errors;\n                                                                                                                    const _errs191 = errors;\n                                                                                                                    if (errors === _errs191) {\n                                                                                                                        if (data83 && typeof data83 == \"object\" && !Array.isArray(data83)) {\n                                                                                                                            let missing5;\n                                                                                                                            if (((data83.id === undefined) && (missing5 = \"id\")) || ((data83.data === undefined) && (missing5 = \"data\"))) {\n                                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/encryption/keys/\" + key14.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"), schemaPath: \"#/definitions/encryptionKey/required\", keyword: \"required\", params: { missingProperty: missing5 }, message: \"must have required property '\" + missing5 + \"'\" }];\n                                                                                                                                return false;\n                                                                                                                            }\n                                                                                                                            else {\n                                                                                                                                if (data83.id !== undefined) {\n                                                                                                                                    const _errs193 = errors;\n                                                                                                                                    if (typeof data83.id !== \"string\") {\n                                                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/encryption/keys/\" + key14.replace(/~/g, \"~0\").replace(/\\//g, \"~1\") + \"/id\", schemaPath: \"#/definitions/encryptionKey/properties/id/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                                                        return false;\n                                                                                                                                    }\n                                                                                                                                    var valid25 = _errs193 === errors;\n                                                                                                                                }\n                                                                                                                                else {\n                                                                                                                                    var valid25 = true;\n                                                                                                                                }\n                                                                                                                                if (valid25) {\n                                                                                                                                    if (data83.data !== undefined) {\n                                                                                                                                        let data85 = data83.data;\n                                                                                                                                        const _errs195 = errors;\n                                                                                                                                        if (errors === _errs195) {\n                                                                                                                                            if (errors === _errs195) {\n                                                                                                                                                if (typeof data85 === \"string\") {\n                                                                                                                                                    if (!(formats0.test(data85))) {\n                                                                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/encryption/keys/\" + key14.replace(/~/g, \"~0\").replace(/\\//g, \"~1\") + \"/data\", schemaPath: \"#/definitions/encryptionKey/properties/data/format\", keyword: \"format\", params: { format: \"hex-string\" }, message: \"must match format \\\"\" + \"hex-string\" + \"\\\"\" }];\n                                                                                                                                                        return false;\n                                                                                                                                                    }\n                                                                                                                                                }\n                                                                                                                                                else {\n                                                                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/encryption/keys/\" + key14.replace(/~/g, \"~0\").replace(/\\//g, \"~1\") + \"/data\", schemaPath: \"#/definitions/encryptionKey/properties/data/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" }];\n                                                                                                                                                    return false;\n                                                                                                                                                }\n                                                                                                                                            }\n                                                                                                                                        }\n                                                                                                                                        var valid25 = _errs195 === errors;\n                                                                                                                                    }\n                                                                                                                                    else {\n                                                                                                                                        var valid25 = true;\n                                                                                                                                    }\n                                                                                                                                }\n                                                                                                                            }\n                                                                                                                        }\n                                                                                                                        else {\n                                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/encryption/keys/\" + key14.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"), schemaPath: \"#/definitions/encryptionKey/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                                                            return false;\n                                                                                                                        }\n                                                                                                                    }\n                                                                                                                    var valid23 = _errs190 === errors;\n                                                                                                                    if (!valid23) {\n                                                                                                                        break;\n                                                                                                                    }\n                                                                                                                }\n                                                                                                            }\n                                                                                                        }\n                                                                                                        else {\n                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/encryption/keys\", schemaPath: \"#/properties/encryption/properties/keys/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                                            return false;\n                                                                                                        }\n                                                                                                    }\n                                                                                                    var valid20 = _errs184 === errors;\n                                                                                                }\n                                                                                                else {\n                                                                                                    var valid20 = true;\n                                                                                                }\n                                                                                            }\n                                                                                        }\n                                                                                    }\n                                                                                }\n                                                                            }\n                                                                        }\n                                                                    }\n                                                                }\n                                                                else {\n                                                                    validate10.errors = [{ instancePath: instancePath + \"/encryption\", schemaPath: \"#/properties/encryption/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                    return false;\n                                                                }\n                                                            }\n                                                            var valid0 = _errs169 === errors;\n                                                            if (valid0) {\n                                                                let data86 = data.validation;\n                                                                const _errs197 = errors;\n                                                                if (errors === _errs197) {\n                                                                    if (data86 && typeof data86 == \"object\" && !Array.isArray(data86)) {\n                                                                        if (data86.permissions === undefined) {\n                                                                            data86.permissions = true;\n                                                                        }\n                                                                        if (data86.partitions === undefined) {\n                                                                            data86.partitions = true;\n                                                                        }\n                                                                        const _errs199 = errors;\n                                                                        for (const key15 in data86) {\n                                                                            if (!((key15 === \"permissions\") || (key15 === \"partitions\"))) {\n                                                                                validate10.errors = [{ instancePath: instancePath + \"/validation\", schemaPath: \"#/properties/validation/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key15 }, message: \"must NOT have additional properties\" }];\n                                                                                return false;\n                                                                                break;\n                                                                            }\n                                                                        }\n                                                                        if (_errs199 === errors) {\n                                                                            const _errs200 = errors;\n                                                                            if (typeof data86.permissions !== \"boolean\") {\n                                                                                validate10.errors = [{ instancePath: instancePath + \"/validation/permissions\", schemaPath: \"#/properties/validation/properties/permissions/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                                                                return false;\n                                                                            }\n                                                                            var valid26 = _errs200 === errors;\n                                                                            if (valid26) {\n                                                                                const _errs202 = errors;\n                                                                                if (typeof data86.partitions !== \"boolean\") {\n                                                                                    validate10.errors = [{ instancePath: instancePath + \"/validation/partitions\", schemaPath: \"#/properties/validation/properties/partitions/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" }];\n                                                                                    return false;\n                                                                                }\n                                                                                var valid26 = _errs202 === errors;\n                                                                            }\n                                                                        }\n                                                                    }\n                                                                    else {\n                                                                        validate10.errors = [{ instancePath: instancePath + \"/validation\", schemaPath: \"#/properties/validation/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                        return false;\n                                                                    }\n                                                                }\n                                                                var valid0 = _errs197 === errors;\n                                                                if (valid0) {\n                                                                    if (data.metrics !== undefined) {\n                                                                        let data89 = data.metrics;\n                                                                        const _errs204 = errors;\n                                                                        const _errs205 = errors;\n                                                                        let valid27 = false;\n                                                                        const _errs206 = errors;\n                                                                        if (typeof data89 !== \"boolean\") {\n                                                                            const err9 = { instancePath: instancePath + \"/metrics\", schemaPath: \"#/properties/metrics/anyOf/0/type\", keyword: \"type\", params: { type: \"boolean\" }, message: \"must be boolean\" };\n                                                                            if (vErrors === null) {\n                                                                                vErrors = [err9];\n                                                                            }\n                                                                            else {\n                                                                                vErrors.push(err9);\n                                                                            }\n                                                                            errors++;\n                                                                        }\n                                                                        var _valid1 = _errs206 === errors;\n                                                                        valid27 = valid27 || _valid1;\n                                                                        if (!valid27) {\n                                                                            const _errs208 = errors;\n                                                                            if (errors === _errs208) {\n                                                                                if (data89 && typeof data89 == \"object\" && !Array.isArray(data89)) {\n                                                                                    const _errs210 = errors;\n                                                                                    for (const key16 in data89) {\n                                                                                        if (!((key16 === \"periods\") || (key16 === \"maxPublishDelay\"))) {\n                                                                                            const err10 = { instancePath: instancePath + \"/metrics\", schemaPath: \"#/properties/metrics/anyOf/1/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key16 }, message: \"must NOT have additional properties\" };\n                                                                                            if (vErrors === null) {\n                                                                                                vErrors = [err10];\n                                                                                            }\n                                                                                            else {\n                                                                                                vErrors.push(err10);\n                                                                                            }\n                                                                                            errors++;\n                                                                                            break;\n                                                                                        }\n                                                                                    }\n                                                                                    if (_errs210 === errors) {\n                                                                                        if (data89.periods !== undefined) {\n                                                                                            let data90 = data89.periods;\n                                                                                            const _errs211 = errors;\n                                                                                            if (errors === _errs211) {\n                                                                                                if (Array.isArray(data90)) {\n                                                                                                    var valid29 = true;\n                                                                                                    const len3 = data90.length;\n                                                                                                    for (let i3 = 0; i3 < len3; i3++) {\n                                                                                                        let data91 = data90[i3];\n                                                                                                        const _errs213 = errors;\n                                                                                                        if (errors === _errs213) {\n                                                                                                            if (data91 && typeof data91 == \"object\" && !Array.isArray(data91)) {\n                                                                                                                let missing6;\n                                                                                                                if (((data91.streamId === undefined) && (missing6 = \"streamId\")) || ((data91.duration === undefined) && (missing6 = \"duration\"))) {\n                                                                                                                    const err11 = { instancePath: instancePath + \"/metrics/periods/\" + i3, schemaPath: \"#/properties/metrics/anyOf/1/properties/periods/items/required\", keyword: \"required\", params: { missingProperty: missing6 }, message: \"must have required property '\" + missing6 + \"'\" };\n                                                                                                                    if (vErrors === null) {\n                                                                                                                        vErrors = [err11];\n                                                                                                                    }\n                                                                                                                    else {\n                                                                                                                        vErrors.push(err11);\n                                                                                                                    }\n                                                                                                                    errors++;\n                                                                                                                }\n                                                                                                                else {\n                                                                                                                    if (data91.id !== undefined) {\n                                                                                                                        const _errs215 = errors;\n                                                                                                                        if (typeof data91.id !== \"string\") {\n                                                                                                                            const err12 = { instancePath: instancePath + \"/metrics/periods/\" + i3 + \"/id\", schemaPath: \"#/properties/metrics/anyOf/1/properties/periods/items/properties/id/type\", keyword: \"type\", params: { type: \"string\" }, message: \"must be string\" };\n                                                                                                                            if (vErrors === null) {\n                                                                                                                                vErrors = [err12];\n                                                                                                                            }\n                                                                                                                            else {\n                                                                                                                                vErrors.push(err12);\n                                                                                                                            }\n                                                                                                                            errors++;\n                                                                                                                        }\n                                                                                                                        var valid30 = _errs215 === errors;\n                                                                                                                    }\n                                                                                                                    else {\n                                                                                                                        var valid30 = true;\n                                                                                                                    }\n                                                                                                                    if (valid30) {\n                                                                                                                        if (data91.duration !== undefined) {\n                                                                                                                            let data93 = data91.duration;\n                                                                                                                            const _errs217 = errors;\n                                                                                                                            if (!((typeof data93 == \"number\") && (isFinite(data93)))) {\n                                                                                                                                const err13 = { instancePath: instancePath + \"/metrics/periods/\" + i3 + \"/duration\", schemaPath: \"#/properties/metrics/anyOf/1/properties/periods/items/properties/duration/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" };\n                                                                                                                                if (vErrors === null) {\n                                                                                                                                    vErrors = [err13];\n                                                                                                                                }\n                                                                                                                                else {\n                                                                                                                                    vErrors.push(err13);\n                                                                                                                                }\n                                                                                                                                errors++;\n                                                                                                                            }\n                                                                                                                            var valid30 = _errs217 === errors;\n                                                                                                                        }\n                                                                                                                        else {\n                                                                                                                            var valid30 = true;\n                                                                                                                        }\n                                                                                                                    }\n                                                                                                                }\n                                                                                                            }\n                                                                                                            else {\n                                                                                                                const err14 = { instancePath: instancePath + \"/metrics/periods/\" + i3, schemaPath: \"#/properties/metrics/anyOf/1/properties/periods/items/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" };\n                                                                                                                if (vErrors === null) {\n                                                                                                                    vErrors = [err14];\n                                                                                                                }\n                                                                                                                else {\n                                                                                                                    vErrors.push(err14);\n                                                                                                                }\n                                                                                                                errors++;\n                                                                                                            }\n                                                                                                        }\n                                                                                                        var valid29 = _errs213 === errors;\n                                                                                                        if (!valid29) {\n                                                                                                            break;\n                                                                                                        }\n                                                                                                    }\n                                                                                                }\n                                                                                                else {\n                                                                                                    const err15 = { instancePath: instancePath + \"/metrics/periods\", schemaPath: \"#/properties/metrics/anyOf/1/properties/periods/type\", keyword: \"type\", params: { type: \"array\" }, message: \"must be array\" };\n                                                                                                    if (vErrors === null) {\n                                                                                                        vErrors = [err15];\n                                                                                                    }\n                                                                                                    else {\n                                                                                                        vErrors.push(err15);\n                                                                                                    }\n                                                                                                    errors++;\n                                                                                                }\n                                                                                            }\n                                                                                            var valid28 = _errs211 === errors;\n                                                                                        }\n                                                                                        else {\n                                                                                            var valid28 = true;\n                                                                                        }\n                                                                                        if (valid28) {\n                                                                                            if (data89.maxPublishDelay !== undefined) {\n                                                                                                let data94 = data89.maxPublishDelay;\n                                                                                                const _errs219 = errors;\n                                                                                                if (!((typeof data94 == \"number\") && (isFinite(data94)))) {\n                                                                                                    const err16 = { instancePath: instancePath + \"/metrics/maxPublishDelay\", schemaPath: \"#/properties/metrics/anyOf/1/properties/maxPublishDelay/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" };\n                                                                                                    if (vErrors === null) {\n                                                                                                        vErrors = [err16];\n                                                                                                    }\n                                                                                                    else {\n                                                                                                        vErrors.push(err16);\n                                                                                                    }\n                                                                                                    errors++;\n                                                                                                }\n                                                                                                var valid28 = _errs219 === errors;\n                                                                                            }\n                                                                                            else {\n                                                                                                var valid28 = true;\n                                                                                            }\n                                                                                        }\n                                                                                    }\n                                                                                }\n                                                                                else {\n                                                                                    const err17 = { instancePath: instancePath + \"/metrics\", schemaPath: \"#/properties/metrics/anyOf/1/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" };\n                                                                                    if (vErrors === null) {\n                                                                                        vErrors = [err17];\n                                                                                    }\n                                                                                    else {\n                                                                                        vErrors.push(err17);\n                                                                                    }\n                                                                                    errors++;\n                                                                                }\n                                                                            }\n                                                                            var _valid1 = _errs208 === errors;\n                                                                            valid27 = valid27 || _valid1;\n                                                                        }\n                                                                        if (!valid27) {\n                                                                            const err18 = { instancePath: instancePath + \"/metrics\", schemaPath: \"#/properties/metrics/anyOf\", keyword: \"anyOf\", params: {}, message: \"must match a schema in anyOf\" };\n                                                                            if (vErrors === null) {\n                                                                                vErrors = [err18];\n                                                                            }\n                                                                            else {\n                                                                                vErrors.push(err18);\n                                                                            }\n                                                                            errors++;\n                                                                            validate10.errors = vErrors;\n                                                                            return false;\n                                                                        }\n                                                                        else {\n                                                                            errors = _errs205;\n                                                                            if (vErrors !== null) {\n                                                                                if (_errs205) {\n                                                                                    vErrors.length = _errs205;\n                                                                                }\n                                                                                else {\n                                                                                    vErrors = null;\n                                                                                }\n                                                                            }\n                                                                        }\n                                                                        var valid0 = _errs204 === errors;\n                                                                    }\n                                                                    else {\n                                                                        var valid0 = true;\n                                                                    }\n                                                                    if (valid0) {\n                                                                        let data95 = data.cache;\n                                                                        const _errs221 = errors;\n                                                                        if (errors === _errs221) {\n                                                                            if (data95 && typeof data95 == \"object\" && !Array.isArray(data95)) {\n                                                                                if (data95.maxSize === undefined) {\n                                                                                    data95.maxSize = 10000;\n                                                                                }\n                                                                                if (data95.maxAge === undefined) {\n                                                                                    data95.maxAge = 86400000;\n                                                                                }\n                                                                                const _errs223 = errors;\n                                                                                for (const key17 in data95) {\n                                                                                    if (!((key17 === \"maxSize\") || (key17 === \"maxAge\"))) {\n                                                                                        validate10.errors = [{ instancePath: instancePath + \"/cache\", schemaPath: \"#/properties/cache/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key17 }, message: \"must NOT have additional properties\" }];\n                                                                                        return false;\n                                                                                        break;\n                                                                                    }\n                                                                                }\n                                                                                if (_errs223 === errors) {\n                                                                                    let data96 = data95.maxSize;\n                                                                                    const _errs224 = errors;\n                                                                                    if (!((typeof data96 == \"number\") && (isFinite(data96)))) {\n                                                                                        validate10.errors = [{ instancePath: instancePath + \"/cache/maxSize\", schemaPath: \"#/properties/cache/properties/maxSize/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                        return false;\n                                                                                    }\n                                                                                    var valid31 = _errs224 === errors;\n                                                                                    if (valid31) {\n                                                                                        let data97 = data95.maxAge;\n                                                                                        const _errs226 = errors;\n                                                                                        if (!((typeof data97 == \"number\") && (isFinite(data97)))) {\n                                                                                            validate10.errors = [{ instancePath: instancePath + \"/cache/maxAge\", schemaPath: \"#/properties/cache/properties/maxAge/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                            return false;\n                                                                                        }\n                                                                                        var valid31 = _errs226 === errors;\n                                                                                    }\n                                                                                }\n                                                                            }\n                                                                            else {\n                                                                                validate10.errors = [{ instancePath: instancePath + \"/cache\", schemaPath: \"#/properties/cache/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                return false;\n                                                                            }\n                                                                        }\n                                                                        var valid0 = _errs221 === errors;\n                                                                        if (valid0) {\n                                                                            let data98 = data._timeouts;\n                                                                            const _errs228 = errors;\n                                                                            if (errors === _errs228) {\n                                                                                if (data98 && typeof data98 == \"object\" && !Array.isArray(data98)) {\n                                                                                    if (data98.theGraph === undefined) {\n                                                                                        data98.theGraph = {};\n                                                                                    }\n                                                                                    if (data98.storageNode === undefined) {\n                                                                                        data98.storageNode = {};\n                                                                                    }\n                                                                                    if (data98.ensStreamCreation === undefined) {\n                                                                                        data98.ensStreamCreation = {};\n                                                                                    }\n                                                                                    if (data98.jsonRpcTimeout === undefined) {\n                                                                                        data98.jsonRpcTimeout = 30000;\n                                                                                    }\n                                                                                    const _errs230 = errors;\n                                                                                    for (const key18 in data98) {\n                                                                                        if (!((((key18 === \"theGraph\") || (key18 === \"storageNode\")) || (key18 === \"ensStreamCreation\")) || (key18 === \"jsonRpcTimeout\"))) {\n                                                                                            validate10.errors = [{ instancePath: instancePath + \"/_timeouts\", schemaPath: \"#/properties/_timeouts/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key18 }, message: \"must NOT have additional properties\" }];\n                                                                                            return false;\n                                                                                            break;\n                                                                                        }\n                                                                                    }\n                                                                                    if (_errs230 === errors) {\n                                                                                        let data99 = data98.theGraph;\n                                                                                        const _errs231 = errors;\n                                                                                        if (errors === _errs231) {\n                                                                                            if (data99 && typeof data99 == \"object\" && !Array.isArray(data99)) {\n                                                                                                if (data99.indexTimeout === undefined) {\n                                                                                                    data99.indexTimeout = 60000;\n                                                                                                }\n                                                                                                if (data99.indexPollInterval === undefined) {\n                                                                                                    data99.indexPollInterval = 1000;\n                                                                                                }\n                                                                                                if (data99.fetchTimeout === undefined) {\n                                                                                                    data99.fetchTimeout = 30000;\n                                                                                                }\n                                                                                                const _errs233 = errors;\n                                                                                                for (const key19 in data99) {\n                                                                                                    if (!(((key19 === \"indexTimeout\") || (key19 === \"indexPollInterval\")) || (key19 === \"fetchTimeout\"))) {\n                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/_timeouts/theGraph\", schemaPath: \"#/properties/_timeouts/properties/theGraph/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key19 }, message: \"must NOT have additional properties\" }];\n                                                                                                        return false;\n                                                                                                        break;\n                                                                                                    }\n                                                                                                }\n                                                                                                if (_errs233 === errors) {\n                                                                                                    let data100 = data99.indexTimeout;\n                                                                                                    const _errs234 = errors;\n                                                                                                    if (!((typeof data100 == \"number\") && (isFinite(data100)))) {\n                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/_timeouts/theGraph/indexTimeout\", schemaPath: \"#/properties/_timeouts/properties/theGraph/properties/indexTimeout/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                        return false;\n                                                                                                    }\n                                                                                                    var valid33 = _errs234 === errors;\n                                                                                                    if (valid33) {\n                                                                                                        let data101 = data99.indexPollInterval;\n                                                                                                        const _errs236 = errors;\n                                                                                                        if (!((typeof data101 == \"number\") && (isFinite(data101)))) {\n                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/_timeouts/theGraph/indexPollInterval\", schemaPath: \"#/properties/_timeouts/properties/theGraph/properties/indexPollInterval/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                            return false;\n                                                                                                        }\n                                                                                                        var valid33 = _errs236 === errors;\n                                                                                                        if (valid33) {\n                                                                                                            let data102 = data99.fetchTimeout;\n                                                                                                            const _errs238 = errors;\n                                                                                                            if (!((typeof data102 == \"number\") && (isFinite(data102)))) {\n                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/_timeouts/theGraph/fetchTimeout\", schemaPath: \"#/properties/_timeouts/properties/theGraph/properties/fetchTimeout/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                                return false;\n                                                                                                            }\n                                                                                                            var valid33 = _errs238 === errors;\n                                                                                                        }\n                                                                                                    }\n                                                                                                }\n                                                                                            }\n                                                                                            else {\n                                                                                                validate10.errors = [{ instancePath: instancePath + \"/_timeouts/theGraph\", schemaPath: \"#/properties/_timeouts/properties/theGraph/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                                return false;\n                                                                                            }\n                                                                                        }\n                                                                                        var valid32 = _errs231 === errors;\n                                                                                        if (valid32) {\n                                                                                            let data103 = data98.storageNode;\n                                                                                            const _errs240 = errors;\n                                                                                            if (errors === _errs240) {\n                                                                                                if (data103 && typeof data103 == \"object\" && !Array.isArray(data103)) {\n                                                                                                    if (data103.timeout === undefined) {\n                                                                                                        data103.timeout = 30000;\n                                                                                                    }\n                                                                                                    if (data103.retryInterval === undefined) {\n                                                                                                        data103.retryInterval = 1000;\n                                                                                                    }\n                                                                                                    const _errs242 = errors;\n                                                                                                    for (const key20 in data103) {\n                                                                                                        if (!((key20 === \"timeout\") || (key20 === \"retryInterval\"))) {\n                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/_timeouts/storageNode\", schemaPath: \"#/properties/_timeouts/properties/storageNode/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key20 }, message: \"must NOT have additional properties\" }];\n                                                                                                            return false;\n                                                                                                            break;\n                                                                                                        }\n                                                                                                    }\n                                                                                                    if (_errs242 === errors) {\n                                                                                                        let data104 = data103.timeout;\n                                                                                                        const _errs243 = errors;\n                                                                                                        if (!((typeof data104 == \"number\") && (isFinite(data104)))) {\n                                                                                                            validate10.errors = [{ instancePath: instancePath + \"/_timeouts/storageNode/timeout\", schemaPath: \"#/properties/_timeouts/properties/storageNode/properties/timeout/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                            return false;\n                                                                                                        }\n                                                                                                        var valid34 = _errs243 === errors;\n                                                                                                        if (valid34) {\n                                                                                                            let data105 = data103.retryInterval;\n                                                                                                            const _errs245 = errors;\n                                                                                                            if (!((typeof data105 == \"number\") && (isFinite(data105)))) {\n                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/_timeouts/storageNode/retryInterval\", schemaPath: \"#/properties/_timeouts/properties/storageNode/properties/retryInterval/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                                return false;\n                                                                                                            }\n                                                                                                            var valid34 = _errs245 === errors;\n                                                                                                        }\n                                                                                                    }\n                                                                                                }\n                                                                                                else {\n                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/_timeouts/storageNode\", schemaPath: \"#/properties/_timeouts/properties/storageNode/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                                    return false;\n                                                                                                }\n                                                                                            }\n                                                                                            var valid32 = _errs240 === errors;\n                                                                                            if (valid32) {\n                                                                                                let data106 = data98.ensStreamCreation;\n                                                                                                const _errs247 = errors;\n                                                                                                if (errors === _errs247) {\n                                                                                                    if (data106 && typeof data106 == \"object\" && !Array.isArray(data106)) {\n                                                                                                        if (data106.timeout === undefined) {\n                                                                                                            data106.timeout = 180000;\n                                                                                                        }\n                                                                                                        if (data106.retryInterval === undefined) {\n                                                                                                            data106.retryInterval = 1000;\n                                                                                                        }\n                                                                                                        const _errs249 = errors;\n                                                                                                        for (const key21 in data106) {\n                                                                                                            if (!((key21 === \"timeout\") || (key21 === \"retryInterval\"))) {\n                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/_timeouts/ensStreamCreation\", schemaPath: \"#/properties/_timeouts/properties/ensStreamCreation/additionalProperties\", keyword: \"additionalProperties\", params: { additionalProperty: key21 }, message: \"must NOT have additional properties\" }];\n                                                                                                                return false;\n                                                                                                                break;\n                                                                                                            }\n                                                                                                        }\n                                                                                                        if (_errs249 === errors) {\n                                                                                                            let data107 = data106.timeout;\n                                                                                                            const _errs250 = errors;\n                                                                                                            if (!((typeof data107 == \"number\") && (isFinite(data107)))) {\n                                                                                                                validate10.errors = [{ instancePath: instancePath + \"/_timeouts/ensStreamCreation/timeout\", schemaPath: \"#/properties/_timeouts/properties/ensStreamCreation/properties/timeout/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                                return false;\n                                                                                                            }\n                                                                                                            var valid35 = _errs250 === errors;\n                                                                                                            if (valid35) {\n                                                                                                                let data108 = data106.retryInterval;\n                                                                                                                const _errs252 = errors;\n                                                                                                                if (!((typeof data108 == \"number\") && (isFinite(data108)))) {\n                                                                                                                    validate10.errors = [{ instancePath: instancePath + \"/_timeouts/ensStreamCreation/retryInterval\", schemaPath: \"#/properties/_timeouts/properties/ensStreamCreation/properties/retryInterval/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                                    return false;\n                                                                                                                }\n                                                                                                                var valid35 = _errs252 === errors;\n                                                                                                            }\n                                                                                                        }\n                                                                                                    }\n                                                                                                    else {\n                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/_timeouts/ensStreamCreation\", schemaPath: \"#/properties/_timeouts/properties/ensStreamCreation/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                                        return false;\n                                                                                                    }\n                                                                                                }\n                                                                                                var valid32 = _errs247 === errors;\n                                                                                                if (valid32) {\n                                                                                                    let data109 = data98.jsonRpcTimeout;\n                                                                                                    const _errs254 = errors;\n                                                                                                    if (!((typeof data109 == \"number\") && (isFinite(data109)))) {\n                                                                                                        validate10.errors = [{ instancePath: instancePath + \"/_timeouts/jsonRpcTimeout\", schemaPath: \"#/properties/_timeouts/properties/jsonRpcTimeout/type\", keyword: \"type\", params: { type: \"number\" }, message: \"must be number\" }];\n                                                                                                        return false;\n                                                                                                    }\n                                                                                                    var valid32 = _errs254 === errors;\n                                                                                                }\n                                                                                            }\n                                                                                        }\n                                                                                    }\n                                                                                }\n                                                                                else {\n                                                                                    validate10.errors = [{ instancePath: instancePath + \"/_timeouts\", schemaPath: \"#/properties/_timeouts/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n                                                                                    return false;\n                                                                                }\n                                                                            }\n                                                                            var valid0 = _errs228 === errors;\n                                                                        }\n                                                                    }\n                                                                }\n                                                            }\n                                                        }\n                                                    }\n                                                }\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n    else {\n        validate10.errors = [{ instancePath, schemaPath: \"#/type\", keyword: \"type\", params: { type: \"object\" }, message: \"must be object\" }];\n        return false;\n    }\n} validate10.errors = vErrors; return errors === 0; }\n","import { toEthereumAddress } from '@streamr/utils';\nimport { MIN_KEY_LENGTH } from './encryption/RSAKeyPair';\n/**\n * Streamr client constructor options that work in the test environment\n */\nexport const CONFIG_TEST = {\n    network: {\n        controlLayer: {\n            entryPointDiscovery: {\n                enabled: false,\n            },\n            websocketPortRange: {\n                min: 32400,\n                max: 32800\n            },\n            iceServers: [],\n            webrtcAllowPrivateAddresses: true,\n            websocketServerEnableTls: false\n        }\n    },\n    encryption: {\n        rsaKeyLength: MIN_KEY_LENGTH\n    },\n    _timeouts: {\n        theGraph: {\n            indexTimeout: 10 * 1000,\n            indexPollInterval: 500\n        },\n        storageNode: {\n            timeout: 30 * 1000,\n            retryInterval: 500\n        },\n        ensStreamCreation: {\n            timeout: 20 * 1000,\n            retryInterval: 500\n        }\n    },\n    metrics: false\n};\nexport const DOCKER_DEV_STORAGE_NODE = toEthereumAddress('0xde1112f631486CfC759A50196853011528bC5FA0');\n","import cloneDeep from 'lodash/cloneDeep';\nimport { merge } from '@streamr/utils';\nimport { generateClientId } from './utils/utils';\nimport validate from './generated/validateConfig';\nimport { config as CHAIN_CONFIG } from '@streamr/config';\nimport { CONFIG_TEST } from './ConfigTest';\nimport { DEFAULT_ENVIRONMENT_ID, } from './ConfigTypes';\nexport const createStrictConfig = (input = {}) => {\n    // TODO is it good to cloneDeep the input object as it may have object references (e.g. auth.ethereum)?\n    let config = cloneDeep(input);\n    const environment = config.environment ?? DEFAULT_ENVIRONMENT_ID;\n    config = applyEnvironmentDefaults(environment, config);\n    const strictConfig = validateConfig(config);\n    strictConfig.id ??= generateClientId();\n    return strictConfig;\n};\nconst applyEnvironmentDefaults = (environmentId, data) => {\n    const defaults = CHAIN_CONFIG[environmentId];\n    let config = merge({\n        environment: environmentId,\n        network: {\n            controlLayer: {\n                entryPoints: defaults.entryPoints\n            }\n        },\n        contracts: {\n            ethereumNetwork: {\n                chainId: defaults.id\n            },\n            streamRegistryChainAddress: defaults.contracts.StreamRegistry,\n            streamStorageRegistryChainAddress: defaults.contracts.StreamStorageRegistry,\n            storageNodeRegistryChainAddress: defaults.contracts.StorageNodeRegistry,\n            sponsorshipFactoryChainAddress: defaults.contracts.SponsorshipFactory,\n            rpcs: defaults.rpcEndpoints,\n            theGraphUrl: defaults.theGraphUrl\n        }\n    }, data);\n    if (environmentId === 'polygon') {\n        config.contracts.ethereumNetwork = {\n            highGasPriceStrategy: true,\n            ...config.contracts.ethereumNetwork\n        };\n    }\n    else if (environmentId === 'dev2') {\n        config = merge(CONFIG_TEST, config);\n    }\n    return config;\n};\nexport const validateConfig = (data) => {\n    if (!validate(data)) {\n        throw new Error(validate.errors.map((e) => {\n            let text = e.instancePath + ' ' + e.message;\n            if (e.params.additionalProperty) {\n                // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n                text += `: ${e.params.additionalProperty}`;\n            }\n            return text;\n        }).join('\\n'));\n    }\n    return data;\n};\nexport const redactConfig = (config) => {\n    if (config.auth?.privateKey !== undefined) {\n        config.auth.privateKey = '(redacted)';\n    }\n};\n","import { SignatureType } from '@streamr/trackerless-network';\nimport { IDENTITY_MAPPING } from './identity/IdentityMapping';\nconst stringVersionsOfSignatureTypes = {\n    // Read key pair SignatureTypes from IdentityMapping\n    ...Object.fromEntries(IDENTITY_MAPPING.map((idMapping) => [idMapping.signatureType, idMapping.keyType])),\n    // These special ones need to be added manually\n    [SignatureType.ECDSA_SECP256K1_LEGACY]: 'ECDSA_SECP256K1_LEGACY',\n    [SignatureType.ERC_1271]: 'ERC_1271',\n};\nfunction signatureTypeToString(signatureType) {\n    const result = stringVersionsOfSignatureTypes[signatureType];\n    if (!result) {\n        throw new Error(`Unknown signature type: ${signatureType}`);\n    }\n    return result;\n}\nexport const convertStreamMessageToMessage = (msg) => {\n    return {\n        content: msg.getParsedContent(),\n        streamId: msg.getStreamId(),\n        streamPartition: msg.getStreamPartition(),\n        timestamp: msg.getTimestamp(),\n        sequenceNumber: msg.getSequenceNumber(),\n        signature: msg.signature,\n        signatureType: signatureTypeToString(msg.signatureType),\n        publisherId: msg.getPublisherId(),\n        msgChainId: msg.getMsgChainId(),\n        encryptionKeyId: msg.groupKeyId,\n        streamMessage: msg\n        // TODO add other relevant fields (could update some test assertions to\n        // use those keys instead of getting the fields via from streamMessage property)\n    };\n};\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { merge, wait } from '@streamr/utils';\nimport { scoped, Lifecycle, inject } from 'tsyringe';\nimport { ConfigInjectionToken } from './ConfigTypes';\nimport { DestroySignal } from './DestroySignal';\nimport { StreamrClientEventEmitter } from './events';\nimport { NetworkNodeFacade } from './NetworkNodeFacade';\nimport { Publisher } from './publish/Publisher';\nimport { pOnce } from './utils/promises';\nexport const DEFAULTS = {\n    periods: [\n        {\n            duration: 60000,\n            streamId: 'streamr.eth/metrics/nodes/firehose/min'\n        },\n        {\n            duration: 3600000,\n            streamId: 'streamr.eth/metrics/nodes/firehose/hour'\n        },\n        {\n            duration: 86400000,\n            streamId: 'streamr.eth/metrics/nodes/firehose/day'\n        }\n    ],\n    maxPublishDelay: 30000\n};\nconst getNormalizedConfig = (config) => {\n    if (config.metrics === true) {\n        return DEFAULTS;\n    }\n    else if (config.metrics === false) {\n        return {\n            ...DEFAULTS,\n            periods: []\n        };\n    }\n    else if (config.metrics !== undefined) {\n        return merge(DEFAULTS, config.metrics);\n    }\n    else {\n        const isEthereumAuth = (config.auth?.ethereum !== undefined);\n        return {\n            ...DEFAULTS,\n            periods: isEthereumAuth ? [] : DEFAULTS.periods\n        };\n    }\n};\nlet MetricsPublisher = class MetricsPublisher {\n    publisher;\n    node;\n    config;\n    eventEmitter;\n    destroySignal;\n    constructor(publisher, node, config, eventEmitter, destroySignal) {\n        this.publisher = publisher;\n        this.node = node;\n        this.config = getNormalizedConfig(config);\n        this.eventEmitter = eventEmitter;\n        this.destroySignal = destroySignal;\n        const ensureStarted = pOnce(async () => {\n            const metricsContext = await this.node.getMetricsContext();\n            const nodeId = await this.node.getNodeId();\n            this.config.periods.forEach((config) => {\n                metricsContext.createReportProducer(async (report) => {\n                    await this.publish(report, config.streamId, nodeId);\n                }, config.duration, this.destroySignal.abortSignal);\n            });\n        });\n        if (this.config.periods.length > 0) {\n            this.eventEmitter.on('messagePublished', () => ensureStarted());\n            this.eventEmitter.on('streamPartSubscribed', () => ensureStarted());\n        }\n    }\n    async publish(report, streamId, nodeId) {\n        await wait(Math.random() * this.config.maxPublishDelay);\n        const message = {\n            ...report,\n            node: {\n                ...report.node,\n                id: nodeId\n            }\n        };\n        try {\n            await this.publisher.publish(streamId, message, {\n                timestamp: report.period.end,\n                partitionKey: nodeId\n            });\n        }\n        catch (e) {\n            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n            console.warn(`Unable to publish metrics: ${e.message}`);\n        }\n    }\n};\nMetricsPublisher = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(2, inject(ConfigInjectionToken)),\n    __metadata(\"design:paramtypes\", [Publisher,\n        NetworkNodeFacade, Object, StreamrClientEventEmitter,\n        DestroySignal])\n], MetricsPublisher);\nexport { MetricsPublisher };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Lifecycle, scoped } from 'tsyringe';\nimport { NetworkNodeFacade } from './NetworkNodeFacade';\nimport { StreamIDBuilder, DEFAULT_PARTITION } from './StreamIDBuilder';\nimport { OperatorRegistry } from './contracts/OperatorRegistry';\nimport { LoggerFactory } from './utils/LoggerFactory';\nimport { toStreamPartID } from '@streamr/utils';\nimport shuffle from 'lodash/shuffle';\nimport sample from 'lodash/sample';\nlet ProxyNodeFinder = class ProxyNodeFinder {\n    streamIdBuilder;\n    operatorRegistry;\n    node;\n    logger;\n    constructor(streamIdBuilder, operatorRegistry, node, loggerFactory) {\n        this.streamIdBuilder = streamIdBuilder;\n        this.operatorRegistry = operatorRegistry;\n        this.node = node;\n        this.logger = loggerFactory.createLogger('ProxyNodeFinder');\n    }\n    async find(streamDefinition, numberOfProxies = 1, maxQueryResults = 100, maxHeartbeatAgeHours = 24) {\n        const [streamId, partition] = await this.streamIdBuilder.toStreamPartElements(streamDefinition);\n        this.logger.debug(`Trying to find ${numberOfProxies} proxy nodes for stream ${streamId} partition ${partition}`);\n        // Find active operators on the stream\n        const foundOperators = await this.operatorRegistry.findOperatorsOnStream(streamId, maxQueryResults, maxHeartbeatAgeHours);\n        this.logger.debug(`Found ${foundOperators.length} operators on stream ${streamId}`);\n        // Throw early if we don't even have a chance of finding enough proxies (we accept one per operator)\n        if (foundOperators.length < numberOfProxies) {\n            throw new Error(`Not enough operators found for stream ${streamId}: found ${foundOperators.length} operators, but ${numberOfProxies} are required`);\n        }\n        const shuffledOperators = shuffle(foundOperators);\n        const foundProxies = [];\n        // This shared promise is used to signal that enough proxies have been found\n        // It's a speed optimization to avoid waiting for all workers to complete if we already have enough nodes\n        let signalEnoughProxiesFound = () => { };\n        const enoughProxiesFoundPromise = new Promise((resolve) => {\n            signalEnoughProxiesFound = resolve;\n        });\n        // Try to find numOfProxies nodes from the shuffled operators\n        // We search in parallel, with parallelism = numOfProxies\n        // If there's an error, try the next operator\n        let operatorIndex = 0;\n        const startNodeDiscoveryWorker = async (workerIndex) => {\n            while (operatorIndex < shuffledOperators.length && foundProxies.length < numberOfProxies) {\n                const operator = shuffledOperators[operatorIndex];\n                operatorIndex++;\n                const streamPartId = toStreamPartID(streamId, partition ?? DEFAULT_PARTITION);\n                try {\n                    const nodes = await this.node.discoverOperators(operator.peerDescriptor, streamPartId);\n                    if (nodes.length > 0) {\n                        // One more check to make sure the other racing threads didn't already find enough nodes\n                        if (foundProxies.length < numberOfProxies) {\n                            this.logger.debug(`(worker ${workerIndex}): found ${nodes.length} nodes for operator ${operator.operatorId} and streamPartId ${streamPartId}`);\n                            foundProxies.push(sample(nodes));\n                            if (foundProxies.length >= numberOfProxies) {\n                                // Signal that enough proxies have been found, this will resolve the race\n                                // and ignore any further results from the other workers\n                                signalEnoughProxiesFound();\n                            }\n                        }\n                        else {\n                            // silently drop the result, enough have been found already\n                        }\n                    }\n                    else {\n                        this.logger.debug(`(worker ${workerIndex}): no nodes found for operator ${operator.operatorId} and streamPartId ${streamPartId}`);\n                    }\n                }\n                catch (error) {\n                    this.logger.error(`(worker ${workerIndex}): error discovering nodes for operator ${operator.operatorId}: ${error.message}`);\n                }\n            }\n        };\n        // Start numberOfProxies discovery workers in parallel\n        // The race will resolve as soon as they signal that they \n        // found enough nodes (success) or the workers complete (failure)\n        await Promise.race([\n            Promise.all(Array.from({ length: numberOfProxies }, (_, index) => startNodeDiscoveryWorker(index))),\n            enoughProxiesFoundPromise\n        ]);\n        if (foundProxies.length < numberOfProxies) {\n            throw new Error(`Not enough proxy nodes were resolved for stream ${streamId}: found ${foundProxies.length} nodes, but ${numberOfProxies} are required`);\n        }\n        return foundProxies;\n    }\n};\nProxyNodeFinder = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __metadata(\"design:paramtypes\", [StreamIDBuilder,\n        OperatorRegistry,\n        NetworkNodeFacade,\n        LoggerFactory])\n], ProxyNodeFinder);\nexport { ProxyNodeFinder };\n","import { toEthereumAddress, toStreamPartID } from '@streamr/utils';\nimport isNumber from 'lodash/isNumber';\nimport isString from 'lodash/isString';\nimport range from 'lodash/range';\nimport { getPartitionCount } from './StreamMetadata';\nimport { toInternalPermissionAssignment } from './permission';\n/**\n * A convenience API for managing and accessing an individual stream.\n *\n * @category Important\n */\nexport class Stream {\n    id;\n    client;\n    /** @internal */\n    constructor(id, client) {\n        this.id = id;\n        this.client = client;\n    }\n    /**\n     * See {@link StreamrClient.publish | StreamrClient.publish}.\n     *\n     * @category Important\n     */\n    publish(content, metadata) {\n        return this.client.publish(this.id, content, metadata);\n    }\n    /**\n     * See {@link StreamrClient.hasPermission | StreamrClient.hasPermission}.\n     *\n     * @category Important\n     */\n    async hasPermission(query) {\n        return this.client.hasPermission({\n            streamId: this.id,\n            ...query\n        });\n    }\n    /**\n     * See {@link StreamrClient.getPermissions | StreamrClient.getPermissions}.\n     *\n     * @category Important\n     */\n    async getPermissions() {\n        return this.client.getPermissions(this.id);\n    }\n    /**\n     * See {@link StreamrClient.grantPermissions | StreamrClient.grantPermissions}.\n     *\n     * @category Important\n     */\n    async grantPermissions(...assignments) {\n        return this.client.grantPermissions(this.id, ...assignments.map(toInternalPermissionAssignment));\n    }\n    /**\n     * See {@link StreamrClient.revokePermissions | StreamrClient.revokePermissions}.\n     *\n     * @category Important\n     */\n    async revokePermissions(...assignments) {\n        return this.client.revokePermissions(this.id, ...assignments.map(toInternalPermissionAssignment));\n    }\n    /**\n     * See {@link StreamrClient.addStreamToStorageNode | StreamrClient.addStreamToStorageNode}.\n     *\n     * @category Important\n     */\n    async addToStorageNode(storageNodeAddress, opts = { wait: false }) {\n        await this.client.addStreamToStorageNode(this.id, storageNodeAddress, opts);\n    }\n    /**\n     * See {@link StreamrClient.removeStreamFromStorageNode | StreamrClient.removeStreamFromStorageNode}.\n     */\n    async removeFromStorageNode(nodeAddress) {\n        return this.client.removeStreamFromStorageNode(this.id, toEthereumAddress(nodeAddress));\n    }\n    /**\n     * See {@link StreamrClient.getStorageNodes | StreamrClient.getStorageNodes}.\n     */\n    async getStorageNodes() {\n        return this.client.getStorageNodes(this.id);\n    }\n    /**\n     * Returns the partitions of the stream.\n     */\n    async getStreamParts() {\n        return range(0, await this.getPartitionCount()).map((p) => toStreamPartID(this.id, p));\n    }\n    async getPartitionCount() {\n        return getPartitionCount(await this.getMetadata());\n    }\n    async getDescription() {\n        const value = (await this.getMetadata()).description;\n        if (isString(value)) {\n            return value;\n        }\n        else {\n            return undefined;\n        }\n    }\n    async setDescription(description) {\n        await this.setMetadata({\n            ...await this.getMetadata(),\n            description\n        });\n    }\n    /**\n     * Gets the value of `storageDays` field\n     */\n    async getStorageDayCount() {\n        const value = (await this.getMetadata()).storageDays;\n        if (isNumber(value)) {\n            return value;\n        }\n        else {\n            return undefined;\n        }\n    }\n    /**\n     * Sets the value of `storageDays` field\n     */\n    async setStorageDayCount(count) {\n        await this.setMetadata({\n            ...await this.getMetadata(),\n            storageDays: count\n        });\n    }\n    /**\n     * Returns the metadata of the stream.\n     */\n    async getMetadata() {\n        return this.client.getStreamMetadata(this.id);\n    }\n    /**\n     * Updates the metadata of the stream.\n     */\n    async setMetadata(metadata) {\n        await this.client.setStreamMetadata(this.id, metadata);\n    }\n}\n","import { OperatorABI, SponsorshipABI } from '@streamr/network-contracts';\nimport { Logger, ObservableEventEmitter, collect, ensureValidStreamPartitionIndex, toEthereumAddress, toStreamID } from '@streamr/utils';\nimport { Interface } from 'ethers';\nimport { z } from 'zod';\nimport { initContractEventGateway } from './contract';\nexport const VOTE_KICK = '0x0000000000000000000000000000000000000000000000000000000000000001';\nexport const VOTE_NO_KICK = '0x0000000000000000000000000000000000000000000000000000000000000000';\nexport class ParseError extends Error {\n    reasonText;\n    constructor(reasonText) {\n        super(`Failed to parse metadata: ${reasonText}`);\n        this.reasonText = reasonText;\n    }\n}\nexport function parsePartitionFromReviewRequestMetadata(metadataAsString) {\n    if (metadataAsString === undefined) {\n        throw new ParseError('no metadata');\n    }\n    let metadata;\n    try {\n        metadata = JSON.parse(metadataAsString);\n    }\n    catch {\n        throw new ParseError('malformed metadata');\n    }\n    const partition = Number(metadata.partition);\n    if (isNaN(partition)) {\n        throw new ParseError('invalid or missing \"partition\" field');\n    }\n    try {\n        ensureValidStreamPartitionIndex(partition);\n    }\n    catch {\n        throw new ParseError('invalid partition numbering');\n    }\n    return partition;\n}\nconst compareBigInts = (a, b) => {\n    if (a < b) {\n        return -1;\n    }\n    else if (a > b) {\n        return 1;\n    }\n    else {\n        return 0;\n    }\n};\nconst logger = new Logger('Operator');\n/**\n * @deprecated This in an internal class\n * @hidden\n */\nexport class Operator {\n    contractAddress;\n    contract;\n    contractReadonly; // TODO: implement lazy loading because all methods don't use this\n    contractFactory;\n    rpcProviderSource;\n    theGraphClient;\n    identity;\n    getEthersOverrides;\n    eventEmitter = new ObservableEventEmitter();\n    constructor(contractAddress, contractFactory, rpcProviderSource, chainEventPoller, theGraphClient, identity, destroySignal, loggerFactory, getEthersOverrides) {\n        this.contractAddress = contractAddress;\n        this.contractFactory = contractFactory;\n        this.rpcProviderSource = rpcProviderSource;\n        this.contractReadonly = contractFactory.createReadContract(toEthereumAddress(contractAddress), OperatorABI, rpcProviderSource.getProvider(), 'operator');\n        this.theGraphClient = theGraphClient;\n        this.identity = identity;\n        this.getEthersOverrides = getEthersOverrides;\n        this.initEventGateways(contractAddress, chainEventPoller, loggerFactory);\n        destroySignal.onDestroy.listen(() => {\n            this.eventEmitter.removeAllListeners();\n        });\n    }\n    initEventGateways(contractAddress, chainEventPoller, loggerFactory) {\n        const contractInterface = new Interface(OperatorABI);\n        const stakeEventTransformation = ([sponsorship]) => ({\n            sponsorship: toEthereumAddress(sponsorship)\n        });\n        initContractEventGateway({\n            sourceDefinition: {\n                contractInterfaceFragment: contractInterface.getEvent('Staked'),\n                contractAddress\n            },\n            sourceEmitter: chainEventPoller,\n            targetName: 'staked',\n            targetEmitter: this.eventEmitter,\n            transformation: stakeEventTransformation,\n            loggerFactory\n        });\n        initContractEventGateway({\n            sourceDefinition: {\n                contractInterfaceFragment: contractInterface.getEvent('Unstaked'),\n                contractAddress\n            },\n            sourceEmitter: chainEventPoller,\n            targetName: 'unstaked',\n            targetEmitter: this.eventEmitter,\n            transformation: stakeEventTransformation,\n            loggerFactory\n        });\n        const reviewRequestTransform = ([sponsorship, targetOperator, voteStartTimestampInSecs, voteEndTimestampInSecs, metadataAsString]) => {\n            const partition = parsePartitionFromReviewRequestMetadata(metadataAsString);\n            return {\n                sponsorship: toEthereumAddress(sponsorship),\n                targetOperator: toEthereumAddress(targetOperator),\n                partition,\n                votingPeriodStartTimestamp: Number(voteStartTimestampInSecs) * 1000,\n                votingPeriodEndTimestamp: Number(voteEndTimestampInSecs) * 1000\n            };\n        };\n        initContractEventGateway({\n            sourceDefinition: {\n                contractInterfaceFragment: contractInterface.getEvent('ReviewRequest'),\n                contractAddress\n            },\n            sourceEmitter: chainEventPoller,\n            targetName: 'reviewRequested',\n            targetEmitter: this.eventEmitter,\n            transformation: reviewRequestTransform,\n            loggerFactory\n        });\n    }\n    async writeHeartbeat(nodeDescriptor) {\n        const metadata = JSON.stringify(nodeDescriptor);\n        await this.connectToContract();\n        await (await this.contract.heartbeat(metadata, await this.getEthersOverrides())).wait();\n    }\n    async getTimestampOfLastHeartbeat() {\n        const result = await this.theGraphClient.queryEntity({\n            query: `{\n                operator(id: \"${await this.getContractAddress()}\") {\n                    latestHeartbeatTimestamp\n                }\n            }`\n        });\n        // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n        if (result.operator === null || result.operator.latestHeartbeatTimestamp === null) {\n            return undefined;\n        }\n        else {\n            const timestampInSecs = parseInt(result.operator.latestHeartbeatTimestamp);\n            if (isNaN(timestampInSecs)) {\n                throw new Error('Assertion failed: unexpected non-integer latestHeartbeatTimestamp'); // should never happen\n            }\n            return timestampInSecs * 1000;\n        }\n    }\n    async getContractAddress() {\n        return toEthereumAddress(await this.contractReadonly.getAddress());\n    }\n    async getSponsorships() {\n        const operatorAddress = await this.getContractAddress();\n        const createQuery = (lastId, pageSize) => {\n            return {\n                query: `\n                    {\n                        operator(id: \"${operatorAddress}\") {\n                            stakes(where: {id_gt: \"${lastId}\"}, first: ${pageSize}) {\n                                id\n                                sponsorship {\n                                    id\n                                    operatorCount\n                                    stream {\n                                        id\n                                    }\n                                }\n                            }\n                        }\n                    }\n                    `\n            };\n        };\n        const parseItems = (response) => {\n            return response.operator?.stakes ?? [];\n        };\n        const queryResult = this.theGraphClient.queryEntities(createQuery, parseItems);\n        const results = [];\n        for await (const stake of queryResult) {\n            results.push({\n                sponsorshipAddress: toEthereumAddress(stake.sponsorship.id),\n                streamId: toStreamID(stake.sponsorship.stream.id),\n                operatorCount: stake.sponsorship.operatorCount\n            });\n        }\n        return results;\n    }\n    // TODO could move this method as this is functionality is not specific to one Operator contract instance\n    async getExpiredFlags(sponsorshipAddresses, maxAgeInMs) {\n        const maxVoteEndTimestamp = Math.floor((Date.now() - maxAgeInMs) / 1000);\n        const createQuery = (lastId, pageSize) => {\n            return {\n                query: `\n                {\n                    flags (where : {\n                        id_gt: \"${lastId}\",\n                        voteEndTimestamp_lt: ${maxVoteEndTimestamp},\n                        result_in: [\"waiting\", \"voting\"],\n                        sponsorship_in: ${JSON.stringify(sponsorshipAddresses)}\n                    }, first: ${pageSize}) {\n                        id\n                        flaggingTimestamp\n                        target {\n                            id\n                        }\n                        sponsorship {\n                            id\n                        }\n                    }\n                }`\n            };\n        };\n        const flagEntities = this.theGraphClient.queryEntities(createQuery);\n        const flags = [];\n        for await (const flagEntity of flagEntities) {\n            flags.push({\n                id: flagEntity.id,\n                flaggingTimestamp: flagEntity.flaggingTimestamp,\n                targetOperator: toEthereumAddress(flagEntity.target.id),\n                sponsorship: toEthereumAddress(flagEntity.sponsorship.id)\n            });\n        }\n        return flags;\n    }\n    // TODO could move this method as this is functionality is not specific to one Operator contract instance\n    async getOperatorsInSponsorship(sponsorshipAddress) {\n        const createQuery = (lastId, pageSize) => {\n            return {\n                query: `\n                    {\n                        sponsorship(id: \"${sponsorshipAddress}\") {\n                            stakes(where: {id_gt: \"${lastId}\"}, first: ${pageSize}) {\n                                id\n                                operator {\n                                    id\n                                }\n                            }\n                        }\n                    }\n                    `\n            };\n        };\n        const parseItems = (response) => {\n            return response.sponsorship?.stakes ?? [];\n        };\n        const queryResult = this.theGraphClient.queryEntities(createQuery, parseItems);\n        const operatorIds = [];\n        for await (const stake of queryResult) {\n            operatorIds.push(toEthereumAddress(stake.operator.id));\n        }\n        return operatorIds;\n    }\n    async flag(sponsorship, operator, partition) {\n        const metadata = JSON.stringify({ partition });\n        await this.connectToContract();\n        await (await this.contract.flag(sponsorship, operator, metadata, await this.getEthersOverrides())).wait();\n    }\n    /**\n     * Find the sum of earnings in Sponsorships (that the Operator must withdraw before the sum reaches a limit),\n     * SUBJECT TO the constraints:\n     *  - only take at most maxSponsorshipsInWithdraw addresses (those with most earnings), or all if undefined\n     *  - only take sponsorships that have more than minSponsorshipEarningsInWithdraw, or all if undefined\n     */\n    async getEarnings(minSponsorshipEarningsInWithdraw, maxSponsorshipsInWithdraw) {\n        const { addresses: allSponsorshipAddresses, earnings, maxAllowedEarnings, } = await this.contractReadonly.getSponsorshipsAndEarnings();\n        const sponsorships = allSponsorshipAddresses\n            .map((address, i) => ({ address, earnings: earnings[i] }))\n            .filter((sponsorship) => sponsorship.earnings >= minSponsorshipEarningsInWithdraw)\n            .sort((a, b) => compareBigInts(a.earnings, b.earnings)) // TODO: after Node 20, use .toSorted() instead\n            .slice(0, maxSponsorshipsInWithdraw); // take all if maxSponsorshipsInWithdraw is undefined\n        return {\n            sponsorshipAddresses: sponsorships.map((sponsorship) => toEthereumAddress(sponsorship.address)),\n            sum: sponsorships.reduce((sum, sponsorship) => sum += sponsorship.earnings, 0n),\n            maxAllowedEarnings: maxAllowedEarnings\n        };\n    }\n    async withdrawEarningsFromSponsorships(sponsorshipAddresses) {\n        await this.connectToContract();\n        await (await this.contract.withdrawEarningsFromSponsorships(sponsorshipAddresses, await this.getEthersOverrides())).wait();\n    }\n    async triggerAnotherOperatorWithdraw(targetOperatorAddress, sponsorshipAddresses) {\n        await this.connectToContract();\n        await (await this.contract.triggerAnotherOperatorWithdraw(targetOperatorAddress, sponsorshipAddresses, await this.getEthersOverrides())).wait();\n    }\n    // TODO could move this method as this is functionality is not specific to one Operator contract instance\n    async getStakedOperators() {\n        const createQuery = (lastId, pageSize) => {\n            return {\n                query: `\n                    {\n                        operators(where: {totalStakeInSponsorshipsWei_gt: \"0\", id_gt: \"${lastId}\"}, first: ${pageSize}) {\n                            id\n                        }\n                    }\n                    `\n            };\n        };\n        const queryResult = this.theGraphClient.queryEntities(createQuery);\n        const operatorAddresses = [];\n        for await (const operator of queryResult) {\n            operatorAddresses.push(toEthereumAddress(operator.id));\n        }\n        return operatorAddresses;\n    }\n    async *pullStakedStreams(requiredBlockNumber) {\n        const contractAddress = await this.getContractAddress();\n        const createQuery = (lastId, pageSize) => {\n            return {\n                query: `\n                    {\n                        operator(id: \"${contractAddress}\") {\n                            stakes(where: {id_gt: \"${lastId}\"}, first: ${pageSize}) {\n                                sponsorship {\n                                    id\n                                    stream {\n                                        id\n                                    }\n                                }\n                            }\n                        }\n                        _meta {\n                            block {\n                            number\n                            }\n                        }\n                    }\n                    `\n            };\n        };\n        const parseItems = (response) => {\n            if (!response.operator) {\n                logger.error('Unable to find operator in The Graph', { operatorContractAddress: contractAddress });\n                return [];\n            }\n            return response.operator.stakes;\n        };\n        this.theGraphClient.updateRequiredBlockNumber(requiredBlockNumber);\n        const entities = this.theGraphClient.queryEntities(createQuery, parseItems);\n        for await (const entity of entities) {\n            yield {\n                sponsorship: toEthereumAddress(entity.sponsorship.id),\n                streamId: toStreamID(entity.sponsorship.stream.id)\n            };\n        }\n    }\n    async hasOpenFlag(sponsorshipAddress) {\n        const operatorContractAddress = await this.getContractAddress();\n        const createQuery = () => {\n            return {\n                query: `\n                    {\n                        flags(where: {\n                            sponsorship: \"${sponsorshipAddress}\",\n                            target: \"${operatorContractAddress}\",\n                            result_in: [\"waiting\", \"voting\"]\n                        }) {\n                            id\n                        }\n                    }\n                    `\n            };\n        };\n        const queryResult = this.theGraphClient.queryEntities(createQuery);\n        const flags = await collect(queryResult, 1);\n        if (flags.length > 0) {\n            logger.debug('Found open flag', { flag: flags[0] });\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    // TODO could move this method as this is functionality is not specific to one Operator contract instance\n    async getStreamId(sponsorshipAddress) {\n        const sponsorship = this.contractFactory.createReadContract(toEthereumAddress(sponsorshipAddress), SponsorshipABI, this.rpcProviderSource.getProvider(), 'sponsorship');\n        return toStreamID(await sponsorship.streamId());\n    }\n    async voteOnFlag(sponsorshipAddress, targetOperator, kick) {\n        const voteData = kick ? VOTE_KICK : VOTE_NO_KICK;\n        await this.connectToContract();\n        // typical gas cost 99336, but this has shown insufficient sometimes\n        // this estimate should be very conservative, i.e. higher than any observed flag-resolution gas cost\n        const gasLimit = 1300000n;\n        // estimateGas throws if transaction would fail, so doing the gas estimation will avoid sending failing transactions\n        const gasEstimate = await this.contract.voteOnFlag.estimateGas(sponsorshipAddress, targetOperator, voteData);\n        if (gasEstimate > gasLimit) {\n            throw new Error(`Gas estimate (${gasEstimate}) exceeds limit (${gasLimit})`);\n        }\n        // TODO should we set gasLimit only here, or also for other transactions made by ContractFacade?\n        await (await this.contract.voteOnFlag(sponsorshipAddress, targetOperator, voteData, { ...(await this.getEthersOverrides()), gasLimit })).wait();\n    }\n    async closeFlag(sponsorshipAddress, targetOperatorAddress) {\n        // voteOnFlag is not used to vote here but to close the expired flag. The vote data gets ignored.\n        // Anyone can call this function at this point.\n        await this.voteOnFlag(sponsorshipAddress, targetOperatorAddress, false);\n    }\n    async fetchRedundancyFactor() {\n        const MetadataSchema = z.object({\n            redundancyFactor: z.number()\n                .int()\n                .gte(1)\n        });\n        const metadataAsString = await this.contractReadonly.metadata();\n        if (metadataAsString.length === 0) {\n            return 1;\n        }\n        let metadata;\n        try {\n            metadata = JSON.parse(metadataAsString);\n        }\n        catch {\n            logger.warn('Encountered malformed metadata', { operatorAddress: await this.getContractAddress(), metadataAsString });\n            return undefined;\n        }\n        let validatedMetadata;\n        try {\n            validatedMetadata = MetadataSchema.parse(metadata);\n        }\n        catch (err) {\n            logger.warn('Encountered invalid metadata', {\n                operatorAddress: await this.getContractAddress(),\n                metadataAsString,\n                reason: err?.reason\n            });\n            return undefined;\n        }\n        return validatedMetadata.redundancyFactor;\n    }\n    getCurrentBlockNumber() {\n        return this.rpcProviderSource.getProvider().getBlockNumber();\n    }\n    on(eventName, listener) {\n        this.eventEmitter.on(eventName, listener); // TODO why casting?\n    }\n    off(eventName, listener) {\n        this.eventEmitter.off(eventName, listener); // TODO why casting?\n    }\n    async connectToContract() {\n        if (this.contract === undefined) {\n            const signer = await this.identity.getTransactionSigner(this.rpcProviderSource);\n            this.contract = this.contractFactory.createWriteContract(this.contractAddress, OperatorABI, signer, 'operator');\n        }\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { SponsorshipFactoryABI } from '@streamr/network-contracts';\nimport { toEthereumAddress, toStreamID } from '@streamr/utils';\nimport { Interface } from 'ethers';\nimport { Lifecycle, inject, scoped } from 'tsyringe';\nimport { ConfigInjectionToken } from '../ConfigTypes';\nimport { StreamrClientEventEmitter } from '../events';\nimport { LoggerFactory } from '../utils/LoggerFactory';\nimport { ChainEventPoller } from './ChainEventPoller';\nimport { initContractEventGateway } from './contract';\nlet SponsorshipFactory = class SponsorshipFactory {\n    config;\n    constructor(chainEventPoller, config, eventEmitter, loggerFactory) {\n        this.config = config;\n        this.initEventListener(eventEmitter, chainEventPoller, loggerFactory);\n    }\n    initEventListener(eventEmitter, chainEventPoller, loggerFactory) {\n        const transformation = ([sponsorshipContract, streamId], blockNumber) => ({\n            sponsorshipContractAddress: toEthereumAddress(sponsorshipContract),\n            streamId: toStreamID(streamId),\n            blockNumber\n        });\n        const contractAddress = toEthereumAddress(this.config.contracts.sponsorshipFactoryChainAddress);\n        const contractInterface = new Interface(SponsorshipFactoryABI);\n        initContractEventGateway({\n            sourceDefinition: {\n                contractInterfaceFragment: contractInterface.getEvent('NewSponsorship'),\n                contractAddress\n            },\n            sourceEmitter: chainEventPoller,\n            targetName: 'sponsorshipCreated',\n            targetEmitter: eventEmitter,\n            transformation,\n            loggerFactory\n        });\n    }\n};\nSponsorshipFactory = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(1, inject(ConfigInjectionToken)),\n    __metadata(\"design:paramtypes\", [ChainEventPoller, Object, StreamrClientEventEmitter,\n        LoggerFactory])\n], SponsorshipFactory);\nexport { SponsorshipFactory };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { StreamPartIDUtils, toUserId, toUserIdRaw } from '@streamr/utils';\nimport { AsymmetricEncryptionType, GroupKeyResponse, GroupKeyRequest, SignatureType, ContentType, EncryptionType } from '@streamr/trackerless-network';\nimport without from 'lodash/without';\nimport { Lifecycle, inject, scoped } from 'tsyringe';\nimport { Identity, IdentityInjectionToken } from '../identity/Identity';\nimport { NetworkNodeFacade } from '../NetworkNodeFacade';\nimport { StreamRegistry } from '../contracts/StreamRegistry';\nimport { StreamrClientEventEmitter } from '../events';\nimport { MessageID } from '../protocol/MessageID';\nimport { StreamMessageType } from '../protocol/StreamMessage';\nimport { createRandomMsgChainId } from '../publish/messageChain';\nimport { MessageSigner } from '../signature/MessageSigner';\nimport { SignatureValidator } from '../signature/SignatureValidator';\nimport { LoggerFactory } from '../utils/LoggerFactory';\nimport { validateStreamMessage } from '../utils/validateStreamMessage';\nimport { EncryptionUtil } from './EncryptionUtil';\nimport { LocalGroupKeyStore } from './LocalGroupKeyStore';\nimport { ConfigInjectionToken } from '../ConfigTypes';\nimport { isCompliantAsymmetricEncryptionType } from '../utils/encryptionCompliance';\nimport { StreamrClientError } from '../StreamrClientError';\n/*\n * Sends group key responses\n */\nvar ResponseType;\n(function (ResponseType) {\n    ResponseType[ResponseType[\"NONE\"] = 0] = \"NONE\";\n    ResponseType[ResponseType[\"NORMAL\"] = 1] = \"NORMAL\";\n    ResponseType[ResponseType[\"ERC_1271\"] = 2] = \"ERC_1271\";\n})(ResponseType || (ResponseType = {}));\nlet PublisherKeyExchange = class PublisherKeyExchange {\n    networkNodeFacade;\n    streamRegistry;\n    signatureValidator;\n    messageSigner;\n    store;\n    identity;\n    logger;\n    erc1271Publishers = new Set();\n    config;\n    constructor(networkNodeFacade, streamRegistry, signatureValidator, messageSigner, store, identity, config, eventEmitter, loggerFactory) {\n        this.networkNodeFacade = networkNodeFacade;\n        this.streamRegistry = streamRegistry;\n        this.signatureValidator = signatureValidator;\n        this.messageSigner = messageSigner;\n        this.store = store;\n        this.identity = identity;\n        this.logger = loggerFactory.createLogger('PublisherKeyExchange');\n        this.config = config;\n        // Setting explicit keys disables the key-exchange\n        if (config.encryption.keys === undefined) {\n            networkNodeFacade.once('start', async () => {\n                networkNodeFacade.addMessageListener((msg) => this.onMessage(msg));\n                this.logger.debug('Started');\n            });\n            eventEmitter.on('messagePublished', (msg) => {\n                if (msg.signatureType === SignatureType.ERC_1271) {\n                    const publisherId = msg.getPublisherId();\n                    if (!this.erc1271Publishers.has(publisherId)) {\n                        this.logger.debug('Add ERC-1271 publisher', { publisherId });\n                        this.erc1271Publishers.add(publisherId);\n                    }\n                }\n            });\n        }\n    }\n    async onMessage(request) {\n        if (request.messageType === StreamMessageType.GROUP_KEY_REQUEST) {\n            try {\n                const { recipientId, requestId, publicKey, groupKeyIds, encryptionType: keyEncryptionType } = GroupKeyRequest.fromBinary(request.content);\n                const recipientUserId = toUserId(recipientId);\n                if (!isCompliantAsymmetricEncryptionType(keyEncryptionType, this.config)) {\n                    throw new StreamrClientError(`EncryptionType in key request (${keyEncryptionType}) is not compliant with encryption settings!`, 'ENCRYPTION_POLICY_VIOLATION', request);\n                }\n                const responseType = await this.getResponseType(recipientUserId);\n                if (responseType !== ResponseType.NONE) {\n                    this.logger.debug('Handling group key request', { requestId, responseType, keyEncryptionType: AsymmetricEncryptionType[keyEncryptionType] });\n                    await validateStreamMessage(request, this.streamRegistry, this.signatureValidator, this.config);\n                    const authenticatedUser = await this.identity.getUserId();\n                    const keys = without(await Promise.all(groupKeyIds.map((id) => this.store.get(id, authenticatedUser))), undefined);\n                    if (keys.length > 0) {\n                        const response = await this.createResponse(keys, responseType, recipientUserId, request.getStreamPartID(), publicKey, request.getPublisherId(), requestId, keyEncryptionType);\n                        await this.networkNodeFacade.broadcast(response);\n                        this.logger.debug('Handled group key request (found keys)', {\n                            groupKeyIds: keys.map((k) => k.id).join(),\n                            recipient: request.getPublisherId()\n                        });\n                    }\n                    else {\n                        this.logger.debug('Handled group key request (no keys found)', {\n                            requestId,\n                            recipient: request.getPublisherId()\n                        });\n                    }\n                }\n            }\n            catch (err) {\n                this.logger.debug('Failed to handle group key request', err);\n            }\n        }\n    }\n    async getResponseType(publisherId) {\n        const myId = await this.identity.getUserId();\n        if (publisherId === myId) {\n            return ResponseType.NORMAL;\n        }\n        else if (this.erc1271Publishers.has(publisherId)) {\n            return ResponseType.ERC_1271;\n        }\n        else {\n            return ResponseType.NONE;\n        }\n    }\n    async createResponse(keys, responseType, publisherId, streamPartId, publicKey, recipientId, requestId, keyEncryptionType) {\n        const encryptedGroupKeys = await Promise.all(keys.map(async (key) => ({\n            id: key.id,\n            data: await EncryptionUtil.encryptForPublicKey(key.data, publicKey, keyEncryptionType)\n        })));\n        const responseContent = {\n            recipientId: toUserIdRaw(recipientId),\n            requestId,\n            groupKeys: encryptedGroupKeys,\n            encryptionType: keyEncryptionType,\n        };\n        const response = this.messageSigner.createSignedMessage({\n            messageId: new MessageID(StreamPartIDUtils.getStreamID(streamPartId), StreamPartIDUtils.getStreamPartition(streamPartId), Date.now(), 0, publisherId, createRandomMsgChainId()),\n            content: GroupKeyResponse.toBinary(responseContent),\n            contentType: ContentType.BINARY,\n            messageType: StreamMessageType.GROUP_KEY_RESPONSE,\n            encryptionType: EncryptionType.NONE,\n        }, responseType === ResponseType.NORMAL ? this.identity.getSignatureType() : SignatureType.ERC_1271);\n        return response;\n    }\n};\nPublisherKeyExchange = __decorate([\n    scoped(Lifecycle.ContainerScoped),\n    __param(5, inject(IdentityInjectionToken)),\n    __param(6, inject(ConfigInjectionToken)),\n    __metadata(\"design:paramtypes\", [NetworkNodeFacade,\n        StreamRegistry,\n        SignatureValidator,\n        MessageSigner,\n        LocalGroupKeyStore,\n        Identity, Object, StreamrClientEventEmitter,\n        LoggerFactory])\n], PublisherKeyExchange);\nexport { PublisherKeyExchange };\n","/**\n * Wrapper around PushPipeline specific to StreamMessages.\n * Subscriptions are MessageStreams.\n * Not all MessageStreams are Subscriptions.\n */\nimport omit from 'lodash/omit';\nimport { PushPipeline } from '../utils/PushPipeline';\nimport { convertStreamMessageToMessage } from './../Message';\n/**\n * Provides asynchronous iteration with\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of | for await .. of}.\n */\nexport class MessageStream {\n    pipeline;\n    /** @internal */\n    onFinally;\n    /** @internal */\n    onBeforeFinally;\n    /** @internal */\n    onError;\n    /** @internal */\n    constructor(pipeline) {\n        this.pipeline = pipeline ?? new PushPipeline();\n        this.onFinally = this.pipeline.onFinally;\n        this.onBeforeFinally = this.pipeline.onBeforeFinally;\n        this.onError = this.pipeline.onError;\n    }\n    /**\n     * Attach a legacy onMessage handler and consume if necessary.\n     * onMessage is passed parsed content as first arument, and streamMessage as second argument.\n     * @internal\n     */\n    useLegacyOnMessageHandler(onMessage) {\n        this.pipeline.onMessage.listen(async (streamMessage) => {\n            const msg = convertStreamMessageToMessage(streamMessage);\n            await onMessage(msg.content, omit(msg, 'content'));\n        });\n        this.pipeline.flow();\n        return this;\n    }\n    async *[Symbol.asyncIterator]() {\n        for await (const msg of this.pipeline) {\n            yield convertStreamMessageToMessage(msg);\n        }\n    }\n    /*\n     * The methods below are used to control or observe the pipeline.\n     * TODO We should refactor the pipeline handling so that a MessageStream producer\n     * (e.g. SubscriptionSession or Resends) creates a PushPipeline (or similar) data structure,\n     * and calls these methods for that pipeline. Here in MessageStream we'd see the object\n     * as Pipeline interface. Ideally here in MessageStream we'd use the pipeline only to get\n     * an async iterator when [Symbol.asyncIterator]() is called for this MessageStream.\n     * When the we have done the refactoring, all/most other methods below could be removed.\n     */\n    /** @internal */\n    async push(item) {\n        await this.pipeline.push(item);\n    }\n    /** @internal */\n    pipe(fn) {\n        return this.pipeline.pipe(fn);\n    }\n    /** @internal */\n    async handleError(err) {\n        await this.pipeline.handleError(err);\n    }\n    /** @internal */\n    end(err) {\n        this.pipeline.end(err);\n    }\n    /** @internal */\n    isDone() {\n        return this.pipeline.isDone();\n    }\n    /** @internal */\n    return() {\n        return this.pipeline.return();\n    }\n}\n","import { MessageStream } from './MessageStream';\n/**\n * A convenience API for managing an individual subscription.\n *\n * @category Important\n */\nexport class Subscription extends MessageStream {\n    streamPartId;\n    /** @internal */\n    isRaw;\n    erc1271ContractAddress;\n    deliveryOptions;\n    eventEmitter;\n    logger;\n    /** @internal */\n    constructor(streamPartId, isRaw, erc1271ContractAddress, deliveryOptions, eventEmitter, loggerFactory) {\n        super();\n        this.streamPartId = streamPartId;\n        this.isRaw = isRaw;\n        this.erc1271ContractAddress = erc1271ContractAddress;\n        this.deliveryOptions = deliveryOptions;\n        this.eventEmitter = eventEmitter;\n        this.logger = loggerFactory.createLogger('Subscription');\n        this.onError.listen((err) => {\n            this.eventEmitter.emit('error', err);\n            this.logger.debug('Encountered error', { err });\n        });\n    }\n    /**\n     * Unsubscribes this subscription.\n     *\n     * @remarks The instance should not be used after calling this.\n     */\n    async unsubscribe() {\n        this.end();\n        await this.return();\n        this.eventEmitter.removeAllListeners();\n    }\n    /**\n     * Adds an event listener to the subscription.\n     * @param eventName - event name, see {@link SubscriptionEvents} for options\n     * @param listener - the callback function\n     */\n    on(eventName, listener) {\n        this.eventEmitter.on(eventName, listener);\n    }\n    /**\n     * Adds an event listener to the subscription that is invoked only once.\n     * @param eventName - event name, see {@link SubscriptionEvents} for options\n     * @param listener - the callback function\n     */\n    once(eventName, listener) {\n        this.eventEmitter.once(eventName, listener);\n    }\n    /**\n     * Removes an event listener from the subscription.\n     * @param eventName - event name, see {@link SubscriptionEvents} for options\n     * @param listener - the callback function to remove\n     */\n    off(eventName, listener) {\n        this.eventEmitter.off(eventName, listener);\n    }\n}\n","import { toInternalResendOptions } from './Resends';\nimport { OrderMessages } from './ordering/OrderMessages';\n/*\n * Initialize subscription pipeline transformations for a resend subscription\n */\nexport const initResendSubscription = (subscription, resendOptions, resends, getStorageNodes, config, eventEmitter, loggerFactory) => {\n    const resendThenRealtime = async function* (src) {\n        try {\n            const resentMsgs = await resends.resend(subscription.streamPartId, toInternalResendOptions(resendOptions), getStorageNodes);\n            subscription.onBeforeFinally.listen(async () => {\n                // TODO maybe we could add AbortControler parameter to resend() and signal it here?\n                resentMsgs.end();\n                await resentMsgs.return();\n            });\n            yield* resentMsgs;\n        }\n        catch (err) {\n            if (err.code === 'NO_STORAGE_NODES') {\n                loggerFactory.createLogger('resendSubscription').warn('Skip resend (no storage assigned to stream)', {\n                    streamPartId: subscription.streamPartId,\n                    resendOptions\n                });\n            }\n            else {\n                await subscription.handleError(err);\n            }\n        }\n        eventEmitter.emit('resendCompleted');\n        yield* src;\n    };\n    subscription.pipe(resendThenRealtime);\n    if (config.orderMessages) {\n        const orderMessages = new OrderMessages(subscription.streamPartId, getStorageNodes, () => { }, // TODO send some error to subscription (NET-987)\n        resends, config);\n        subscription.pipe(async function* (src) {\n            setImmediate(() => {\n                orderMessages.addMessages(src);\n            });\n            yield* orderMessages;\n        });\n        subscription.onBeforeFinally.listen(() => orderMessages.destroy());\n    }\n};\n","import { Logger, areEqualBinaries, collect, toStreamPartID, wait } from '@streamr/utils';\nimport { convertStreamMessageToMessage } from '../Message';\nimport { StreamrClientError } from '../StreamrClientError';\nconst logger = new Logger('waitForStorage');\nexport const waitForStorage = async (message, opts, resends, streamStorageRegistry) => {\n    if (!message) {\n        throw new StreamrClientError('waitForStorage requires a Message', 'INVALID_ARGUMENT');\n    }\n    const matcher = opts.messageMatchFn ?? ((msgTarget, msgGot) => (areEqualBinaries(msgTarget.signature, msgGot.signature)));\n    const start = Date.now();\n    let last;\n    let found = false;\n    while (!found) {\n        const duration = Date.now() - start;\n        if (duration > opts.timeout) {\n            logger.debug('Timed out waiting for storage to contain message', {\n                expected: message.streamMessage.messageId,\n                lastReceived: last?.map((l) => l.messageId),\n            });\n            throw new Error(`timed out after ${duration}ms waiting for message`);\n        }\n        const getStorageNodes = (streamId) => streamStorageRegistry.getStorageNodes(streamId);\n        const resendStream = await resends.resend(toStreamPartID(message.streamId, message.streamPartition), { last: opts.count }, getStorageNodes);\n        last = await collect(resendStream);\n        for (const lastMsg of last) {\n            if (matcher(message, convertStreamMessageToMessage(lastMsg))) {\n                found = true;\n                logger.debug('Found matching message');\n                return;\n            }\n        }\n        logger.debug('Retry after delay (matching message not found)', {\n            expected: message.streamMessage.messageId,\n            'last-3': last.slice(-3).map((l) => l.messageId),\n            delayInMs: opts.interval\n        });\n        await wait(opts.interval);\n    }\n};\n","import { StreamPartIDUtils } from '@streamr/utils';\nexport async function waitForAssignmentsToPropagate(messages, targetStream, loggerFactory) {\n    const foundPartitions = new Set;\n    for await (const msg of messages) {\n        const streamPart = msg.content.streamPart;\n        try {\n            const streamPartId = StreamPartIDUtils.parse(streamPart);\n            const [streamId, partition] = StreamPartIDUtils.getStreamIDAndPartition(streamPartId);\n            if ((streamId === targetStream.id) && (partition < targetStream.partitions)) {\n                foundPartitions.add(partition);\n                if (foundPartitions.size === targetStream.partitions) {\n                    return;\n                }\n            }\n        }\n        catch {\n            loggerFactory.createLogger('waitForAssignmentsToPropagate').debug('Ignore malformed content');\n        }\n    }\n}\n","import { toStreamPartID, withTimeout } from '@streamr/utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { DEFAULT_PARTITION } from '../StreamIDBuilder';\nimport { Subscription } from '../subscribe/Subscription';\nimport { formStorageNodeAssignmentStreamId } from '../utils/utils';\nimport { waitForAssignmentsToPropagate } from '../utils/waitForAssignmentsToPropagate';\nexport const addStreamToStorageNode = async (streamId, storageNodeAddress, opts, partitionCount, subscriber, streamRegistry, streamStorageRegistry, loggerFactory, config) => {\n    if (opts.wait) {\n        // check whether the stream is already stored: the assignment event listener logic requires that\n        // there must not be an existing assignment (it timeouts if there is an existing assignment as the\n        // storage node doesn't send an assignment event in that case)\n        const isAlreadyStored = await streamStorageRegistry.isStoredStream(streamId, storageNodeAddress);\n        if (isAlreadyStored) {\n            return;\n        }\n        let assignmentSubscription;\n        try {\n            const streamPartId = toStreamPartID(formStorageNodeAssignmentStreamId(storageNodeAddress), DEFAULT_PARTITION);\n            assignmentSubscription = new Subscription(streamPartId, false, undefined, undefined, new EventEmitter(), loggerFactory);\n            await subscriber.add(assignmentSubscription);\n            const propagationPromise = waitForAssignmentsToPropagate(assignmentSubscription, {\n                id: streamId,\n                partitions: partitionCount\n            }, loggerFactory);\n            await streamStorageRegistry.addStreamToStorageNode(streamId, storageNodeAddress);\n            await withTimeout(propagationPromise, \n            // eslint-disable-next-line no-underscore-dangle\n            opts.timeout ?? config._timeouts.storageNode.timeout, 'storage node did not respond');\n        }\n        finally {\n            streamRegistry.invalidatePermissionCaches(streamId);\n            await assignmentSubscription?.unsubscribe(); // should never reject...\n        }\n    }\n    else {\n        await streamStorageRegistry.addStreamToStorageNode(streamId, storageNodeAddress);\n    }\n};\n","/**\n * Importing 'timers' ensures `setImmediate` is available in browsers,\n * as it's polyfilled by `timers-browserify`. In Node.js, it's already global.\n */\nimport 'timers';\nimport './setupTsyringe';\nimport './utils/PatchTsyringe';\nimport { DEFAULT_PARTITION_COUNT, Logger, TheGraphClient, toEthereumAddress, toUserId } from '@streamr/utils';\nimport { EventEmitter } from 'eventemitter3';\nimport merge from 'lodash/merge';\nimport omit from 'lodash/omit';\nimport { container as rootContainer } from 'tsyringe';\nimport { Publisher } from '../src/publish/Publisher';\nimport { ConfigInjectionToken, } from './ConfigTypes';\nimport { createStrictConfig, redactConfig } from './Config';\nimport { DestroySignal } from './DestroySignal';\nimport { convertStreamMessageToMessage } from './Message';\nimport { MetricsPublisher } from './MetricsPublisher';\nimport { NetworkNodeFacade } from './NetworkNodeFacade';\nimport { ProxyNodeFinder } from './ProxyNodeFinder';\nimport { RpcProviderSource } from './RpcProviderSource';\nimport { Stream } from './Stream';\nimport { StreamIDBuilder } from './StreamIDBuilder';\nimport { getPartitionCount } from './StreamMetadata';\nimport { ChainEventPoller } from './contracts/ChainEventPoller';\nimport { ContractFactory } from './contracts/ContractFactory';\nimport { Operator } from './contracts/Operator';\nimport { OperatorRegistry } from './contracts/OperatorRegistry';\nimport { SponsorshipFactory } from './contracts/SponsorshipFactory';\nimport { StorageNodeRegistry } from './contracts/StorageNodeRegistry';\nimport { StreamRegistry } from './contracts/StreamRegistry';\nimport { StreamStorageRegistry } from './contracts/StreamStorageRegistry';\nimport { toInternalSearchStreamsPermissionFilter } from './contracts/searchStreams';\nimport { LocalGroupKeyStore } from './encryption/LocalGroupKeyStore';\nimport { PublisherKeyExchange } from './encryption/PublisherKeyExchange';\nimport { getEthersOverrides as _getEthersOverrides } from './ethereumUtils';\nimport { StreamrClientEventEmitter } from './events';\nimport { IdentityInjectionToken } from './identity/Identity';\nimport { createIdentityFromConfig } from './identity/IdentityMapping';\nimport { toInternalPermissionAssignment, toInternalPermissionQuery } from './permission';\nimport { MessageStream } from './subscribe/MessageStream';\nimport { toInternalResendOptions } from './subscribe/Resends';\nimport { Subscription } from './subscribe/Subscription';\nimport { initResendSubscription } from './subscribe/resendSubscription';\nimport { waitForStorage } from './subscribe/waitForStorage';\nimport { map } from './utils/GeneratorUtils';\nimport { LoggerFactory } from './utils/LoggerFactory';\nimport { addStreamToStorageNode } from './utils/addStreamToStorageNode';\nimport { assertCompliantIdentity } from './utils/encryptionCompliance';\nimport { pOnce } from './utils/promises';\nimport { convertPeerDescriptorToNetworkPeerDescriptor, createTheGraphClient } from './utils/utils';\nimport { Tokens } from './tokens';\nconst logger = new Logger('StreamrClient');\n/**\n * The main API used to interact with Streamr.\n *\n * @category Important\n */\nexport class StreamrClient {\n    id;\n    publisher;\n    subscriber;\n    resends;\n    node;\n    rpcProviderSource;\n    streamRegistry;\n    streamStorageRegistry;\n    storageNodeRegistry;\n    operatorRegistry;\n    contractFactory;\n    localGroupKeyStore;\n    chainEventPoller;\n    theGraphClient;\n    streamIdBuilder;\n    config;\n    identity;\n    eventEmitter;\n    destroySignal;\n    loggerFactory;\n    proxyNodeFinder;\n    constructor(config = {}, \n    /** @internal */\n    parentContainer = rootContainer) {\n        const strictConfig = createStrictConfig(config);\n        const identity = createIdentityFromConfig(strictConfig);\n        assertCompliantIdentity(identity, strictConfig);\n        redactConfig(strictConfig);\n        const container = parentContainer.createChildContainer();\n        container.register(IdentityInjectionToken, { useValue: identity });\n        container.register(ConfigInjectionToken, { useValue: strictConfig });\n        const theGraphClient = createTheGraphClient(container.resolve(StreamrClientEventEmitter), strictConfig);\n        container.register(TheGraphClient, { useValue: theGraphClient });\n        this.id = strictConfig.id;\n        this.config = strictConfig;\n        this.identity = identity;\n        this.theGraphClient = theGraphClient;\n        this.publisher = container.resolve(Publisher);\n        this.subscriber = container.resolve(Tokens.Subscriber);\n        this.resends = container.resolve(Tokens.Resends);\n        this.node = container.resolve(NetworkNodeFacade);\n        this.rpcProviderSource = container.resolve(RpcProviderSource);\n        this.streamRegistry = container.resolve(StreamRegistry);\n        this.streamStorageRegistry = container.resolve(StreamStorageRegistry);\n        this.storageNodeRegistry = container.resolve(StorageNodeRegistry);\n        this.operatorRegistry = container.resolve(OperatorRegistry);\n        this.contractFactory = container.resolve(ContractFactory);\n        this.localGroupKeyStore = container.resolve(LocalGroupKeyStore);\n        this.chainEventPoller = container.resolve(ChainEventPoller);\n        this.streamIdBuilder = container.resolve(StreamIDBuilder);\n        this.eventEmitter = container.resolve(StreamrClientEventEmitter);\n        this.destroySignal = container.resolve(DestroySignal);\n        this.loggerFactory = container.resolve(LoggerFactory);\n        this.proxyNodeFinder = container.resolve(ProxyNodeFinder);\n        container.resolve(PublisherKeyExchange); // side effect: activates publisher key exchange\n        container.resolve(MetricsPublisher); // side effect: activates metrics publisher\n        container.resolve(SponsorshipFactory); // side effect: activates sponsorship event listeners\n    }\n    // --------------------------------------------------------------------------------------------\n    // Publish\n    // --------------------------------------------------------------------------------------------\n    /**\n     * Publishes a message to a stream partition in the network.\n     *\n     * @category Important\n     *\n     * @param streamDefinition - the stream or stream partition to publish the message to\n     * @param content - the content (the payload) of the message (must be JSON serializable)\n     * @param metadata - provide additional metadata to be included in the message or to control the publishing process\n     * @returns the published message (note: the field {@link Message.content} is encrypted if the stream is private)\n     */\n    async publish(streamDefinition, content, metadata, deliveryOptions) {\n        const result = await this.publisher.publish(streamDefinition, content, metadata, deliveryOptions);\n        this.eventEmitter.emit('messagePublished', result);\n        return convertStreamMessageToMessage(result);\n    }\n    async publishRaw(message, deliveryOptions) {\n        await this.node.broadcast(message, deliveryOptions);\n        this.eventEmitter.emit('messagePublished', message);\n    }\n    /**\n     * Manually updates the encryption key used when publishing messages to a given stream.\n     */\n    async updateEncryptionKey(opts) {\n        if (opts.streamId === undefined) {\n            throw new Error('streamId required');\n        }\n        const streamId = await this.streamIdBuilder.toStreamID(opts.streamId);\n        const queue = await this.publisher.getGroupKeyQueue(streamId);\n        if (opts.distributionMethod === 'rotate') {\n            await queue.rotate(opts.key);\n        }\n        else if (opts.distributionMethod === 'rekey') {\n            await queue.rekey(opts.key);\n        }\n        else {\n            throw new Error(`assertion failed: distribution method ${opts.distributionMethod}`);\n        }\n    }\n    /**\n     * Adds an encryption key for a given publisher to the key store.\n     *\n     * @remarks Keys will be added to the store automatically by the client as encountered. This method can be used to\n     * manually add some known keys into the store.\n     */\n    async addEncryptionKey(key, publisherId) {\n        await this.localGroupKeyStore.set(key.id, toUserId(publisherId), key.data);\n    }\n    // --------------------------------------------------------------------------------------------\n    // Subscribe\n    // --------------------------------------------------------------------------------------------\n    /**\n     * Subscribes to a stream partition in the network.\n     *\n     * @category Important\n     *\n     * @param options - the stream or stream partition to subscribe to,\n     * additionally a resend can be performed by providing resend options\n     * @param onMessage - callback will be invoked for each message received in subscription\n     * @returns a {@link Subscription} that can be used to manage the subscription etc.\n     */\n    async subscribe(options, onMessage) {\n        if ((options.raw === true) && (options.resend !== undefined)) {\n            throw new Error('Raw subscriptions are not supported for resend');\n        }\n        const streamPartId = await this.streamIdBuilder.toStreamPartID(options);\n        const eventEmitter = new EventEmitter();\n        const sub = new Subscription(streamPartId, options.raw ?? false, options.erc1271Contract !== undefined ? toEthereumAddress(options.erc1271Contract) : undefined, options.delivery ?? {}, eventEmitter, this.loggerFactory);\n        if (options.resend !== undefined) {\n            initResendSubscription(sub, options.resend, this.resends, (streamId) => this.streamStorageRegistry.getStorageNodes(streamId), this.config, eventEmitter, this.loggerFactory);\n        }\n        await this.subscriber.add(sub);\n        if (onMessage !== undefined) {\n            sub.useLegacyOnMessageHandler(onMessage);\n        }\n        this.eventEmitter.emit('streamPartSubscribed', undefined);\n        return sub;\n    }\n    /**\n     * Unsubscribes from streams or stream partitions in the network.\n     *\n     * @remarks no-op if subscription does not exist\n     *\n     * @category Important\n     *\n     * @param streamDefinitionOrSubscription - leave as `undefined` to unsubscribe from all existing subscriptions.\n     */\n    async unsubscribe(streamDefinitionOrSubscription) {\n        if (streamDefinitionOrSubscription instanceof Subscription) {\n            const sub = streamDefinitionOrSubscription;\n            return this.subscriber.remove(sub);\n        }\n        else {\n            const subs = await this.getSubscriptions(streamDefinitionOrSubscription);\n            return Promise.allSettled(subs.map((sub) => this.subscriber.remove(sub)));\n        }\n    }\n    /**\n     * Returns a list of subscriptions matching the given criteria.\n     *\n     * @category Important\n     *\n     * @param streamDefinition - leave as `undefined` to get all subscriptions\n     */\n    async getSubscriptions(streamDefinition) {\n        const matcher = (streamDefinition !== undefined)\n            ? await this.streamIdBuilder.getMatcher(streamDefinition)\n            : () => true;\n        return this.subscriber.getSubscriptions().filter((s) => matcher(s.streamPartId));\n    }\n    // --------------------------------------------------------------------------------------------\n    // Resend\n    // --------------------------------------------------------------------------------------------\n    /**\n     * Performs a resend of stored historical data.\n     *\n     * @category Important\n     *\n     * @param streamDefinition - the stream partition for which data should be resent\n     * @param options - defines the kind of resend that should be performed\n     * @param onMessage - callback will be invoked for each message retrieved\n     * @returns a {@link MessageStream} that provides an alternative way of iterating messages. Rejects if the stream is\n     * not stored (i.e. is not assigned to a storage node).\n     */\n    async resend(streamDefinition, options, onMessage) {\n        const streamPartId = await this.streamIdBuilder.toStreamPartID(streamDefinition);\n        const getStorageNodes = (streamId) => this.streamStorageRegistry.getStorageNodes(streamId);\n        const pipeline = await this.resends.resend(streamPartId, toInternalResendOptions(options), getStorageNodes);\n        const messageStream = new MessageStream(pipeline);\n        if (onMessage !== undefined) {\n            messageStream.useLegacyOnMessageHandler(onMessage);\n        }\n        return messageStream;\n    }\n    /**\n     * Waits for a message to be stored by a storage node.\n     *\n     * @param message - the message to be awaited for\n     * @param options - additional options for controlling waiting and message matching\n     * @returns rejects if message was found in storage before timeout\n     */\n    waitForStorage(message, options) {\n        const defaultOptions = {\n            // eslint-disable-next-line no-underscore-dangle\n            interval: this.config._timeouts.storageNode.retryInterval,\n            // eslint-disable-next-line no-underscore-dangle\n            timeout: this.config._timeouts.storageNode.timeout,\n            count: 100\n        };\n        return waitForStorage(message, merge(defaultOptions, options), this.resends, this.streamStorageRegistry);\n    }\n    // --------------------------------------------------------------------------------------------\n    // Stream management\n    // --------------------------------------------------------------------------------------------\n    /**\n     * Gets a stream.\n     *\n     * @category Important\n     *\n     * @returns rejects if the stream is not found\n     */\n    async getStream(streamIdOrPath) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        // Check if the stream exists by querying its metadata. Throws an error if no metadata is found,\n        // indicating the stream doesn't exist. As a side-effect this populates StreamRegistry's metadata\n        // cache for future use, such as stream.getPartitionCount() calls.\n        await this.streamRegistry.getStreamMetadata(streamId);\n        return new Stream(streamId, this);\n    }\n    /**\n     * Creates a new stream.\n     *\n     * @category Important\n     *\n     * @param propsOrStreamIdOrPath - the stream id to be used for the new stream, and optionally, any\n     * associated metadata\n     *\n     * @remarks when creating a stream with an ENS domain, the returned promise can take several minutes to settle\n     */\n    async createStream(propsOrStreamIdOrPath) {\n        const props = typeof propsOrStreamIdOrPath === 'object' ? propsOrStreamIdOrPath : { id: propsOrStreamIdOrPath };\n        const streamId = await this.streamIdBuilder.toStreamID(props.id);\n        const metadata = merge({ partitions: DEFAULT_PARTITION_COUNT }, omit(props, 'id'));\n        await this.streamRegistry.createStream(streamId, metadata);\n        return new Stream(streamId, this);\n    }\n    /**\n     * Gets a stream, creating one if it does not exist.\n     *\n     * @category Important\n     *\n     * @param props - the stream id to get or create. Field `partitions` is only used if creating the stream.\n     *\n     * @remarks when creating a stream with an ENS domain, the returned promise can take several minutes to settle\n     */\n    async getOrCreateStream(props) {\n        try {\n            return await this.getStream(props.id);\n        }\n        catch (err) {\n            if (err.code === 'STREAM_NOT_FOUND') {\n                return this.createStream(props);\n            }\n            throw err;\n        }\n    }\n    /**\n     * Returns the metadata of a stream.\n     */\n    async getStreamMetadata(streamIdOrPath) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        return this.streamRegistry.getStreamMetadata(streamId);\n    }\n    /**\n     * Updates the metadata of a stream.\n     */\n    async setStreamMetadata(streamIdOrPath, metadata) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        await this.streamRegistry.setStreamMetadata(streamId, metadata);\n    }\n    /**\n     * Deletes a stream.\n     */\n    deleteStream(streamIdOrPath) {\n        return this.streamRegistry.deleteStream(streamIdOrPath);\n    }\n    /**\n     * Searches for streams based on given criteria.\n     *\n     * @param term - a search term that should be part of the stream id of a result\n     * @param permissionFilter - permissions that should be in effect for a result\n     */\n    searchStreams(term, permissionFilter) {\n        logger.debug('Search for streams', { term, permissionFilter });\n        if ((term === undefined) && (permissionFilter === undefined)) {\n            throw new Error('Requires a search term or a permission filter');\n        }\n        const streamIds = this.streamRegistry.searchStreams(term, (permissionFilter !== undefined) ? toInternalSearchStreamsPermissionFilter(permissionFilter) : undefined);\n        return map(streamIds, (id) => new Stream(id, this));\n    }\n    // --------------------------------------------------------------------------------------------\n    // Permissions\n    // --------------------------------------------------------------------------------------------\n    /**\n     * Gets all user ids that have {@link StreamPermission.PUBLISH} permission to the stream.\n     */\n    getStreamPublishers(streamIdOrPath) {\n        return this.streamRegistry.getStreamPublishers(streamIdOrPath);\n    }\n    /**\n     * Gets all user ids that have {@link StreamPermission.SUBSCRIBE} permission to the stream.\n     */\n    getStreamSubscribers(streamIdOrPath) {\n        return this.streamRegistry.getStreamSubscribers(streamIdOrPath);\n    }\n    /**\n     * Checks whether the given permission is in effect.\n     */\n    async hasPermission(query) {\n        return this.streamRegistry.hasPermission(await toInternalPermissionQuery(query, this.streamIdBuilder));\n    }\n    /**\n     * Returns the list of all permissions in effect for a given stream.\n     */\n    getPermissions(streamIdOrPath) {\n        return this.streamRegistry.getPermissions(streamIdOrPath);\n    }\n    /**\n     * Grants permissions on a given stream.\n     */\n    grantPermissions(streamIdOrPath, ...assignments) {\n        return this.streamRegistry.grantPermissions(streamIdOrPath, ...assignments.map(toInternalPermissionAssignment));\n    }\n    /**\n     * Revokes permissions on a given stream.\n     */\n    revokePermissions(streamIdOrPath, ...assignments) {\n        return this.streamRegistry.revokePermissions(streamIdOrPath, ...assignments.map(toInternalPermissionAssignment));\n    }\n    /**\n     * Sets a list of permissions to be in effect.\n     *\n     * @remarks Can be used to set the permissions of multiple streams in one transaction. Great for doing bulk\n     * operations and saving gas costs. Notice that the behaviour is overwriting, therefore any existing permissions not\n     * defined will be removed (per stream).\n     */\n    setPermissions(...items) {\n        return this.streamRegistry.setPermissions(...items.map((item) => ({ ...item, assignments: item.assignments.map(toInternalPermissionAssignment) })));\n    }\n    /**\n     * Checks whether a given userId has {@link StreamPermission.PUBLISH} permission to a stream.\n     */\n    async isStreamPublisher(streamIdOrPath, userId) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        return this.streamRegistry.isStreamPublisher(streamId, toUserId(userId));\n    }\n    /**\n     * Checks whether a given userId has {@link StreamPermission.SUBSCRIBE} permission to a stream.\n     */\n    async isStreamSubscriber(streamIdOrPath, userId) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        return this.streamRegistry.isStreamSubscriber(streamId, toUserId(userId));\n    }\n    // --------------------------------------------------------------------------------------------\n    // Storage\n    // --------------------------------------------------------------------------------------------\n    /**\n     * Assigns a stream to a storage node.\n     *\n     * @param opts - control how long to wait for storage node to pick up on assignment\n     * @returns If opts.wait=true, the promise resolves when the storage node acknowledges the assignment and\n     * is therefore ready to store published messages. If we don't receive the acknowledgment within the `timeout`,\n     * the promise rejects, but the assignment may still succeed later.\n     */\n    async addStreamToStorageNode(streamIdOrPath, storageNodeAddress, opts = { wait: false }) {\n        const streamId = await this.streamIdBuilder.toStreamID(streamIdOrPath);\n        await addStreamToStorageNode(streamId, toEthereumAddress(storageNodeAddress), opts, getPartitionCount(await this.streamRegistry.getStreamMetadata(streamId)), this.subscriber, this.streamRegistry, this.streamStorageRegistry, this.loggerFactory, this.config);\n    }\n    /**\n     * Unassigns a stream from a storage node.\n     */\n    async removeStreamFromStorageNode(streamIdOrPath, storageNodeAddress) {\n        return this.streamStorageRegistry.removeStreamFromStorageNode(streamIdOrPath, toEthereumAddress(storageNodeAddress));\n    }\n    /**\n     * Checks whether a stream is assigned to a storage node.\n     */\n    async isStoredStream(streamIdOrPath, storageNodeAddress) {\n        return this.streamStorageRegistry.isStoredStream(streamIdOrPath, toEthereumAddress(storageNodeAddress));\n    }\n    /**\n     * Gets all streams assigned to a storage node.\n     *\n     * @returns a list of {@link Stream} as well as `blockNumber` of result (i.e. blockchain state)\n     */\n    async getStoredStreams(storageNodeAddress) {\n        const queryResult = await this.streamStorageRegistry.getStoredStreams(toEthereumAddress(storageNodeAddress));\n        for (const stream of queryResult.streams) {\n            this.streamRegistry.populateMetadataCache(stream.id, stream.metadata);\n        }\n        return {\n            streams: queryResult.streams.map((item) => new Stream(item.id, this)),\n            blockNumber: queryResult.blockNumber\n        };\n    }\n    /**\n     * Gets a list of storage nodes.\n     *\n     * @param streamIdOrPath - if a stream is given, returns the list of storage nodes the stream has been assigned to;\n     * leave as `undefined` to return all storage nodes\n     */\n    async getStorageNodes(streamIdOrPath) {\n        return this.streamStorageRegistry.getStorageNodes(streamIdOrPath);\n    }\n    /**\n     * Sets the metadata of a storage node in the storage node registry.\n     *\n     * @remarks Acts on behalf of the wallet associated with the current {@link StreamrClient} instance.\n     *\n     * @param metadata - if `undefined`, removes the storage node from the registry\n     */\n    setStorageNodeMetadata(metadata) {\n        return this.storageNodeRegistry.setStorageNodeMetadata(metadata);\n    }\n    /**\n     * Gets the metadata of a storage node from the storage node registry.\n     *\n     * @returns rejects if the storage node is not found\n     */\n    async getStorageNodeMetadata(storageNodeAddress) {\n        return this.storageNodeRegistry.getStorageNodeMetadata(toEthereumAddress(storageNodeAddress));\n    }\n    // --------------------------------------------------------------------------------------------\n    // Identity\n    // --------------------------------------------------------------------------------------------\n    /**\n     * Gets the Signer associated with the current {@link StreamrClient} instance.\n     */\n    getSigner() {\n        return this.identity.getTransactionSigner(this.rpcProviderSource);\n    }\n    /**\n     * Gets the user id (i.e. Ethereum address or public key) of the wallet associated with the current {@link StreamrClient} instance.\n     */\n    async getUserId() {\n        return await this.identity.getUserId();\n    }\n    /**\n     * Alias to {@link getUserId|getUserId()}\n     */\n    getAddress() {\n        return this.getUserId();\n    }\n    // --------------------------------------------------------------------------------------------\n    // Network node\n    // --------------------------------------------------------------------------------------------\n    /**\n     * @deprecated This in an internal method\n     * @hidden\n     */\n    getNode() {\n        return this.node;\n    }\n    async inspect(node, streamDefinition) {\n        const streamPartId = await this.streamIdBuilder.toStreamPartID(streamDefinition);\n        // TODO: right now if the node is not joined to the stream partition, the below will return false instantly.\n        // It would be better if it actually joined the stream partition for us (and maybe left when we are done?).\n        return this.node.inspect(node, streamPartId);\n    }\n    async setProxies(streamDefinition, nodes, direction, connectionCount) {\n        const streamPartId = await this.streamIdBuilder.toStreamPartID(streamDefinition);\n        await this.node.setProxies(streamPartId, nodes, direction, connectionCount);\n    }\n    /**\n     * Used to set known entry points for a stream partition. If entry points are not set they\n     * will be automatically discovered from the Streamr Network.\n    */\n    async setStreamPartitionEntryPoints(streamDefinition, entryPoints) {\n        const streamPartId = await this.streamIdBuilder.toStreamPartID(streamDefinition);\n        await this.node.setStreamPartEntryPoints(streamPartId, entryPoints);\n    }\n    // --------------------------------------------------------------------------------------------\n    // Lifecycle\n    // --------------------------------------------------------------------------------------------\n    /**\n     * Used to manually initialize the network stack and connect to the network.\n     *\n     * @remarks Connecting is handled automatically by the client. Generally this method need not be called by the user.\n     */\n    connect() {\n        // eslint-disable-next-line no-underscore-dangle\n        return this._connect();\n    }\n    _connect = pOnce(async () => {\n        await this.node.startNode();\n    });\n    /**\n     * Destroys an instance of a {@link StreamrClient} by disconnecting from peers, clearing any pending tasks, and\n     * freeing up resources. This should be called once a user is done with the instance.\n     *\n     * @remarks As the name implies, the client instance (or any streams or subscriptions returned by it) should _not_\n     * be used after calling this method.\n     */\n    destroy() {\n        // eslint-disable-next-line no-underscore-dangle\n        return this._destroy();\n    }\n    _destroy = pOnce(async () => {\n        this.eventEmitter.removeAllListeners();\n        // eslint-disable-next-line no-underscore-dangle\n        this._connect.reset(); // reset connect (will error on next call)\n        const tasks = [\n            this.destroySignal.destroy().then(() => undefined),\n            this.unsubscribe()\n        ];\n        await Promise.allSettled(tasks);\n        await Promise.all(tasks);\n    });\n    async getPeerDescriptor() {\n        return convertPeerDescriptorToNetworkPeerDescriptor(await this.node.getPeerDescriptor());\n    }\n    /**\n     * Get the network-level node id of the client.\n     */\n    async getNodeId() {\n        return this.node.getNodeId();\n    }\n    /**\n     * Get diagnostic info about the underlying network. Useful for debugging issues.\n     *\n     * @remarks returned object's structure can change without semver considerations\n     */\n    async getDiagnosticInfo() {\n        return this.node.getDiagnosticInfo();\n    }\n    /**\n     * @deprecated This in an internal method\n     * @hidden\n     */\n    getConfig() {\n        return this.config;\n    }\n    /**\n     * @deprecated This in an internal method\n     * @hidden\n     */\n    getTheGraphClient() {\n        return this.theGraphClient;\n    }\n    /**\n     * Get overrides for transaction options. Use as a parameter when submitting\n     * transactions via ethers library.\n     *\n     * The {@link https://docs.ethers.org/v6/api/contract/#Overrides Overrides} type is from the `ethers` library.\n     */\n    getEthersOverrides() {\n        return _getEthersOverrides(this.rpcProviderSource, this.config);\n    }\n    /**\n     * @deprecated This in an internal method\n     * @hidden\n     */\n    getOperator(operatorContractAddress) {\n        return new Operator(operatorContractAddress, this.contractFactory, this.rpcProviderSource, this.chainEventPoller, this.theGraphClient, this.identity, this.destroySignal, this.loggerFactory, () => this.getEthersOverrides());\n    }\n    async findProxyNodes(streamDefinition, numberOfProxies = 1, maxQueryResults = 100, maxHeartbeatAgeHours = 24) {\n        return this.proxyNodeFinder.find(streamDefinition, numberOfProxies, maxQueryResults, maxHeartbeatAgeHours);\n    }\n    /**\n     * Adds an event listener to the client.\n     * @param eventName - event name, see {@link StreamrClientEvents} for options\n     * @param listener - the callback function\n     */\n    on(eventName, listener) {\n        this.eventEmitter.on(eventName, listener);\n    }\n    /**\n     * Adds an event listener to the client that is invoked only once.\n     * @param eventName - event name, see {@link StreamrClientEvents} for options\n     * @param listener - the callback function\n     */\n    once(eventName, listener) {\n        this.eventEmitter.once(eventName, listener);\n    }\n    /**\n     * Removes an event listener from the client.\n     * @param eventName - event name, see {@link StreamrClientEvents} for options\n     * @param listener - the callback function to remove\n     */\n    off(eventName, listener) {\n        this.eventEmitter.off(eventName, listener);\n    }\n}\n","import { config as CHAIN_CONFIG } from '@streamr/config';\nimport { DATAv2ABI as DATATokenABI, OperatorABI, OperatorFactoryABI, SponsorshipABI, SponsorshipFactoryABI } from '@streamr/network-contracts';\nimport { Logger, multiplyWeiAmount } from '@streamr/utils';\nimport { AbiCoder, Contract, formatEther, Interface, parseEther, ZeroAddress } from 'ethers';\nconst FRACTION_MAX = parseEther('1');\nconst logger = new Logger('operatorContractUtils');\n/**\n * @param opts.deployer should be the operator's Wallet\n * @returns Operator\n */\nexport async function deployOperatorContract(opts) {\n    logger.debug('Deploying OperatorContract');\n    const operatorFactory = new Contract(CHAIN_CONFIG[opts.environmentId].contracts.OperatorFactory, OperatorFactoryABI, opts.deployer);\n    const contractAddress = await operatorFactory.operators(await opts.deployer.getAddress());\n    if (contractAddress !== ZeroAddress) {\n        throw new Error('Operator already has a contract');\n    }\n    const operatorReceipt = await (await operatorFactory.deployOperator(multiplyWeiAmount(FRACTION_MAX, ((opts.operatorsCutPercentage ?? 0) / 100)), opts.operatorTokenName ?? `OperatorToken-${Date.now()}`, opts.metadata ?? '', [\n        CHAIN_CONFIG[opts.environmentId].contracts.OperatorDefaultDelegationPolicy,\n        CHAIN_CONFIG[opts.environmentId].contracts.OperatorDefaultExchangeRatePolicy,\n        CHAIN_CONFIG[opts.environmentId].contracts.OperatorDefaultUndelegationPolicy,\n    ], [\n        0,\n        0,\n        0\n    ])).wait(undefined, opts.transactionTimeout);\n    const newSponsorshipEvent = operatorReceipt.logs.find((l) => l.fragment?.name === 'NewOperator');\n    const newOperatorAddress = newSponsorshipEvent.args.operatorContractAddress;\n    const newOperator = new Contract(newOperatorAddress, OperatorABI, opts.deployer);\n    logger.debug('Deployed OperatorContract', { address: newOperatorAddress });\n    return newOperator;\n}\nexport async function deploySponsorshipContract(opts) {\n    logger.debug('Deploying SponsorshipContract');\n    const policies = [{\n            contractAddress: CHAIN_CONFIG[opts.environmentId].contracts.SponsorshipStakeWeightedAllocationPolicy,\n            param: opts.earningsPerSecond\n        }, {\n            contractAddress: CHAIN_CONFIG[opts.environmentId].contracts.SponsorshipDefaultLeavePolicy,\n            param: opts.minStakeDuration ?? 0\n        }, {\n            contractAddress: CHAIN_CONFIG[opts.environmentId].contracts.SponsorshipVoteKickPolicy,\n            param: 0\n        }];\n    if (opts.maxOperatorCount !== undefined) {\n        policies.push({\n            contractAddress: CHAIN_CONFIG[opts.environmentId].contracts.SponsorshipMaxOperatorsJoinPolicy,\n            param: opts.maxOperatorCount\n        });\n    }\n    const sponsorshipContractParams = AbiCoder.defaultAbiCoder().encode(['uint32', 'string', 'string', 'address[]', 'uint[]'], [\n        (opts.minOperatorCount ?? 1).toString(),\n        opts.streamId,\n        opts.metadata ?? '{}',\n        policies.map((p) => p.contractAddress),\n        policies.map((p) => p.param),\n    ]);\n    const deployTx = await getTokenContract(CHAIN_CONFIG[opts.environmentId].contracts.DATA)\n        .connect(opts.deployer)\n        .transferAndCall(CHAIN_CONFIG[opts.environmentId].contracts.SponsorshipFactory, opts.sponsorAmount ?? 0n, sponsorshipContractParams);\n    const deployReceipt = await deployTx.wait(undefined, opts.transactionTimeout);\n    const factoryInterface = new Interface(SponsorshipFactoryABI);\n    const newSponsorshipEvent = deployReceipt.logs\n        .map((log) => factoryInterface.parseLog(log))\n        .find((p) => p?.name === 'NewSponsorship');\n    const sponsorshipAddress = newSponsorshipEvent.args.sponsorshipContract;\n    logger.debug('Deployed SponsorshipContract', { address: sponsorshipAddress });\n    return new Contract(sponsorshipAddress, SponsorshipABI, opts.deployer);\n}\nexport const delegate = async (delegator, operatorContractAddress, amount, transactionTimeout) => {\n    logger.debug('Delegate', { amount: amount.toString() });\n    const tokenAddress = await getOperatorContract(operatorContractAddress).connect(delegator.provider).token();\n    await transferTokens(delegator, operatorContractAddress, amount, tokenAddress, transactionTimeout);\n};\nexport const undelegate = async (delegator, operatorContractAddress, amount, transactionTimeout) => {\n    logger.debug('Undelegate', { amount: amount.toString() });\n    await (await getOperatorContract(operatorContractAddress).connect(delegator).undelegate(amount)).wait(undefined, transactionTimeout);\n};\nexport const stake = async (staker, operatorContractAddress, sponsorshipContractAddress, amount, txOpts = {}, onSubmit = () => { }, transactionTimeout) => {\n    logger.debug('Stake', { amount: formatEther(amount), sponsorshipContractAddress });\n    const operatorContract = getOperatorContract(operatorContractAddress).connect(staker);\n    const tx = await operatorContract.stake(sponsorshipContractAddress, amount, txOpts);\n    logger.debug('Stake: transaction submitted', { tx: tx.hash, nonce: tx.nonce });\n    onSubmit(tx);\n    logger.debug('Stake: waiting for transaction to be mined', { tx: tx.hash, timeout: transactionTimeout });\n    try {\n        const receipt = await tx.wait(undefined, transactionTimeout);\n        logger.debug('Stake: confirmation received', { receipt: receipt?.hash });\n        return receipt;\n    }\n    catch (error) {\n        logger.error(`Stake: error waiting for tx to be mined`, { tx: tx.hash, error });\n        throw error;\n    }\n};\nexport const unstake = async (staker, operatorContractAddress, sponsorshipContractAddress, amount, txOpts = {}, onSubmit = () => { }, transactionTimeout) => {\n    logger.debug('Unstake', { amount: formatEther(amount), sponsorshipContractAddress });\n    const operatorContract = getOperatorContract(operatorContractAddress).connect(staker);\n    const sponsorshipContract = getSponsorshipContract(sponsorshipContractAddress).connect(staker);\n    const currentAmount = await sponsorshipContract.stakedWei(operatorContractAddress);\n    const targetAmount = currentAmount - amount;\n    const tx = await operatorContract.reduceStakeTo(sponsorshipContractAddress, targetAmount, txOpts);\n    logger.debug('Unstake: transaction submitted', { tx: tx.hash, nonce: tx.nonce });\n    onSubmit(tx);\n    logger.debug('Unstake: waiting for transaction to be mined', { tx: tx.hash, timeout: transactionTimeout });\n    try {\n        const receipt = await tx.wait(undefined, transactionTimeout);\n        logger.debug('Unstake: confirmation received', { receipt: receipt?.hash });\n        return receipt;\n    }\n    catch (error) {\n        logger.error(`Unstake: error waiting for tx to be mined`, { tx: tx.hash, error });\n        throw error;\n    }\n};\nexport const sponsor = async (sponsorer, sponsorshipContractAddress, amount, transactionTimeout) => {\n    logger.debug('Sponsor', { amount: amount.toString() });\n    const tokenAddress = await getSponsorshipContract(sponsorshipContractAddress).connect(sponsorer.provider).token();\n    await transferTokens(sponsorer, sponsorshipContractAddress, amount, tokenAddress, transactionTimeout);\n};\nexport const transferTokens = async (from, to, amount, tokenAddress, transactionTimeout) => {\n    const token = getTokenContract(tokenAddress);\n    const tx = await token.connect(from).transferAndCall(to, amount, '0x');\n    await tx.wait(undefined, transactionTimeout);\n};\nexport const getOperatorContract = (operatorAddress) => {\n    return new Contract(operatorAddress, OperatorABI);\n};\nconst getSponsorshipContract = (sponsorshipAddress) => {\n    return new Contract(sponsorshipAddress, SponsorshipABI);\n};\nconst getTokenContract = (tokenAddress) => {\n    return new Contract(tokenAddress, DATATokenABI);\n};\n","import 'reflect-metadata';\nexport { StreamrClient } from './StreamrClient';\nexport { Stream } from './Stream';\nexport { parseMetadata as parseStreamMetadata, getPartitionCount as getStreamPartitionCount } from './StreamMetadata';\nexport { Subscription, } from './subscribe/Subscription';\nexport { StreamPermission } from './permission';\nexport { STREAMR_STORAGE_NODE_GERMANY, STREAMR_STORAGE_NODE_ADDRESS, NetworkNodeType, ENVIRONMENT_IDS, DEFAULT_ENVIRONMENT_ID, ConfigInjectionToken, } from './ConfigTypes';\nexport { DEFAULT_KEY_TYPE } from './identity/IdentityMapping';\nexport { GroupKey as EncryptionKey } from './encryption/GroupKey';\nexport { formStorageNodeAssignmentStreamId, peerDescriptorTranslator } from './utils/utils';\nexport { Identity } from './identity/Identity';\nexport { KeyPairIdentity } from './identity/KeyPairIdentity';\nexport { EthereumKeyPairIdentity } from './identity/EthereumKeyPairIdentity';\nexport { EthereumProviderIdentity } from './identity/EthereumProviderIdentity';\nexport { MLDSAKeyPairIdentity } from './identity/MLDSAKeyPairIdentity';\nexport { ECDSAKeyPairIdentity } from './identity/ECDSAKeyPairIdentity';\nexport { MessageSigner } from './signature/MessageSigner';\nexport { RpcProviderSource } from './RpcProviderSource';\nexport { convertBytesToStreamMessage, convertStreamMessageToBytes } from './protocol/oldStreamMessageBinaryUtils';\nexport { ContentType, EncryptedGroupKey, EncryptionType, ProxyDirection, SignatureType } from '@streamr/trackerless-network';\nexport { MessageID } from './protocol/MessageID';\nexport { MessageRef } from './protocol/MessageRef';\nexport { StreamMessage, StreamMessageType } from './protocol/StreamMessage';\n// These are exported for the internal Operator class\nexport { Operator } from './contracts/Operator';\nimport { delegate, undelegate, deploySponsorshipContract, deployOperatorContract, sponsor, stake, unstake, getOperatorContract } from './contracts/operatorContractUtils';\n/**\n * @deprecated\n * @hidden\n */\n// eslint-disable-next-line no-underscore-dangle\nconst _operatorContractUtils = {\n    delegate,\n    undelegate,\n    deploySponsorshipContract,\n    sponsor,\n    stake,\n    unstake,\n    deployOperatorContract,\n    getOperatorContract,\n};\nexport { _operatorContractUtils };\n"],"names":["NetworkNodeType","logger","Logger","JsonRpcProvider","randomString","__decorate","this","__metadata","__param","config","CHAIN_CONFIG","RpcProviderSource","FallbackProvider","FetchRequest","scoped","Lifecycle","inject","ObservableEventEmitter","EventEmitter","FunctionFragment","initEventGateway","Contract","toEthereumAddress","NodeRegistryABI","toStreamPartID","StreamMessageType","EncryptionType","ContentType","binaryToUtf8","toUserIdRaw","GroupKeyRequest","GroupKeyResponse","StreamMessageID","toUserId","StreamMessageRef","NewStreamMessage","Defer","pull","once","PassThrough","uuidv4","toStreamID","LRUCache","NodeType","toDhtAddressRaw","toDhtAddress","TheGraphClient","composeAbortSignals","merge","LengthPrefixedFrameDecoder","G.filter","G.consume","StreamPartIDUtils","StreamIDUtils","ensureValidStreamPartitionCount","DEFAULT_PARTITION_COUNT","StreamPermission","MaxUint256","wait","scheduleAtInterval","Interface","isEthereumAddressUserId","StreamRegistryABI","isENSName","until","_searchStreams","collect","StreamStorageRegistryABI","AsymmetricEncryptionType","publicEncrypt","privateDecrypt","getSubtle","ml_kem1024","randomBytes","createCipheriv","createDecipheriv","openDB","MessageType","reflectionMergePartial","UnknownFieldHandler","jsonWriteOptions","isJsonObject","typeofJsonValue","WireType","PbLong","ServiceType","stackIntercept","createNetworkNode_","MetricsContext","NewGroupKeyRequest","utf8ToBinary","NewGroupKeyResponse","MessageSigner","signingUtil","EcdsaSecp256k1Evm","MapWithTtl","binaryToHex","SignatureType","Wallet","hexToBinary","BrowserProvider","SigningUtil","EcdsaSecp256r1","KEY_TYPES","delay","waitForEvent","Gate","Heap","executeSafePromise","_createMessagePipeline","injectable","container","isTokenDescriptor","isTransformDescriptor","formatErrorCtor","keyToArrayIndex","validateConfigModule","ensureValidStreamPartitionIndex","OperatorABI","SponsorshipABI","z","SponsorshipFactoryABI","areEqualBinaries","withTimeout","rootContainer","_getEthersOverrides","parseEther","OperatorFactoryABI","ZeroAddress","multiplyWeiAmount","AbiCoder","formatEther","DATATokenABI"],"mappings":"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"}