postchain-client 2.0.2 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/built/cjs/index.js +144 -70
- package/built/cjs/index.js.map +1 -1
- package/built/esm/index.js +3290 -402
- package/built/esm/index.js.map +1 -1
- package/built/src/ICCF/IccfProofTxMaterialBuilder.d.ts +1 -0
- package/built/src/ICCF/IccfProofTxMaterialBuilder.js +1 -1
- package/built/src/ICCF/IccfProofTxMaterialBuilder.js.map +1 -1
- package/built/src/ICCF/error.d.ts +1 -0
- package/built/src/ICCF/error.js.map +1 -1
- package/built/src/ICCF/interfaces.d.ts +1 -0
- package/built/src/ICCF/types.d.ts +1 -0
- package/built/src/ICCF/utils.d.ts +1 -0
- package/built/src/ICCF/utils.js +1 -0
- package/built/src/ICCF/utils.js.map +1 -1
- package/built/src/blockchainClient/blockchainClient.js +61 -3
- package/built/src/blockchainClient/blockchainClient.js.map +1 -1
- package/built/src/blockchainClient/clientStub.js +5 -1
- package/built/src/blockchainClient/clientStub.js.map +1 -1
- package/built/src/blockchainClient/enums.d.ts +2 -1
- package/built/src/blockchainClient/enums.js +1 -0
- package/built/src/blockchainClient/enums.js.map +1 -1
- package/built/src/blockchainClient/errors.d.ts +1 -0
- package/built/src/blockchainClient/errors.js.map +1 -1
- package/built/src/blockchainClient/failoverStrategies.js +3 -1
- package/built/src/blockchainClient/failoverStrategies.js.map +1 -1
- package/built/src/blockchainClient/httpUtil.d.ts +1 -0
- package/built/src/blockchainClient/httpUtil.js +1 -0
- package/built/src/blockchainClient/httpUtil.js.map +1 -1
- package/built/src/blockchainClient/interface.d.ts +2 -0
- package/built/src/blockchainClient/requestWithFailoverStrategy.d.ts +1 -0
- package/built/src/blockchainClient/requestWithFailoverStrategy.js.map +1 -1
- package/built/src/blockchainClient/types.d.ts +4 -1
- package/built/src/blockchainClient/utils.d.ts +3 -1
- package/built/src/blockchainClient/utils.js +16 -13
- package/built/src/blockchainClient/utils.js.map +1 -1
- package/built/src/blockchainClient/validation/anchoringTransaction.d.ts +1 -0
- package/built/src/blockchainClient/validation/anchoringTransaction.js +1 -0
- package/built/src/blockchainClient/validation/anchoringTransaction.js.map +1 -1
- package/built/src/blockchainClient/validation/bufferSchema.d.ts +1 -0
- package/built/src/blockchainClient/validation/bufferSchema.js +1 -0
- package/built/src/blockchainClient/validation/bufferSchema.js.map +1 -1
- package/built/src/blockchainClient/validation/merkleHash.js +0 -1
- package/built/src/blockchainClient/validation/merkleHash.js.map +1 -1
- package/built/src/blockchainClient/validation/rawGtx.js +1 -0
- package/built/src/blockchainClient/validation/rawGtx.js.map +1 -1
- package/built/src/blockchainClient/validation/requests.js +1 -0
- package/built/src/blockchainClient/validation/requests.js.map +1 -1
- package/built/src/blockchainClient/validation/txRid.d.ts +1 -0
- package/built/src/blockchainClient/validation/txRid.js.map +1 -1
- package/built/src/encryption/encryption.d.ts +1 -0
- package/built/src/encryption/encryption.js +1 -0
- package/built/src/encryption/encryption.js.map +1 -1
- package/built/src/encryption/errors.d.ts +1 -0
- package/built/src/encryption/errors.js.map +1 -1
- package/built/src/encryption/types.d.ts +1 -0
- package/built/src/formatter.d.ts +1 -0
- package/built/src/formatter.js +1 -0
- package/built/src/formatter.js.map +1 -1
- package/built/src/gtv/index.js +7 -0
- package/built/src/gtv/index.js.map +1 -1
- package/built/src/gtv/types.d.ts +1 -0
- package/built/src/gtx/gtx.d.ts +2 -1
- package/built/src/gtx/gtx.js +4 -3
- package/built/src/gtx/gtx.js.map +1 -1
- package/built/src/gtx/serialization.d.ts +1 -0
- package/built/src/gtx/serialization.js +1 -0
- package/built/src/gtx/serialization.js.map +1 -1
- package/built/src/gtx/types.d.ts +1 -0
- package/built/src/utils/calculateTransactionRid.d.ts +1 -0
- package/built/src/utils/calculateTransactionRid.js.map +1 -1
- package/built/src/utils/constants.d.ts +1 -0
- package/built/src/utils/constants.js +1 -0
- package/built/src/utils/constants.js.map +1 -1
- package/built/src/utils/decodeTransactionToGtx.d.ts +1 -0
- package/built/src/utils/decodeTransactionToGtx.js.map +1 -1
- package/built/src/utils/dump.js +1 -0
- package/built/src/utils/dump.js.map +1 -1
- package/built/src/utils/encodeTransaction.d.ts +1 -0
- package/built/src/utils/encodeTransaction.js.map +1 -1
- package/built/test/common/mocks.d.ts +17 -0
- package/built/test/common/mocks.js +21 -1
- package/built/test/common/mocks.js.map +1 -1
- package/built/test/integration/clientGetTransactionStatus.test.js +2 -2
- package/built/test/integration/clientGetTransactionStatus.test.js.map +1 -1
- package/built/test/integration/clientQuery.test.js +2 -2
- package/built/test/integration/clientQuery.test.js.map +1 -1
- package/built/test/integration/clientSendTransaction.test.js +1 -1
- package/built/test/integration/clientSendTransaction.test.js.map +1 -1
- package/built/test/integration/clientSignAndSendUniqueTransaction.test.js +1 -1
- package/built/test/integration/clientSignAndSendUniqueTransaction.test.js.map +1 -1
- package/built/test/integration/createClientIntegration.test.js +3 -0
- package/built/test/integration/createClientIntegration.test.js.map +1 -1
- package/built/test/integration/signAndSendUniqueTransaction.test.js +7 -6
- package/built/test/integration/signAndSendUniqueTransaction.test.js.map +1 -1
- package/built/test/integrationChromiaNetwork/getTransactionConfirmationLevel.test.js +1 -0
- package/built/test/integrationChromiaNetwork/getTransactionConfirmationLevel.test.js.map +1 -1
- package/built/test/integrationChromiaNetwork/requestWithFailoverStrategy.test.js +4 -3
- package/built/test/integrationChromiaNetwork/requestWithFailoverStrategy.test.js.map +1 -1
- package/built/test/integrationChromiaNetwork/signAndSendUniqueTransaction.test.js +10 -7
- package/built/test/integrationChromiaNetwork/signAndSendUniqueTransaction.test.js.map +1 -1
- package/built/test/pcctf/getSuites.test.js +1 -1
- package/built/test/pcctf/getSuites.test.js.map +1 -1
- package/built/test/pcctf/helpers.js +1 -1
- package/built/test/pcctf/helpers.js.map +1 -1
- package/built/test/unit/blockchainClient/client.test.js +2 -1
- package/built/test/unit/blockchainClient/client.test.js.map +1 -1
- package/built/test/unit/blockchainClient/getTransactionConfirmationLevel.test.js +2 -2
- package/built/test/unit/blockchainClient/getTransactionConfirmationLevel.test.js.map +1 -1
- package/built/test/unit/blockchainClient/sendTransaction.test.js +14 -8
- package/built/test/unit/blockchainClient/sendTransaction.test.js.map +1 -1
- package/built/test/unit/blockchainClient/statusPollIntervals.test.js +35 -28
- package/built/test/unit/blockchainClient/statusPollIntervals.test.js.map +1 -1
- package/built/test/unit/failoverStrategies.test.js +15 -14
- package/built/test/unit/failoverStrategies.test.js.map +1 -1
- package/built/test/unit/gtv/gtvHash.test.js +44 -0
- package/built/test/unit/gtv/gtvHash.test.js.map +1 -1
- package/built/test/unit/gtx/newSignatureProvider.test.js +4 -4
- package/built/test/unit/gtx/newSignatureProvider.test.js.map +1 -1
- package/built/test/unit/httpUtil.test.js +4 -0
- package/built/test/unit/httpUtil.test.js.map +1 -1
- package/built/umd/index.js +99 -26
- package/built/umd/index.js.map +1 -1
- package/changelog.md +19 -1
- package/package.json +1 -1
package/built/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/gtv/definition.js","../src/customError/index.js","../src/gtx/errors.js","../src/blockchainClient/validation/rawGtx.js","../src/formatter.js","../src/gtx/serialization.js","../src/gtv/index.js","../src/encryption/errors.js","../src/encryption/encryption.js","../src/gtx/index.js","../src/gtx/gtx.js","../src/logger.js","../src/blockchainClient/errors.js","../src/blockchainClient/enums.js","../src/blockchainClient/nodeManager.js","../src/blockchainClient/validation/bufferSchema.js","../src/blockchainClient/validation/txRid.js","../src/blockchainClient/validation/anchoringTransaction.js","../src/ICCF/error.js","../src/blockchainClient/validation/requests.js","../src/utils/encodeTransaction.js","../src/utils/constants.js","../src/blockchainClient/validation/merkleHash.js","../src/blockchainClient/httpUtil.js","../src/blockchainClient/failoverStrategies.js","../src/blockchainClient/requestWithFailoverStrategy.js","../src/blockchainClient/utils.js","../src/ICCF/utils.js","../src/ICCF/IccfProofTxMaterialBuilder.js","../src/promiEvent/promiEventEmitter.js","../src/promiEvent/promiEvents.js","../src/blockchainClient/validation/blockIdentifier.js","../src/blockchainClient/validation/networkSettings.js","../src/blockchainClient/validation/signMethod.js","../src/blockchainClient/validation/transactionStatusReponse.js","../src/blockchainClient/blockchainClient.js","../src/blockchainClient/clientStub.js","../src/utils/calculateTransactionRid.js","../src/utils/dump.js","../src/utils/decodeTransactionToGtx.js"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-nocheck\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst asn = require(\"@chromia/asn1/lib/asn1\");\nexport const ASNDictPair = asn.define(\"DictPair\", function () {\n this.seq().obj(this.key(\"name\").utf8str(), this.key(\"value\").use(rawGTV));\n});\nexport const rawGTV = asn.define(\"GtvValue\", function () {\n this.choice({\n null: this.explicit(0).null_(),\n byteArray: this.explicit(1).octstr(),\n string: this.explicit(2).utf8str(),\n integer: this.explicit(3).int(),\n dict: this.explicit(4).seqof(ASNDictPair),\n array: this.explicit(5).seqof(rawGTV),\n bigInteger: this.explicit(6).int(),\n });\n});\nexport const ASNBuffer = asn.define(\"Buffer\", function () {\n this.octstr();\n});\n//# sourceMappingURL=definition.js.map","export class CustomError extends Error {\n constructor(message, status) {\n super(message);\n this.name = this.constructor.name;\n this.status = status;\n }\n}\n//# sourceMappingURL=index.js.map","import { CustomError } from \"../customError\";\nexport class UnexpectedArgumentTypeError extends CustomError {\n constructor(typedArg) {\n super(`Cannot parse typedArg ${JSON.stringify(typedArg)}. Unknown type ${typedArg.type}`, 400);\n }\n}\nexport class MissingGtxException extends CustomError {\n constructor() {\n super(`Missing instance of gtx protocol (used for communicating with postchain) to add operation to`, 400);\n }\n}\nexport class AlreadySignedTransactionException extends CustomError {\n constructor(operation) {\n super(`Cannot add ${operation} calls to an already signed gtx`, 400);\n }\n}\nexport class NumberOfSignersAndSignaturesException extends CustomError {\n constructor() {\n super(`Not matching number of signers and signatures`, 400);\n }\n}\nexport class MissingSignerException extends CustomError {\n constructor() {\n super(`No such signer, remember to add signer to transaction before adding a signature`, 400);\n }\n}\n//# sourceMappingURL=errors.js.map","import { z } from \"zod\";\nconst bufferSchema = z.custom(val => Buffer.isBuffer(val), {\n message: \"Expected Buffer\",\n});\nconst rawGtvSchema = z.lazy(() => z.union([\n z.null(),\n z.boolean(),\n bufferSchema,\n z.string(),\n z.number(),\n z.bigint(),\n z.array(rawGtvSchema),\n z.record(rawGtvSchema),\n]));\nconst rawGtxOpSchema = z.tuple([z.string(), z.array(rawGtvSchema)]);\nconst rawGtxBodySchema = z.tuple([bufferSchema, z.array(rawGtxOpSchema), z.array(bufferSchema)]);\nconst rawGtxSchema = z.tuple([rawGtxBodySchema, z.array(bufferSchema)]);\nexport function isRawGtx(value) {\n const result = rawGtxSchema.safeParse(value);\n return result.success;\n}\n//# sourceMappingURL=rawGtx.js.map","import { isRawGtx } from \"./blockchainClient/validation/rawGtx\";\nexport function pgBytes(buffer) {\n if (!Buffer.isBuffer(buffer)) {\n throw new PgBytesInputException(buffer);\n }\n return `\\\\x${buffer.toString(\"hex\")}`;\n}\n/**\n * Converts hex string to Buffer\n * @param key: string\n * @returns {Buffer}\n */\nexport function toBuffer(key) {\n return Buffer.from(key, \"hex\");\n}\n/**\n * Converts Buffer to hex string\n * @param buffer: Buffer\n * @returns {string}\n */\nexport function toString(buffer) {\n return buffer.toString(\"hex\").toUpperCase();\n}\nexport function toQueryObjectGTV(nameOrObject, queryArguments) {\n if (typeof nameOrObject === \"string\") {\n return [nameOrObject, Object.assign({}, queryArguments)];\n }\n else {\n const { name, args } = nameOrObject;\n return [name, args || {}];\n }\n}\nexport class PgBytesInputException extends Error {\n constructor(buffer) {\n super(`util.pgBytes expects a buffer, but got ${typeof buffer}`);\n }\n}\nexport function ensureBuffer(value) {\n if (value instanceof Buffer) {\n return value;\n }\n else {\n return toBuffer(value);\n }\n}\nexport function ensureString(value) {\n if (typeof value === \"string\") {\n return value.toUpperCase();\n }\n else {\n return toString(value);\n }\n}\nexport function checkGtvType(value) {\n try {\n if (value == null) {\n return true;\n }\n if (Buffer.isBuffer(value)) {\n return true;\n }\n if (typeof value === \"string\" || typeof value === \"bigint\") {\n return true;\n }\n if (typeof value === \"number\") {\n if (!Number.isInteger(value)) {\n throw Error(\"User error: Only integers are supported\");\n }\n return true;\n }\n if (Array.isArray(value)) {\n return value.every(item => checkGtvType(item));\n }\n if (typeof value === \"object\") {\n return Object.values(value).every(val => checkGtvType(val));\n }\n }\n catch (error) {\n throw new Error(`Failed to check type: ${error}`);\n }\n return false;\n}\nexport function rawGtxToGtx(rawGtx) {\n const rawGtxBody = rawGtx[0];\n const signatures = rawGtx[1];\n const gtxBody = {\n blockchainRid: rawGtxBody[0],\n operations: rawGtxBody[1].map((operation) => ({\n opName: operation[0],\n args: operation[1],\n })),\n signers: rawGtxBody[2],\n };\n return {\n blockchainRid: gtxBody.blockchainRid,\n operations: gtxBody.operations,\n signers: gtxBody.signers,\n signatures,\n };\n}\nexport function rawGtxToRawGtxBody(rawGtx) {\n return rawGtx[0];\n}\nexport function checkGtxType(value) {\n if (!isRawGtx(value))\n return false;\n try {\n rawGtxToGtx(value);\n return true;\n }\n catch (error) {\n return false;\n }\n}\nexport function removeDuplicateSigners(signers) {\n const signersAsString = [];\n signers.forEach(item => {\n const itemAsString = item.toString(\"hex\");\n if (!signersAsString.includes(itemAsString)) {\n signersAsString.push(itemAsString);\n }\n });\n const result = [];\n signersAsString.forEach(item => {\n result.push(Buffer.from(item, \"hex\"));\n });\n return result;\n}\nexport function matchRellErrorString(rellError) {\n const parsed = rellError.match(/\\[([^\\]]+)\\]\\sOperation\\s'([^']+)'\\sfailed:\\s(.+)$/);\n if (!parsed)\n return {};\n const [rellLine, operation, shortReason] = parsed.slice(1);\n return { shortReason, rellLine, operation };\n}\n//# sourceMappingURL=formatter.js.map","import { rawGTV } from \"../gtv/definition\";\nimport { BN } from \"bn.js\";\nimport { UnexpectedArgumentTypeError } from \"./errors\";\nimport { checkGtxType } from \"../formatter\";\nexport function encodeValue(rawGtv) {\n return rawGTV.encode(createTypedArg(rawGtv));\n}\nexport function encodeValueGtx(rawGtx) {\n return encodeValue(rawGtx);\n}\nexport function decodeValue(bytes) {\n try {\n const obj = rawGTV.decode(bytes);\n return parseValue(obj);\n }\n catch (error) {\n throw new Error(`Invalid GTV data. ${error}`);\n }\n}\nexport function decodeValueGtx(bytes) {\n const decodedValue = decodeValue(bytes);\n if (!checkGtxType(decodedValue)) {\n throw new Error(`Unexpected type of value: ${decodedValue}, expected decoded value to be of type RawGtx`);\n }\n return decodedValue;\n}\nexport function parseValue(typedArg) {\n var _a, _b;\n if (typedArg.type === \"null\") {\n return null;\n }\n else if (typedArg.type === \"byteArray\") {\n return typedArg.value;\n }\n else if (typedArg.type === \"string\") {\n return typedArg.value;\n }\n else if (typedArg.type === \"integer\") {\n return Number(typedArg.value);\n }\n else if (typedArg.type === \"array\") {\n const arrayValue = typedArg.value;\n return arrayValue.map((item) => parseValue(item));\n }\n else if (typedArg.type === \"bigInteger\") {\n return BigInt((_b = (_a = typedArg.value) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : \"\");\n }\n else if (typedArg.type === \"dict\") {\n const arrayValue = typedArg.value;\n const result = {};\n arrayValue.forEach((pair) => {\n result[pair.name] = parseValue(pair.value);\n });\n return result;\n }\n else {\n throw new UnexpectedArgumentTypeError(typedArg);\n }\n}\nexport function createTypedArg(value) {\n try {\n if (value == null) {\n return { type: \"null\", value: null };\n }\n if (Buffer.isBuffer(value)) {\n return { type: \"byteArray\", value: value };\n }\n if (typeof value === \"boolean\") {\n return { type: \"integer\", value: value ? 1 : 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", value: value };\n }\n if (typeof value === \"number\") {\n if (!Number.isInteger(value)) {\n throw Error(\"User error: Only integers are supported\");\n }\n return { type: \"integer\", value: new BN(value) };\n }\n if (typeof value === \"bigint\") {\n return { type: \"bigInteger\", value: new BN(value.toString()) };\n }\n if (value.constructor === Array) {\n return {\n type: \"array\",\n value: value.map(item => createTypedArg(item)),\n };\n }\n if (typeof value === \"object\") {\n let valueAsDictPair = value;\n if (isDictPairWithStringKey(valueAsDictPair)) {\n valueAsDictPair = sortDictPairByKey(valueAsDictPair);\n }\n return {\n type: \"dict\",\n value: Object.keys(valueAsDictPair).map(function (key) {\n return { name: key, value: createTypedArg(valueAsDictPair[key]) };\n }),\n };\n }\n }\n catch (error) {\n const message = value ? value.toString() : \"RawGtv\";\n throw new Error(`Failed to encode ${message}: ${error}`);\n }\n throw new Error(`value ${value} have unsupported type: ${typeof value}`);\n}\nfunction isDictPairWithStringKey(obj) {\n for (const key in obj) {\n if (typeof key !== \"string\") {\n return false;\n }\n }\n return true;\n}\nfunction sortDictPairByKey(dict) {\n const sortedArray = Object.entries(dict).sort(([keyA], [keyB]) => {\n if (keyA < keyB) {\n return -1;\n }\n if (keyA > keyB) {\n return 1;\n }\n return 0;\n });\n const sortedDict = {};\n for (const [key, value] of sortedArray) {\n sortedDict[key] = value;\n }\n return sortedDict;\n}\n//# sourceMappingURL=serialization.js.map","import { gtvHash } from \"merklehashts\";\nimport * as serialization from \"../gtx/serialization\";\nconst gtvHash2 = (obj, merkleHashVersion) => {\n return gtvHash(obj, merkleHashVersion);\n};\nconst encode = serialization.encodeValue;\nconst decode = serialization.decodeValue;\nexport { encode, decode, gtvHash2 as gtvHash };\n//# sourceMappingURL=index.js.map","export class PrivKeyFormatException extends Error {\n constructor(privKey) {\n super(`Invalid key length. Expected 32, but got ${privKey.length}`);\n }\n}\nexport class MissingPrivKeyArgumentException extends Error {\n constructor() {\n super(`Missing argument privKey`);\n }\n}\n//# sourceMappingURL=errors.js.map","import * as crypto from \"crypto\";\nimport * as secp256k1 from \"secp256k1\";\nimport { ensureBuffer } from \"../formatter\";\nimport { MissingPrivKeyArgumentException, PrivKeyFormatException } from \"./errors\";\nexport function createPublicKey(privKey) {\n validatePrivKeyFormat(privKey);\n return Buffer.from(secp256k1.publicKeyCreate(privKey, true).buffer);\n}\nexport function randomBytes(size) {\n return crypto.randomBytes(size);\n}\nexport function sha256(buffer) {\n return crypto.createHash(\"sha256\").update(buffer).digest();\n}\nexport const hash256 = sha256;\nexport function hashConcat(items) {\n return hash256(Buffer.concat(items));\n}\n/**\n * @param content the content that the signature signs. It will be digested before validating.\n * @param pubKey The pubKey to validate the signature with\n * @param signature the signature to validate\n *\n * @return true if signature ok, false otherwise\n */\nexport function checkSignature(content, pubKey, signature) {\n const digest = hash256(content);\n return checkDigestSignature(digest, pubKey, signature);\n}\n/**\n * @param digest the signed digest. It will not be digested before validating.\n * @param pubKey The pubKey to validate the signature with\n * @param signature the signature to validate\n *\n * @return true if signature ok, false otherwise\n */\nexport function checkDigestSignature(digest, pubKey, signature) {\n return secp256k1.ecdsaVerify(signature, digest, pubKey);\n}\n/**\n * @param content to sign. It will be digested before signing.\n * @param privKey The private key to sign the content with\n *\n * @return the signature\n */\nexport function sign(content, privKey) {\n validatePrivKeyFormat(privKey);\n const digestBuffer = sha256(content);\n return signDigest(digestBuffer, privKey);\n}\n/**\n * @param digestBuffer to sign. It will not be digested before signing.\n * @param privKey The private key to sign the digest with\n *\n * @return the signature\n */\nexport function signDigest(digestBuffer, privKey) {\n return Buffer.from(secp256k1.ecdsaSign(digestBuffer, privKey).signature);\n}\n/**\n * Creates a key pair (which usually represents one user)\n * @param privKey to create key pair based on\n * @returns {{pubKey: Buffer, privKey: Buffer}}\n */\nexport function makeKeyPair(privKey) {\n let pubKey;\n if (privKey) {\n privKey = ensureBuffer(privKey);\n pubKey = createPublicKey(privKey);\n }\n else {\n do {\n privKey = randomBytes(32);\n } while (!secp256k1.privateKeyVerify(privKey));\n pubKey = Buffer.from(secp256k1.publicKeyCreate(privKey).buffer);\n }\n return { pubKey, privKey };\n}\n/**\n * Generates a 16bytes TUID (Text unique ID) (a 32characters long string)\n * @returns string\n */\nexport function makeTuid() {\n return randomBytes(16).toString(\"hex\");\n}\n/**\n * Verify that keypair is correct. Providing the private key, this function returns its associated public key\n * @param privKey: Buffer\n * @returns {{pubKey: Buffer, privKey: Buffer}}\n */\nexport function verifyKeyPair(privKey) {\n validatePrivKeyFormat(privKey);\n const pubKey = Buffer.from(secp256k1.publicKeyCreate(privKey).buffer);\n return { pubKey, privKey };\n}\nfunction validatePrivKeyFormat(privKey) {\n if (!privKey) {\n throw new MissingPrivKeyArgumentException();\n }\n if (!Buffer.isBuffer(privKey) || privKey.length !== 32) {\n throw new PrivKeyFormatException(privKey);\n }\n}\n//# sourceMappingURL=encryption.js.map","import * as serialization from \"./serialization\";\nconst encode = serialization.encodeValueGtx;\nconst decode = serialization.decodeValueGtx;\nexport { encode, decode };\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as gtv from \"../gtv\";\nimport { checkDigestSignature, createPublicKey, makeKeyPair, signDigest, } from \"../encryption/encryption\";\nimport { AlreadySignedTransactionException, MissingGtxException, MissingSignerException, } from \"./errors\";\nimport { encode as gtxEncode, decode as gtxDecode } from \"./index\";\nimport { ensureBuffer } from \"../formatter\";\nexport function emptyGtx(blockchainRid) {\n return { blockchainRid, operations: [], signers: [] };\n}\n/**\n * Adds a function call to a GTX. Creates a new GTX if none specified.\n * This function will throw Error if gtx is already signed\n * @param opName the name of the function to call\n * @param args the array of arguments of the function call. If no args, this must be an empty array\n * @param gtx the function call will be added to this gtx\n * @returns the gtx\n * @throws if gtx is null or if gtx is already signed\n */\nexport function addTransactionToGtx(opName, args, gtx) {\n if (gtx == null) {\n throw new MissingGtxException();\n }\n if (gtx.signatures) {\n throw new AlreadySignedTransactionException(\"function\");\n }\n gtx.operations.push({ opName: opName, args: args });\n return gtx;\n}\nexport function addSignerToGtx(signer, gtx) {\n if (gtx.signatures) {\n throw new AlreadySignedTransactionException(\"signer\");\n }\n gtx.signers.push(signer);\n}\n/**\n * Serializes the gtx to get tx hash\n * @param gtx the gtx to serialize\n */\nexport function getDigest(gtx, merkleHashVersion) {\n return gtv.gtvHash(gtxToRawGtxBody(gtx), merkleHashVersion);\n}\n/**\n * Serializes the gtx for signing\n * @param gtx the gtx to serialize\n */\nexport function getDigestToSign(gtx, merkleHashVersion) {\n return gtv.gtvHash(gtxToRawGtxBody(gtx), merkleHashVersion);\n}\nexport function getDigestToSignFromRawGtxBody(gtxBody, merkleHashVersion) {\n return gtv.gtvHash(gtxBody, merkleHashVersion);\n}\nexport function gtxToRawGtxBody(gtx) {\n return [\n gtx.blockchainRid,\n gtx.operations.map((op) => [op.opName, op.args]),\n gtx.signers,\n ];\n}\nexport function gtxToRawGtx(gtx) {\n var _a;\n return [\n [\n gtx.blockchainRid,\n gtx.operations.map((op) => [op.opName, op.args]),\n gtx.signers,\n ],\n (_a = gtx.signatures) !== null && _a !== void 0 ? _a : [],\n ];\n}\nexport function sign(gtx, privOrSigProv, merkleHashVersion, pubKey) {\n return __awaiter(this, void 0, void 0, function* () {\n if (privOrSigProv instanceof Buffer) {\n const digestToSign = getDigestToSign(gtx, merkleHashVersion);\n const signature = signDigest(digestToSign, privOrSigProv);\n return addSignature(pubKey || makeKeyPair(privOrSigProv).pubKey, signature, gtx);\n }\n else {\n // Removes signatures and extract the rawgtxBody\n const rawGtxBody = gtxToRawGtxBody(gtx);\n const signature = yield privOrSigProv.sign(rawGtxBody);\n return addSignature(privOrSigProv.pubKey, signature, gtx);\n }\n });\n}\n/**\n * Adds a signature to the gtx\n */\nexport function addSignature(pubKeyBuffer, signatureBuffer, gtx) {\n if (!gtx.signatures) {\n gtx.signatures = Array(gtx.signers.length);\n }\n const signerIndex = gtx.signers.findIndex((signer) => pubKeyBuffer.equals(signer));\n if (signerIndex === -1) {\n throw new MissingSignerException();\n }\n gtx.signatures[signerIndex] = signatureBuffer;\n return gtx;\n}\nexport function serialize(gtx) {\n if (!gtx.signatures) {\n // TODO\n // The gtx is not signed, but we must include\n // the signatures attribute, so let's add that.\n gtx.signatures = [];\n }\n return gtxEncode([gtxToRawGtxBody(gtx), gtx.signatures]);\n}\nexport function deserialize(gtxBytes) {\n const deserializedTx = gtxDecode(gtxBytes);\n const body = deserializedTx[0];\n const gtvTxBody = {\n blockchainRid: body[0],\n operations: body[1].map((operation) => ({\n opName: operation[0],\n args: operation[1],\n })),\n signers: body[2],\n };\n const signatures = deserializedTx[1];\n return {\n blockchainRid: gtvTxBody.blockchainRid,\n operations: gtvTxBody.operations,\n signers: gtvTxBody.signers,\n signatures,\n };\n}\nexport function checkGTXSignatures(txHash, gtx) {\n var _a;\n if (!Array.isArray(gtx.signatures) || gtx.signatures.length === 0) {\n return false;\n }\n for (const i in gtx.signers) {\n const signValid = checkDigestSignature(txHash, gtx.signers[i], (_a = gtx.signatures) === null || _a === void 0 ? void 0 : _a[i]);\n if (!signValid)\n return signValid;\n }\n return true;\n}\nexport function checkExistingGTXSignatures(txHash, gtx) {\n var _a;\n for (const i in gtx.signers) {\n if ((_a = gtx.signatures) === null || _a === void 0 ? void 0 : _a[i]) {\n const signValid = checkDigestSignature(txHash, gtx.signers[i], gtx.signatures[i]);\n if (!signValid)\n return signValid;\n }\n }\n return true;\n}\nexport function newSignatureProvider(merkleHashVersion, keyPair) {\n let pub, priv;\n if (keyPair) {\n priv = ensureBuffer(keyPair.privKey);\n pub = keyPair.pubKey ? ensureBuffer(keyPair.pubKey) : createPublicKey(priv);\n }\n else {\n ({ privKey: priv, pubKey: pub } = makeKeyPair());\n }\n return {\n pubKey: pub,\n sign: (gtx) => __awaiter(this, void 0, void 0, function* () {\n const signature = getDigestToSignFromRawGtxBody(gtx, merkleHashVersion);\n return signDigest(signature, priv);\n }),\n };\n}\nexport function rawGtvToGtx(gtv) {\n if (Array.isArray(gtv) && gtv.length !== 2) {\n throw new Error(\"Gtv must be an array of size 2\");\n }\n const gtvArray = gtv;\n if (!Array.isArray(gtvArray[0])) {\n throw new Error(\"First element must be an array\");\n }\n if (!Array.isArray(gtvArray[1])) {\n throw new Error(\"Second element must be an array\");\n }\n gtvArray[1].forEach(element => {\n if (!Buffer.isBuffer(element)) {\n throw new Error(\"Element must be a buffer\");\n }\n });\n const gtxBody = rawGtvToGtxBody(gtvArray[0]);\n return Object.assign(Object.assign({}, gtxBody), { signatures: gtvArray[1] });\n}\nfunction rawGtvToGtxBody(gtv) {\n if (Array.isArray(gtv) && gtv.length !== 3) {\n throw new Error(\"Gtv must be an array of size 3\");\n }\n const array = gtv;\n if (!Buffer.isBuffer(array[0])) {\n throw new Error(\"First element must be a byte array\");\n }\n if (!Array.isArray(array[1])) {\n throw new Error(\"Second element must be an array\");\n }\n if (!Array.isArray(array[2])) {\n throw new Error(\"Third element must be an array\");\n }\n array[2].forEach(element => {\n if (!Buffer.isBuffer(element)) {\n throw new Error(\"Element must be a buffer\");\n }\n });\n return {\n blockchainRid: array[0],\n operations: array[1].map(element => rawGtvToRellOp(element)),\n signers: array[2],\n };\n}\nfunction rawGtvToRellOp(gtv) {\n if (Array.isArray(gtv) && gtv.length !== 2) {\n throw new Error(\"Gtv must be an array of size 2\");\n }\n const array = gtv;\n if (typeof array[0] !== \"string\") {\n throw new Error(\"First element must be a string\");\n }\n if (!Array.isArray(array[1])) {\n throw new Error(\"Second element must be an array\");\n }\n return { opName: array[0], args: array[1] };\n}\n//# sourceMappingURL=gtx.js.map","var _a;\nvar MsgType;\n(function (MsgType) {\n MsgType[\"Debug\"] = \"DEBUG\";\n MsgType[\"Info\"] = \"INFO\";\n MsgType[\"Error\"] = \"ERROR\";\n MsgType[\"Warning\"] = \"WARNING\";\n})(MsgType || (MsgType = {}));\nvar LogColor;\n(function (LogColor) {\n LogColor[\"Red\"] = \"\\u001B[91m\";\n LogColor[\"Green\"] = \"\\u001B[92m\";\n LogColor[\"Blue\"] = \"\\u001B[36m\";\n LogColor[\"Yellow\"] = \"\\u001B[93m\";\n LogColor[\"StopColor\"] = \"\\u001B[0m\";\n})(LogColor || (LogColor = {}));\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"Debug\"] = \"DEBUG\";\n LogLevel[\"Info\"] = \"INFO\";\n LogLevel[\"Error\"] = \"ERROR\";\n LogLevel[\"Warning\"] = \"WARNING\";\n LogLevel[\"Disabled\"] = \"DISABLED\";\n})(LogLevel || (LogLevel = {}));\nconst logLevelMap = {\n [LogLevel.Warning]: 1,\n [LogLevel.Info]: 2,\n [LogLevel.Debug]: 3,\n [LogLevel.Error]: 0,\n [LogLevel.Disabled]: -1,\n};\nconst DEFAULT_LOG_LEVEL = logLevelMap[LogLevel.Warning];\nlet logLevel = typeof process === \"undefined\"\n ? DEFAULT_LOG_LEVEL\n : (_a = logLevelMap[process.env.LOG_LEVEL]) !== null && _a !== void 0 ? _a : DEFAULT_LOG_LEVEL;\nexport function setLogLevel(level) {\n logLevel = logLevelMap[level];\n}\nexport function getLogLevel() {\n return Object.keys(logLevelMap).find(key => logLevelMap[key] === logLevel);\n}\nexport function debug(message, moduleName) {\n if (logLevel >= 3) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Debug,\n color: LogColor.Blue,\n });\n }\n}\nexport function info(message, moduleName) {\n if (logLevel >= 2) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Info,\n color: LogColor.Green,\n });\n }\n}\nexport function error(message, moduleName) {\n if (logLevel != -1) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Error,\n color: LogColor.Red,\n });\n }\n}\nexport function warning(message, moduleName) {\n if (logLevel >= 1) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Warning,\n color: LogColor.Yellow,\n });\n }\n}\nfunction emitLogMessage({ msgType, message, color, moduleName, }) {\n const time = getTimestamp();\n const moduleNameMessage = moduleName ? `[${moduleName}]` : \"\";\n console.log(`[${time}] ${color}${msgType}:${LogColor.StopColor} ${moduleNameMessage} ${message}`);\n}\nfunction getTimestamp() {\n const pad = (n, s = 2) => `${new Array(s).fill(0)}${n}`.slice(-s);\n const date = new Date();\n return `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}:${pad(date.getMilliseconds(), 3)}`;\n}\nexport function logger(moduleName) {\n return {\n debug: (message) => debug(message, moduleName),\n info,\n error,\n warning,\n setLogLevel,\n disable: () => setLogLevel(LogLevel.Disabled),\n };\n}\n//# sourceMappingURL=logger.js.map","import { CustomError } from \"../customError\";\nimport { matchRellErrorString } from \"../formatter\";\nexport class MissingPubKeyError extends CustomError {\n constructor() {\n super(`No public key was provided`, 400);\n }\n}\nexport class MissingBlockchainIdentifierError extends CustomError {\n constructor() {\n super(`No blockchain identifier was provided. Include either a blockchainRid (string) or a blockchainIid (number).`, 400);\n }\n}\nexport class MissingNodeUrlError extends CustomError {\n constructor() {\n super(`No node url or directory node url was provided. Include either a nodeUrl (string or string[]) or a directory node url (string or string[]).`, 400);\n }\n}\nexport class BlockchainUrlUndefinedException extends CustomError {\n constructor(brid) {\n const idType = typeof brid === \"string\" ? \"BRID\" : \"IID\";\n super(`Cannot find nodes hosting the blockchain with ${idType} ${brid}`, 400);\n }\n}\nexport class DirectoryNodeUrlPoolException extends CustomError {\n constructor() {\n super(`No directory node url was provided`, 400);\n }\n}\nexport class InvalidTransactionFormatException extends CustomError {\n constructor() {\n super(`The transaction is not in the right format`, 400);\n }\n}\nexport class GetTransactionRidException extends CustomError {\n constructor(error) {\n super(`\"Error occurred while getting transaction RID:\", ${error}`, 400);\n }\n}\nexport class TxRejectedError extends Error {\n constructor(rejectReason) {\n super(`Transaction was rejected, ${rejectReason}`);\n this.name = \"TxRejectedError\";\n this.fullReason = rejectReason;\n const result = matchRellErrorString(rejectReason);\n this.shortReason = result.shortReason;\n this.rellLine = result.rellLine;\n this.operation = result.operation;\n }\n}\nexport class UnexpectedStatusError extends CustomError {\n constructor(status, error) {\n let errorMessage = `Unexpected status code from server. Code: ${status}.`;\n if (status === null) {\n super(errorMessage, 500); // default status code\n }\n else {\n if (error) {\n errorMessage += ` Message: ${error}.`;\n }\n super(errorMessage, status);\n }\n }\n}\nexport class InvalidTxRidException extends CustomError {\n constructor(txRID) {\n super(`expected length 32 of txRID, but got ${txRID && txRID.length}`, 400);\n }\n}\nexport class SerializedTransactionFormatException extends CustomError {\n constructor() {\n super(`messageHash is not a Buffer`, 400);\n }\n}\nexport class GetBridFromChainException extends Error {\n constructor(chainId, reason) {\n super(`Error resolving BRID for chainId ${chainId}, reason: ${reason}`);\n }\n}\n//# sourceMappingURL=errors.js.map","export var FailoverStrategy;\n(function (FailoverStrategy) {\n FailoverStrategy[\"AbortOnError\"] = \"abortOnError\";\n FailoverStrategy[\"TryNextOnError\"] = \"tryNextOnError\";\n FailoverStrategy[\"SingleEndpoint\"] = \"singleEndpoint\";\n FailoverStrategy[\"QueryMajority\"] = \"queryMajority\";\n})(FailoverStrategy || (FailoverStrategy = {}));\nexport var ResponseStatus;\n(function (ResponseStatus) {\n ResponseStatus[\"Pending\"] = \"pending\";\n ResponseStatus[\"Confirmed\"] = \"confirmed\";\n ResponseStatus[\"Rejected\"] = \"rejected\";\n ResponseStatus[\"Unknown\"] = \"unknown\";\n ResponseStatus[\"Waiting\"] = \"waiting\";\n})(ResponseStatus || (ResponseStatus = {}));\nexport var TransactionEvent;\n(function (TransactionEvent) {\n TransactionEvent[\"ClusterAnchoringConfirmation\"] = \"clusterAnchoringConfirmed\";\n TransactionEvent[\"SystemAnchoringConfirmation\"] = \"systemAnchoringConfirmed\";\n TransactionEvent[\"DappConfirmed\"] = \"dappConfirmed\";\n TransactionEvent[\"DappReceived\"] = \"dappReceived\";\n TransactionEvent[\"Signed\"] = \"signed\";\n})(TransactionEvent || (TransactionEvent = {}));\nexport var AnchoringStatus;\n(function (AnchoringStatus) {\n AnchoringStatus[\"NotAnchored\"] = \"notAnchored\";\n AnchoringStatus[\"ClusterAnchored\"] = \"clusterAnchored\";\n AnchoringStatus[\"SystemAnchored\"] = \"systemAnchored\";\n AnchoringStatus[\"FailedAnchoring\"] = \"failedAnchoring\";\n})(AnchoringStatus || (AnchoringStatus = {}));\nexport var ChainConfirmationLevel;\n(function (ChainConfirmationLevel) {\n ChainConfirmationLevel[\"None\"] = \"none\";\n ChainConfirmationLevel[\"Dapp\"] = \"dapp\";\n ChainConfirmationLevel[\"ClusterAnchoring\"] = \"clusterAnchoring\";\n ChainConfirmationLevel[\"SystemAnchoring\"] = \"systemAnchoring\";\n ChainConfirmationLevel[\"EvmNetwork\"] = \"evmNetwork\";\n})(ChainConfirmationLevel || (ChainConfirmationLevel = {}));\nexport var Method;\n(function (Method) {\n Method[\"GET\"] = \"get\";\n Method[\"POST\"] = \"post\";\n})(Method || (Method = {}));\n//# sourceMappingURL=enums.js.map","const shuffleArray = (array) => {\n const shuffledArray = [...array];\n for (let i = shuffledArray.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffledArray[i], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i]];\n }\n return shuffledArray;\n};\nexport const createNodeManager = ({ nodeUrls, useStickyNode = false, unavailableDuration = 5000, }) => {\n const nodes = nodeUrls.map(url => ({\n url,\n whenAvailable: 0,\n isAvailable: true,\n }));\n return {\n nodes,\n stickedNode: null,\n useStickyNode: useStickyNode,\n lastUsedNode: null,\n getAvailableNodes() {\n const shuffledAvailableNodes = shuffleArray(this.nodes.filter((node) => node.isAvailable));\n // set sticky node as the first node, and then shuffle the rest\n if (useStickyNode && this.stickedNode && this.stickedNode.isAvailable) {\n const nodesWithoutSticky = shuffledAvailableNodes.filter(node => node !== this.stickedNode);\n return [this.stickedNode, ...nodesWithoutSticky];\n }\n return shuffledAvailableNodes;\n },\n setStickyNode(node) {\n this.stickedNode = node;\n },\n setUseStickyNode(useSticky) {\n this.useStickyNode = useSticky;\n },\n getNode() {\n const nodes = this.getAvailableNodes();\n if (nodes.length === 0) {\n return null;\n }\n const index = Math.floor(Math.random() * nodes.length);\n const node = nodes[index];\n this.lastUsedNode = node;\n if (!useStickyNode) {\n return node;\n }\n if (!this.stickedNode) {\n this.setStickyNode(node);\n return node;\n }\n this.lastUsedNode = this.stickedNode;\n return this.stickedNode;\n },\n makeAllNodesAvailable() {\n this.nodes = this.nodes.map((node) => {\n return Object.assign(Object.assign({}, node), { isAvailable: true, whenAvailable: 0 });\n });\n },\n makeNodeUnavailable(nodeUrl) {\n if (this.stickedNode && this.stickedNode.url === nodeUrl) {\n this.stickedNode = null;\n }\n const updatedNodes = this.nodes.map((node) => {\n if (node.url === nodeUrl) {\n return Object.assign(Object.assign({}, node), { isAvailable: false, whenAvailable: Date.now() + unavailableDuration });\n }\n return node;\n });\n this.nodes = updatedNodes;\n },\n };\n};\n//# sourceMappingURL=nodeManager.js.map","import { z } from \"zod\";\nexport const BufferSchema = z.union([z.instanceof(Uint8Array), z.instanceof(Buffer)]);\n//# sourceMappingURL=bufferSchema.js.map","import { InvalidTxRidException } from \"../errors\";\nimport { BufferSchema } from \"./bufferSchema\";\nexport const TxRidSchema = BufferSchema.refine(x => x.length === 32, \"Rid must be 32 bytes long\");\nexport const isTxRidValid = (rid, options) => {\n const TxRidValidationContext = TxRidSchema.safeParse(rid);\n const { throwOnError = false } = options || {};\n const hasError = \"error\" in TxRidValidationContext;\n if (!hasError) {\n return { success: true };\n }\n const validationError = new InvalidTxRidException(rid);\n if (throwOnError) {\n throw validationError;\n }\n return {\n success: false,\n error: TxRidValidationContext.error,\n message: validationError.message,\n };\n};\n//# sourceMappingURL=txRid.js.map","import { z } from \"zod\";\nimport { TxRidSchema } from \"./txRid\";\nexport const AnchoringTransactionSchema = z.object({\n txRid: z.instanceof(Buffer).superRefine((rid, refCtx) => {\n const txRidValidation = TxRidSchema.safeParse(rid);\n if (!txRidValidation.success)\n txRidValidation.error.issues.forEach(issue => refCtx.addIssue(issue));\n }),\n txData: z.instanceof(Buffer).refine(data => data.length > 0, {\n message: \"txData must be a non-empty Buffer\",\n }),\n txOpIndex: z.number().int().nonnegative({ message: \"txOpIndex must be a non-negative integer\" }),\n});\n//# sourceMappingURL=anchoringTransaction.js.map","import { ensureString, toString } from \"../formatter\";\nexport class MissingTransactionProof extends Error {\n constructor(proofHash, fetchedTxHash) {\n super(`Unable to verify source transaction proof,transaction hash in proof ${toString(proofHash)} does not match hash from fetched transaction ${toString(fetchedTxHash)}`);\n }\n}\nexport class DifferentNumberOfSignersException extends Error {\n constructor(length, comparableLength) {\n super(`Transaction signatures amount ${length} do not match expected amount of signers ${comparableLength}`);\n }\n}\nexport class SignatureException extends Error {\n constructor(signer) {\n super(`Expected signer ${toString(signer)} has not signed source transaction`);\n }\n}\nexport class ProofRidException extends Error {\n constructor() {\n super(\"Unable to verify source transaction proof, got a different transaction from query than we asked for\");\n }\n}\nexport class SystemChainException extends Error {\n constructor(errorMessage) {\n super(`Query to system chain failed with error: ${errorMessage}`);\n }\n}\nexport class ConfirmationProofException extends Error {\n constructor(transactionRid) {\n super(`Unable to fetch confirmation proof for transaction RID: ${ensureString(transactionRid)}.`);\n }\n}\nexport class BlockAnchoringException extends Error {\n constructor() {\n super(`Block is not present in cluster anchoring chain`);\n }\n}\n//# sourceMappingURL=error.js.map","import { z } from \"zod\";\nconst RawGtvSchema = z.union([\n z.boolean(),\n z.string(),\n z.number(),\n z.bigint(),\n z.instanceof(Buffer),\n z.array(z.unknown()),\n z.record(z.unknown()),\n]);\nconst DictPairSchema = z.record(RawGtvSchema);\nconst TransactionInfoInBlockResponseSchema = z.object({\n rid: z.string(),\n hash: z.string(),\n data: z.string().optional(),\n});\nconst BlockInfoResponseSchema = z.object({\n rid: z.string(),\n prevBlockRID: z.string(),\n header: z.string(),\n height: z.number(),\n transactions: z.array(TransactionInfoInBlockResponseSchema),\n witness: z.string(),\n witnesses: z.array(z.string()),\n timestamp: z.number(),\n});\nconst TransactionObjectSchema = z.object({\n tx: z.string(),\n});\nconst TransactionsCountSchema = z.object({\n transactionsCount: z.number(),\n});\nconst TransactionConfirmationProofSchema = z.object({\n proof: z.string(),\n});\nconst ConfirmationProofSchema = z.object({\n hash: z.instanceof(Buffer),\n blockHeader: z.instanceof(Buffer),\n witness: z.instanceof(Buffer),\n merkleProofTree: RawGtvSchema,\n txIndex: z.number(),\n});\nconst TransactionInfoResponseSchema = z.object({\n blockRID: z.string(),\n blockHeight: z.number(),\n blockHeader: z.string(),\n witness: z.string(),\n timestamp: z.number(),\n txRID: z.string(),\n txHash: z.string(),\n txData: z.string(),\n});\nconst TransactionInfoSchema = z.object({\n blockRid: z.instanceof(Buffer),\n blockHeight: z.number(),\n blockHeader: z.instanceof(Buffer),\n witness: z.instanceof(Buffer),\n timestamp: z.number(),\n txRid: z.instanceof(Buffer),\n txHash: z.instanceof(Buffer),\n txData: z.instanceof(Buffer),\n});\nconst RejectedTransactionSchema = z.object({\n txRid: z.instanceof(Buffer),\n rejectReason: z.string(),\n rejectTimestamp: z.number(),\n});\nconst RejectedTransactionResponseSchema = z.object({\n txRID: z.string(),\n rejectReason: z.string(),\n rejectTimestamp: z.number(),\n});\nexport function isString(value) {\n const result = z.string().safeParse(value);\n return result.success ? value : null;\n}\nexport function isDictPair(value) {\n const result = DictPairSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isRawGtv(value) {\n const result = RawGtvSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoInBlockResponse(value) {\n const result = TransactionInfoInBlockResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoInBlockResponseArray(value) {\n const result = z.array(TransactionInfoInBlockResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isBlockInfoResponse(value) {\n const result = BlockInfoResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isBlockInfoResponseArray(value) {\n const result = z.array(BlockInfoResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransaction(value) {\n const result = TransactionObjectSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionsCount(value) {\n const result = TransactionsCountSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionConfirmationProof(value) {\n const result = TransactionConfirmationProofSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isConfirmationProof(value) {\n const result = ConfirmationProofSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoResponse(value) {\n const result = TransactionInfoResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoResponseArray(value) {\n const result = z.array(TransactionInfoResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfo(value) {\n const result = TransactionInfoSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoArray(value) {\n const result = z.array(TransactionInfoSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isRejectedTransaction(value) {\n const result = RejectedTransactionSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isRejectedTransactionArray(value) {\n const result = z.array(RejectedTransactionSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isRejectedTransactionResponse(value) {\n const result = RejectedTransactionResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isRejectedTransactionResponseArray(value) {\n const result = z.array(RejectedTransactionResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\n//# sourceMappingURL=requests.js.map","import { serialize } from \"../gtx/gtx\";\n/**\n *\n * Encodes the gtx using ASN.1.\n * @returns the gtx encoded\n */\nexport function encodeTransaction(gtx) {\n return serialize(gtx);\n}\n//# sourceMappingURL=encodeTransaction.js.map","export const MERKLE_HASH_VERSIONS = {\n ONE: 1,\n TWO: 2,\n};\n//# sourceMappingURL=constants.js.map","import { z } from \"zod\";\nimport { MERKLE_HASH_VERSIONS } from \"../../utils/constants\";\nconst MerkleHashSchema = z.object({\n merkle_hash_version: z.number().int().positive(),\n});\nexport const validateMerkleHash = (data) => {\n const result = MerkleHashSchema.safeParse(data);\n if (!result.success) {\n console.warn(\"MERKLE_HASH_WARNING: version not found or endpoint unreachable\");\n return { merkle_hash_version: MERKLE_HASH_VERSIONS.ONE };\n }\n return result.data;\n};\n//# sourceMappingURL=merkleHash.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as logger from \"../logger\";\nimport { decodeValue } from \"../gtx/serialization\";\nimport { Method } from \"./enums\";\nexport function handleRequest(method, path, endpoint, postObject) {\n return __awaiter(this, void 0, void 0, function* () {\n if (method == Method.GET) {\n return yield get(path, endpoint);\n }\n else {\n return yield post(path, endpoint, postObject);\n }\n });\n}\n/**\n * Sends request to get data from a given API endpoint.\n * @param path API endpoint of Rell backend\n * @param endpoint\n */\nfunction get(path, endpoint) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`GET URL ${new URL(path, endpoint).href}`);\n try {\n const response = yield fetch(new URL(path, endpoint).href);\n const contentType = response.headers.get(\"Content-Type\");\n const transactionTimestamp = response.headers.get(\"X-Transaction-Timestamp\");\n let rspBody = null;\n const error = null;\n if (contentType === null || contentType === void 0 ? void 0 : contentType.includes(\"application/json\")) {\n rspBody = yield response.json();\n }\n else if (contentType === null || contentType === void 0 ? void 0 : contentType.includes(\"text/plain\")) {\n rspBody = yield response.text();\n }\n else if (contentType === null || contentType === void 0 ? void 0 : contentType.includes(\"application/octet-stream\")) {\n rspBody = yield constructBufferResponseBody(response);\n }\n return createResponseObject(error, response.status, rspBody, transactionTimestamp);\n }\n catch (error) {\n logger.error(error.message);\n return createResponseObject(error, null, null);\n }\n });\n}\n/**\n * Sends request to post data to a given API endpoint.\n * @param path API endpoint of Rell backend\n * @param endpoint\n * @param requestBody request body\n */\nfunction post(path, endpoint, requestBody) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`POST URL ${new URL(path, endpoint).href}`);\n logger.debug(`POST body ${JSON.stringify(requestBody)}`);\n if (Buffer.isBuffer(requestBody)) {\n try {\n const requestOptions = {\n method: \"post\",\n body: requestBody,\n headers: {\n Accept: \"application/octet-stream\",\n \"Content-Type\": \"application/octet-stream\",\n },\n };\n const response = yield fetch(new URL(path, endpoint).href, requestOptions);\n const transactionTimestamp = response.headers.get(\"X-Transaction-Timestamp\");\n return createResponseObject(null, response.status, yield constructBufferResponseBody(response), transactionTimestamp);\n }\n catch (error) {\n return createResponseObject(error, null, null);\n }\n }\n else {\n try {\n const response = yield fetch(new URL(path, endpoint).href, {\n method: \"post\",\n body: JSON.stringify(requestBody),\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n });\n const transactionTimestamp = response.headers.get(\"X-Transaction-Timestamp\");\n return createResponseObject(null, response.status, yield constructBufferResponseBody(response), transactionTimestamp);\n }\n catch (error) {\n return createResponseObject(error, null, null);\n }\n }\n });\n}\nfunction constructBufferResponseBody(response) {\n return __awaiter(this, void 0, void 0, function* () {\n const contentType = response.headers.get(\"content-type\");\n if (contentType === \"application/octet-stream\") {\n const responseBuffer = yield response.arrayBuffer();\n const buffer = Buffer.from(responseBuffer);\n return decodeValue(buffer);\n }\n if (contentType === \"application/json\") {\n return yield response.json();\n }\n const responseText = yield response.text();\n return responseText ? responseText : response.statusText;\n });\n}\nfunction createResponseObject(error, statusCode, rspBody, transactionTimestamp) {\n const responseObject = {\n error,\n statusCode,\n rspBody,\n };\n if (transactionTimestamp) {\n responseObject.transactionTimestamp = transactionTimestamp;\n }\n return responseObject;\n}\n//# sourceMappingURL=httpUtil.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { sleep } from \"./utils\";\nimport { handleRequest } from \"./httpUtil\";\nimport * as logger from \"../logger\";\nconst isSuccessfullRequest = (statusCode) => statusCode >= 200 && statusCode < 300;\nconst hasClientError = (statusCode) => statusCode >= 400 && statusCode < 500;\nconst hasServerError = (statusCode) => statusCode >= 500 && statusCode < 600;\nexport function abortOnError({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield retryRequest({\n method,\n path,\n config,\n postObject,\n validateStatusCode: statuscode => !hasServerError(statuscode),\n });\n });\n}\nexport function tryNextOnError({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield retryRequest({\n method,\n path,\n config,\n postObject,\n validateStatusCode: statusCode => !hasClientError(statusCode) && !hasServerError(statusCode),\n });\n });\n}\nexport const errorMessages = {\n NO_CONSENSUS: \"Nodes were not able to reach a consensus\",\n};\nfunction calculateBftMajorityThreshold(endpointPoolLength) {\n return endpointPoolLength - (endpointPoolLength - 1) / 3;\n}\nexport function queryMajority({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n // Set up constants\n const bftMajorityThreshold = calculateBftMajorityThreshold(config.endpointPool.length);\n const failureThreshold = config.endpointPool.length - bftMajorityThreshold + 1;\n const { nodeManager } = config;\n const timeout = 15000;\n const availableNodes = nodeManager.getAvailableNodes();\n // If the available nodes are less than bfthMajorityThreshold, set all nodes as reachable again.\n if (availableNodes.length < bftMajorityThreshold) {\n nodeManager.makeAllNodesAvailable();\n }\n const outcomes = [];\n const promises = nodeManager.getAvailableNodes().map(node => {\n return handleRequest(method, path, node.url, postObject)\n .then(response => {\n const { statusCode } = response;\n if (statusCode && isSuccessfullRequest(statusCode)) {\n outcomes.push({ type: \"SUCCESS\", result: response });\n }\n else {\n if (statusCode && hasServerError(statusCode)) {\n nodeManager.makeNodeUnavailable(node.url);\n }\n outcomes.push({ type: \"FAILURE\", result: response });\n }\n return response;\n })\n .catch((error) => {\n outcomes.push({ type: \"ERROR\", result: error });\n return error;\n });\n });\n let remainingPromises = promises;\n // Wait for the necessary majority of outcomes to come back or for the timeout to be reached, whichever comes first.\n for (let i = 0; i < bftMajorityThreshold; i++) {\n remainingPromises = yield racePromisesWithTimeout(remainingPromises, timeout);\n }\n // Evaluate the outcomes\n const successfullOutcomes = outcomes.filter(outcome => outcome.type === \"SUCCESS\");\n const failureOutcomes = outcomes.filter(outcome => outcome.type === \"FAILURE\");\n const errorOutcomes = outcomes.filter(outcome => outcome.type === \"ERROR\");\n // group all of the same responses together into groups and count each groups size\n const groupedSuccessfullResponses = groupResponses(successfullOutcomes);\n // validate the responses\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // Successfull majority response was found\n if (groupedSuccessfullResponses.maxNumberOfEqualResponses() >= bftMajorityThreshold) {\n if (groupedSuccessfullResponses.numberOfDistinctResponses() > 1) {\n logger.warning(`Got disagreeing responses, but could still reach BFT majority`);\n }\n return groupedSuccessfullResponses.majorityResponse();\n }\n // Too many failures or errors to be able to reach a consensus\n // If the number of failures and errors is greater than the failure threshold, return first failure, if any, otherwise throw the first error.\n if ([...failureOutcomes, ...errorOutcomes].length >= failureThreshold) {\n if (failureOutcomes.length > 0) {\n return failureOutcomes[0].result;\n }\n else {\n throw errorOutcomes[0].result;\n }\n }\n // If all nodes have responded without a majority, throw an error.\n if (outcomes.length >= config.endpointPool.length) {\n throw new Error(errorMessages.NO_CONSENSUS);\n }\n // Wait for more one more response to come back. ( we need to set a timeout here)\n remainingPromises = yield racePromisesWithTimeout(remainingPromises, timeout);\n }\n });\n}\nexport function singleEndpoint({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n let statusCode = null;\n let rspBody = null;\n let error = null;\n let transactionTimestamp = undefined;\n const endpoint = config.nodeManager.getNode();\n if (!endpoint) {\n throw new Error(\"Cannot get endpoint. Node not found!\");\n }\n for (let attempt = 0; attempt < config.attemptsPerEndpoint; attempt++) {\n const response = yield handleRequest(method, path, endpoint.url, postObject);\n if (response) {\n ({ error, statusCode, rspBody, transactionTimestamp } = response);\n }\n const isError = statusCode ? hasServerError(statusCode) || hasClientError(statusCode) : false;\n if (!isError && !error) {\n return { error, statusCode, rspBody, transactionTimestamp };\n }\n logger.info(`${method} request failed on ${endpoint.url}. Attempt: ${attempt + 1} / ${config.attemptsPerEndpoint}`);\n yield sleep(config.attemptInterval);\n }\n return { error, statusCode, rspBody, transactionTimestamp };\n });\n}\nexport function retryRequest({ method, path, config, postObject, validateStatusCode, }) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n let statusCode = null;\n let rspBody = null;\n let error = null;\n let transactionTimestamp = undefined;\n const { nodeManager } = config;\n for (const endpoint of nodeManager.getAvailableNodes()) {\n for (let attempt = 0; attempt < config.attemptsPerEndpoint; attempt++) {\n const response = yield handleRequest(method, path, endpoint.url, postObject);\n error = (_a = response === null || response === void 0 ? void 0 : response.error) !== null && _a !== void 0 ? _a : null;\n statusCode = (_b = response === null || response === void 0 ? void 0 : response.statusCode) !== null && _b !== void 0 ? _b : null;\n rspBody = (_c = response === null || response === void 0 ? void 0 : response.rspBody) !== null && _c !== void 0 ? _c : null;\n transactionTimestamp = response === null || response === void 0 ? void 0 : response.transactionTimestamp;\n const isStatusCodeValid = statusCode ? validateStatusCode(statusCode) : false;\n const isServerError = statusCode ? hasServerError(statusCode) : false;\n if (isStatusCodeValid && !error) {\n // Find a way to have this handled more elegantly in the node manager.\n if (nodeManager.stickedNode !== endpoint) {\n nodeManager.setStickyNode(endpoint);\n }\n return { error, statusCode, rspBody, transactionTimestamp };\n }\n if (isServerError) {\n // nodeManager.makeNodeUnavailable(endpoint.url);\n logger.info(`server error on ${endpoint.url}`);\n }\n logger.info(`${method} request failed on ${endpoint.url}. Attempt: ${attempt + 1} / ${config.attemptsPerEndpoint}`);\n yield sleep(config.attemptInterval);\n }\n }\n return { error, statusCode, rspBody, transactionTimestamp };\n });\n}\nexport function racePromisesWithTimeout(promises, timeout) {\n return __awaiter(this, void 0, void 0, function* () {\n let remainingPromises = [];\n try {\n const resolvedPromise = yield Promise.race([createTimeoutPromise(timeout), ...promises]);\n const promisesWithState = yield checkStateOfPromises(promises);\n const indexOfpromiseToRemove = promisesWithState.findIndex(p => JSON.stringify(p.value) === JSON.stringify(resolvedPromise));\n // Remove the promise that resolved from the list of promises\n promisesWithState.splice(indexOfpromiseToRemove, 1);\n // Remove the state before returning the promises.\n remainingPromises = promisesWithState.map(p => p.value);\n return remainingPromises;\n }\n catch (error) {\n if (error instanceof Error && error.message === \"Timeout exceeded\") {\n throw error;\n }\n return remainingPromises;\n }\n });\n}\nexport function createTimeoutPromise(timeoutMs) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((_, reject) => {\n setTimeout(() => {\n reject(new Error(\"Timeout exceeded\"));\n }, timeoutMs);\n });\n });\n}\nexport const checkStateOfPromises = (promises) => __awaiter(void 0, void 0, void 0, function* () {\n const promiseList = [];\n const pendingState = { status: \"pending\" };\n for (const p of promises) {\n promiseList.push(yield Promise.race([p, pendingState]).then(value => value === pendingState ? Object.assign(Object.assign({}, pendingState), { value: p }) : { status: \"fulfilled\", value }, reason => ({ status: \"rejected\", value: reason })));\n }\n return promiseList;\n});\nconst stableStringify = (obj) => {\n if (obj && typeof obj === \"object\" && !Array.isArray(obj)) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n }\n return JSON.stringify(obj);\n};\nexport const groupResponses = (responses) => {\n const responseMap = responses.reduce((acc, response) => {\n const key = stableStringify(response.result);\n acc[key] = acc[key]\n ? { response: acc[key].response, count: acc[key].count + 1 }\n : { response, count: 1 };\n return acc;\n }, {});\n const distinctResponses = Object.values(responseMap).sort((a, b) => b.count - a.count);\n // Returns the count of the most common response\n const maxNumberOfEqualResponses = () => {\n return distinctResponses.length > 0 ? distinctResponses[0].count : 0;\n };\n // Returns the number of distinct responses\n const numberOfDistinctResponses = () => {\n return distinctResponses.length;\n };\n // Returns the most common response\n const majorityResponse = () => {\n return distinctResponses[0].response.result;\n };\n return {\n maxNumberOfEqualResponses,\n numberOfDistinctResponses,\n majorityResponse,\n };\n};\n//# sourceMappingURL=failoverStrategies.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { FailoverStrategy } from \"./enums\";\nimport { abortOnError, tryNextOnError, singleEndpoint, queryMajority } from \"./failoverStrategies\";\nexport function requestWithFailoverStrategy(method, path, config, postObject, forceSingleEndpoint = false) {\n return __awaiter(this, void 0, void 0, function* () {\n switch (config.failoverStrategy) {\n case FailoverStrategy.AbortOnError:\n return yield abortOnError({ method, path, config, postObject });\n case FailoverStrategy.TryNextOnError:\n return yield tryNextOnError({ method, path, config, postObject });\n case FailoverStrategy.SingleEndpoint:\n return yield singleEndpoint({ method, path, config, postObject });\n case FailoverStrategy.QueryMajority:\n if (forceSingleEndpoint) {\n return yield singleEndpoint({ method, path, config, postObject });\n }\n return yield queryMajority({ method, path, config, postObject });\n default:\n throw new Error(`Unsupported failover strategy: ${config.failoverStrategy}`);\n }\n });\n}\n//# sourceMappingURL=requestWithFailoverStrategy.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as logger from \"../logger\";\nimport { SerializedTransactionFormatException, InvalidTxRidException, TxRejectedError, UnexpectedStatusError, GetBridFromChainException, } from \"./errors\";\nimport * as gtxTool from \"../gtx/gtx\";\nimport { BlockchainUrlUndefinedException, DirectoryNodeUrlPoolException, InvalidTransactionFormatException, MissingBlockchainIdentifierError, } from \"./errors\";\nimport { ensureBuffer, toBuffer } from \"../formatter\";\nimport { createClient } from \"./blockchainClient\";\nimport { AnchoringStatus, ChainConfirmationLevel, FailoverStrategy, Method, ResponseStatus, TransactionEvent, } from \"./enums\";\nimport { createNodeManager } from \"./nodeManager\";\nimport { AnchoringTransactionSchema } from \"./validation/anchoringTransaction\";\nimport { SystemChainException } from \"../ICCF/error\";\nimport { getAnchoringClient } from \"../ICCF/IccfProofTxMaterialBuilder\";\nimport { awaitGetAnchoringTransactionForBlockRid, calculateBlockRID } from \"../ICCF/utils\";\nimport { isString } from \"./validation/requests\";\nimport { encodeTransaction } from \"../utils/encodeTransaction\";\nimport { validateMerkleHash } from \"./validation/merkleHash\";\nimport { requestWithFailoverStrategy } from \"./requestWithFailoverStrategy\";\nimport { MERKLE_HASH_VERSIONS } from \"../utils/constants\";\nexport function getClientConfigFromSettings(settings) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n return __awaiter(this, void 0, void 0, function* () {\n const nodeUrlPoolToUse = yield getNodeUrlsFromSettings(settings);\n if (nodeUrlPoolToUse === null || nodeUrlPoolToUse.length === 0) {\n const id = (_b = (_a = settings.blockchainRid) !== null && _a !== void 0 ? _a : settings.blockchainIid) !== null && _b !== void 0 ? _b : \"Unknown\";\n throw new BlockchainUrlUndefinedException(id);\n }\n const endpointPool = createEndpointObjects(nodeUrlPoolToUse);\n const nodeManager = createNodeManager({\n nodeUrls: nodeUrlPoolToUse,\n useStickyNode: (_c = settings.useStickyNode) !== null && _c !== void 0 ? _c : false,\n unavailableDuration: (_d = settings.failOverConfig) === null || _d === void 0 ? void 0 : _d.unreachableDuration,\n });\n const blockchainRidToUse = yield (() => __awaiter(this, void 0, void 0, function* () {\n var _k;\n if (settings.blockchainRid) {\n return settings.blockchainRid;\n }\n if (settings.blockchainIid !== undefined) {\n return yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool,\n chainId: settings.blockchainIid,\n merkleHashVersion: (_k = settings.merkleHashVersion) !== null && _k !== void 0 ? _k : 0,\n });\n }\n throw new MissingBlockchainIdentifierError();\n }))();\n const directoryChainRid = yield (() => __awaiter(this, void 0, void 0, function* () {\n var _l;\n if (settings.directoryChainRid) {\n return settings.directoryChainRid;\n }\n const directoryChainIid = 0;\n return yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool,\n chainId: directoryChainIid,\n merkleHashVersion: (_l = settings.merkleHashVersion) !== null && _l !== void 0 ? _l : 0,\n });\n }))();\n return {\n endpointPool,\n nodeManager: nodeManager,\n blockchainRid: blockchainRidToUse,\n merkleHashVersion: (_e = settings.merkleHashVersion) !== null && _e !== void 0 ? _e : 0,\n dappStatusPolling: setStatusPolling(settings.dappStatusPolling),\n clusterAnchoringStatusPolling: setStatusPolling(settings.clusterAnchoringStatusPolling),\n systemAnchoringStatusPolling: setStatusPolling(settings.systemAnchoringStatusPolling),\n failoverStrategy: ((_f = settings.failOverConfig) === null || _f === void 0 ? void 0 : _f.strategy) || defaultFailoverConfig.strategy,\n attemptsPerEndpoint: ((_g = settings.failOverConfig) === null || _g === void 0 ? void 0 : _g.attemptsPerEndpoint) || defaultFailoverConfig.attemptsPerEndpoint,\n attemptInterval: ((_h = settings.failOverConfig) === null || _h === void 0 ? void 0 : _h.attemptInterval) || defaultFailoverConfig.attemptInterval,\n unreachableDuration: ((_j = settings.failOverConfig) === null || _j === void 0 ? void 0 : _j.unreachableDuration) || defaultFailoverConfig.unreachableDuration,\n directoryChainRid: settings.directoryChainRid || directoryChainRid,\n };\n });\n}\nexport function getMerkleHashVersionFromDapp(config) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const response = yield requestWithFailoverStrategy(Method.GET, `/config/${config.blockchainRid}/features`, config);\n const validatedResponse = validateMerkleHash(response.rspBody);\n return validatedResponse.merkle_hash_version;\n }\n catch (error) {\n console.warn(\"MERKLE_HASH_WARNING: version not found or endpoint unreachable\", error);\n return MERKLE_HASH_VERSIONS.ONE;\n }\n });\n}\nexport function validTxRid(txRID) {\n if (txRID.length != 32) {\n const error = new InvalidTxRidException(txRID);\n logger.error(error.toString());\n return false;\n }\n return true;\n}\nexport function nodeDiscovery({ nodeManager, directoryEndpointPool, failOverConfig, blockchainRid, blockchainIid, }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (directoryEndpointPool.length === 0) {\n throw new DirectoryNodeUrlPoolException();\n }\n if (!blockchainRid && blockchainIid === undefined) {\n throw new MissingBlockchainIdentifierError();\n }\n const directoryIid = 0;\n const directoryBRID = yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool: directoryEndpointPool,\n chainId: directoryIid,\n failOverConfig,\n merkleHashVersion: 0,\n });\n const blockchainRidToUse = yield (() => __awaiter(this, void 0, void 0, function* () {\n if (blockchainRid) {\n return blockchainRid;\n }\n if (blockchainIid !== undefined) {\n return yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool: directoryEndpointPool,\n chainId: blockchainIid,\n failOverConfig,\n merkleHashVersion: 0,\n });\n }\n throw new MissingBlockchainIdentifierError();\n }))();\n const D1Client = yield createClient({\n nodeUrlPool: getUrlsFromEndpoints(directoryEndpointPool),\n blockchainRid: directoryBRID,\n merkleHashVersion: 0,\n });\n return yield getBlockchainApiUrls(D1Client, ensureBuffer(blockchainRidToUse));\n });\n}\nexport function getBlockchainApiUrls(directoryClient, blockchainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n const queryObject = {\n name: \"cm_get_blockchain_api_urls\",\n args: { blockchain_rid: blockchainRid },\n };\n return yield directoryClient.query(queryObject);\n });\n}\nexport function convertToRellOperation(operations) {\n return operations.map(operation => {\n var _a;\n return {\n opName: operation.name,\n args: (_a = operation.args) !== null && _a !== void 0 ? _a : [],\n };\n });\n}\nexport function getSerializedGTX(gtx) {\n const gtxBytes = encodeTransaction(gtx);\n if (!Buffer.isBuffer(gtxBytes)) {\n throw new SerializedTransactionFormatException();\n }\n return gtxBytes;\n}\nexport function getGTXFromBufferOrTransactionOrOperation(transaction, blockchainRid) {\n if (Buffer.isBuffer(transaction)) {\n return gtxTool.deserialize(transaction);\n }\n else if (\"operations\" in transaction) {\n return {\n blockchainRid: ensureBuffer(blockchainRid),\n operations: convertToRellOperation(transaction.operations),\n signers: transaction.signers,\n signatures: [],\n };\n }\n else if (\"name\" in transaction) {\n return {\n blockchainRid: ensureBuffer(blockchainRid),\n operations: convertToRellOperation([transaction]),\n signers: [],\n signatures: [],\n };\n }\n else {\n throw new InvalidTransactionFormatException();\n }\n}\nexport const callbackPromiseBuilder = (reject, resolve, callback) => {\n return (error, result) => {\n var _a;\n if (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n reject(error);\n }\n else {\n callback === null || callback === void 0 ? void 0 : callback(null, (_a = result) !== null && _a !== void 0 ? _a : null);\n resolve(result !== null && result !== void 0 ? result : null);\n }\n };\n};\nexport const handlePostResponsePromisified = (error, statusCode, rspBody) => {\n return new Promise((resolve, reject) => {\n handlePostResponse(error, statusCode, rspBody, _error => {\n if (_error) {\n reject(_error);\n }\n else {\n resolve();\n }\n });\n });\n};\nfunction ensureArray(input) {\n if (typeof input === \"string\") {\n return [input];\n }\n return input;\n}\nexport const formatTransactionInfoResponse = (transactionInfoResponse) => {\n return {\n blockRid: toBuffer(transactionInfoResponse.blockRID),\n blockHeight: transactionInfoResponse.blockHeight,\n blockHeader: toBuffer(transactionInfoResponse.blockHeader),\n witness: toBuffer(transactionInfoResponse.witness),\n timestamp: transactionInfoResponse.timestamp,\n txRid: toBuffer(transactionInfoResponse.txRID),\n txHash: toBuffer(transactionInfoResponse.txHash),\n txData: toBuffer(transactionInfoResponse.txData),\n };\n};\nexport const formatBlockInfoResponse = (blockInfoResponse) => {\n return {\n rid: toBuffer(blockInfoResponse.rid),\n prevBlockRid: toBuffer(blockInfoResponse.prevBlockRID),\n header: toBuffer(blockInfoResponse.header),\n transactions: blockInfoResponse.transactions.map(formatTransaction),\n height: blockInfoResponse.height,\n witness: toBuffer(blockInfoResponse.witness),\n witnesses: blockInfoResponse.witnesses.map(witness => {\n return toBuffer(witness);\n }),\n timestamp: blockInfoResponse.timestamp,\n };\n};\nconst formatTransaction = (transaction) => {\n const formattedTransaction = {\n rid: toBuffer(transaction.rid),\n hash: toBuffer(transaction.hash),\n };\n if (transaction.data !== undefined) {\n formattedTransaction.data = toBuffer(transaction.data);\n }\n return formattedTransaction;\n};\nexport function formatRejectedTransactionFromResponse(rejectedTransactionResponse) {\n return {\n txRid: toBuffer(rejectedTransactionResponse.txRID),\n rejectReason: rejectedTransactionResponse.rejectReason,\n rejectTimestamp: rejectedTransactionResponse.rejectTimestamp,\n };\n}\nexport const isKeyPair = (keypair) => {\n return (typeof keypair === \"object\" &&\n keypair !== null &&\n \"privKey\" in keypair &&\n \"pubKey\" in keypair &&\n keypair.privKey instanceof Buffer &&\n keypair.pubKey instanceof Buffer);\n};\nfunction getNodeUrlsFromSettings(settings) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (settings.directoryNodeUrlPool) {\n // If directoryNodeUrlPool is provided, use nodeDiscovery\n const nodeManager = createNodeManager({\n nodeUrls: ensureArray(settings.directoryNodeUrlPool),\n unavailableDuration: (_a = settings.failOverConfig) === null || _a === void 0 ? void 0 : _a.unreachableDuration,\n });\n const discoveredNodes = yield nodeDiscovery({\n nodeManager,\n directoryEndpointPool: createEndpointObjects(ensureArray(settings.directoryNodeUrlPool)),\n failOverConfig: settings.failOverConfig,\n blockchainRid: settings.blockchainRid,\n blockchainIid: settings.blockchainIid,\n });\n return discoveredNodes;\n }\n else if (typeof settings.nodeUrlPool === \"string\") {\n // If nodeUrlPool is a string, convert it to an array\n return [settings.nodeUrlPool];\n }\n else if (Array.isArray(settings.nodeUrlPool)) {\n // If nodeUrlPool is already an array, use it as-is\n return settings.nodeUrlPool;\n }\n else {\n // Default to an empty array if no valid configuration is provided\n return [];\n }\n });\n}\nexport function getSystemClient(directoryNodeUrlPool, directoryChainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield createClient({\n directoryNodeUrlPool,\n blockchainRid: directoryChainRid,\n merkleHashVersion: 0,\n });\n });\n}\nexport function getSystemAnchoringChain(directoryClient) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const queryObject = {\n name: \"cm_get_system_anchoring_chain\",\n };\n const systemAnchoringChain = yield directoryClient.query(queryObject);\n if (!systemAnchoringChain) {\n throw new SystemChainException(\"Directory chain client must be provided.\");\n }\n return systemAnchoringChain;\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport const defaultFailoverConfig = {\n strategy: FailoverStrategy.AbortOnError,\n attemptsPerEndpoint: 3,\n attemptInterval: 500,\n unreachableDuration: 30000,\n};\nexport const createEndpointObjects = (endpointPoolUrls) => {\n const endpoints = endpointPoolUrls.map(endpointUrl => {\n return { url: endpointUrl, whenAvailable: 0 };\n });\n return endpoints;\n};\nexport const getUrlsFromEndpoints = (endpointPool) => {\n return endpointPool.map(endpoint => endpoint.url);\n};\nexport function awaitDappConfirmation(txRID, dappStatusPolling, getTransactionStatus) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n let lastKnownResult;\n for (let i = 0; i < dappStatusPolling.count; i++) {\n lastKnownResult = yield getTransactionStatus(txRID);\n if (lastKnownResult.status === ResponseStatus.Confirmed) {\n return lastKnownResult;\n }\n else if (lastKnownResult.status === ResponseStatus.Rejected) {\n throw new TxRejectedError((_a = lastKnownResult.rejectReason) !== null && _a !== void 0 ? _a : \"\");\n }\n yield sleep(dappStatusPolling.interval);\n }\n // TS issue. This could be fixed by implementing new retry strategy\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-expect-error\n return lastKnownResult;\n });\n}\nexport function awaitClusterAnchoringChainConfirmation(txRID, clusterAnchoringStatusPolling, getClusterAnchoringTransactionConfirmation) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n let clusterAnchoringConfirmation;\n for (let i = 0; i < clusterAnchoringStatusPolling.count; i++) {\n clusterAnchoringConfirmation = yield getClusterAnchoringTransactionConfirmation(txRID);\n const anchoringTransactionValidaiton = AnchoringTransactionSchema.safeParse(clusterAnchoringConfirmation);\n if (anchoringTransactionValidaiton.success) {\n return {\n status: AnchoringStatus.ClusterAnchored,\n clusterAnchoredTx: anchoringTransactionValidaiton.data,\n };\n }\n else if (!anchoringTransactionValidaiton.success) {\n throw new TxRejectedError((_a = AnchoringStatus.FailedAnchoring) !== null && _a !== void 0 ? _a : \"\");\n }\n yield sleep(clusterAnchoringStatusPolling.interval);\n }\n // TS issue. This could be fixed by implementing new retry strategy\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-expect-error\n return clusterAnchoringConfirmation;\n });\n}\nexport function handleDappConfirmations(transactionRid, doStatusPolling, confirmationLevel, promiEvent, dappStatusPolling, getTransactionStatus, client) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n const transactionReceipt = {\n status: ResponseStatus.Pending,\n statusCode: null,\n transactionRid: transactionRid,\n node: (_a = client.config.nodeManager.lastUsedNode) === null || _a === void 0 ? void 0 : _a.url,\n };\n promiEvent.emit(TransactionEvent.DappReceived, transactionReceipt);\n if (doStatusPolling === false || confirmationLevel === ChainConfirmationLevel.None) {\n return transactionReceipt;\n }\n const dappConfirmationStatus = yield awaitDappConfirmation(transactionRid, dappStatusPolling, getTransactionStatus);\n transactionReceipt.statusCode = dappConfirmationStatus.statusCode;\n transactionReceipt.status = dappConfirmationStatus.status;\n transactionReceipt.node = (_b = client.config.nodeManager.lastUsedNode) === null || _b === void 0 ? void 0 : _b.url;\n promiEvent.emit(TransactionEvent.DappConfirmed, transactionReceipt);\n if (confirmationLevel === ChainConfirmationLevel.Dapp) {\n return transactionReceipt;\n }\n return transactionReceipt;\n });\n}\nexport function handleSystemConfirmations(transactionReceipt, confirmationLevel, promiEvent, statusPollingConfig, anchoringClient, systemAnchoringChainBrid, getClusterAnchoringTransactionConfirmation, getSystemAnchoringTransactionConfirmation) {\n return __awaiter(this, void 0, void 0, function* () {\n const clusterAnchoringChainConfirmation = yield awaitClusterAnchoringChainConfirmation(transactionReceipt.transactionRid, statusPollingConfig.clusterAnchoringStatusPolling, getClusterAnchoringTransactionConfirmation);\n transactionReceipt.status = clusterAnchoringChainConfirmation.status;\n transactionReceipt.clusterAnchoredTx = clusterAnchoringChainConfirmation.clusterAnchoredTx;\n transactionReceipt.clusterAnchoringClientBrid = anchoringClient.config.blockchainRid;\n promiEvent.emit(TransactionEvent.ClusterAnchoringConfirmation, transactionReceipt);\n if (confirmationLevel === ChainConfirmationLevel.ClusterAnchoring) {\n return transactionReceipt;\n }\n const systemAnchoringConfirmation = yield getSystemAnchoringTransactionConfirmation(clusterAnchoringChainConfirmation.clusterAnchoredTx.txRid, anchoringClient, systemAnchoringChainBrid);\n if (!systemAnchoringConfirmation) {\n return transactionReceipt;\n }\n transactionReceipt.status = AnchoringStatus.SystemAnchored;\n transactionReceipt.systemAnchoredTx = systemAnchoringConfirmation;\n transactionReceipt.systemAnchoringClientBrid = systemAnchoringChainBrid;\n promiEvent.emit(TransactionEvent.SystemAnchoringConfirmation, transactionReceipt);\n if (confirmationLevel === ChainConfirmationLevel.SystemAnchoring) {\n return transactionReceipt;\n }\n return transactionReceipt;\n });\n}\nexport function getAnchoringClientAndSystemChainRid(client) {\n return __awaiter(this, void 0, void 0, function* () {\n const directoryClient = yield getSystemClient(getUrlsFromEndpoints(client.config.endpointPool), client.config.directoryChainRid);\n const anchoringClient = yield getAnchoringClient(directoryClient, client.config.blockchainRid);\n const systemAnchoringChainRidBuffer = yield getSystemAnchoringChain(directoryClient);\n const systemAnchoringChainBridString = systemAnchoringChainRidBuffer.toString(\"hex\");\n return { anchoringClient, systemAnchoringChainBridString };\n });\n}\nexport function getSystemAnchoringTransaction(dappClientEndpointPool, anchoredTxRid, anchoringClient, systemAnchoringChainRid, systemAnchoringStatusPolling, merkleHashVersion) {\n return __awaiter(this, void 0, void 0, function* () {\n const systemAnchoringChainClient = yield getSystemClient(getUrlsFromEndpoints(dappClientEndpointPool), systemAnchoringChainRid);\n const clusterAnchoringProof = yield anchoringClient.getConfirmationProof(anchoredTxRid);\n const clusterBlockRid = calculateBlockRID(clusterAnchoringProof, merkleHashVersion);\n const systemAnchoringTransactionConfirmation = yield awaitGetAnchoringTransactionForBlockRid(systemAnchoringChainClient, toBuffer(anchoringClient.config.blockchainRid), clusterBlockRid, systemAnchoringStatusPolling);\n const systemAnchoringTransactionValidation = AnchoringTransactionSchema.safeParse(systemAnchoringTransactionConfirmation);\n if (!systemAnchoringTransactionValidation.success) {\n return null;\n }\n return systemAnchoringTransactionValidation.data;\n });\n}\n/**\n * Should be used to configure the `IClient` `ClientConfig` (config) properties\n * `dappStatusPolling`, `clusterAnchoringStatusPolling` and `systemAnchoringStatusPolling` with\n * the corresponding status polling configuration `interval` and `status`.\n * If the values are not provided, they do default to `500` for `interval` and `20` for `count`\n *\n * @param statusPolling - An optional partial configuration object, that can set the status polling interval and count properties\n * @returns - Returns a complete `StatusPolling` configuration object, with default values for any missing properties\n * of the provided partial configuration\n */\nexport function setStatusPolling(statusPolling) {\n var _a, _b;\n return {\n interval: (_a = statusPolling === null || statusPolling === void 0 ? void 0 : statusPolling.interval) !== null && _a !== void 0 ? _a : 500,\n count: (_b = statusPolling === null || statusPolling === void 0 ? void 0 : statusPolling.count) !== null && _b !== void 0 ? _b : 20,\n };\n}\nexport function linkPromiEvents(event1, event2) {\n const transactionEvents = Object.values(TransactionEvent).filter((event) => typeof event === \"string\");\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const forwardEvent = (eventName) => (receipt) => event2.emit(eventName, receipt);\n for (const eventName of transactionEvents) {\n event1.on(eventName, forwardEvent(eventName));\n }\n}\n/**\n * @param error response error\n * @param statusCode response status code\n * @param responseObject the responsebody from the server\n * @param callback the callback function to propagate the error and response back to the caller\n */\nexport function handleGetResponse(error, statusCode, responseObject, callback) {\n try {\n const responseObjectPrintable = convertToPrintable(responseObject);\n logger.debug(`error: ${error}, status code: ${statusCode}, response body: ${responseObjectPrintable}`);\n if (error) {\n return callback(error, null);\n }\n if (statusCode !== 200) {\n return callback(new UnexpectedStatusError(statusCode !== null && statusCode !== void 0 ? statusCode : 400, responseObjectPrintable), null);\n }\n return callback(null, responseObject);\n }\n catch (error) {\n callback(error, null);\n logger.error(`client.handleGetResponse(): Failed to call the callback function. ${error}`);\n }\n}\n/**\n * @param error response error\n * @param statusCode response status code\n * @param responseObject the responsebody from the server\n * @param callback the callback function to propagate the error and response back to the caller\n */\nexport function handlePostResponse(error, statusCode, responseObject, callback) {\n const responseObjectPrintable = convertToPrintable(responseObject);\n logger.debug(`error: ${error}, status code: ${statusCode}, response body: ${responseObjectPrintable}`);\n try {\n if (error) {\n logger.error(`In client post(). ${error}`);\n callback(error, null);\n }\n else if (statusCode != 200) {\n let errorMessage = `Unexpected status code from server. Code: ${statusCode}.`;\n if (responseObjectPrintable) {\n errorMessage += ` Message: ${responseObjectPrintable}.`;\n }\n logger.error(errorMessage);\n callback(new UnexpectedStatusError(statusCode !== null && statusCode !== void 0 ? statusCode : 400, responseObjectPrintable), responseObject);\n }\n else {\n logger.info(`Calling responseCallback with responseObject: ${responseObjectPrintable}`);\n callback(null, responseObject);\n }\n }\n catch (error) {\n logger.error(`client.handlePostResponse(): Failed to call callback function ${error}`);\n }\n}\nexport function getBlockchainRidFromIid({ endpointPool, chainId, failOverConfig = {}, nodeManager, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const mergedFailOverConfig = Object.assign(Object.assign({}, defaultFailoverConfig), failOverConfig);\n const config = {\n endpointPool,\n nodeManager,\n dappStatusPolling: setStatusPolling(),\n clusterAnchoringStatusPolling: setStatusPolling(),\n systemAnchoringStatusPolling: setStatusPolling(),\n failoverStrategy: mergedFailOverConfig.strategy,\n attemptsPerEndpoint: mergedFailOverConfig.attemptsPerEndpoint,\n attemptInterval: mergedFailOverConfig.attemptInterval,\n unreachableDuration: mergedFailOverConfig.unreachableDuration,\n merkleHashVersion: 0,\n };\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/brid/iid_${chainId}`, config);\n const blockchainRid = isString(rspBody);\n if (!blockchainRid) {\n throw error;\n }\n if (error) {\n throw new GetBridFromChainException(chainId, error.message);\n }\n else if (statusCode !== 200) {\n throw new GetBridFromChainException(chainId, blockchainRid);\n }\n return blockchainRid;\n });\n}\nexport const sleep = (ms) => new Promise(r => setTimeout(r, ms));\nexport function convertToPrintable(responseObject) {\n if (typeof responseObject === \"bigint\") {\n return `${responseObject}n`;\n }\n else if (typeof responseObject === \"object\") {\n return JSON.stringify(responseObject, (key, value) => typeof value === \"bigint\" ? `${value}n` : value);\n }\n else {\n return String(responseObject);\n }\n}\n//# sourceMappingURL=utils.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { TxRejectedError } from \"../blockchainClient/errors\";\nimport { sleep } from \"../blockchainClient/utils\";\nimport { AnchoringTransactionSchema } from \"../blockchainClient/validation/anchoringTransaction\";\nimport { checkDigestSignature } from \"../encryption/encryption\";\nimport { ensureBuffer } from \"../formatter\";\nimport { gtvHash } from \"../gtv\";\nimport { getDigestToSign, rawGtvToGtx } from \"../gtx/gtx\";\nimport { decodeValue, encodeValue } from \"../gtx/serialization\";\nimport { DifferentNumberOfSignersException, MissingTransactionProof, ProofRidException, SignatureException, SystemChainException, } from \"./error\";\nexport function getClusterOfBlockchain(client, blockchainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const clusterName = yield client.query({\n name: \"cm_get_blockchain_cluster\",\n args: { brid: blockchainRid },\n });\n return clusterName;\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport function getClusterInfo(client, name) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const clusterInfo = yield client.query({\n name: \"cm_get_cluster_info\",\n args: { name },\n });\n return clusterInfo;\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport function awaitGetAnchoringTransactionForBlockRid(client, blockchainRid, blockRid, systemAnchoringStatusPolling) {\n return __awaiter(this, void 0, void 0, function* () {\n let anchoringTransactionResponse = null;\n for (let i = 0; i < systemAnchoringStatusPolling.count; i++) {\n anchoringTransactionResponse = yield getAnchoringTransactionForBlockRid(client, blockchainRid, blockRid);\n if (anchoringTransactionResponse) {\n const anchoringTransactionValidaiton = AnchoringTransactionSchema.safeParse(anchoringTransactionResponse);\n if (anchoringTransactionValidaiton.success) {\n return anchoringTransactionValidaiton.data;\n }\n else if (!anchoringTransactionValidaiton.success) {\n throw new TxRejectedError(\"Invalid anchoring transaction format\");\n }\n }\n yield sleep(systemAnchoringStatusPolling.interval);\n }\n return anchoringTransactionResponse;\n });\n}\nexport function getAnchoringTransactionForBlockRid(client, blockchainRid, blockRid) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const anchoringTxForBlockRid = yield client.query({\n name: \"get_anchoring_transaction_for_block_rid\",\n args: { blockchain_rid: blockchainRid, block_rid: blockRid },\n });\n if (!anchoringTxForBlockRid)\n return null;\n return convertToAnchoringTransaction(anchoringTxForBlockRid);\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport function convertToAnchoringTransaction(responseTx) {\n const { tx_rid, tx_data, tx_op_index } = responseTx;\n return {\n txRid: tx_rid,\n txData: tx_data,\n txOpIndex: tx_op_index,\n };\n}\nexport function calculateBlockRID(decodedTxProof, merkleHashVersion) {\n const sourceBlockHeader = decodedTxProof.blockHeader;\n if (!sourceBlockHeader) {\n throw new Error(\"Failed to get blockHeader from confirmation proof\");\n }\n const decodeSourceBlockRid = decodeValue(sourceBlockHeader);\n return gtvHash(decodeSourceBlockRid, merkleHashVersion);\n}\n// fetch tx from txRID and verifies with secp256k1.ecdsaVerify that txRID and signer creates signatures that are on the blockchain transaction\nexport function fetchAndVerifyTransaction(sourceClient, txToProveRID, proofHash, txToProveSigners) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n const rawTx = yield sourceClient.getTransaction(txToProveRID);\n const txGtv = decodeValue(rawTx);\n const fetchedTxHash = gtvHash(txGtv, sourceClient.config.merkleHashVersion);\n if (Buffer.compare(fetchedTxHash, proofHash)) {\n // We received another hash for tx RID than what was included in proof\n // Possibly rouge or faulty node(s). Anyway, we need to give up.\n throw new MissingTransactionProof(proofHash, fetchedTxHash);\n }\n const fetchedTx = rawGtvToGtx(txGtv);\n if (txToProveSigners.length != ((_a = fetchedTx.signatures) === null || _a === void 0 ? void 0 : _a.length)) {\n throw new DifferentNumberOfSignersException((_c = (_b = fetchedTx.signatures) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0, txToProveSigners.length);\n }\n const txRID = getDigestToSign(fetchedTx, sourceClient.config.merkleHashVersion);\n if (Buffer.compare(txRID, ensureBuffer(txToProveRID))) {\n throw new ProofRidException();\n }\n for (const signer of txToProveSigners) {\n let hasSignature = false;\n for (const signature of fetchedTx.signatures) {\n // verify that txRID (hash of gtxBody) signed by signers equals the signatures from network\n if (checkDigestSignature(txRID, signer, signature)) {\n hasSignature = true;\n break;\n }\n }\n if (!hasSignature)\n throw new SignatureException(signer);\n }\n return { verifiedTx: fetchedTx, verifiedTxHash: fetchedTxHash };\n });\n}\nexport function composeProofTransactionObject(sourceBlockchainRid, verifiedTxHash, txProof, iccfTxSigners, anchoringTx, anchoringProof, isNetwork = true) {\n let operationArgs;\n operationArgs = {\n sourceBlockchainRid: ensureBuffer(sourceBlockchainRid),\n transactionHash: verifiedTxHash,\n transactionProof: encodeValue(txProof),\n };\n if (isNetwork) {\n operationArgs = Object.assign(Object.assign({}, operationArgs), { transactionData: anchoringTx === null || anchoringTx === void 0 ? void 0 : anchoringTx.txData, transactionIndex: anchoringTx === null || anchoringTx === void 0 ? void 0 : anchoringTx.txOpIndex, anchoringProof: anchoringProof && encodeValue(anchoringProof) });\n }\n return {\n operations: [\n {\n name: \"iccf_proof\",\n args: Object.values(operationArgs),\n },\n ],\n signers: iccfTxSigners,\n };\n}\n//# sourceMappingURL=utils.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { createClient } from \"../blockchainClient/blockchainClient\";\nimport { awaitGetAnchoringTransactionForBlockRid, calculateBlockRID, composeProofTransactionObject, fetchAndVerifyTransaction, getClusterInfo, getClusterOfBlockchain, } from \"./utils\";\nimport { toString, toBuffer, ensureString, ensureBuffer } from \"../formatter\";\nimport { BlockAnchoringException, ConfirmationProofException } from \"./error\";\nimport { getUrlsFromEndpoints } from \"../blockchainClient/utils\";\nimport { FailoverStrategy } from \"../blockchainClient/enums\";\n/**\n * Creates an ICCF (Inter-Chain Communication Framework) proof transaction.\n * This function generates a proof that a specific transaction has occurred on the source blockchain\n * and constructs an ICCF proof transaction that can be posted to the target blockchain.\n *\n * @param {IClient} directoryClient - The client configured to communicate with the management chain.\n * @param {BufferId} txToProveRid - The RID of the transaction to be proven.\n * @param {Buffer} txToProveHash - The hash of the transaction to be proven.\n * @param {PubKey[]} txToProveSigners - An array of public keys representing signers of the transaction to be proven.\n * @param {BufferId} sourceBlockchainRid - The RID of the source blockchain.\n * @param {BufferId} targetBlockchainRid - The RID of the target blockchain.\n * @param {PubKey[]} iccfTxSigners - An array of public keys representing signers of the ICCF proof transaction (optional, default: []).\n * @param {boolean} forceIntraNetworkIccfOperation - Whether to force the ICCF operation to be performed within the same network (optional, default: false).\n * @param {number} merkleHashVersion - The version of the merkle hash to use.\n * @param {string} nodeIdentifierURL - The URL of the node to use.\n * @returns {Promise<IccfProof>} A promise that resolves to an ICCF proof object containing the ICCF proof transaction.\n */\nexport function createIccfProofTx(directoryClient, txToProveRid, txToProveHash, txToProveSigners, sourceBlockchainRid, targetBlockchainRid, iccfTxSigners = [], forceIntraNetworkIccfOperation = false, merkleHashVersion, nodeIdentifierURL) {\n return __awaiter(this, void 0, void 0, function* () {\n let clientConfiguredToSource;\n if (!nodeIdentifierURL) {\n clientConfiguredToSource = yield createClient({\n directoryNodeUrlPool: getUrlsFromEndpoints(directoryClient.config.endpointPool),\n blockchainRid: ensureString(sourceBlockchainRid),\n merkleHashVersion: merkleHashVersion,\n useStickyNode: true,\n });\n }\n else {\n clientConfiguredToSource = yield createClient({\n nodeUrlPool: nodeIdentifierURL,\n blockchainRid: ensureString(sourceBlockchainRid),\n merkleHashVersion: merkleHashVersion,\n useStickyNode: true,\n });\n }\n const txProof = yield clientConfiguredToSource.getConfirmationProof(txToProveRid);\n if (!txProof || !txProof.hash) {\n throw new ConfirmationProofException(txToProveRid);\n }\n const proofHash = txProof.hash;\n const { verifiedTx, verifiedTxHash } = !txToProveHash.equals(proofHash)\n ? yield fetchAndVerifyTransaction(clientConfiguredToSource, txToProveRid, proofHash, txToProveSigners)\n : { verifiedTx: null, verifiedTxHash: txToProveHash };\n const sourceCluster = yield getClusterOfBlockchain(directoryClient, ensureBuffer(sourceBlockchainRid));\n const targetCluster = yield getClusterOfBlockchain(directoryClient, ensureBuffer(targetBlockchainRid));\n if (!forceIntraNetworkIccfOperation && sourceCluster === targetCluster) {\n // intra-cluster\n const intraClusterProofTx = composeProofTransactionObject(sourceBlockchainRid, verifiedTxHash, txProof, iccfTxSigners, undefined, undefined, false);\n return { iccfTx: intraClusterProofTx };\n }\n else {\n // intra-network\n const systemClientUsingStickyNode = Object.assign(Object.assign({}, directoryClient), { config: Object.assign(Object.assign({}, directoryClient.config), { failoverStrategy: FailoverStrategy.SingleEndpoint }) });\n const anchoringClient = yield getAnchoringClient(systemClientUsingStickyNode, sourceBlockchainRid, sourceCluster);\n const clusterAnchoredTx = yield getBlockAnchoringTransaction(clientConfiguredToSource, anchoringClient, undefined, txProof);\n if (!clusterAnchoredTx) {\n throw new BlockAnchoringException();\n }\n const anchoringProof = yield anchoringClient.getConfirmationProof(clusterAnchoredTx.txRid);\n const intraNetworkProofTx = composeProofTransactionObject(sourceBlockchainRid, verifiedTxHash, txProof, iccfTxSigners, clusterAnchoredTx, anchoringProof);\n return { iccfTx: intraNetworkProofTx, verifiedTx };\n }\n });\n}\n/**\n * Checks whether a given transaction is included in the cluster anchoring chain and returns the\n * block anchoring transaction. If `txProof` is not provided, it fetches the confirmation proof\n * using the `sourceClient`.\n *\n * @param sourceClient - A client configured to the blockchain where the transaction was made.\n * @param anchoringClient - The client responsible for querying the anchoring blockchain.\n * @param txRid - The transaction RID to check for anchoring.\n * @param txProof - (Optional) The transaction proof for the specified `txRid`.\n * @returns A Promise that resolves to the anchored transaction response object.\n */\nexport function getBlockAnchoringTransaction(sourceClient, anchoringClient, txRid, txProof) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!txRid && !txProof) {\n throw Error(\"Missing a txRid or TxProof\");\n }\n const confirmationProof = txProof !== null && txProof !== void 0 ? txProof : (txRid && (yield sourceClient.getConfirmationProof(txRid)));\n if (!confirmationProof) {\n throw Error(\"Confirmation proof not found\");\n }\n const blockRid = calculateBlockRID(confirmationProof, sourceClient.config.merkleHashVersion);\n const blockchainRid = sourceClient.config.blockchainRid;\n const anchoringTxResponse = yield awaitGetAnchoringTransactionForBlockRid(anchoringClient, toBuffer(blockchainRid), blockRid, sourceClient.config.clusterAnchoringStatusPolling);\n return anchoringTxResponse;\n });\n}\n/**\n * Checks whether a given transaction is included in the anchoring blockchain.\n *\n * @param sourceClient - A client configured to the blockchain where the transaction was made.\n * @param anchoringClient - The client responsible for querying the anchoring blockchain.\n * @param txRid - The transaction RID to check for anchoring.\n * @param txProof - (Optional) The transaction proof for the specified `txRid`.\n * @returns A Promise that resolves to `true` if the transaction is anchored, `false` otherwise.\n */\nexport function isBlockAnchored(sourceClient, anchoringClient, txRid, txProof) {\n return __awaiter(this, void 0, void 0, function* () {\n return !!(yield getBlockAnchoringTransaction(sourceClient, anchoringClient, txRid, txProof));\n });\n}\n/**\n * Gets a client configured for the cluster anchoring blockchain of a cluster. Takes a specific\n * cluster name or blockchain RID to determine the cluster.\n * @param client - The client configured to communicate with the management chain.\n * @param dappBlockchainRid - (Optional) The RID of a blockchain which anchoring wants to be checked.\n * @param cluster - (Optional) The cluster of interest.\n * @returns A Promise that resolves to the client configured to a cluster anchoring chain.\n */\nexport function getAnchoringClient(client, dappBlockchainRid, cluster) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!dappBlockchainRid && !cluster) {\n throw Error(\"Missing a dapp blockchainRid or cluster name\");\n }\n const sourceCluster = cluster !== null && cluster !== void 0 ? cluster : (dappBlockchainRid && (yield getClusterOfBlockchain(client, ensureBuffer(dappBlockchainRid))));\n if (!sourceCluster) {\n throw Error(\"No cluster could be found\");\n }\n const sourceClusterInfo = yield getClusterInfo(client, sourceCluster);\n if (!sourceClusterInfo || !sourceClusterInfo.anchoring_chain) {\n throw Error(\"Cluster info could not be found\");\n }\n const networkSettings = Object.assign(Object.assign({}, client.config), { directoryNodeUrlPool: getUrlsFromEndpoints(client.config.endpointPool), blockchainRid: toString(sourceClusterInfo.anchoring_chain), merkleHashVersion: 0 });\n const clientConfiguredToAnchoringchain = yield createClient(networkSettings);\n return clientConfiguredToAnchoringchain;\n });\n}\n//# sourceMappingURL=IccfProofTxMaterialBuilder.js.map","/*\nThis file is part of web3.js.\n\nweb3.js is free software: you can redistribute it and/or modify\nit under the terms of the GNU Lesser General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nweb3.js is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License\nalong with web3.js. If not, see <http://www.gnu.org/licenses/>.\n*/\nimport { EventEmitter } from \"events\";\nexport class Web3EventEmitter {\n constructor() {\n this._emitter = new EventEmitter();\n }\n on(eventName, fn) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._emitter.on(eventName, fn);\n }\n once(eventName, fn) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._emitter.once(eventName, fn);\n }\n off(eventName, fn) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._emitter.off(eventName, fn);\n }\n emit(eventName, params) {\n this._emitter.emit(eventName, params);\n }\n listenerCount(eventName) {\n return this._emitter.listenerCount(eventName);\n }\n listeners(eventName) {\n return this._emitter.listeners(eventName);\n }\n eventNames() {\n return this._emitter.eventNames();\n }\n removeAllListeners() {\n this._emitter.removeAllListeners();\n }\n setMaxListenerWarningThreshold(maxListenersWarningThreshold) {\n this._emitter.setMaxListeners(maxListenersWarningThreshold);\n }\n getMaxListeners() {\n return this._emitter.getMaxListeners();\n }\n}\n//# sourceMappingURL=promiEventEmitter.js.map","/*\nThis file is part of web3.js.\n\nweb3.js is free software: you can redistribute it and/or modify\nit under the terms of the GNU Lesser General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nweb3.js is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License\nalong with web3.js. If not, see <http://www.gnu.org/licenses/>.\n*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a;\nimport { Web3EventEmitter, } from \"./promiEventEmitter\";\nexport class Web3PromiEvent extends Web3EventEmitter {\n constructor(executor) {\n super();\n // public tag to treat object as promise by different libs\n // eslint-disable-next-line @typescript-eslint/prefer-as-const\n this[_a] = \"Promise\";\n this._promise = new Promise(executor);\n }\n then(onfulfilled, onrejected) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._promise.then(onfulfilled, onrejected);\n });\n }\n catch(onrejected) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._promise.catch(onrejected);\n });\n }\n finally(onfinally) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._promise.finally(onfinally);\n });\n }\n on(eventName, fn) {\n super.on(eventName, fn);\n return this;\n }\n once(eventName, fn) {\n super.once(eventName, fn);\n return this;\n }\n}\n_a = Symbol.toStringTag;\n//# sourceMappingURL=promiEvents.js.map","import { z } from \"zod\";\nconst WRONG_STRING_LENGTH = \"wrong string length\";\nexport const BlockIdentifierSchema = z.union([\n z.string().refine(val => /^[0-9a-fA-F]{64}$/.test(val), WRONG_STRING_LENGTH),\n z.number(),\n]);\nexport const isBlockIdentifierValid = (blockIdentifier, options) => {\n const ctx = BlockIdentifierSchema.safeParse(blockIdentifier);\n const { success } = ctx;\n const hasError = \"error\" in ctx;\n const { throwOnError = false } = options || {};\n if (!hasError) {\n return { success };\n }\n const { error } = ctx;\n const isInvalidInputType = error.issues.some(({ code }) => code === \"invalid_union\");\n const isInvalidStringLength = error.issues.some(({ message }) => message === WRONG_STRING_LENGTH);\n const message = (() => {\n if (isInvalidInputType) {\n return `Invalid \"blockIdentifier\" type. Expected string or number, but received ${typeof blockIdentifier}.`;\n }\n if (isInvalidStringLength) {\n return \"Parameter 'blockIdentifier' does not have the correct format (64-character hexadecimal string).\";\n }\n return error.issues.map(issue => issue.message).join(\", \");\n })();\n if (throwOnError) {\n throw new Error(message);\n }\n return {\n success,\n error,\n message: error.issues.map(issue => issue.message).join(\", \"),\n };\n};\n//# sourceMappingURL=blockIdentifier.js.map","import { z } from \"zod\";\nimport { FailoverStrategy } from \"../enums\";\nimport { MissingBlockchainIdentifierError, MissingNodeUrlError } from \"../errors\";\nconst IdentifierSchema = z.union([\n z.object({\n blockchainRid: z.undefined(),\n blockchainIid: z.number(),\n }),\n z.object({\n blockchainRid: z.string(),\n blockchainIid: z.undefined(),\n }),\n]);\nconst NodeUrlSchema = z.union([\n z.object({\n nodeUrlPool: z.union([z.string(), z.array(z.string())]),\n directoryNodeUrlPool: z.undefined(),\n }),\n z.object({\n nodeUrlPool: z.undefined(),\n directoryNodeUrlPool: z.union([z.string(), z.array(z.string())]),\n }),\n]);\nconst RestNetworkSettingsSchema = z.object({\n statusPollingInterval: z.number().optional(),\n statusPollingCount: z.number().optional(),\n failOverConfig: z\n .object({\n strategy: z.nativeEnum(FailoverStrategy).optional(),\n attemptsPerEndpoint: z.number().optional(),\n attemptInterval: z.number().optional(),\n unreachableDuration: z.number().optional(),\n })\n .optional(),\n});\nexport const validateBlockChainIdentifier = (networkSettings, options) => {\n const { throwOnError = false } = options || {};\n const identifierValidationContext = IdentifierSchema.safeParse(networkSettings);\n if (\"error\" in identifierValidationContext) {\n const missingBlockchainIdentifierError = new MissingBlockchainIdentifierError();\n if (throwOnError) {\n throw missingBlockchainIdentifierError;\n }\n return {\n success: identifierValidationContext.success,\n error: identifierValidationContext.error,\n message: missingBlockchainIdentifierError.message,\n };\n }\n return { success: true };\n};\nconst validateNodeUrl = (networkSettings, options) => {\n const { throwOnError = false } = options || {};\n const nodeUrlValidationContext = NodeUrlSchema.safeParse(networkSettings);\n if (\"error\" in nodeUrlValidationContext) {\n const missingNodeUrlError = new MissingNodeUrlError();\n if (throwOnError) {\n throw missingNodeUrlError;\n }\n return {\n success: nodeUrlValidationContext.success,\n error: nodeUrlValidationContext.error,\n message: missingNodeUrlError.message,\n };\n }\n return { success: true };\n};\nconst validateRestNetworkSettings = (networkSettings, options) => {\n const { throwOnError = false } = options || {};\n const restNetworkSettingsValidationContext = RestNetworkSettingsSchema.safeParse(networkSettings);\n if (\"error\" in restNetworkSettingsValidationContext) {\n const { error: { issues }, } = restNetworkSettingsValidationContext;\n const errorMessage = issues.map(({ message, path }) => `${path[0]}: ${message}`).join(\", \");\n if (throwOnError) {\n throw new Error(errorMessage);\n }\n return {\n success: restNetworkSettingsValidationContext.success,\n error: restNetworkSettingsValidationContext.error,\n message: errorMessage,\n };\n }\n return { success: true };\n};\nexport const isNetworkSettingValid = (networkSettings, options) => {\n const identifierValidationContext = validateBlockChainIdentifier(networkSettings, options);\n if (\"error\" in identifierValidationContext) {\n return identifierValidationContext;\n }\n const nodeUrlValidationContext = validateNodeUrl(networkSettings, options);\n if (\"error\" in nodeUrlValidationContext) {\n return nodeUrlValidationContext;\n }\n const restNetworkSettingsValidationContext = validateRestNetworkSettings(networkSettings, options);\n if (\"error\" in restNetworkSettingsValidationContext) {\n return restNetworkSettingsValidationContext;\n }\n return { success: true };\n};\n//# sourceMappingURL=networkSettings.js.map","import { z } from \"zod\";\nimport { BufferSchema } from \"./bufferSchema\";\nconst KeyPairSchema = z.object({\n privKey: BufferSchema,\n pubKey: BufferSchema,\n});\nconst SignatureProviderSchema = z.object({\n pubKey: BufferSchema,\n sign: z.function().args(BufferSchema).returns(z.promise(BufferSchema)),\n});\nexport const SignMethodSchema = z.union([KeyPairSchema, SignatureProviderSchema]);\nexport const isSignMethodValid = (signMethod, options) => {\n const signMethodValidationCtx = SignMethodSchema.safeParse(signMethod);\n const { throwOnError = false } = options || {};\n const hasError = \"error\" in signMethodValidationCtx;\n if (!hasError) {\n return { success: true };\n }\n const message = \"Invalid sign method\";\n if (throwOnError) {\n throw new Error(message);\n }\n return {\n success: false,\n error: signMethodValidationCtx.error,\n message,\n };\n};\n//# sourceMappingURL=signMethod.js.map","import { z } from \"zod\";\nimport { AnchoringStatus, ResponseStatus } from \"../enums\";\nconst statusEnum = z.union([z.nativeEnum(ResponseStatus), z.nativeEnum(AnchoringStatus)]);\nconst transactionStatusReponseSchema = z\n .object({\n statusCode: z.number().nullable(),\n result: z.object({\n status: statusEnum,\n rejectReason: z.string().optional(),\n }),\n})\n .transform(({ statusCode, result }) => ({\n statusCode,\n status: result.status,\n rejectReason: result.rejectReason,\n}));\nexport function validateTransactionStatusReponse(input) {\n const result = transactionStatusReponseSchema.safeParse(input);\n if (!result.success) {\n throw new Error(\"Model does not match TransactionStatusReponse\");\n }\n return result.data;\n}\n//# sourceMappingURL=transactionStatusReponse.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { randomBytes } from \"crypto\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { getBlockAnchoringTransaction } from \"../ICCF/IccfProofTxMaterialBuilder\";\nimport * as logger from \"../logger\";\nimport { toBuffer, toString, toQueryObjectGTV, ensureString, ensureBuffer } from \"../formatter\";\nimport { decodeValue, encodeValue } from \"../gtx/serialization\";\nimport * as gtxTool from \"../gtx/gtx\";\nimport { callbackPromiseBuilder, formatBlockInfoResponse, formatTransactionInfoResponse, getClientConfigFromSettings, getGTXFromBufferOrTransactionOrOperation, getSerializedGTX, handlePostResponsePromisified, handleSystemConfirmations, isKeyPair, getAnchoringClientAndSystemChainRid, getSystemAnchoringTransaction, linkPromiEvents, handleGetResponse, handlePostResponse, handleDappConfirmations, getMerkleHashVersionFromDapp, formatRejectedTransactionFromResponse, } from \"./utils\";\nimport { Web3PromiEvent } from \"../promiEvent/promiEvents\";\nimport { NumberOfSignersAndSignaturesException } from \"../gtx/errors\";\nimport { ResponseStatus, ChainConfirmationLevel, AnchoringStatus, TransactionEvent, Method, } from \"./enums\";\nimport { isBlockIdentifierValid } from \"./validation/blockIdentifier\";\nimport { isNetworkSettingValid } from \"./validation/networkSettings\";\nimport { isSignMethodValid } from \"./validation/signMethod\";\nimport { isTxRidValid } from \"./validation/txRid\";\nimport { AnchoringTransactionSchema } from \"./validation/anchoringTransaction\";\nimport { isBlockInfoResponse, isBlockInfoResponseArray, isRawGtv, isRejectedTransactionResponseArray, isTransaction, isTransactionConfirmationProof, isTransactionInfoResponse, isTransactionInfoResponseArray, isTransactionsCount, } from \"./validation/requests\";\nimport { awaitGetAnchoringTransactionForBlockRid } from \"../ICCF/utils\";\nimport { requestWithFailoverStrategy } from \"./requestWithFailoverStrategy\";\nimport { validateTransactionStatusReponse } from \"./validation/transactionStatusReponse\";\nexport function createClient(settings) {\n return __awaiter(this, void 0, void 0, function* () {\n isNetworkSettingValid(settings, { throwOnError: true });\n const config = yield getClientConfigFromSettings(settings);\n config.merkleHashVersion = yield getMerkleHashVersion(settings);\n return {\n config,\n query(nameOrQueryObject, args, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n let _name, _args;\n if (typeof nameOrQueryObject === \"string\") {\n _name = nameOrQueryObject;\n _args = args;\n }\n else {\n _name = nameOrQueryObject === null || nameOrQueryObject === void 0 ? void 0 : nameOrQueryObject.name;\n _args = nameOrQueryObject === null || nameOrQueryObject === void 0 ? void 0 : nameOrQueryObject.args;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.POST, `query_gtv/${config.blockchainRid}`, config, encodeValue(toQueryObjectGTV(_name, _args)));\n return new Promise((resolve, reject) => {\n handlePostResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n signTransaction(transaction, signMethod, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`Signing transaction with ${!isKeyPair(signMethod) ? \"signature provider containing \" : \"\"}pubKey: ${toString(signMethod.pubKey)}`);\n const gtx = getGTXFromBufferOrTransactionOrOperation(transaction, config.blockchainRid);\n try {\n const signedTx = yield (isKeyPair(signMethod)\n ? gtxTool.sign(gtx, signMethod.privKey, config.merkleHashVersion, signMethod.pubKey)\n : gtxTool.sign(gtx, signMethod, config.merkleHashVersion));\n const gtxBytes = getSerializedGTX(signedTx);\n if (typeof callback === \"function\") {\n callback(null, gtxBytes);\n }\n return gtxBytes;\n }\n catch (error) {\n if (typeof callback === \"function\") {\n callback(error, null);\n }\n // Todo the error should be replaced with the custom error MissingSignerException\n throw new Error(error);\n }\n });\n },\n sendTransaction(transaction, doStatusPolling = true, callback, confirmationLevel = ChainConfirmationLevel.Dapp) {\n const promiEvent = new Web3PromiEvent((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n try {\n const gtx = getGTXFromBufferOrTransactionOrOperation(transaction, config.blockchainRid);\n if (gtx.signers.length !== ((_a = gtx.signatures) === null || _a === void 0 ? void 0 : _a.length)) {\n reject(new NumberOfSignersAndSignaturesException());\n }\n const gtxBytes = getSerializedGTX(gtx);\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.POST, `tx/${config.blockchainRid}`, config, gtxBytes);\n const transactionRid = gtxTool.getDigestToSign(gtx, config.merkleHashVersion);\n try {\n yield handlePostResponsePromisified(error, statusCode, isRawGtv(rspBody));\n if (typeof callback === \"function\") {\n callback(null, {\n status: ResponseStatus.Waiting,\n statusCode,\n transactionRid: transactionRid,\n node: (_b = config.nodeManager.lastUsedNode) === null || _b === void 0 ? void 0 : _b.url,\n });\n }\n }\n catch (_error) {\n if (typeof callback === \"function\") {\n callback(_error, null);\n }\n return reject(_error);\n }\n const client = this;\n const statusPollingConfig = {\n dappStatusPolling: client.config.dappStatusPolling,\n clusterAnchoringStatusPolling: client.config.clusterAnchoringStatusPolling,\n systemAnchoringStatusPolling: client.config.systemAnchoringStatusPolling,\n };\n let transactionReceipt = yield handleDappConfirmations(transactionRid, doStatusPolling, confirmationLevel, promiEvent, statusPollingConfig.dappStatusPolling, () => client.getTransactionStatus(transactionRid, callback), client);\n if (confirmationLevel === ChainConfirmationLevel.None ||\n confirmationLevel === ChainConfirmationLevel.Dapp) {\n resolve(transactionReceipt);\n return;\n }\n const { anchoringClient, systemAnchoringChainBridString } = yield getAnchoringClientAndSystemChainRid(client);\n transactionReceipt = yield handleSystemConfirmations(transactionReceipt, confirmationLevel, promiEvent, statusPollingConfig, anchoringClient, systemAnchoringChainBridString, () => client.getClusterAnchoringTransactionConfirmation(transactionRid, anchoringClient, callback), anchoredTxRid => client.getSystemAnchoringTransactionConfirmation(anchoredTxRid, anchoringClient, systemAnchoringChainBridString, callback));\n resolve(transactionReceipt);\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n reject(error);\n }\n }));\n return promiEvent;\n },\n signAndSendUniqueTransaction(transactionOrOperation, signMethod, doStatusPolling = true, callback, confirmationLevel = ChainConfirmationLevel.Dapp) {\n isSignMethodValid(signMethod, { throwOnError: true });\n const promiEvent = new Web3PromiEvent((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const client = this;\n const transaction = \"name\" in transactionOrOperation\n ? {\n operations: [transactionOrOperation],\n signers: [signMethod.pubKey],\n }\n : transactionOrOperation;\n const hasNop = transaction.operations.some(operation => {\n return operation.name === \"nop\";\n });\n const transactionWithNop = hasNop ? transaction : client.addNop(transaction);\n try {\n const signedTx = yield client.signTransaction(transactionWithNop, signMethod);\n promiEvent.emit(TransactionEvent.Signed, signedTx);\n const sendTransactionPromiEvent = client.sendTransaction(signedTx, doStatusPolling, callback, confirmationLevel);\n linkPromiEvents(sendTransactionPromiEvent, promiEvent);\n resolve(yield sendTransactionPromiEvent);\n }\n catch (error) {\n reject(error);\n }\n }));\n return promiEvent;\n },\n getTransaction(transactionRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${config.blockchainRid}/${ensureString(transactionRid)}`, config);\n const transaction = isTransaction(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && transaction ? toBuffer(transaction.tx) : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getTransactionStatus(transactionRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${config.blockchainRid}/${transactionRid.toString(\"hex\")}/status`, config);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, result => resolve(validateTransactionStatusReponse({\n statusCode,\n result,\n })), callback));\n });\n });\n },\n addNop(transaction) {\n const _transaction = cloneDeep(transaction);\n const noOperation = {\n name: \"nop\",\n args: [randomBytes(32)],\n };\n _transaction.operations = [..._transaction.operations, noOperation];\n return _transaction;\n },\n getTransactionsInfo(limit = 25, beforeTime, callback, afterTime, signerPubKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const beforeTimeQueryParam = beforeTime ? `&before-time=${beforeTime.getTime()}` : \"\";\n const afterTimeQueryParam = afterTime ? `&after-time=${afterTime.getTime()}` : \"\";\n const signerQueryParam = signerPubKey ? `&signer=${signerPubKey}` : \"\";\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `transactions/${config.blockchainRid}?limit=${limit}${beforeTimeQueryParam}${afterTimeQueryParam}${signerQueryParam}`, config);\n const transactionsInfoResponseArray = isTransactionInfoResponseArray(rspBody);\n const body = statusCode === 200 && transactionsInfoResponseArray\n ? transactionsInfoResponseArray.map(formatTransactionInfoResponse)\n : rspBody;\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(body), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getTransactionInfo(transactionRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `transactions/${config.blockchainRid}/${ensureString(transactionRid)}`, config);\n const transactionInfoResponse = isTransactionInfoResponse(rspBody);\n const body = statusCode === 200 && transactionInfoResponse\n ? formatTransactionInfoResponse(transactionInfoResponse)\n : rspBody;\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(body), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getAnchoringStatusForBlockRid(blockRid, anchoringClient, systemAnchoringChainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n const client = this;\n const result = { status: AnchoringStatus.NotAnchored };\n const clusterAnchoredTx = yield awaitGetAnchoringTransactionForBlockRid(anchoringClient, ensureBuffer(client.config.blockchainRid), ensureBuffer(blockRid), config.clusterAnchoringStatusPolling);\n if (!clusterAnchoredTx) {\n return result;\n }\n const anchoringTransactionValidation = AnchoringTransactionSchema.safeParse(clusterAnchoredTx);\n if (!anchoringTransactionValidation.success) {\n return result;\n }\n result.status = AnchoringStatus.ClusterAnchored;\n result.clusterAnchoredTx = anchoringTransactionValidation.data;\n const systemAnchoredTransaction = yield getSystemAnchoringTransaction(config.endpointPool, anchoringTransactionValidation.data.txRid, anchoringClient, systemAnchoringChainRid, config.systemAnchoringStatusPolling, config.merkleHashVersion);\n if (!systemAnchoredTransaction) {\n return result;\n }\n result.status = AnchoringStatus.SystemAnchored;\n result.systemAnchoredTx = systemAnchoredTransaction;\n return result;\n });\n },\n getTransactionConfirmationLevel(transactionRid, callback) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const client = this;\n const dappConfirmation = yield client.getTransactionStatus(transactionRid);\n const response = {\n status: dappConfirmation.status,\n statusCode: dappConfirmation.statusCode,\n transactionRid: ensureBuffer(transactionRid),\n node: (_a = client.config.nodeManager.lastUsedNode) === null || _a === void 0 ? void 0 : _a.url,\n };\n if (dappConfirmation.status === ResponseStatus.Waiting) {\n return response;\n }\n let clusterAnchoringResult = null;\n if (dappConfirmation.status === ResponseStatus.Confirmed) {\n const { anchoringClient, systemAnchoringChainBridString } = yield getAnchoringClientAndSystemChainRid(client);\n clusterAnchoringResult = yield client.getClusterAnchoringTransactionConfirmation(transactionRid, anchoringClient);\n if (clusterAnchoringResult === AnchoringStatus.NotAnchored || !clusterAnchoringResult) {\n return response;\n }\n if (clusterAnchoringResult === AnchoringStatus.FailedAnchoring) {\n response.status = AnchoringStatus.FailedAnchoring;\n response.statusCode = 400;\n return response;\n }\n const anchoringTransactionValidation = AnchoringTransactionSchema.safeParse(clusterAnchoringResult);\n if (!anchoringTransactionValidation.success) {\n return response;\n }\n if (anchoringTransactionValidation.success) {\n response.status = AnchoringStatus.ClusterAnchored;\n response.statusCode = 200;\n response.clusterAnchoredTx = anchoringTransactionValidation.data;\n response.clusterAnchoringClientBrid = anchoringClient.config.blockchainRid;\n const systemAnchoringResult = yield client.getSystemAnchoringTransactionConfirmation(anchoringTransactionValidation.data.txRid, anchoringClient, systemAnchoringChainBridString);\n if (!systemAnchoringResult) {\n return response;\n }\n response.status = AnchoringStatus.SystemAnchored;\n response.systemAnchoredTx = systemAnchoringResult;\n response.systemAnchoringClientBrid = systemAnchoringChainBridString;\n return response;\n }\n }\n return response;\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n });\n },\n getTransactionCount(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `transactions/${config.blockchainRid}/count`, config, undefined, true);\n const transactionsCount = isTransactionsCount(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 ? transactionsCount === null || transactionsCount === void 0 ? void 0 : transactionsCount.transactionsCount : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getBlockInfo(blockIdentifier, txs = false, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n isBlockIdentifierValid(blockIdentifier, { throwOnError: true });\n const queryString = typeof blockIdentifier === \"string\" ? blockIdentifier : `height/${blockIdentifier}`;\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `blocks/${config.blockchainRid}/${queryString}?txs=${txs}`, config);\n const blockInfoResponse = isBlockInfoResponse(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && blockInfoResponse !== null && blockInfoResponse\n ? formatBlockInfoResponse(blockInfoResponse)\n : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getLatestBlock(txs = false, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const shouldIncludeFullTransaction = txs ? `&txs=${txs}` : \"\";\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `blocks/${config.blockchainRid}?limit=1${shouldIncludeFullTransaction}`, config, undefined, true);\n const indexOfLatestBlock = 0;\n const blockInfoResponseArray = isBlockInfoResponseArray(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && blockInfoResponseArray !== null && blockInfoResponseArray\n ? formatBlockInfoResponse(blockInfoResponseArray[indexOfLatestBlock])\n : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getBlocks({ limit, beforeTime, afterTime, beforeHeight, afterHeight, excludeEmpty, txs, callback, } = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const searchValues = {\n limit,\n txs,\n \"before-time\": beforeTime,\n \"after-time\": afterTime,\n \"before-height\": beforeHeight,\n \"after-height\": afterHeight,\n \"exclude-empty\": excludeEmpty,\n };\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(searchValues)) {\n if (value !== undefined) {\n searchParams.append(key, value.toString());\n }\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `blocks/${config.blockchainRid}?${searchParams}`, config);\n const blockInfoResponseArray = isBlockInfoResponseArray(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && blockInfoResponseArray\n ? blockInfoResponseArray.map(formatBlockInfoResponse)\n : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getClientNodeUrlPool() {\n return config.endpointPool.map((endpoint) => endpoint.url);\n },\n /**\n * Retrieves a confirmation proof for a transaction with the specified sha256\n * hash.\n * @param txRid A buffer of 32 bytes\n * @param callback parameters (error, responseObjectProof) if first\n * parameter is not null, an error occurred.\n * If first parameter is null, then the second parameter is an object\n * like the following:\n *\n * {hash: messageHashBuffer,\n * blockHeader: blockHeaderBuffer,\n * signatures: [{pubKey: pubKeyBuffer, signature: sigBuffer}, ...],\n * merklePath: [{side: <0|1>, hash: <hash buffer level n-1>},\n * ...\n * {side: <0|1>, hash: <hash buffer level 1>}]}\n *\n * If no such transaction RID exists, the callback will be called with (null, null).\n *\n * The proof object can be validated using\n * postchain-common.util.validateMerklePath(proof.merklePath, proof.hash,\n * proof.blockHeader.slice(32, 64))\n *\n * The signatures must be validated agains some know trusted source for valid signers\n * at this specific block height.\n */\n getConfirmationProof(txRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(txRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${config.blockchainRid}/${ensureString(txRid)}/confirmationProof`, config);\n const confirmationProof = {\n merkleProofTree: \"\",\n txIndex: 0,\n };\n if (statusCode === 200) {\n try {\n const transactionConfirmationProof = isTransactionConfirmationProof(rspBody);\n if (!transactionConfirmationProof) {\n throw error;\n }\n const decodedProof = decodeValue(toBuffer(transactionConfirmationProof.proof));\n confirmationProof.txIndex = decodedProof.txIndex;\n confirmationProof.hash = decodedProof.hash;\n confirmationProof.blockHeader = decodedProof.blockHeader;\n confirmationProof.witness = decodedProof.witness;\n confirmationProof.merkleProofTree = decodedProof.merkleProofTree;\n }\n catch (decodeError) {\n if (callback) {\n callback(decodeError, null);\n }\n throw decodeError;\n }\n }\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 ? confirmationProof : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getClusterAnchoringTransactionConfirmation(transactionRid, anchoringClient, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const client = this;\n try {\n let confirmationProof;\n try {\n confirmationProof = yield client.getConfirmationProof(transactionRid);\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n return AnchoringStatus.NotAnchored;\n }\n const anchoringTransaction = yield getBlockAnchoringTransaction(client, anchoringClient, transactionRid, confirmationProof);\n if (!anchoringTransaction)\n return AnchoringStatus.NotAnchored;\n return anchoringTransaction;\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n return AnchoringStatus.FailedAnchoring;\n }\n });\n },\n getSystemAnchoringTransactionConfirmation(anchoredTxRid, anchoringClient, systemAnchoringChainRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(anchoredTxRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const systemAnchoringTransactionTransaction = yield getSystemAnchoringTransaction(config.endpointPool, anchoredTxRid, anchoringClient, systemAnchoringChainRid, config.systemAnchoringStatusPolling, config.merkleHashVersion);\n return systemAnchoringTransactionTransaction;\n });\n },\n getWaitingTransactions(blockchainRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/tx/${ensureString(blockchainRid)}/waiting`, config);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getWaitingTransaction(blockchainRid, txRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody, transactionTimestamp } = yield requestWithFailoverStrategy(Method.GET, `/tx/${ensureString(blockchainRid)}/waiting/${ensureString(txRid)}`, config);\n const transaction = isTransaction(rspBody);\n const result = transaction ? toBuffer(transaction.tx) : isRawGtv(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, result, callbackPromiseBuilder(reject, txData => resolve({\n txData: isRawGtv(txData),\n transactionTimestamp: Number(transactionTimestamp),\n }), callback));\n });\n });\n },\n getRejectedTransactions(blockchainRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/tx/${ensureString(blockchainRid)}/rejected`, config);\n const rejectedTransactionsArray = isRejectedTransactionResponseArray(rspBody);\n const validResponseBody = statusCode === 200 && rejectedTransactionsArray\n ? rejectedTransactionsArray.map(rejectedTransaction => formatRejectedTransactionFromResponse(rejectedTransaction))\n : rspBody;\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(validResponseBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n /**\n * Get app structure. Returns list of app modules in JSON format\n * @param callback - leverages error-first pattern and called when promise resolves\n */\n getAppStructure(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/query/${config.blockchainRid}?type=rell.get_app_structure`, config);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n };\n function getMerkleHashVersion(settings) {\n return __awaiter(this, void 0, void 0, function* () {\n let merkleHashVersion;\n if (settings.merkleHashVersion !== undefined) {\n merkleHashVersion = settings.merkleHashVersion;\n }\n else {\n merkleHashVersion = yield getMerkleHashVersionFromDapp(config);\n }\n return merkleHashVersion;\n });\n }\n });\n}\n//# sourceMappingURL=blockchainClient.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { FailoverStrategy } from \"./enums\";\nimport { Web3PromiEvent } from \"../promiEvent/promiEvents\";\nimport { createNodeManager } from \"./nodeManager\";\nimport { setStatusPolling } from \"./utils\";\nimport { MERKLE_HASH_VERSIONS } from \"../utils/constants\";\nexport function createStubClient() {\n return __awaiter(this, void 0, void 0, function* () {\n return {\n config: {\n merkleHashVersion: MERKLE_HASH_VERSIONS.ONE,\n nodeManager: createNodeManager({\n nodeUrls: [],\n }),\n endpointPool: [],\n blockchainRid: \"0000000000000000000000000000000000000000000000000000000000000000\",\n dappStatusPolling: setStatusPolling({ interval: 5000, count: 5 }),\n clusterAnchoringStatusPolling: setStatusPolling(),\n systemAnchoringStatusPolling: setStatusPolling(),\n failoverStrategy: FailoverStrategy.AbortOnError,\n attemptsPerEndpoint: 3,\n attemptInterval: 5000,\n unreachableDuration: 30000,\n directoryChainRid: \"1111111111111111111111111111111111111111111111111111111111111111\",\n },\n query() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"query rejected\");\n });\n },\n signTransaction() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"signTransaction rejected\");\n });\n },\n sendTransaction() {\n return new Web3PromiEvent((_resolve, reject) => reject(\"sendTransaction rejected\"));\n },\n signAndSendUniqueTransaction() {\n return new Web3PromiEvent((_resolve, reject) => reject(\"signAndSendUniqueTransaction rejected\"));\n },\n getTransaction() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransaction rejected\");\n });\n },\n getTransactionStatus() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionStatus rejected\");\n });\n },\n addNop() {\n throw new Error(\"addNop error\");\n },\n getTransactionsInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionsInfo rejected\");\n });\n },\n getTransactionInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionInfo rejected\");\n });\n },\n getAnchoringStatusForBlockRid() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getAnchoringStatusForBlockRid rejected\");\n });\n },\n getTransactionConfirmationLevel() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionConfirmationLevel rejected\");\n });\n },\n getTransactionCount() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionCount rejected\");\n });\n },\n getBlocks() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getBlockInfo rejected\");\n });\n },\n getBlockInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getBlockInfo rejected\");\n });\n },\n getLatestBlock() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getLatestBlock rejected\");\n });\n },\n getClientNodeUrlPool() {\n return [];\n },\n getConfirmationProof() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getConfirmationProof rejected\");\n });\n },\n getClusterAnchoringTransactionConfirmation() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getClusterAnchoringTransactionConfirmation rejected\");\n });\n },\n getSystemAnchoringTransactionConfirmation() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getSystemAnchoringTransactionConfirmation rejected\");\n });\n },\n getAppStructure() {\n return Promise.reject(\"getAppStructure rejected\");\n },\n getWaitingTransactions() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getWaitingTransactions rejected\");\n });\n },\n getWaitingTransaction() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getWaitingTransaction rejected\");\n });\n },\n getRejectedTransactions() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getRejectedTransactions rejected\");\n });\n },\n };\n });\n}\n//# sourceMappingURL=clientStub.js.map","import { GetTransactionRidException } from \"../blockchainClient/errors\";\nimport { getDigestToSignFromRawGtxBody } from \"../gtx/gtx\";\n/**\n * Calculates and returns the transaction RID, i.e., the merkle root hash of the transaction.\n * @param transaction The transaction in format of RawGtxBody\n *\n */\nexport function calculateTransactionRid(transaction, merkleHashVersion) {\n try {\n return getDigestToSignFromRawGtxBody(transaction, merkleHashVersion);\n }\n catch (error) {\n throw new GetTransactionRidException(error);\n }\n}\n//# sourceMappingURL=calculateTransactionRid.js.map","import { formatter } from \"../..\";\nexport function dumpGtx(gtxTx) {\n var _a;\n return `blockchainRid:\\n${formatter.toString(gtxTx.blockchainRid)}\\n\noperations:\n${gtxTx.operations.map(op => ` - ${op.opName}(${op.args.map(dumpGtv).join(\", \")})\\n`).join(\"\")}\nsigners:\n${gtxTx.signers.map(s => ` - ${formatter.toString(s)}\\n`).join(\"\")}\nsignatures:\n${(_a = gtxTx.signatures) === null || _a === void 0 ? void 0 : _a.map(s => ` - ${formatter.toString(s)}\\n`).join(\"\")}`;\n}\nexport function dumpGtv(rawGtv) {\n return JSON.stringify(rawGtv, (_key, value) => {\n if (typeof value === \"bigint\") {\n return `${value.toString()}L`;\n }\n if (Buffer.isBuffer(value)) {\n return formatter.toString(value);\n }\n if (typeof value === \"object\" &&\n value !== null &&\n value.type === \"Buffer\" &&\n Array.isArray(value.data)) {\n return `0x${value.data}`;\n }\n return value;\n });\n}\n//# sourceMappingURL=dump.js.map","import * as gtxTool from \"../gtx/gtx\";\nimport * as logger from \"../logger\";\nimport { dumpGtv } from \"./dump\";\n/**\n * Decodes the transaction using ASN.1.\n * @returns the transaction decoded in GTX format\n */\nexport function decodeTransactionToGtx(encodedTransaction) {\n const gtx = gtxTool.deserialize(encodedTransaction);\n logger.debug(`Output from deserializing a raw transaction: ${dumpGtv(gtx)}`);\n return gtx;\n}\n//# sourceMappingURL=decodeTransactionToGtx.js.map"],"names":["z","BN","gtvHash","encode","serialization.encodeValue","decode","serialization.decodeValue","secp256k1","crypto","sign","serialization.encodeValueGtx","serialization.decodeValueGtx","__awaiter","this","gtv.gtvHash","gtxEncode","gtxDecode","_a","FailoverStrategy","ResponseStatus","TransactionEvent","AnchoringStatus","ChainConfirmationLevel","logger.debug","error","logger.error","logger.warning","logger.info","gtxTool.deserialize","EventEmitter","gtx","gtxTool.sign","gtxTool.getDigestToSign","randomBytes","formatter.toString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/gtv/definition.js","../src/customError/index.js","../src/gtx/errors.js","../src/blockchainClient/validation/rawGtx.js","../src/formatter.js","../src/gtx/serialization.js","../src/utils/constants.js","../src/gtv/index.js","../src/encryption/errors.js","../src/encryption/encryption.js","../src/gtx/index.js","../src/gtx/gtx.js","../src/logger.js","../src/blockchainClient/errors.js","../src/blockchainClient/enums.js","../src/blockchainClient/nodeManager.js","../src/blockchainClient/validation/bufferSchema.js","../src/blockchainClient/validation/txRid.js","../src/blockchainClient/validation/anchoringTransaction.js","../src/ICCF/error.js","../src/blockchainClient/validation/requests.js","../src/utils/encodeTransaction.js","../src/blockchainClient/validation/merkleHash.js","../src/blockchainClient/httpUtil.js","../src/blockchainClient/failoverStrategies.js","../src/blockchainClient/requestWithFailoverStrategy.js","../src/blockchainClient/utils.js","../src/ICCF/utils.js","../src/ICCF/IccfProofTxMaterialBuilder.js","../src/promiEvent/promiEventEmitter.js","../src/promiEvent/promiEvents.js","../src/blockchainClient/validation/blockIdentifier.js","../src/blockchainClient/validation/networkSettings.js","../src/blockchainClient/validation/signMethod.js","../src/blockchainClient/validation/transactionStatusReponse.js","../src/blockchainClient/blockchainClient.js","../src/blockchainClient/clientStub.js","../src/utils/calculateTransactionRid.js","../src/utils/dump.js","../src/utils/decodeTransactionToGtx.js"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-nocheck\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst asn = require(\"@chromia/asn1/lib/asn1\");\nexport const ASNDictPair = asn.define(\"DictPair\", function () {\n this.seq().obj(this.key(\"name\").utf8str(), this.key(\"value\").use(rawGTV));\n});\nexport const rawGTV = asn.define(\"GtvValue\", function () {\n this.choice({\n null: this.explicit(0).null_(),\n byteArray: this.explicit(1).octstr(),\n string: this.explicit(2).utf8str(),\n integer: this.explicit(3).int(),\n dict: this.explicit(4).seqof(ASNDictPair),\n array: this.explicit(5).seqof(rawGTV),\n bigInteger: this.explicit(6).int(),\n });\n});\nexport const ASNBuffer = asn.define(\"Buffer\", function () {\n this.octstr();\n});\n//# sourceMappingURL=definition.js.map","export class CustomError extends Error {\n constructor(message, status) {\n super(message);\n this.name = this.constructor.name;\n this.status = status;\n }\n}\n//# sourceMappingURL=index.js.map","import { CustomError } from \"../customError\";\nexport class UnexpectedArgumentTypeError extends CustomError {\n constructor(typedArg) {\n super(`Cannot parse typedArg ${JSON.stringify(typedArg)}. Unknown type ${typedArg.type}`, 400);\n }\n}\nexport class MissingGtxException extends CustomError {\n constructor() {\n super(`Missing instance of gtx protocol (used for communicating with postchain) to add operation to`, 400);\n }\n}\nexport class AlreadySignedTransactionException extends CustomError {\n constructor(operation) {\n super(`Cannot add ${operation} calls to an already signed gtx`, 400);\n }\n}\nexport class NumberOfSignersAndSignaturesException extends CustomError {\n constructor() {\n super(`Not matching number of signers and signatures`, 400);\n }\n}\nexport class MissingSignerException extends CustomError {\n constructor() {\n super(`No such signer, remember to add signer to transaction before adding a signature`, 400);\n }\n}\n//# sourceMappingURL=errors.js.map","import { Buffer } from \"buffer\";\nimport { z } from \"zod\";\nconst bufferSchema = z.custom(val => Buffer.isBuffer(val), {\n message: \"Expected Buffer\",\n});\nconst rawGtvSchema = z.lazy(() => z.union([\n z.null(),\n z.boolean(),\n bufferSchema,\n z.string(),\n z.number(),\n z.bigint(),\n z.array(rawGtvSchema),\n z.record(rawGtvSchema),\n]));\nconst rawGtxOpSchema = z.tuple([z.string(), z.array(rawGtvSchema)]);\nconst rawGtxBodySchema = z.tuple([bufferSchema, z.array(rawGtxOpSchema), z.array(bufferSchema)]);\nconst rawGtxSchema = z.tuple([rawGtxBodySchema, z.array(bufferSchema)]);\nexport function isRawGtx(value) {\n const result = rawGtxSchema.safeParse(value);\n return result.success;\n}\n//# sourceMappingURL=rawGtx.js.map","import { Buffer } from \"buffer\";\nimport { isRawGtx } from \"./blockchainClient/validation/rawGtx\";\nexport function pgBytes(buffer) {\n if (!Buffer.isBuffer(buffer)) {\n throw new PgBytesInputException(buffer);\n }\n return `\\\\x${buffer.toString(\"hex\")}`;\n}\n/**\n * Converts hex string to Buffer\n * @param key: string\n * @returns {Buffer}\n */\nexport function toBuffer(key) {\n return Buffer.from(key, \"hex\");\n}\n/**\n * Converts Buffer to hex string\n * @param buffer: Buffer\n * @returns {string}\n */\nexport function toString(buffer) {\n return buffer.toString(\"hex\").toUpperCase();\n}\nexport function toQueryObjectGTV(nameOrObject, queryArguments) {\n if (typeof nameOrObject === \"string\") {\n return [nameOrObject, Object.assign({}, queryArguments)];\n }\n else {\n const { name, args } = nameOrObject;\n return [name, args || {}];\n }\n}\nexport class PgBytesInputException extends Error {\n constructor(buffer) {\n super(`util.pgBytes expects a buffer, but got ${typeof buffer}`);\n }\n}\nexport function ensureBuffer(value) {\n if (value instanceof Buffer) {\n return value;\n }\n else {\n return toBuffer(value);\n }\n}\nexport function ensureString(value) {\n if (typeof value === \"string\") {\n return value.toUpperCase();\n }\n else {\n return toString(value);\n }\n}\nexport function checkGtvType(value) {\n try {\n if (value == null) {\n return true;\n }\n if (Buffer.isBuffer(value)) {\n return true;\n }\n if (typeof value === \"string\" || typeof value === \"bigint\") {\n return true;\n }\n if (typeof value === \"number\") {\n if (!Number.isInteger(value)) {\n throw Error(\"User error: Only integers are supported\");\n }\n return true;\n }\n if (Array.isArray(value)) {\n return value.every(item => checkGtvType(item));\n }\n if (typeof value === \"object\") {\n return Object.values(value).every(val => checkGtvType(val));\n }\n }\n catch (error) {\n throw new Error(`Failed to check type: ${error}`);\n }\n return false;\n}\nexport function rawGtxToGtx(rawGtx) {\n const rawGtxBody = rawGtx[0];\n const signatures = rawGtx[1];\n const gtxBody = {\n blockchainRid: rawGtxBody[0],\n operations: rawGtxBody[1].map((operation) => ({\n opName: operation[0],\n args: operation[1],\n })),\n signers: rawGtxBody[2],\n };\n return {\n blockchainRid: gtxBody.blockchainRid,\n operations: gtxBody.operations,\n signers: gtxBody.signers,\n signatures,\n };\n}\nexport function rawGtxToRawGtxBody(rawGtx) {\n return rawGtx[0];\n}\nexport function checkGtxType(value) {\n if (!isRawGtx(value))\n return false;\n try {\n rawGtxToGtx(value);\n return true;\n }\n catch (error) {\n return false;\n }\n}\nexport function removeDuplicateSigners(signers) {\n const signersAsString = [];\n signers.forEach(item => {\n const itemAsString = item.toString(\"hex\");\n if (!signersAsString.includes(itemAsString)) {\n signersAsString.push(itemAsString);\n }\n });\n const result = [];\n signersAsString.forEach(item => {\n result.push(Buffer.from(item, \"hex\"));\n });\n return result;\n}\nexport function matchRellErrorString(rellError) {\n const parsed = rellError.match(/\\[([^\\]]+)\\]\\sOperation\\s'([^']+)'\\sfailed:\\s(.+)$/);\n if (!parsed)\n return {};\n const [rellLine, operation, shortReason] = parsed.slice(1);\n return { shortReason, rellLine, operation };\n}\n//# sourceMappingURL=formatter.js.map","import { Buffer } from \"buffer\";\nimport { rawGTV } from \"../gtv/definition\";\nimport { BN } from \"bn.js\";\nimport { UnexpectedArgumentTypeError } from \"./errors\";\nimport { checkGtxType } from \"../formatter\";\nexport function encodeValue(rawGtv) {\n return rawGTV.encode(createTypedArg(rawGtv));\n}\nexport function encodeValueGtx(rawGtx) {\n return encodeValue(rawGtx);\n}\nexport function decodeValue(bytes) {\n try {\n const obj = rawGTV.decode(bytes);\n return parseValue(obj);\n }\n catch (error) {\n throw new Error(`Invalid GTV data. ${error}`);\n }\n}\nexport function decodeValueGtx(bytes) {\n const decodedValue = decodeValue(bytes);\n if (!checkGtxType(decodedValue)) {\n throw new Error(`Unexpected type of value: ${decodedValue}, expected decoded value to be of type RawGtx`);\n }\n return decodedValue;\n}\nexport function parseValue(typedArg) {\n var _a, _b;\n if (typedArg.type === \"null\") {\n return null;\n }\n else if (typedArg.type === \"byteArray\") {\n return typedArg.value;\n }\n else if (typedArg.type === \"string\") {\n return typedArg.value;\n }\n else if (typedArg.type === \"integer\") {\n return Number(typedArg.value);\n }\n else if (typedArg.type === \"array\") {\n const arrayValue = typedArg.value;\n return arrayValue.map((item) => parseValue(item));\n }\n else if (typedArg.type === \"bigInteger\") {\n return BigInt((_b = (_a = typedArg.value) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : \"\");\n }\n else if (typedArg.type === \"dict\") {\n const arrayValue = typedArg.value;\n const result = {};\n arrayValue.forEach((pair) => {\n result[pair.name] = parseValue(pair.value);\n });\n return result;\n }\n else {\n throw new UnexpectedArgumentTypeError(typedArg);\n }\n}\nexport function createTypedArg(value) {\n try {\n if (value == null) {\n return { type: \"null\", value: null };\n }\n if (Buffer.isBuffer(value)) {\n return { type: \"byteArray\", value: value };\n }\n if (typeof value === \"boolean\") {\n return { type: \"integer\", value: value ? 1 : 0 };\n }\n if (typeof value === \"string\") {\n return { type: \"string\", value: value };\n }\n if (typeof value === \"number\") {\n if (!Number.isInteger(value)) {\n throw Error(\"User error: Only integers are supported\");\n }\n return { type: \"integer\", value: new BN(value) };\n }\n if (typeof value === \"bigint\") {\n return { type: \"bigInteger\", value: new BN(value.toString()) };\n }\n if (value.constructor === Array) {\n return {\n type: \"array\",\n value: value.map(item => createTypedArg(item)),\n };\n }\n if (typeof value === \"object\") {\n let valueAsDictPair = value;\n if (isDictPairWithStringKey(valueAsDictPair)) {\n valueAsDictPair = sortDictPairByKey(valueAsDictPair);\n }\n return {\n type: \"dict\",\n value: Object.keys(valueAsDictPair).map(function (key) {\n return { name: key, value: createTypedArg(valueAsDictPair[key]) };\n }),\n };\n }\n }\n catch (error) {\n const message = value ? value.toString() : \"RawGtv\";\n throw new Error(`Failed to encode ${message}: ${error}`);\n }\n throw new Error(`value ${value} have unsupported type: ${typeof value}`);\n}\nfunction isDictPairWithStringKey(obj) {\n for (const key in obj) {\n if (typeof key !== \"string\") {\n return false;\n }\n }\n return true;\n}\nfunction sortDictPairByKey(dict) {\n const sortedArray = Object.entries(dict).sort(([keyA], [keyB]) => {\n if (keyA < keyB) {\n return -1;\n }\n if (keyA > keyB) {\n return 1;\n }\n return 0;\n });\n const sortedDict = {};\n for (const [key, value] of sortedArray) {\n sortedDict[key] = value;\n }\n return sortedDict;\n}\n//# sourceMappingURL=serialization.js.map","export const MERKLE_HASH_VERSIONS = {\n ONE: 1,\n TWO: 2,\n UNSET: NaN,\n};\n//# sourceMappingURL=constants.js.map","import { gtvHash } from \"merklehashts\";\nimport * as serialization from \"../gtx/serialization\";\nimport { MERKLE_HASH_VERSIONS } from \"../utils/constants\";\nconst gtvHash2 = (obj, merkleHashVersion) => {\n if (!Object.values(MERKLE_HASH_VERSIONS).includes(merkleHashVersion)) {\n throw new Error(\"Merkle hash version is not valid\");\n }\n if (isNaN(merkleHashVersion)) {\n throw new Error(\"Merkle hash version is not set\");\n }\n return gtvHash(obj, merkleHashVersion);\n};\nconst encode = serialization.encodeValue;\nconst decode = serialization.decodeValue;\nexport { encode, decode, gtvHash2 as gtvHash };\n//# sourceMappingURL=index.js.map","export class PrivKeyFormatException extends Error {\n constructor(privKey) {\n super(`Invalid key length. Expected 32, but got ${privKey.length}`);\n }\n}\nexport class MissingPrivKeyArgumentException extends Error {\n constructor() {\n super(`Missing argument privKey`);\n }\n}\n//# sourceMappingURL=errors.js.map","import { Buffer } from \"buffer\";\nimport * as crypto from \"crypto\";\nimport * as secp256k1 from \"secp256k1\";\nimport { ensureBuffer } from \"../formatter\";\nimport { MissingPrivKeyArgumentException, PrivKeyFormatException } from \"./errors\";\nexport function createPublicKey(privKey) {\n validatePrivKeyFormat(privKey);\n return Buffer.from(secp256k1.publicKeyCreate(privKey, true).buffer);\n}\nexport function randomBytes(size) {\n return crypto.randomBytes(size);\n}\nexport function sha256(buffer) {\n return crypto.createHash(\"sha256\").update(buffer).digest();\n}\nexport const hash256 = sha256;\nexport function hashConcat(items) {\n return hash256(Buffer.concat(items));\n}\n/**\n * @param content the content that the signature signs. It will be digested before validating.\n * @param pubKey The pubKey to validate the signature with\n * @param signature the signature to validate\n *\n * @return true if signature ok, false otherwise\n */\nexport function checkSignature(content, pubKey, signature) {\n const digest = hash256(content);\n return checkDigestSignature(digest, pubKey, signature);\n}\n/**\n * @param digest the signed digest. It will not be digested before validating.\n * @param pubKey The pubKey to validate the signature with\n * @param signature the signature to validate\n *\n * @return true if signature ok, false otherwise\n */\nexport function checkDigestSignature(digest, pubKey, signature) {\n return secp256k1.ecdsaVerify(signature, digest, pubKey);\n}\n/**\n * @param content to sign. It will be digested before signing.\n * @param privKey The private key to sign the content with\n *\n * @return the signature\n */\nexport function sign(content, privKey) {\n validatePrivKeyFormat(privKey);\n const digestBuffer = sha256(content);\n return signDigest(digestBuffer, privKey);\n}\n/**\n * @param digestBuffer to sign. It will not be digested before signing.\n * @param privKey The private key to sign the digest with\n *\n * @return the signature\n */\nexport function signDigest(digestBuffer, privKey) {\n return Buffer.from(secp256k1.ecdsaSign(digestBuffer, privKey).signature);\n}\n/**\n * Creates a key pair (which usually represents one user)\n * @param privKey to create key pair based on\n * @returns {{pubKey: Buffer, privKey: Buffer}}\n */\nexport function makeKeyPair(privKey) {\n let pubKey;\n if (privKey) {\n privKey = ensureBuffer(privKey);\n pubKey = createPublicKey(privKey);\n }\n else {\n do {\n privKey = randomBytes(32);\n } while (!secp256k1.privateKeyVerify(privKey));\n pubKey = Buffer.from(secp256k1.publicKeyCreate(privKey).buffer);\n }\n return { pubKey, privKey };\n}\n/**\n * Generates a 16bytes TUID (Text unique ID) (a 32characters long string)\n * @returns string\n */\nexport function makeTuid() {\n return randomBytes(16).toString(\"hex\");\n}\n/**\n * Verify that keypair is correct. Providing the private key, this function returns its associated public key\n * @param privKey: Buffer\n * @returns {{pubKey: Buffer, privKey: Buffer}}\n */\nexport function verifyKeyPair(privKey) {\n validatePrivKeyFormat(privKey);\n const pubKey = Buffer.from(secp256k1.publicKeyCreate(privKey).buffer);\n return { pubKey, privKey };\n}\nfunction validatePrivKeyFormat(privKey) {\n if (!privKey) {\n throw new MissingPrivKeyArgumentException();\n }\n if (!Buffer.isBuffer(privKey) || privKey.length !== 32) {\n throw new PrivKeyFormatException(privKey);\n }\n}\n//# sourceMappingURL=encryption.js.map","import * as serialization from \"./serialization\";\nconst encode = serialization.encodeValueGtx;\nconst decode = serialization.decodeValueGtx;\nexport { encode, decode };\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Buffer } from \"buffer\";\nimport * as gtv from \"../gtv\";\nimport { checkDigestSignature, createPublicKey, makeKeyPair, signDigest, } from \"../encryption/encryption\";\nimport { AlreadySignedTransactionException, MissingGtxException, MissingSignerException, } from \"./errors\";\nimport { encode as gtxEncode, decode as gtxDecode } from \"./index\";\nimport { ensureBuffer } from \"../formatter\";\nexport function emptyGtx(blockchainRid) {\n return { blockchainRid, operations: [], signers: [] };\n}\n/**\n * Adds a function call to a GTX. Creates a new GTX if none specified.\n * This function will throw Error if gtx is already signed\n * @param opName the name of the function to call\n * @param args the array of arguments of the function call. If no args, this must be an empty array\n * @param gtx the function call will be added to this gtx\n * @returns the gtx\n * @throws if gtx is null or if gtx is already signed\n */\nexport function addTransactionToGtx(opName, args, gtx) {\n if (gtx == null) {\n throw new MissingGtxException();\n }\n if (gtx.signatures) {\n throw new AlreadySignedTransactionException(\"function\");\n }\n gtx.operations.push({ opName: opName, args: args });\n return gtx;\n}\nexport function addSignerToGtx(signer, gtx) {\n if (gtx.signatures) {\n throw new AlreadySignedTransactionException(\"signer\");\n }\n gtx.signers.push(signer);\n}\n/**\n * Serializes the gtx to get tx hash\n * @param gtx the gtx to serialize\n */\nexport function getDigest(gtx, merkleHashVersion) {\n return gtv.gtvHash(gtxToRawGtxBody(gtx), merkleHashVersion);\n}\n/**\n * Serializes the gtx for signing\n * @param gtx the gtx to serialize\n */\nexport function getDigestToSign(gtx, merkleHashVersion) {\n return gtv.gtvHash(gtxToRawGtxBody(gtx), merkleHashVersion);\n}\nexport function getDigestToSignFromRawGtxBody(gtxBody, merkleHashVersion) {\n return gtv.gtvHash(gtxBody, merkleHashVersion);\n}\nexport function gtxToRawGtxBody(gtx) {\n return [\n gtx.blockchainRid,\n gtx.operations.map((op) => [op.opName, op.args]),\n gtx.signers,\n ];\n}\nexport function gtxToRawGtx(gtx) {\n var _a;\n return [\n [\n gtx.blockchainRid,\n gtx.operations.map((op) => [op.opName, op.args]),\n gtx.signers,\n ],\n (_a = gtx.signatures) !== null && _a !== void 0 ? _a : [],\n ];\n}\nexport function sign(gtx, privOrSigProv, merkleHashVersion, pubKey) {\n return __awaiter(this, void 0, void 0, function* () {\n if (privOrSigProv instanceof Buffer) {\n const digestToSign = getDigestToSign(gtx, merkleHashVersion);\n const signature = signDigest(digestToSign, privOrSigProv);\n return addSignature(pubKey || makeKeyPair(privOrSigProv).pubKey, signature, gtx);\n }\n else {\n // Removes signatures and extract the rawgtxBody\n const rawGtxBody = gtxToRawGtxBody(gtx);\n const signature = yield privOrSigProv.sign(rawGtxBody, merkleHashVersion);\n return addSignature(privOrSigProv.pubKey, signature, gtx);\n }\n });\n}\n/**\n * Adds a signature to the gtx\n */\nexport function addSignature(pubKeyBuffer, signatureBuffer, gtx) {\n if (!gtx.signatures) {\n gtx.signatures = Array(gtx.signers.length);\n }\n const signerIndex = gtx.signers.findIndex((signer) => pubKeyBuffer.equals(signer));\n if (signerIndex === -1) {\n throw new MissingSignerException();\n }\n gtx.signatures[signerIndex] = signatureBuffer;\n return gtx;\n}\nexport function serialize(gtx) {\n if (!gtx.signatures) {\n // TODO\n // The gtx is not signed, but we must include\n // the signatures attribute, so let's add that.\n gtx.signatures = [];\n }\n return gtxEncode([gtxToRawGtxBody(gtx), gtx.signatures]);\n}\nexport function deserialize(gtxBytes) {\n const deserializedTx = gtxDecode(gtxBytes);\n const body = deserializedTx[0];\n const gtvTxBody = {\n blockchainRid: body[0],\n operations: body[1].map((operation) => ({\n opName: operation[0],\n args: operation[1],\n })),\n signers: body[2],\n };\n const signatures = deserializedTx[1];\n return {\n blockchainRid: gtvTxBody.blockchainRid,\n operations: gtvTxBody.operations,\n signers: gtvTxBody.signers,\n signatures,\n };\n}\nexport function checkGTXSignatures(txHash, gtx) {\n var _a;\n if (!Array.isArray(gtx.signatures) || gtx.signatures.length === 0) {\n return false;\n }\n for (const i in gtx.signers) {\n const signValid = checkDigestSignature(txHash, gtx.signers[i], (_a = gtx.signatures) === null || _a === void 0 ? void 0 : _a[i]);\n if (!signValid)\n return signValid;\n }\n return true;\n}\nexport function checkExistingGTXSignatures(txHash, gtx) {\n var _a;\n for (const i in gtx.signers) {\n if ((_a = gtx.signatures) === null || _a === void 0 ? void 0 : _a[i]) {\n const signValid = checkDigestSignature(txHash, gtx.signers[i], gtx.signatures[i]);\n if (!signValid)\n return signValid;\n }\n }\n return true;\n}\nexport function newSignatureProvider(keyPair) {\n let pub, priv;\n if (keyPair) {\n priv = ensureBuffer(keyPair.privKey);\n pub = keyPair.pubKey ? ensureBuffer(keyPair.pubKey) : createPublicKey(priv);\n }\n else {\n ({ privKey: priv, pubKey: pub } = makeKeyPair());\n }\n return {\n pubKey: pub,\n sign: (gtx, merkleHashVersion) => __awaiter(this, void 0, void 0, function* () {\n const signature = getDigestToSignFromRawGtxBody(gtx, merkleHashVersion);\n return signDigest(signature, priv);\n }),\n };\n}\nexport function rawGtvToGtx(gtv) {\n if (Array.isArray(gtv) && gtv.length !== 2) {\n throw new Error(\"Gtv must be an array of size 2\");\n }\n const gtvArray = gtv;\n if (!Array.isArray(gtvArray[0])) {\n throw new Error(\"First element must be an array\");\n }\n if (!Array.isArray(gtvArray[1])) {\n throw new Error(\"Second element must be an array\");\n }\n gtvArray[1].forEach(element => {\n if (!Buffer.isBuffer(element)) {\n throw new Error(\"Element must be a buffer\");\n }\n });\n const gtxBody = rawGtvToGtxBody(gtvArray[0]);\n return Object.assign(Object.assign({}, gtxBody), { signatures: gtvArray[1] });\n}\nfunction rawGtvToGtxBody(gtv) {\n if (Array.isArray(gtv) && gtv.length !== 3) {\n throw new Error(\"Gtv must be an array of size 3\");\n }\n const array = gtv;\n if (!Buffer.isBuffer(array[0])) {\n throw new Error(\"First element must be a byte array\");\n }\n if (!Array.isArray(array[1])) {\n throw new Error(\"Second element must be an array\");\n }\n if (!Array.isArray(array[2])) {\n throw new Error(\"Third element must be an array\");\n }\n array[2].forEach(element => {\n if (!Buffer.isBuffer(element)) {\n throw new Error(\"Element must be a buffer\");\n }\n });\n return {\n blockchainRid: array[0],\n operations: array[1].map(element => rawGtvToRellOp(element)),\n signers: array[2],\n };\n}\nfunction rawGtvToRellOp(gtv) {\n if (Array.isArray(gtv) && gtv.length !== 2) {\n throw new Error(\"Gtv must be an array of size 2\");\n }\n const array = gtv;\n if (typeof array[0] !== \"string\") {\n throw new Error(\"First element must be a string\");\n }\n if (!Array.isArray(array[1])) {\n throw new Error(\"Second element must be an array\");\n }\n return { opName: array[0], args: array[1] };\n}\n//# sourceMappingURL=gtx.js.map","var _a;\nvar MsgType;\n(function (MsgType) {\n MsgType[\"Debug\"] = \"DEBUG\";\n MsgType[\"Info\"] = \"INFO\";\n MsgType[\"Error\"] = \"ERROR\";\n MsgType[\"Warning\"] = \"WARNING\";\n})(MsgType || (MsgType = {}));\nvar LogColor;\n(function (LogColor) {\n LogColor[\"Red\"] = \"\\u001B[91m\";\n LogColor[\"Green\"] = \"\\u001B[92m\";\n LogColor[\"Blue\"] = \"\\u001B[36m\";\n LogColor[\"Yellow\"] = \"\\u001B[93m\";\n LogColor[\"StopColor\"] = \"\\u001B[0m\";\n})(LogColor || (LogColor = {}));\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"Debug\"] = \"DEBUG\";\n LogLevel[\"Info\"] = \"INFO\";\n LogLevel[\"Error\"] = \"ERROR\";\n LogLevel[\"Warning\"] = \"WARNING\";\n LogLevel[\"Disabled\"] = \"DISABLED\";\n})(LogLevel || (LogLevel = {}));\nconst logLevelMap = {\n [LogLevel.Warning]: 1,\n [LogLevel.Info]: 2,\n [LogLevel.Debug]: 3,\n [LogLevel.Error]: 0,\n [LogLevel.Disabled]: -1,\n};\nconst DEFAULT_LOG_LEVEL = logLevelMap[LogLevel.Warning];\nlet logLevel = typeof process === \"undefined\"\n ? DEFAULT_LOG_LEVEL\n : (_a = logLevelMap[process.env.LOG_LEVEL]) !== null && _a !== void 0 ? _a : DEFAULT_LOG_LEVEL;\nexport function setLogLevel(level) {\n logLevel = logLevelMap[level];\n}\nexport function getLogLevel() {\n return Object.keys(logLevelMap).find(key => logLevelMap[key] === logLevel);\n}\nexport function debug(message, moduleName) {\n if (logLevel >= 3) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Debug,\n color: LogColor.Blue,\n });\n }\n}\nexport function info(message, moduleName) {\n if (logLevel >= 2) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Info,\n color: LogColor.Green,\n });\n }\n}\nexport function error(message, moduleName) {\n if (logLevel != -1) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Error,\n color: LogColor.Red,\n });\n }\n}\nexport function warning(message, moduleName) {\n if (logLevel >= 1) {\n emitLogMessage({\n message,\n moduleName,\n msgType: MsgType.Warning,\n color: LogColor.Yellow,\n });\n }\n}\nfunction emitLogMessage({ msgType, message, color, moduleName, }) {\n const time = getTimestamp();\n const moduleNameMessage = moduleName ? `[${moduleName}]` : \"\";\n console.log(`[${time}] ${color}${msgType}:${LogColor.StopColor} ${moduleNameMessage} ${message}`);\n}\nfunction getTimestamp() {\n const pad = (n, s = 2) => `${new Array(s).fill(0)}${n}`.slice(-s);\n const date = new Date();\n return `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}:${pad(date.getMilliseconds(), 3)}`;\n}\nexport function logger(moduleName) {\n return {\n debug: (message) => debug(message, moduleName),\n info,\n error,\n warning,\n setLogLevel,\n disable: () => setLogLevel(LogLevel.Disabled),\n };\n}\n//# sourceMappingURL=logger.js.map","import { CustomError } from \"../customError\";\nimport { matchRellErrorString } from \"../formatter\";\nexport class MissingPubKeyError extends CustomError {\n constructor() {\n super(`No public key was provided`, 400);\n }\n}\nexport class MissingBlockchainIdentifierError extends CustomError {\n constructor() {\n super(`No blockchain identifier was provided. Include either a blockchainRid (string) or a blockchainIid (number).`, 400);\n }\n}\nexport class MissingNodeUrlError extends CustomError {\n constructor() {\n super(`No node url or directory node url was provided. Include either a nodeUrl (string or string[]) or a directory node url (string or string[]).`, 400);\n }\n}\nexport class BlockchainUrlUndefinedException extends CustomError {\n constructor(brid) {\n const idType = typeof brid === \"string\" ? \"BRID\" : \"IID\";\n super(`Cannot find nodes hosting the blockchain with ${idType} ${brid}`, 400);\n }\n}\nexport class DirectoryNodeUrlPoolException extends CustomError {\n constructor() {\n super(`No directory node url was provided`, 400);\n }\n}\nexport class InvalidTransactionFormatException extends CustomError {\n constructor() {\n super(`The transaction is not in the right format`, 400);\n }\n}\nexport class GetTransactionRidException extends CustomError {\n constructor(error) {\n super(`\"Error occurred while getting transaction RID:\", ${error}`, 400);\n }\n}\nexport class TxRejectedError extends Error {\n constructor(rejectReason) {\n super(`Transaction was rejected, ${rejectReason}`);\n this.name = \"TxRejectedError\";\n this.fullReason = rejectReason;\n const result = matchRellErrorString(rejectReason);\n this.shortReason = result.shortReason;\n this.rellLine = result.rellLine;\n this.operation = result.operation;\n }\n}\nexport class UnexpectedStatusError extends CustomError {\n constructor(status, error) {\n let errorMessage = `Unexpected status code from server. Code: ${status}.`;\n if (status === null) {\n super(errorMessage, 500); // default status code\n }\n else {\n if (error) {\n errorMessage += ` Message: ${error}.`;\n }\n super(errorMessage, status);\n }\n }\n}\nexport class InvalidTxRidException extends CustomError {\n constructor(txRID) {\n super(`expected length 32 of txRID, but got ${txRID && txRID.length}`, 400);\n }\n}\nexport class SerializedTransactionFormatException extends CustomError {\n constructor() {\n super(`messageHash is not a Buffer`, 400);\n }\n}\nexport class GetBridFromChainException extends Error {\n constructor(chainId, reason) {\n super(`Error resolving BRID for chainId ${chainId}, reason: ${reason}`);\n }\n}\n//# sourceMappingURL=errors.js.map","export var FailoverStrategy;\n(function (FailoverStrategy) {\n FailoverStrategy[\"AbortOnError\"] = \"abortOnError\";\n FailoverStrategy[\"TryNextOnError\"] = \"tryNextOnError\";\n FailoverStrategy[\"SingleEndpoint\"] = \"singleEndpoint\";\n FailoverStrategy[\"QueryMajority\"] = \"queryMajority\";\n})(FailoverStrategy || (FailoverStrategy = {}));\nexport var ResponseStatus;\n(function (ResponseStatus) {\n ResponseStatus[\"Pending\"] = \"pending\";\n ResponseStatus[\"Confirmed\"] = \"confirmed\";\n ResponseStatus[\"Rejected\"] = \"rejected\";\n ResponseStatus[\"Unknown\"] = \"unknown\";\n ResponseStatus[\"Waiting\"] = \"waiting\";\n})(ResponseStatus || (ResponseStatus = {}));\nexport var TransactionEvent;\n(function (TransactionEvent) {\n TransactionEvent[\"ClusterAnchoringConfirmation\"] = \"clusterAnchoringConfirmed\";\n TransactionEvent[\"SystemAnchoringConfirmation\"] = \"systemAnchoringConfirmed\";\n TransactionEvent[\"DappConfirmed\"] = \"dappConfirmed\";\n TransactionEvent[\"DappReceived\"] = \"dappReceived\";\n TransactionEvent[\"Signed\"] = \"signed\";\n TransactionEvent[\"Rejected\"] = \"rejected\";\n})(TransactionEvent || (TransactionEvent = {}));\nexport var AnchoringStatus;\n(function (AnchoringStatus) {\n AnchoringStatus[\"NotAnchored\"] = \"notAnchored\";\n AnchoringStatus[\"ClusterAnchored\"] = \"clusterAnchored\";\n AnchoringStatus[\"SystemAnchored\"] = \"systemAnchored\";\n AnchoringStatus[\"FailedAnchoring\"] = \"failedAnchoring\";\n})(AnchoringStatus || (AnchoringStatus = {}));\nexport var ChainConfirmationLevel;\n(function (ChainConfirmationLevel) {\n ChainConfirmationLevel[\"None\"] = \"none\";\n ChainConfirmationLevel[\"Dapp\"] = \"dapp\";\n ChainConfirmationLevel[\"ClusterAnchoring\"] = \"clusterAnchoring\";\n ChainConfirmationLevel[\"SystemAnchoring\"] = \"systemAnchoring\";\n ChainConfirmationLevel[\"EvmNetwork\"] = \"evmNetwork\";\n})(ChainConfirmationLevel || (ChainConfirmationLevel = {}));\nexport var Method;\n(function (Method) {\n Method[\"GET\"] = \"get\";\n Method[\"POST\"] = \"post\";\n})(Method || (Method = {}));\n//# sourceMappingURL=enums.js.map","const shuffleArray = (array) => {\n const shuffledArray = [...array];\n for (let i = shuffledArray.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [shuffledArray[i], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i]];\n }\n return shuffledArray;\n};\nexport const createNodeManager = ({ nodeUrls, useStickyNode = false, unavailableDuration = 5000, }) => {\n const nodes = nodeUrls.map(url => ({\n url,\n whenAvailable: 0,\n isAvailable: true,\n }));\n return {\n nodes,\n stickedNode: null,\n useStickyNode: useStickyNode,\n lastUsedNode: null,\n getAvailableNodes() {\n const shuffledAvailableNodes = shuffleArray(this.nodes.filter((node) => node.isAvailable));\n // set sticky node as the first node, and then shuffle the rest\n if (useStickyNode && this.stickedNode && this.stickedNode.isAvailable) {\n const nodesWithoutSticky = shuffledAvailableNodes.filter(node => node !== this.stickedNode);\n return [this.stickedNode, ...nodesWithoutSticky];\n }\n return shuffledAvailableNodes;\n },\n setStickyNode(node) {\n this.stickedNode = node;\n },\n setUseStickyNode(useSticky) {\n this.useStickyNode = useSticky;\n },\n getNode() {\n const nodes = this.getAvailableNodes();\n if (nodes.length === 0) {\n return null;\n }\n const index = Math.floor(Math.random() * nodes.length);\n const node = nodes[index];\n this.lastUsedNode = node;\n if (!useStickyNode) {\n return node;\n }\n if (!this.stickedNode) {\n this.setStickyNode(node);\n return node;\n }\n this.lastUsedNode = this.stickedNode;\n return this.stickedNode;\n },\n makeAllNodesAvailable() {\n this.nodes = this.nodes.map((node) => {\n return Object.assign(Object.assign({}, node), { isAvailable: true, whenAvailable: 0 });\n });\n },\n makeNodeUnavailable(nodeUrl) {\n if (this.stickedNode && this.stickedNode.url === nodeUrl) {\n this.stickedNode = null;\n }\n const updatedNodes = this.nodes.map((node) => {\n if (node.url === nodeUrl) {\n return Object.assign(Object.assign({}, node), { isAvailable: false, whenAvailable: Date.now() + unavailableDuration });\n }\n return node;\n });\n this.nodes = updatedNodes;\n },\n };\n};\n//# sourceMappingURL=nodeManager.js.map","import { Buffer } from \"buffer\";\nimport { z } from \"zod\";\nexport const BufferSchema = z.union([z.instanceof(Uint8Array), z.instanceof(Buffer)]);\n//# sourceMappingURL=bufferSchema.js.map","import { InvalidTxRidException } from \"../errors\";\nimport { BufferSchema } from \"./bufferSchema\";\nexport const TxRidSchema = BufferSchema.refine(x => x.length === 32, \"Rid must be 32 bytes long\");\nexport const isTxRidValid = (rid, options) => {\n const TxRidValidationContext = TxRidSchema.safeParse(rid);\n const { throwOnError = false } = options || {};\n const hasError = \"error\" in TxRidValidationContext;\n if (!hasError) {\n return { success: true };\n }\n const validationError = new InvalidTxRidException(rid);\n if (throwOnError) {\n throw validationError;\n }\n return {\n success: false,\n error: TxRidValidationContext.error,\n message: validationError.message,\n };\n};\n//# sourceMappingURL=txRid.js.map","import { Buffer } from \"buffer\";\nimport { z } from \"zod\";\nimport { TxRidSchema } from \"./txRid\";\nexport const AnchoringTransactionSchema = z.object({\n txRid: z.instanceof(Buffer).superRefine((rid, refCtx) => {\n const txRidValidation = TxRidSchema.safeParse(rid);\n if (!txRidValidation.success)\n txRidValidation.error.issues.forEach(issue => refCtx.addIssue(issue));\n }),\n txData: z.instanceof(Buffer).refine(data => data.length > 0, {\n message: \"txData must be a non-empty Buffer\",\n }),\n txOpIndex: z.number().int().nonnegative({ message: \"txOpIndex must be a non-negative integer\" }),\n});\n//# sourceMappingURL=anchoringTransaction.js.map","import { ensureString, toString } from \"../formatter\";\nexport class MissingTransactionProof extends Error {\n constructor(proofHash, fetchedTxHash) {\n super(`Unable to verify source transaction proof,transaction hash in proof ${toString(proofHash)} does not match hash from fetched transaction ${toString(fetchedTxHash)}`);\n }\n}\nexport class DifferentNumberOfSignersException extends Error {\n constructor(length, comparableLength) {\n super(`Transaction signatures amount ${length} do not match expected amount of signers ${comparableLength}`);\n }\n}\nexport class SignatureException extends Error {\n constructor(signer) {\n super(`Expected signer ${toString(signer)} has not signed source transaction`);\n }\n}\nexport class ProofRidException extends Error {\n constructor() {\n super(\"Unable to verify source transaction proof, got a different transaction from query than we asked for\");\n }\n}\nexport class SystemChainException extends Error {\n constructor(errorMessage) {\n super(`Query to system chain failed with error: ${errorMessage}`);\n }\n}\nexport class ConfirmationProofException extends Error {\n constructor(transactionRid) {\n super(`Unable to fetch confirmation proof for transaction RID: ${ensureString(transactionRid)}.`);\n }\n}\nexport class BlockAnchoringException extends Error {\n constructor() {\n super(`Block is not present in cluster anchoring chain`);\n }\n}\n//# sourceMappingURL=error.js.map","import { Buffer } from \"buffer\";\nimport { z } from \"zod\";\nconst RawGtvSchema = z.union([\n z.boolean(),\n z.string(),\n z.number(),\n z.bigint(),\n z.instanceof(Buffer),\n z.array(z.unknown()),\n z.record(z.unknown()),\n]);\nconst DictPairSchema = z.record(RawGtvSchema);\nconst TransactionInfoInBlockResponseSchema = z.object({\n rid: z.string(),\n hash: z.string(),\n data: z.string().optional(),\n});\nconst BlockInfoResponseSchema = z.object({\n rid: z.string(),\n prevBlockRID: z.string(),\n header: z.string(),\n height: z.number(),\n transactions: z.array(TransactionInfoInBlockResponseSchema),\n witness: z.string(),\n witnesses: z.array(z.string()),\n timestamp: z.number(),\n});\nconst TransactionObjectSchema = z.object({\n tx: z.string(),\n});\nconst TransactionsCountSchema = z.object({\n transactionsCount: z.number(),\n});\nconst TransactionConfirmationProofSchema = z.object({\n proof: z.string(),\n});\nconst ConfirmationProofSchema = z.object({\n hash: z.instanceof(Buffer),\n blockHeader: z.instanceof(Buffer),\n witness: z.instanceof(Buffer),\n merkleProofTree: RawGtvSchema,\n txIndex: z.number(),\n});\nconst TransactionInfoResponseSchema = z.object({\n blockRID: z.string(),\n blockHeight: z.number(),\n blockHeader: z.string(),\n witness: z.string(),\n timestamp: z.number(),\n txRID: z.string(),\n txHash: z.string(),\n txData: z.string(),\n});\nconst TransactionInfoSchema = z.object({\n blockRid: z.instanceof(Buffer),\n blockHeight: z.number(),\n blockHeader: z.instanceof(Buffer),\n witness: z.instanceof(Buffer),\n timestamp: z.number(),\n txRid: z.instanceof(Buffer),\n txHash: z.instanceof(Buffer),\n txData: z.instanceof(Buffer),\n});\nconst RejectedTransactionSchema = z.object({\n txRid: z.instanceof(Buffer),\n rejectReason: z.string(),\n rejectTimestamp: z.number(),\n});\nconst RejectedTransactionResponseSchema = z.object({\n txRID: z.string(),\n rejectReason: z.string(),\n rejectTimestamp: z.number(),\n});\nexport function isString(value) {\n const result = z.string().safeParse(value);\n return result.success ? value : null;\n}\nexport function isDictPair(value) {\n const result = DictPairSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isRawGtv(value) {\n const result = RawGtvSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoInBlockResponse(value) {\n const result = TransactionInfoInBlockResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoInBlockResponseArray(value) {\n const result = z.array(TransactionInfoInBlockResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isBlockInfoResponse(value) {\n const result = BlockInfoResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isBlockInfoResponseArray(value) {\n const result = z.array(BlockInfoResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransaction(value) {\n const result = TransactionObjectSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionsCount(value) {\n const result = TransactionsCountSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionConfirmationProof(value) {\n const result = TransactionConfirmationProofSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isConfirmationProof(value) {\n const result = ConfirmationProofSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoResponse(value) {\n const result = TransactionInfoResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoResponseArray(value) {\n const result = z.array(TransactionInfoResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfo(value) {\n const result = TransactionInfoSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isTransactionInfoArray(value) {\n const result = z.array(TransactionInfoSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isRejectedTransaction(value) {\n const result = RejectedTransactionSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isRejectedTransactionArray(value) {\n const result = z.array(RejectedTransactionSchema).safeParse(value);\n return result.success ? value : null;\n}\nexport function isRejectedTransactionResponse(value) {\n const result = RejectedTransactionResponseSchema.safeParse(value);\n return result.success ? value : null;\n}\nexport function isRejectedTransactionResponseArray(value) {\n const result = z.array(RejectedTransactionResponseSchema).safeParse(value);\n return result.success ? value : null;\n}\n//# sourceMappingURL=requests.js.map","import { serialize } from \"../gtx/gtx\";\n/**\n *\n * Encodes the gtx using ASN.1.\n * @returns the gtx encoded\n */\nexport function encodeTransaction(gtx) {\n return serialize(gtx);\n}\n//# sourceMappingURL=encodeTransaction.js.map","import { z } from \"zod\";\nimport { MERKLE_HASH_VERSIONS } from \"../../utils/constants\";\nconst MerkleHashSchema = z.object({\n merkle_hash_version: z.number().int().positive(),\n});\nexport const validateMerkleHash = (data) => {\n const result = MerkleHashSchema.safeParse(data);\n if (!result.success) {\n return { merkle_hash_version: MERKLE_HASH_VERSIONS.ONE };\n }\n return result.data;\n};\n//# sourceMappingURL=merkleHash.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Buffer } from \"buffer\";\nimport * as logger from \"../logger\";\nimport { decodeValue } from \"../gtx/serialization\";\nimport { Method } from \"./enums\";\nexport function handleRequest(method, path, endpoint, postObject) {\n return __awaiter(this, void 0, void 0, function* () {\n if (method == Method.GET) {\n return yield get(path, endpoint);\n }\n else {\n return yield post(path, endpoint, postObject);\n }\n });\n}\n/**\n * Sends request to get data from a given API endpoint.\n * @param path API endpoint of Rell backend\n * @param endpoint\n */\nfunction get(path, endpoint) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`GET URL ${new URL(path, endpoint).href}`);\n try {\n const response = yield fetch(new URL(path, endpoint).href);\n const contentType = response.headers.get(\"Content-Type\");\n const transactionTimestamp = response.headers.get(\"X-Transaction-Timestamp\");\n let rspBody = null;\n const error = null;\n if (contentType === null || contentType === void 0 ? void 0 : contentType.includes(\"application/json\")) {\n rspBody = yield response.json();\n }\n else if (contentType === null || contentType === void 0 ? void 0 : contentType.includes(\"text/plain\")) {\n rspBody = yield response.text();\n }\n else if (contentType === null || contentType === void 0 ? void 0 : contentType.includes(\"application/octet-stream\")) {\n rspBody = yield constructBufferResponseBody(response);\n }\n return createResponseObject(error, response.status, rspBody, transactionTimestamp);\n }\n catch (error) {\n logger.error(error.message);\n return createResponseObject(error, null, null);\n }\n });\n}\n/**\n * Sends request to post data to a given API endpoint.\n * @param path API endpoint of Rell backend\n * @param endpoint\n * @param requestBody request body\n */\nfunction post(path, endpoint, requestBody) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`POST URL ${new URL(path, endpoint).href}`);\n logger.debug(`POST body ${JSON.stringify(requestBody)}`);\n if (Buffer.isBuffer(requestBody)) {\n try {\n const requestOptions = {\n method: \"post\",\n body: requestBody,\n headers: {\n Accept: \"application/octet-stream\",\n \"Content-Type\": \"application/octet-stream\",\n },\n };\n const response = yield fetch(new URL(path, endpoint).href, requestOptions);\n const transactionTimestamp = response.headers.get(\"X-Transaction-Timestamp\");\n return createResponseObject(null, response.status, yield constructBufferResponseBody(response), transactionTimestamp);\n }\n catch (error) {\n return createResponseObject(error, null, null);\n }\n }\n else {\n try {\n const response = yield fetch(new URL(path, endpoint).href, {\n method: \"post\",\n body: JSON.stringify(requestBody),\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n });\n const transactionTimestamp = response.headers.get(\"X-Transaction-Timestamp\");\n return createResponseObject(null, response.status, yield constructBufferResponseBody(response), transactionTimestamp);\n }\n catch (error) {\n return createResponseObject(error, null, null);\n }\n }\n });\n}\nfunction constructBufferResponseBody(response) {\n return __awaiter(this, void 0, void 0, function* () {\n const contentType = response.headers.get(\"content-type\");\n if (contentType === \"application/octet-stream\") {\n const responseBuffer = yield response.arrayBuffer();\n const buffer = Buffer.from(responseBuffer);\n return decodeValue(buffer);\n }\n if (contentType === \"application/json\") {\n return yield response.json();\n }\n const responseText = yield response.text();\n return responseText ? responseText : response.statusText;\n });\n}\nfunction createResponseObject(error, statusCode, rspBody, transactionTimestamp) {\n const responseObject = {\n error,\n statusCode,\n rspBody,\n };\n if (transactionTimestamp) {\n responseObject.transactionTimestamp = transactionTimestamp;\n }\n return responseObject;\n}\n//# sourceMappingURL=httpUtil.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { sleep } from \"./utils\";\nimport { handleRequest } from \"./httpUtil\";\nimport * as logger from \"../logger\";\nconst isSuccessfullRequest = (statusCode) => statusCode >= 200 && statusCode < 300;\nconst hasClientError = (statusCode) => statusCode >= 400 && statusCode < 500;\nconst hasServerError = (statusCode) => statusCode >= 500 && statusCode < 600;\nexport function abortOnError({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield retryRequest({\n method,\n path,\n config,\n postObject,\n validateStatusCode: statuscode => !hasServerError(statuscode),\n });\n });\n}\nexport function tryNextOnError({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield retryRequest({\n method,\n path,\n config,\n postObject,\n validateStatusCode: statusCode => !hasClientError(statusCode) && !hasServerError(statusCode),\n });\n });\n}\nexport const errorMessages = {\n NO_CONSENSUS: \"Nodes were not able to reach a consensus\",\n};\nfunction calculateBftMajorityThreshold(endpointPoolLength) {\n return endpointPoolLength - (endpointPoolLength - 1) / 3;\n}\nexport function queryMajority({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n // Set up constants\n const bftMajorityThreshold = calculateBftMajorityThreshold(config.endpointPool.length);\n const failureThreshold = config.endpointPool.length - bftMajorityThreshold + 1;\n const { nodeManager } = config;\n const timeout = 15000;\n const availableNodes = nodeManager.getAvailableNodes();\n // If the available nodes are less than bfthMajorityThreshold, set all nodes as reachable again.\n if (availableNodes.length < bftMajorityThreshold) {\n nodeManager.makeAllNodesAvailable();\n }\n const outcomes = [];\n const promises = nodeManager.getAvailableNodes().map(node => {\n return handleRequest(method, path, node.url, postObject)\n .then(response => {\n const { statusCode } = response;\n if (statusCode && isSuccessfullRequest(statusCode)) {\n outcomes.push({ type: \"SUCCESS\", result: response });\n }\n else {\n if (statusCode && hasServerError(statusCode)) {\n nodeManager.makeNodeUnavailable(node.url);\n }\n outcomes.push({ type: \"FAILURE\", result: response });\n }\n return response;\n })\n .catch((error) => {\n outcomes.push({ type: \"ERROR\", result: error });\n return error;\n });\n });\n let remainingPromises = promises;\n // Wait for the necessary majority of outcomes to come back or for the timeout to be reached, whichever comes first.\n for (let i = 0; i < bftMajorityThreshold; i++) {\n remainingPromises = yield racePromisesWithTimeout(remainingPromises, timeout);\n }\n // Evaluate the outcomes\n const successfullOutcomes = outcomes.filter(outcome => outcome.type === \"SUCCESS\");\n const failureOutcomes = outcomes.filter(outcome => outcome.type === \"FAILURE\");\n const errorOutcomes = outcomes.filter(outcome => outcome.type === \"ERROR\");\n // group all of the same responses together into groups and count each groups size\n const groupedSuccessfullResponses = groupResponses(successfullOutcomes);\n // validate the responses\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // Successfull majority response was found\n if (groupedSuccessfullResponses.maxNumberOfEqualResponses() >= bftMajorityThreshold) {\n if (groupedSuccessfullResponses.numberOfDistinctResponses() > 1) {\n logger.warning(`Got disagreeing responses, but could still reach BFT majority`);\n }\n return groupedSuccessfullResponses.majorityResponse();\n }\n // Too many failures or errors to be able to reach a consensus\n // If the number of failures and errors is greater than the failure threshold, return first failure, if any, otherwise throw the first error.\n if ([...failureOutcomes, ...errorOutcomes].length >= failureThreshold) {\n if (failureOutcomes.length > 0) {\n return failureOutcomes[0].result;\n }\n else {\n throw errorOutcomes[0].result;\n }\n }\n // If all nodes have responded without a majority, throw an error.\n if (outcomes.length >= config.endpointPool.length) {\n throw new Error(errorMessages.NO_CONSENSUS);\n }\n // Wait for more one more response to come back. ( we need to set a timeout here)\n remainingPromises = yield racePromisesWithTimeout(remainingPromises, timeout);\n }\n });\n}\nexport function singleEndpoint({ method, path, config, postObject, }) {\n return __awaiter(this, void 0, void 0, function* () {\n let statusCode = null;\n let rspBody = null;\n let error = null;\n let transactionTimestamp = undefined;\n const endpoint = config.nodeManager.getNode();\n if (!endpoint) {\n throw new Error(\"Cannot get endpoint. Node not found!\");\n }\n for (let attempt = 0; attempt < config.attemptsPerEndpoint; attempt++) {\n const response = yield handleRequest(method, path, endpoint.url, postObject);\n if (response) {\n ({ error, statusCode, rspBody, transactionTimestamp } = response);\n }\n const isError = statusCode ? hasServerError(statusCode) || hasClientError(statusCode) : false;\n if (!isError && !error) {\n return { error, statusCode, rspBody, transactionTimestamp };\n }\n logger.info(`${method} request failed on ${endpoint.url}. Attempt: ${attempt + 1} / ${config.attemptsPerEndpoint}`);\n yield sleep(config.attemptInterval);\n }\n return { error, statusCode, rspBody, transactionTimestamp };\n });\n}\nexport function retryRequest({ method, path, config, postObject, validateStatusCode, }) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n let statusCode = null;\n let rspBody = null;\n let error = null;\n let transactionTimestamp = undefined;\n const { nodeManager } = config;\n const availableNodes = nodeManager.getAvailableNodes();\n for (const endpoint of availableNodes) {\n for (let attempt = 0; attempt < config.attemptsPerEndpoint; attempt++) {\n const response = yield handleRequest(method, path, endpoint.url, postObject);\n error = (_a = response === null || response === void 0 ? void 0 : response.error) !== null && _a !== void 0 ? _a : null;\n statusCode = (_b = response === null || response === void 0 ? void 0 : response.statusCode) !== null && _b !== void 0 ? _b : null;\n rspBody = (_c = response === null || response === void 0 ? void 0 : response.rspBody) !== null && _c !== void 0 ? _c : null;\n transactionTimestamp = response === null || response === void 0 ? void 0 : response.transactionTimestamp;\n const isStatusCodeValid = statusCode ? validateStatusCode(statusCode) : false;\n const isServerError = statusCode ? hasServerError(statusCode) : false;\n if (isStatusCodeValid && !error) {\n // Find a way to have this handled more elegantly in the node manager.\n nodeManager.lastUsedNode = endpoint;\n if (nodeManager.stickedNode !== endpoint) {\n nodeManager.setStickyNode(endpoint);\n }\n return { error, statusCode, rspBody, transactionTimestamp };\n }\n if (isServerError) {\n // nodeManager.makeNodeUnavailable(endpoint.url);\n logger.info(`server error on ${endpoint.url}`);\n }\n logger.info(`${method} request failed on ${endpoint.url}. Attempt: ${attempt + 1} / ${config.attemptsPerEndpoint}`);\n yield sleep(config.attemptInterval);\n }\n }\n return { error, statusCode, rspBody, transactionTimestamp };\n });\n}\nexport function racePromisesWithTimeout(promises, timeout) {\n return __awaiter(this, void 0, void 0, function* () {\n let remainingPromises = [];\n try {\n const resolvedPromise = yield Promise.race([createTimeoutPromise(timeout), ...promises]);\n const promisesWithState = yield checkStateOfPromises(promises);\n const indexOfpromiseToRemove = promisesWithState.findIndex(p => JSON.stringify(p.value) === JSON.stringify(resolvedPromise));\n // Remove the promise that resolved from the list of promises\n promisesWithState.splice(indexOfpromiseToRemove, 1);\n // Remove the state before returning the promises.\n remainingPromises = promisesWithState.map(p => p.value);\n return remainingPromises;\n }\n catch (error) {\n if (error instanceof Error && error.message === \"Timeout exceeded\") {\n throw error;\n }\n return remainingPromises;\n }\n });\n}\nexport function createTimeoutPromise(timeoutMs) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((_, reject) => {\n setTimeout(() => {\n reject(new Error(\"Timeout exceeded\"));\n }, timeoutMs);\n });\n });\n}\nexport const checkStateOfPromises = (promises) => __awaiter(void 0, void 0, void 0, function* () {\n const promiseList = [];\n const pendingState = { status: \"pending\" };\n for (const p of promises) {\n promiseList.push(yield Promise.race([p, pendingState]).then(value => value === pendingState ? Object.assign(Object.assign({}, pendingState), { value: p }) : { status: \"fulfilled\", value }, reason => ({ status: \"rejected\", value: reason })));\n }\n return promiseList;\n});\nconst stableStringify = (obj) => {\n if (obj && typeof obj === \"object\" && !Array.isArray(obj)) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n }\n return JSON.stringify(obj);\n};\nexport const groupResponses = (responses) => {\n const responseMap = responses.reduce((acc, response) => {\n const key = stableStringify(response.result);\n acc[key] = acc[key]\n ? { response: acc[key].response, count: acc[key].count + 1 }\n : { response, count: 1 };\n return acc;\n }, {});\n const distinctResponses = Object.values(responseMap).sort((a, b) => b.count - a.count);\n // Returns the count of the most common response\n const maxNumberOfEqualResponses = () => {\n return distinctResponses.length > 0 ? distinctResponses[0].count : 0;\n };\n // Returns the number of distinct responses\n const numberOfDistinctResponses = () => {\n return distinctResponses.length;\n };\n // Returns the most common response\n const majorityResponse = () => {\n return distinctResponses[0].response.result;\n };\n return {\n maxNumberOfEqualResponses,\n numberOfDistinctResponses,\n majorityResponse,\n };\n};\n//# sourceMappingURL=failoverStrategies.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { FailoverStrategy } from \"./enums\";\nimport { abortOnError, tryNextOnError, singleEndpoint, queryMajority } from \"./failoverStrategies\";\nexport function requestWithFailoverStrategy(method, path, config, postObject, forceSingleEndpoint = false) {\n return __awaiter(this, void 0, void 0, function* () {\n switch (config.failoverStrategy) {\n case FailoverStrategy.AbortOnError:\n return yield abortOnError({ method, path, config, postObject });\n case FailoverStrategy.TryNextOnError:\n return yield tryNextOnError({ method, path, config, postObject });\n case FailoverStrategy.SingleEndpoint:\n return yield singleEndpoint({ method, path, config, postObject });\n case FailoverStrategy.QueryMajority:\n if (forceSingleEndpoint) {\n return yield singleEndpoint({ method, path, config, postObject });\n }\n return yield queryMajority({ method, path, config, postObject });\n default:\n throw new Error(`Unsupported failover strategy: ${config.failoverStrategy}`);\n }\n });\n}\n//# sourceMappingURL=requestWithFailoverStrategy.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Buffer } from \"buffer\";\nimport * as logger from \"../logger\";\nimport { SerializedTransactionFormatException, InvalidTxRidException, TxRejectedError, UnexpectedStatusError, GetBridFromChainException, } from \"./errors\";\nimport * as gtxTool from \"../gtx/gtx\";\nimport { BlockchainUrlUndefinedException, DirectoryNodeUrlPoolException, InvalidTransactionFormatException, MissingBlockchainIdentifierError, } from \"./errors\";\nimport { ensureBuffer, toBuffer } from \"../formatter\";\nimport { createClient } from \"./blockchainClient\";\nimport { AnchoringStatus, ChainConfirmationLevel, FailoverStrategy, Method, ResponseStatus, TransactionEvent, } from \"./enums\";\nimport { createNodeManager } from \"./nodeManager\";\nimport { AnchoringTransactionSchema } from \"./validation/anchoringTransaction\";\nimport { SystemChainException } from \"../ICCF/error\";\nimport { getAnchoringClient } from \"../ICCF/IccfProofTxMaterialBuilder\";\nimport { awaitGetAnchoringTransactionForBlockRid, calculateBlockRID } from \"../ICCF/utils\";\nimport { isString } from \"./validation/requests\";\nimport { encodeTransaction } from \"../utils/encodeTransaction\";\nimport { validateMerkleHash } from \"./validation/merkleHash\";\nimport { requestWithFailoverStrategy } from \"./requestWithFailoverStrategy\";\nimport { MERKLE_HASH_VERSIONS } from \"../utils/constants\";\nexport function getClientConfigFromSettings(settings) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n return __awaiter(this, void 0, void 0, function* () {\n const nodeUrlPoolToUse = yield getNodeUrlsFromSettings(settings);\n if (nodeUrlPoolToUse === null || nodeUrlPoolToUse.length === 0) {\n const id = (_b = (_a = settings.blockchainRid) !== null && _a !== void 0 ? _a : settings.blockchainIid) !== null && _b !== void 0 ? _b : \"Unknown\";\n throw new BlockchainUrlUndefinedException(id);\n }\n const endpointPool = createEndpointObjects(nodeUrlPoolToUse);\n const nodeManager = createNodeManager({\n nodeUrls: nodeUrlPoolToUse,\n useStickyNode: (_c = settings.useStickyNode) !== null && _c !== void 0 ? _c : false,\n unavailableDuration: (_d = settings.failOverConfig) === null || _d === void 0 ? void 0 : _d.unreachableDuration,\n });\n const blockchainRidToUse = yield (() => __awaiter(this, void 0, void 0, function* () {\n var _k;\n if (settings.blockchainRid) {\n return settings.blockchainRid;\n }\n if (settings.blockchainIid !== undefined) {\n return yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool,\n chainId: settings.blockchainIid,\n merkleHashVersion: (_k = settings.merkleHashVersion) !== null && _k !== void 0 ? _k : MERKLE_HASH_VERSIONS.UNSET,\n });\n }\n throw new MissingBlockchainIdentifierError();\n }))();\n const directoryChainRid = yield (() => __awaiter(this, void 0, void 0, function* () {\n var _l;\n if (settings.directoryChainRid) {\n return settings.directoryChainRid;\n }\n const directoryChainIid = 0;\n return yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool,\n chainId: directoryChainIid,\n merkleHashVersion: (_l = settings.merkleHashVersion) !== null && _l !== void 0 ? _l : MERKLE_HASH_VERSIONS.UNSET,\n });\n }))();\n return {\n endpointPool,\n nodeManager: nodeManager,\n blockchainRid: blockchainRidToUse,\n merkleHashVersion: (_e = settings.merkleHashVersion) !== null && _e !== void 0 ? _e : MERKLE_HASH_VERSIONS.UNSET,\n dappStatusPolling: setStatusPolling(settings.dappStatusPolling),\n clusterAnchoringStatusPolling: setStatusPolling(settings.clusterAnchoringStatusPolling),\n systemAnchoringStatusPolling: setStatusPolling(settings.systemAnchoringStatusPolling),\n retryTransactionPolling: setRetryTransactionPolling(settings.retryTransactionPolling),\n failoverStrategy: ((_f = settings.failOverConfig) === null || _f === void 0 ? void 0 : _f.strategy) || defaultFailoverConfig.strategy,\n attemptsPerEndpoint: ((_g = settings.failOverConfig) === null || _g === void 0 ? void 0 : _g.attemptsPerEndpoint) || defaultFailoverConfig.attemptsPerEndpoint,\n attemptInterval: ((_h = settings.failOverConfig) === null || _h === void 0 ? void 0 : _h.attemptInterval) || defaultFailoverConfig.attemptInterval,\n unreachableDuration: ((_j = settings.failOverConfig) === null || _j === void 0 ? void 0 : _j.unreachableDuration) || defaultFailoverConfig.unreachableDuration,\n directoryChainRid: settings.directoryChainRid || directoryChainRid,\n };\n });\n}\nexport function getMerkleHashVersionFromDapp(config) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const response = yield requestWithFailoverStrategy(Method.GET, `/config/${config.blockchainRid}/features`, config);\n const validatedResponse = validateMerkleHash(response.rspBody);\n return validatedResponse.merkle_hash_version;\n }\n catch (error) {\n console.warn(\"MERKLE_HASH_WARNING: version not found or endpoint unreachable\", error);\n return MERKLE_HASH_VERSIONS.ONE;\n }\n });\n}\nexport function validTxRid(txRID) {\n if (txRID.length != 32) {\n const error = new InvalidTxRidException(txRID);\n logger.error(error.toString());\n return false;\n }\n return true;\n}\nexport function nodeDiscovery({ nodeManager, directoryEndpointPool, failOverConfig, blockchainRid, blockchainIid, }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (directoryEndpointPool.length === 0) {\n throw new DirectoryNodeUrlPoolException();\n }\n if (!blockchainRid && blockchainIid === undefined) {\n throw new MissingBlockchainIdentifierError();\n }\n const directoryIid = 0;\n const directoryBRID = yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool: directoryEndpointPool,\n chainId: directoryIid,\n failOverConfig,\n });\n const blockchainRidToUse = yield (() => __awaiter(this, void 0, void 0, function* () {\n if (blockchainRid) {\n return blockchainRid;\n }\n if (blockchainIid !== undefined) {\n return yield getBlockchainRidFromIid({\n nodeManager,\n endpointPool: directoryEndpointPool,\n chainId: blockchainIid,\n failOverConfig,\n });\n }\n throw new MissingBlockchainIdentifierError();\n }))();\n const D1Client = yield createClient({\n nodeUrlPool: getUrlsFromEndpoints(directoryEndpointPool),\n blockchainRid: directoryBRID,\n });\n return yield getBlockchainApiUrls(D1Client, ensureBuffer(blockchainRidToUse));\n });\n}\nexport function getBlockchainApiUrls(directoryClient, blockchainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n const queryObject = {\n name: \"cm_get_blockchain_api_urls\",\n args: { blockchain_rid: blockchainRid },\n };\n return yield directoryClient.query(queryObject);\n });\n}\nexport function convertToRellOperation(operations) {\n return operations.map(operation => {\n var _a;\n return {\n opName: operation.name,\n args: (_a = operation.args) !== null && _a !== void 0 ? _a : [],\n };\n });\n}\nexport function getSerializedGTX(gtx) {\n const gtxBytes = encodeTransaction(gtx);\n if (!Buffer.isBuffer(gtxBytes)) {\n throw new SerializedTransactionFormatException();\n }\n return gtxBytes;\n}\nexport function getGTXFromBufferOrTransactionOrOperation(transaction, blockchainRid) {\n if (Buffer.isBuffer(transaction)) {\n return gtxTool.deserialize(transaction);\n }\n else if (\"operations\" in transaction) {\n return {\n blockchainRid: ensureBuffer(blockchainRid),\n operations: convertToRellOperation(transaction.operations),\n signers: transaction.signers,\n signatures: [],\n };\n }\n else if (\"name\" in transaction) {\n return {\n blockchainRid: ensureBuffer(blockchainRid),\n operations: convertToRellOperation([transaction]),\n signers: [],\n signatures: [],\n };\n }\n else {\n throw new InvalidTransactionFormatException();\n }\n}\nexport const callbackPromiseBuilder = (reject, resolve, callback) => {\n return (error, result) => {\n var _a;\n if (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n reject(error);\n }\n else {\n callback === null || callback === void 0 ? void 0 : callback(null, (_a = result) !== null && _a !== void 0 ? _a : null);\n resolve(result !== null && result !== void 0 ? result : null);\n }\n };\n};\nexport const handlePostResponsePromisified = (error, statusCode, rspBody) => {\n return new Promise((resolve, reject) => {\n handlePostResponse(error, statusCode, rspBody, _error => {\n if (_error) {\n reject(_error);\n }\n else {\n resolve();\n }\n });\n });\n};\nfunction ensureArray(input) {\n if (typeof input === \"string\") {\n return [input];\n }\n return input;\n}\nexport const formatTransactionInfoResponse = (transactionInfoResponse) => {\n return {\n blockRid: toBuffer(transactionInfoResponse.blockRID),\n blockHeight: transactionInfoResponse.blockHeight,\n blockHeader: toBuffer(transactionInfoResponse.blockHeader),\n witness: toBuffer(transactionInfoResponse.witness),\n timestamp: transactionInfoResponse.timestamp,\n txRid: toBuffer(transactionInfoResponse.txRID),\n txHash: toBuffer(transactionInfoResponse.txHash),\n txData: toBuffer(transactionInfoResponse.txData),\n };\n};\nexport const formatBlockInfoResponse = (blockInfoResponse) => {\n return {\n rid: toBuffer(blockInfoResponse.rid),\n prevBlockRid: toBuffer(blockInfoResponse.prevBlockRID),\n header: toBuffer(blockInfoResponse.header),\n transactions: blockInfoResponse.transactions.map(formatTransaction),\n height: blockInfoResponse.height,\n witness: toBuffer(blockInfoResponse.witness),\n witnesses: blockInfoResponse.witnesses.map(witness => {\n return toBuffer(witness);\n }),\n timestamp: blockInfoResponse.timestamp,\n };\n};\nconst formatTransaction = (transaction) => {\n const formattedTransaction = {\n rid: toBuffer(transaction.rid),\n hash: toBuffer(transaction.hash),\n };\n if (transaction.data !== undefined) {\n formattedTransaction.data = toBuffer(transaction.data);\n }\n return formattedTransaction;\n};\nexport function formatRejectedTransactionFromResponse(rejectedTransactionResponse) {\n return {\n txRid: toBuffer(rejectedTransactionResponse.txRID),\n rejectReason: rejectedTransactionResponse.rejectReason,\n rejectTimestamp: rejectedTransactionResponse.rejectTimestamp,\n };\n}\nexport const isKeyPair = (keypair) => {\n return (typeof keypair === \"object\" &&\n keypair !== null &&\n \"privKey\" in keypair &&\n \"pubKey\" in keypair &&\n keypair.privKey instanceof Buffer &&\n keypair.pubKey instanceof Buffer);\n};\nfunction getNodeUrlsFromSettings(settings) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (settings.directoryNodeUrlPool) {\n // If directoryNodeUrlPool is provided, use nodeDiscovery\n const nodeManager = createNodeManager({\n nodeUrls: ensureArray(settings.directoryNodeUrlPool),\n unavailableDuration: (_a = settings.failOverConfig) === null || _a === void 0 ? void 0 : _a.unreachableDuration,\n });\n const discoveredNodes = yield nodeDiscovery({\n nodeManager,\n directoryEndpointPool: createEndpointObjects(ensureArray(settings.directoryNodeUrlPool)),\n failOverConfig: settings.failOverConfig,\n blockchainRid: settings.blockchainRid,\n blockchainIid: settings.blockchainIid,\n });\n return discoveredNodes;\n }\n else if (typeof settings.nodeUrlPool === \"string\") {\n // If nodeUrlPool is a string, convert it to an array\n return [settings.nodeUrlPool];\n }\n else if (Array.isArray(settings.nodeUrlPool)) {\n // If nodeUrlPool is already an array, use it as-is\n return settings.nodeUrlPool;\n }\n else {\n // Default to an empty array if no valid configuration is provided\n return [];\n }\n });\n}\nexport function getSystemClient(directoryNodeUrlPool, directoryChainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield createClient({\n directoryNodeUrlPool,\n blockchainRid: directoryChainRid,\n });\n });\n}\nexport function getSystemAnchoringChain(directoryClient) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const queryObject = {\n name: \"cm_get_system_anchoring_chain\",\n };\n const systemAnchoringChain = yield directoryClient.query(queryObject);\n if (!systemAnchoringChain) {\n throw new SystemChainException(\"Directory chain client must be provided.\");\n }\n return systemAnchoringChain;\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport const defaultFailoverConfig = {\n strategy: FailoverStrategy.AbortOnError,\n attemptsPerEndpoint: 3,\n attemptInterval: 500,\n unreachableDuration: 30000,\n};\nexport const createEndpointObjects = (endpointPoolUrls) => {\n const endpoints = endpointPoolUrls.map(endpointUrl => {\n return { url: endpointUrl, whenAvailable: 0 };\n });\n return endpoints;\n};\nexport const getUrlsFromEndpoints = (endpointPool) => {\n return endpointPool.map(endpoint => endpoint.url);\n};\nexport function awaitDappConfirmation(txRID, dappStatusPolling, getTransactionStatus) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n let lastKnownResult = null;\n for (let i = 0; i < dappStatusPolling.count; i++) {\n lastKnownResult = yield getTransactionStatus(txRID);\n if (lastKnownResult.status === ResponseStatus.Confirmed) {\n return lastKnownResult;\n }\n else if (lastKnownResult.status === ResponseStatus.Rejected) {\n throw new TxRejectedError((_a = lastKnownResult.rejectReason) !== null && _a !== void 0 ? _a : \"\");\n }\n yield sleep(dappStatusPolling.interval);\n }\n throw new Error(`Retry count exceeded. Confirmation not received. Last transaction status: ${lastKnownResult === null || lastKnownResult === void 0 ? void 0 : lastKnownResult.status}`);\n });\n}\nexport function awaitClusterAnchoringChainConfirmation(txRID, clusterAnchoringStatusPolling, getClusterAnchoringTransactionConfirmation) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n let clusterAnchoringConfirmation;\n for (let i = 0; i < clusterAnchoringStatusPolling.count; i++) {\n clusterAnchoringConfirmation = yield getClusterAnchoringTransactionConfirmation(txRID);\n const anchoringTransactionValidaiton = AnchoringTransactionSchema.safeParse(clusterAnchoringConfirmation);\n if (anchoringTransactionValidaiton.success) {\n return {\n status: AnchoringStatus.ClusterAnchored,\n clusterAnchoredTx: anchoringTransactionValidaiton.data,\n };\n }\n else if (!anchoringTransactionValidaiton.success) {\n throw new TxRejectedError((_a = AnchoringStatus.FailedAnchoring) !== null && _a !== void 0 ? _a : \"\");\n }\n yield sleep(clusterAnchoringStatusPolling.interval);\n }\n // TS issue. This could be fixed by implementing new retry strategy\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-expect-error\n return clusterAnchoringConfirmation;\n });\n}\nexport function handleDappConfirmations(transactionRid, doStatusPolling, confirmationLevel, promiEvent, dappStatusPolling, getTransactionStatus, client) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n const transactionReceipt = {\n status: ResponseStatus.Pending,\n statusCode: null,\n transactionRid: transactionRid,\n node: (_a = client.config.nodeManager.lastUsedNode) === null || _a === void 0 ? void 0 : _a.url,\n };\n promiEvent.emit(TransactionEvent.DappReceived, transactionReceipt);\n if (doStatusPolling === false || confirmationLevel === ChainConfirmationLevel.None) {\n return transactionReceipt;\n }\n const dappConfirmationStatus = yield awaitDappConfirmation(transactionRid, dappStatusPolling, getTransactionStatus);\n transactionReceipt.statusCode = dappConfirmationStatus.statusCode;\n transactionReceipt.status = dappConfirmationStatus.status;\n transactionReceipt.node = (_b = client.config.nodeManager.lastUsedNode) === null || _b === void 0 ? void 0 : _b.url;\n promiEvent.emit(TransactionEvent.DappConfirmed, transactionReceipt);\n if (confirmationLevel === ChainConfirmationLevel.Dapp) {\n return transactionReceipt;\n }\n return transactionReceipt;\n });\n}\nexport function handleSystemConfirmations(transactionReceipt, confirmationLevel, promiEvent, statusPollingConfig, anchoringClient, systemAnchoringChainBrid, getClusterAnchoringTransactionConfirmation, getSystemAnchoringTransactionConfirmation) {\n return __awaiter(this, void 0, void 0, function* () {\n const clusterAnchoringChainConfirmation = yield awaitClusterAnchoringChainConfirmation(transactionReceipt.transactionRid, statusPollingConfig.clusterAnchoringStatusPolling, getClusterAnchoringTransactionConfirmation);\n transactionReceipt.status = clusterAnchoringChainConfirmation.status;\n transactionReceipt.clusterAnchoredTx = clusterAnchoringChainConfirmation.clusterAnchoredTx;\n transactionReceipt.clusterAnchoringClientBrid = anchoringClient.config.blockchainRid;\n promiEvent.emit(TransactionEvent.ClusterAnchoringConfirmation, transactionReceipt);\n if (confirmationLevel === ChainConfirmationLevel.ClusterAnchoring) {\n return transactionReceipt;\n }\n const systemAnchoringConfirmation = yield getSystemAnchoringTransactionConfirmation(clusterAnchoringChainConfirmation.clusterAnchoredTx.txRid, anchoringClient, systemAnchoringChainBrid);\n if (!systemAnchoringConfirmation) {\n return transactionReceipt;\n }\n transactionReceipt.status = AnchoringStatus.SystemAnchored;\n transactionReceipt.systemAnchoredTx = systemAnchoringConfirmation;\n transactionReceipt.systemAnchoringClientBrid = systemAnchoringChainBrid;\n promiEvent.emit(TransactionEvent.SystemAnchoringConfirmation, transactionReceipt);\n if (confirmationLevel === ChainConfirmationLevel.SystemAnchoring) {\n return transactionReceipt;\n }\n return transactionReceipt;\n });\n}\nexport function getAnchoringClientAndSystemChainRid(client) {\n return __awaiter(this, void 0, void 0, function* () {\n const directoryClient = yield getSystemClient(getUrlsFromEndpoints(client.config.endpointPool), client.config.directoryChainRid);\n const anchoringClient = yield getAnchoringClient(directoryClient, client.config.blockchainRid);\n const systemAnchoringChainRidBuffer = yield getSystemAnchoringChain(directoryClient);\n const systemAnchoringChainBridString = systemAnchoringChainRidBuffer.toString(\"hex\");\n return { anchoringClient, systemAnchoringChainBridString };\n });\n}\nexport function getSystemAnchoringTransaction(dappClientEndpointPool, anchoredTxRid, anchoringClient, systemAnchoringChainRid, systemAnchoringStatusPolling, merkleHashVersion) {\n return __awaiter(this, void 0, void 0, function* () {\n const systemAnchoringChainClient = yield getSystemClient(getUrlsFromEndpoints(dappClientEndpointPool), systemAnchoringChainRid);\n const clusterAnchoringProof = yield anchoringClient.getConfirmationProof(anchoredTxRid);\n const clusterBlockRid = calculateBlockRID(clusterAnchoringProof, merkleHashVersion);\n const systemAnchoringTransactionConfirmation = yield awaitGetAnchoringTransactionForBlockRid(systemAnchoringChainClient, toBuffer(anchoringClient.config.blockchainRid), clusterBlockRid, systemAnchoringStatusPolling);\n const systemAnchoringTransactionValidation = AnchoringTransactionSchema.safeParse(systemAnchoringTransactionConfirmation);\n if (!systemAnchoringTransactionValidation.success) {\n return null;\n }\n return systemAnchoringTransactionValidation.data;\n });\n}\n/**\n * Should be used to configure the `IClient` `ClientConfig` (config) properties\n * `dappStatusPolling`, `clusterAnchoringStatusPolling` and `systemAnchoringStatusPolling` with\n * the corresponding status polling configuration `interval` and `status`.\n * If the values are not provided, they do default to `500` for `interval` and `20` for `count`\n *\n * @param statusPolling - An optional partial configuration object, that can set the status polling interval and count properties\n * @returns - Returns a complete `StatusPolling` configuration object, with default values for any missing properties\n * of the provided partial configuration\n */\nexport function setStatusPolling(statusPolling) {\n var _a, _b;\n return {\n interval: (_a = statusPolling === null || statusPolling === void 0 ? void 0 : statusPolling.interval) !== null && _a !== void 0 ? _a : 500,\n count: (_b = statusPolling === null || statusPolling === void 0 ? void 0 : statusPolling.count) !== null && _b !== void 0 ? _b : 20,\n };\n}\nexport function setRetryTransactionPolling(statusPolling) {\n var _a, _b;\n return {\n interval: (_a = statusPolling === null || statusPolling === void 0 ? void 0 : statusPolling.interval) !== null && _a !== void 0 ? _a : 500,\n count: (_b = statusPolling === null || statusPolling === void 0 ? void 0 : statusPolling.count) !== null && _b !== void 0 ? _b : 3,\n };\n}\nexport function linkPromiEvents(event1, event2) {\n const transactionEvents = Object.values(TransactionEvent).filter((event) => typeof event === \"string\");\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const forwardEvent = (eventName) => (receipt) => event2.emit(eventName, receipt);\n for (const eventName of transactionEvents) {\n event1.on(eventName, forwardEvent(eventName));\n }\n}\n/**\n * @param error response error\n * @param statusCode response status code\n * @param responseObject the responsebody from the server\n * @param callback the callback function to propagate the error and response back to the caller\n */\nexport function handleGetResponse(error, statusCode, responseObject, callback) {\n try {\n const responseObjectPrintable = convertToPrintable(responseObject);\n logger.debug(`error: ${error}, status code: ${statusCode}, response body: ${responseObjectPrintable}`);\n if (error) {\n return callback(error, null);\n }\n if (statusCode !== 200) {\n return callback(new UnexpectedStatusError(statusCode !== null && statusCode !== void 0 ? statusCode : 400, responseObjectPrintable), null);\n }\n return callback(null, responseObject);\n }\n catch (error) {\n callback(error, null);\n logger.error(`client.handleGetResponse(): Failed to call the callback function. ${error}`);\n }\n}\n/**\n * @param error response error\n * @param statusCode response status code\n * @param responseObject the responsebody from the server\n * @param callback the callback function to propagate the error and response back to the caller\n */\nexport function handlePostResponse(error, statusCode, responseObject, callback) {\n const responseObjectPrintable = convertToPrintable(responseObject);\n logger.debug(`error: ${error}, status code: ${statusCode}, response body: ${responseObjectPrintable}`);\n try {\n if (error) {\n logger.error(`In client post(). ${error}`);\n callback(error, null);\n }\n else if (statusCode != 200) {\n let errorMessage = `Unexpected status code from server. Code: ${statusCode}.`;\n if (responseObjectPrintable) {\n errorMessage += ` Message: ${responseObjectPrintable}.`;\n }\n logger.error(errorMessage);\n callback(new UnexpectedStatusError(statusCode !== null && statusCode !== void 0 ? statusCode : 400, responseObjectPrintable), responseObject);\n }\n else {\n logger.info(`Calling responseCallback with responseObject: ${responseObjectPrintable}`);\n callback(null, responseObject);\n }\n }\n catch (error) {\n logger.error(`client.handlePostResponse(): Failed to call callback function ${error}`);\n }\n}\nexport function getBlockchainRidFromIid({ endpointPool, chainId, failOverConfig = {}, nodeManager, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const mergedFailOverConfig = Object.assign(Object.assign({}, defaultFailoverConfig), failOverConfig);\n const config = {\n endpointPool,\n nodeManager,\n dappStatusPolling: setStatusPolling(),\n clusterAnchoringStatusPolling: setStatusPolling(),\n systemAnchoringStatusPolling: setStatusPolling(),\n retryTransactionPolling: setRetryTransactionPolling(),\n failoverStrategy: mergedFailOverConfig.strategy,\n attemptsPerEndpoint: mergedFailOverConfig.attemptsPerEndpoint,\n attemptInterval: mergedFailOverConfig.attemptInterval,\n unreachableDuration: mergedFailOverConfig.unreachableDuration,\n merkleHashVersion: MERKLE_HASH_VERSIONS.UNSET,\n };\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/brid/iid_${chainId}`, config);\n const blockchainRid = isString(rspBody);\n if (!blockchainRid) {\n throw error;\n }\n if (error) {\n throw new GetBridFromChainException(chainId, error.message);\n }\n else if (statusCode !== 200) {\n throw new GetBridFromChainException(chainId, blockchainRid);\n }\n return blockchainRid;\n });\n}\nexport const sleep = (ms) => new Promise(r => setTimeout(r, ms));\nexport function convertToPrintable(responseObject) {\n if (typeof responseObject === \"bigint\") {\n return `${responseObject}n`;\n }\n else if (typeof responseObject === \"object\") {\n return JSON.stringify(responseObject, (key, value) => typeof value === \"bigint\" ? `${value}n` : value);\n }\n else {\n return String(responseObject);\n }\n}\n//# sourceMappingURL=utils.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Buffer } from \"buffer\";\nimport { TxRejectedError } from \"../blockchainClient/errors\";\nimport { sleep } from \"../blockchainClient/utils\";\nimport { AnchoringTransactionSchema } from \"../blockchainClient/validation/anchoringTransaction\";\nimport { checkDigestSignature } from \"../encryption/encryption\";\nimport { ensureBuffer } from \"../formatter\";\nimport { gtvHash } from \"../gtv\";\nimport { getDigestToSign, rawGtvToGtx } from \"../gtx/gtx\";\nimport { decodeValue, encodeValue } from \"../gtx/serialization\";\nimport { DifferentNumberOfSignersException, MissingTransactionProof, ProofRidException, SignatureException, SystemChainException, } from \"./error\";\nexport function getClusterOfBlockchain(client, blockchainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const clusterName = yield client.query({\n name: \"cm_get_blockchain_cluster\",\n args: { brid: blockchainRid },\n });\n return clusterName;\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport function getClusterInfo(client, name) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const clusterInfo = yield client.query({\n name: \"cm_get_cluster_info\",\n args: { name },\n });\n return clusterInfo;\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport function awaitGetAnchoringTransactionForBlockRid(client, blockchainRid, blockRid, systemAnchoringStatusPolling) {\n return __awaiter(this, void 0, void 0, function* () {\n let anchoringTransactionResponse = null;\n for (let i = 0; i < systemAnchoringStatusPolling.count; i++) {\n anchoringTransactionResponse = yield getAnchoringTransactionForBlockRid(client, blockchainRid, blockRid);\n if (anchoringTransactionResponse) {\n const anchoringTransactionValidaiton = AnchoringTransactionSchema.safeParse(anchoringTransactionResponse);\n if (anchoringTransactionValidaiton.success) {\n return anchoringTransactionValidaiton.data;\n }\n else if (!anchoringTransactionValidaiton.success) {\n throw new TxRejectedError(\"Invalid anchoring transaction format\");\n }\n }\n yield sleep(systemAnchoringStatusPolling.interval);\n }\n return anchoringTransactionResponse;\n });\n}\nexport function getAnchoringTransactionForBlockRid(client, blockchainRid, blockRid) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const anchoringTxForBlockRid = yield client.query({\n name: \"get_anchoring_transaction_for_block_rid\",\n args: { blockchain_rid: blockchainRid, block_rid: blockRid },\n });\n if (!anchoringTxForBlockRid)\n return null;\n return convertToAnchoringTransaction(anchoringTxForBlockRid);\n }\n catch (error) {\n throw new SystemChainException(error.message);\n }\n });\n}\nexport function convertToAnchoringTransaction(responseTx) {\n const { tx_rid, tx_data, tx_op_index } = responseTx;\n return {\n txRid: tx_rid,\n txData: tx_data,\n txOpIndex: tx_op_index,\n };\n}\nexport function calculateBlockRID(decodedTxProof, merkleHashVersion) {\n const sourceBlockHeader = decodedTxProof.blockHeader;\n if (!sourceBlockHeader) {\n throw new Error(\"Failed to get blockHeader from confirmation proof\");\n }\n const decodeSourceBlockRid = decodeValue(sourceBlockHeader);\n return gtvHash(decodeSourceBlockRid, merkleHashVersion);\n}\n// fetch tx from txRID and verifies with secp256k1.ecdsaVerify that txRID and signer creates signatures that are on the blockchain transaction\nexport function fetchAndVerifyTransaction(sourceClient, txToProveRID, proofHash, txToProveSigners) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n const rawTx = yield sourceClient.getTransaction(txToProveRID);\n const txGtv = decodeValue(rawTx);\n const fetchedTxHash = gtvHash(txGtv, sourceClient.config.merkleHashVersion);\n if (Buffer.compare(fetchedTxHash, proofHash)) {\n // We received another hash for tx RID than what was included in proof\n // Possibly rouge or faulty node(s). Anyway, we need to give up.\n throw new MissingTransactionProof(proofHash, fetchedTxHash);\n }\n const fetchedTx = rawGtvToGtx(txGtv);\n if (txToProveSigners.length != ((_a = fetchedTx.signatures) === null || _a === void 0 ? void 0 : _a.length)) {\n throw new DifferentNumberOfSignersException((_c = (_b = fetchedTx.signatures) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0, txToProveSigners.length);\n }\n const txRID = getDigestToSign(fetchedTx, sourceClient.config.merkleHashVersion);\n if (Buffer.compare(txRID, ensureBuffer(txToProveRID))) {\n throw new ProofRidException();\n }\n for (const signer of txToProveSigners) {\n let hasSignature = false;\n for (const signature of fetchedTx.signatures) {\n // verify that txRID (hash of gtxBody) signed by signers equals the signatures from network\n if (checkDigestSignature(txRID, signer, signature)) {\n hasSignature = true;\n break;\n }\n }\n if (!hasSignature)\n throw new SignatureException(signer);\n }\n return { verifiedTx: fetchedTx, verifiedTxHash: fetchedTxHash };\n });\n}\nexport function composeProofTransactionObject(sourceBlockchainRid, verifiedTxHash, txProof, iccfTxSigners, anchoringTx, anchoringProof, isNetwork = true) {\n let operationArgs;\n operationArgs = {\n sourceBlockchainRid: ensureBuffer(sourceBlockchainRid),\n transactionHash: verifiedTxHash,\n transactionProof: encodeValue(txProof),\n };\n if (isNetwork) {\n operationArgs = Object.assign(Object.assign({}, operationArgs), { transactionData: anchoringTx === null || anchoringTx === void 0 ? void 0 : anchoringTx.txData, transactionIndex: anchoringTx === null || anchoringTx === void 0 ? void 0 : anchoringTx.txOpIndex, anchoringProof: anchoringProof && encodeValue(anchoringProof) });\n }\n return {\n operations: [\n {\n name: \"iccf_proof\",\n args: Object.values(operationArgs),\n },\n ],\n signers: iccfTxSigners,\n };\n}\n//# sourceMappingURL=utils.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { createClient } from \"../blockchainClient/blockchainClient\";\nimport { awaitGetAnchoringTransactionForBlockRid, calculateBlockRID, composeProofTransactionObject, fetchAndVerifyTransaction, getClusterInfo, getClusterOfBlockchain, } from \"./utils\";\nimport { toString, toBuffer, ensureString, ensureBuffer } from \"../formatter\";\nimport { BlockAnchoringException, ConfirmationProofException } from \"./error\";\nimport { getUrlsFromEndpoints } from \"../blockchainClient/utils\";\nimport { FailoverStrategy } from \"../blockchainClient/enums\";\n/**\n * Creates an ICCF (Inter-Chain Communication Framework) proof transaction.\n * This function generates a proof that a specific transaction has occurred on the source blockchain\n * and constructs an ICCF proof transaction that can be posted to the target blockchain.\n *\n * @param {IClient} directoryClient - The client configured to communicate with the management chain.\n * @param {BufferId} txToProveRid - The RID of the transaction to be proven.\n * @param {Buffer} txToProveHash - The hash of the transaction to be proven.\n * @param {PubKey[]} txToProveSigners - An array of public keys representing signers of the transaction to be proven.\n * @param {BufferId} sourceBlockchainRid - The RID of the source blockchain.\n * @param {BufferId} targetBlockchainRid - The RID of the target blockchain.\n * @param {PubKey[]} iccfTxSigners - An array of public keys representing signers of the ICCF proof transaction (optional, default: []).\n * @param {boolean} forceIntraNetworkIccfOperation - Whether to force the ICCF operation to be performed within the same network (optional, default: false).\n * @param {number} merkleHashVersion - The version of the merkle hash to use.\n * @param {string} nodeIdentifierURL - The URL of the node to use.\n * @returns {Promise<IccfProof>} A promise that resolves to an ICCF proof object containing the ICCF proof transaction.\n */\nexport function createIccfProofTx(directoryClient, txToProveRid, txToProveHash, txToProveSigners, sourceBlockchainRid, targetBlockchainRid, iccfTxSigners = [], forceIntraNetworkIccfOperation = false, merkleHashVersion, nodeIdentifierURL) {\n return __awaiter(this, void 0, void 0, function* () {\n let clientConfiguredToSource;\n if (!nodeIdentifierURL) {\n clientConfiguredToSource = yield createClient({\n directoryNodeUrlPool: getUrlsFromEndpoints(directoryClient.config.endpointPool),\n blockchainRid: ensureString(sourceBlockchainRid),\n merkleHashVersion: merkleHashVersion,\n useStickyNode: true,\n });\n }\n else {\n clientConfiguredToSource = yield createClient({\n nodeUrlPool: nodeIdentifierURL,\n blockchainRid: ensureString(sourceBlockchainRid),\n merkleHashVersion: merkleHashVersion,\n useStickyNode: true,\n });\n }\n const txProof = yield clientConfiguredToSource.getConfirmationProof(txToProveRid);\n if (!txProof || !txProof.hash) {\n throw new ConfirmationProofException(txToProveRid);\n }\n const proofHash = txProof.hash;\n const { verifiedTx, verifiedTxHash } = !txToProveHash.equals(proofHash)\n ? yield fetchAndVerifyTransaction(clientConfiguredToSource, txToProveRid, proofHash, txToProveSigners)\n : { verifiedTx: null, verifiedTxHash: txToProveHash };\n const sourceCluster = yield getClusterOfBlockchain(directoryClient, ensureBuffer(sourceBlockchainRid));\n const targetCluster = yield getClusterOfBlockchain(directoryClient, ensureBuffer(targetBlockchainRid));\n if (!forceIntraNetworkIccfOperation && sourceCluster === targetCluster) {\n // intra-cluster\n const intraClusterProofTx = composeProofTransactionObject(sourceBlockchainRid, verifiedTxHash, txProof, iccfTxSigners, undefined, undefined, false);\n return { iccfTx: intraClusterProofTx };\n }\n else {\n // intra-network\n const systemClientUsingStickyNode = Object.assign(Object.assign({}, directoryClient), { config: Object.assign(Object.assign({}, directoryClient.config), { failoverStrategy: FailoverStrategy.SingleEndpoint }) });\n const anchoringClient = yield getAnchoringClient(systemClientUsingStickyNode, sourceBlockchainRid, sourceCluster);\n const clusterAnchoredTx = yield getBlockAnchoringTransaction(clientConfiguredToSource, anchoringClient, undefined, txProof);\n if (!clusterAnchoredTx) {\n throw new BlockAnchoringException();\n }\n const anchoringProof = yield anchoringClient.getConfirmationProof(clusterAnchoredTx.txRid);\n const intraNetworkProofTx = composeProofTransactionObject(sourceBlockchainRid, verifiedTxHash, txProof, iccfTxSigners, clusterAnchoredTx, anchoringProof);\n return { iccfTx: intraNetworkProofTx, verifiedTx };\n }\n });\n}\n/**\n * Checks whether a given transaction is included in the cluster anchoring chain and returns the\n * block anchoring transaction. If `txProof` is not provided, it fetches the confirmation proof\n * using the `sourceClient`.\n *\n * @param sourceClient - A client configured to the blockchain where the transaction was made.\n * @param anchoringClient - The client responsible for querying the anchoring blockchain.\n * @param txRid - The transaction RID to check for anchoring.\n * @param txProof - (Optional) The transaction proof for the specified `txRid`.\n * @returns A Promise that resolves to the anchored transaction response object.\n */\nexport function getBlockAnchoringTransaction(sourceClient, anchoringClient, txRid, txProof) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!txRid && !txProof) {\n throw Error(\"Missing a txRid or TxProof\");\n }\n const confirmationProof = txProof !== null && txProof !== void 0 ? txProof : (txRid && (yield sourceClient.getConfirmationProof(txRid)));\n if (!confirmationProof) {\n throw Error(\"Confirmation proof not found\");\n }\n const blockRid = calculateBlockRID(confirmationProof, sourceClient.config.merkleHashVersion);\n const blockchainRid = sourceClient.config.blockchainRid;\n const anchoringTxResponse = yield awaitGetAnchoringTransactionForBlockRid(anchoringClient, toBuffer(blockchainRid), blockRid, sourceClient.config.clusterAnchoringStatusPolling);\n return anchoringTxResponse;\n });\n}\n/**\n * Checks whether a given transaction is included in the anchoring blockchain.\n *\n * @param sourceClient - A client configured to the blockchain where the transaction was made.\n * @param anchoringClient - The client responsible for querying the anchoring blockchain.\n * @param txRid - The transaction RID to check for anchoring.\n * @param txProof - (Optional) The transaction proof for the specified `txRid`.\n * @returns A Promise that resolves to `true` if the transaction is anchored, `false` otherwise.\n */\nexport function isBlockAnchored(sourceClient, anchoringClient, txRid, txProof) {\n return __awaiter(this, void 0, void 0, function* () {\n return !!(yield getBlockAnchoringTransaction(sourceClient, anchoringClient, txRid, txProof));\n });\n}\n/**\n * Gets a client configured for the cluster anchoring blockchain of a cluster. Takes a specific\n * cluster name or blockchain RID to determine the cluster.\n * @param client - The client configured to communicate with the management chain.\n * @param dappBlockchainRid - (Optional) The RID of a blockchain which anchoring wants to be checked.\n * @param cluster - (Optional) The cluster of interest.\n * @returns A Promise that resolves to the client configured to a cluster anchoring chain.\n */\nexport function getAnchoringClient(client, dappBlockchainRid, cluster) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!dappBlockchainRid && !cluster) {\n throw Error(\"Missing a dapp blockchainRid or cluster name\");\n }\n const sourceCluster = cluster !== null && cluster !== void 0 ? cluster : (dappBlockchainRid && (yield getClusterOfBlockchain(client, ensureBuffer(dappBlockchainRid))));\n if (!sourceCluster) {\n throw Error(\"No cluster could be found\");\n }\n const sourceClusterInfo = yield getClusterInfo(client, sourceCluster);\n if (!sourceClusterInfo || !sourceClusterInfo.anchoring_chain) {\n throw Error(\"Cluster info could not be found\");\n }\n const networkSettings = Object.assign(Object.assign({}, client.config), { directoryNodeUrlPool: getUrlsFromEndpoints(client.config.endpointPool), blockchainRid: toString(sourceClusterInfo.anchoring_chain) });\n const clientConfiguredToAnchoringchain = yield createClient(networkSettings);\n return clientConfiguredToAnchoringchain;\n });\n}\n//# sourceMappingURL=IccfProofTxMaterialBuilder.js.map","/*\nThis file is part of web3.js.\n\nweb3.js is free software: you can redistribute it and/or modify\nit under the terms of the GNU Lesser General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nweb3.js is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License\nalong with web3.js. If not, see <http://www.gnu.org/licenses/>.\n*/\nimport { EventEmitter } from \"events\";\nexport class Web3EventEmitter {\n constructor() {\n this._emitter = new EventEmitter();\n }\n on(eventName, fn) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._emitter.on(eventName, fn);\n }\n once(eventName, fn) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._emitter.once(eventName, fn);\n }\n off(eventName, fn) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._emitter.off(eventName, fn);\n }\n emit(eventName, params) {\n this._emitter.emit(eventName, params);\n }\n listenerCount(eventName) {\n return this._emitter.listenerCount(eventName);\n }\n listeners(eventName) {\n return this._emitter.listeners(eventName);\n }\n eventNames() {\n return this._emitter.eventNames();\n }\n removeAllListeners() {\n this._emitter.removeAllListeners();\n }\n setMaxListenerWarningThreshold(maxListenersWarningThreshold) {\n this._emitter.setMaxListeners(maxListenersWarningThreshold);\n }\n getMaxListeners() {\n return this._emitter.getMaxListeners();\n }\n}\n//# sourceMappingURL=promiEventEmitter.js.map","/*\nThis file is part of web3.js.\n\nweb3.js is free software: you can redistribute it and/or modify\nit under the terms of the GNU Lesser General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nweb3.js is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU Lesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License\nalong with web3.js. If not, see <http://www.gnu.org/licenses/>.\n*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a;\nimport { Web3EventEmitter, } from \"./promiEventEmitter\";\nexport class Web3PromiEvent extends Web3EventEmitter {\n constructor(executor) {\n super();\n // public tag to treat object as promise by different libs\n // eslint-disable-next-line @typescript-eslint/prefer-as-const\n this[_a] = \"Promise\";\n this._promise = new Promise(executor);\n }\n then(onfulfilled, onrejected) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._promise.then(onfulfilled, onrejected);\n });\n }\n catch(onrejected) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._promise.catch(onrejected);\n });\n }\n finally(onfinally) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._promise.finally(onfinally);\n });\n }\n on(eventName, fn) {\n super.on(eventName, fn);\n return this;\n }\n once(eventName, fn) {\n super.once(eventName, fn);\n return this;\n }\n}\n_a = Symbol.toStringTag;\n//# sourceMappingURL=promiEvents.js.map","import { z } from \"zod\";\nconst WRONG_STRING_LENGTH = \"wrong string length\";\nexport const BlockIdentifierSchema = z.union([\n z.string().refine(val => /^[0-9a-fA-F]{64}$/.test(val), WRONG_STRING_LENGTH),\n z.number(),\n]);\nexport const isBlockIdentifierValid = (blockIdentifier, options) => {\n const ctx = BlockIdentifierSchema.safeParse(blockIdentifier);\n const { success } = ctx;\n const hasError = \"error\" in ctx;\n const { throwOnError = false } = options || {};\n if (!hasError) {\n return { success };\n }\n const { error } = ctx;\n const isInvalidInputType = error.issues.some(({ code }) => code === \"invalid_union\");\n const isInvalidStringLength = error.issues.some(({ message }) => message === WRONG_STRING_LENGTH);\n const message = (() => {\n if (isInvalidInputType) {\n return `Invalid \"blockIdentifier\" type. Expected string or number, but received ${typeof blockIdentifier}.`;\n }\n if (isInvalidStringLength) {\n return \"Parameter 'blockIdentifier' does not have the correct format (64-character hexadecimal string).\";\n }\n return error.issues.map(issue => issue.message).join(\", \");\n })();\n if (throwOnError) {\n throw new Error(message);\n }\n return {\n success,\n error,\n message: error.issues.map(issue => issue.message).join(\", \"),\n };\n};\n//# sourceMappingURL=blockIdentifier.js.map","import { z } from \"zod\";\nimport { FailoverStrategy } from \"../enums\";\nimport { MissingBlockchainIdentifierError, MissingNodeUrlError } from \"../errors\";\nconst IdentifierSchema = z.union([\n z.object({\n blockchainRid: z.undefined(),\n blockchainIid: z.number(),\n }),\n z.object({\n blockchainRid: z.string(),\n blockchainIid: z.undefined(),\n }),\n]);\nconst NodeUrlSchema = z.union([\n z.object({\n nodeUrlPool: z.union([z.string(), z.array(z.string())]),\n directoryNodeUrlPool: z.undefined(),\n }),\n z.object({\n nodeUrlPool: z.undefined(),\n directoryNodeUrlPool: z.union([z.string(), z.array(z.string())]),\n }),\n]);\nconst RestNetworkSettingsSchema = z.object({\n statusPollingInterval: z.number().optional(),\n statusPollingCount: z.number().optional(),\n failOverConfig: z\n .object({\n strategy: z.nativeEnum(FailoverStrategy).optional(),\n attemptsPerEndpoint: z.number().optional(),\n attemptInterval: z.number().optional(),\n unreachableDuration: z.number().optional(),\n })\n .optional(),\n});\nexport const validateBlockChainIdentifier = (networkSettings, options) => {\n const { throwOnError = false } = options || {};\n const identifierValidationContext = IdentifierSchema.safeParse(networkSettings);\n if (\"error\" in identifierValidationContext) {\n const missingBlockchainIdentifierError = new MissingBlockchainIdentifierError();\n if (throwOnError) {\n throw missingBlockchainIdentifierError;\n }\n return {\n success: identifierValidationContext.success,\n error: identifierValidationContext.error,\n message: missingBlockchainIdentifierError.message,\n };\n }\n return { success: true };\n};\nconst validateNodeUrl = (networkSettings, options) => {\n const { throwOnError = false } = options || {};\n const nodeUrlValidationContext = NodeUrlSchema.safeParse(networkSettings);\n if (\"error\" in nodeUrlValidationContext) {\n const missingNodeUrlError = new MissingNodeUrlError();\n if (throwOnError) {\n throw missingNodeUrlError;\n }\n return {\n success: nodeUrlValidationContext.success,\n error: nodeUrlValidationContext.error,\n message: missingNodeUrlError.message,\n };\n }\n return { success: true };\n};\nconst validateRestNetworkSettings = (networkSettings, options) => {\n const { throwOnError = false } = options || {};\n const restNetworkSettingsValidationContext = RestNetworkSettingsSchema.safeParse(networkSettings);\n if (\"error\" in restNetworkSettingsValidationContext) {\n const { error: { issues }, } = restNetworkSettingsValidationContext;\n const errorMessage = issues.map(({ message, path }) => `${path[0]}: ${message}`).join(\", \");\n if (throwOnError) {\n throw new Error(errorMessage);\n }\n return {\n success: restNetworkSettingsValidationContext.success,\n error: restNetworkSettingsValidationContext.error,\n message: errorMessage,\n };\n }\n return { success: true };\n};\nexport const isNetworkSettingValid = (networkSettings, options) => {\n const identifierValidationContext = validateBlockChainIdentifier(networkSettings, options);\n if (\"error\" in identifierValidationContext) {\n return identifierValidationContext;\n }\n const nodeUrlValidationContext = validateNodeUrl(networkSettings, options);\n if (\"error\" in nodeUrlValidationContext) {\n return nodeUrlValidationContext;\n }\n const restNetworkSettingsValidationContext = validateRestNetworkSettings(networkSettings, options);\n if (\"error\" in restNetworkSettingsValidationContext) {\n return restNetworkSettingsValidationContext;\n }\n return { success: true };\n};\n//# sourceMappingURL=networkSettings.js.map","import { z } from \"zod\";\nimport { BufferSchema } from \"./bufferSchema\";\nconst KeyPairSchema = z.object({\n privKey: BufferSchema,\n pubKey: BufferSchema,\n});\nconst SignatureProviderSchema = z.object({\n pubKey: BufferSchema,\n sign: z.function().args(BufferSchema).returns(z.promise(BufferSchema)),\n});\nexport const SignMethodSchema = z.union([KeyPairSchema, SignatureProviderSchema]);\nexport const isSignMethodValid = (signMethod, options) => {\n const signMethodValidationCtx = SignMethodSchema.safeParse(signMethod);\n const { throwOnError = false } = options || {};\n const hasError = \"error\" in signMethodValidationCtx;\n if (!hasError) {\n return { success: true };\n }\n const message = \"Invalid sign method\";\n if (throwOnError) {\n throw new Error(message);\n }\n return {\n success: false,\n error: signMethodValidationCtx.error,\n message,\n };\n};\n//# sourceMappingURL=signMethod.js.map","import { z } from \"zod\";\nimport { AnchoringStatus, ResponseStatus } from \"../enums\";\nconst statusEnum = z.union([z.nativeEnum(ResponseStatus), z.nativeEnum(AnchoringStatus)]);\nconst transactionStatusReponseSchema = z\n .object({\n statusCode: z.number().nullable(),\n result: z.object({\n status: statusEnum,\n rejectReason: z.string().optional(),\n }),\n})\n .transform(({ statusCode, result }) => ({\n statusCode,\n status: result.status,\n rejectReason: result.rejectReason,\n}));\nexport function validateTransactionStatusReponse(input) {\n const result = transactionStatusReponseSchema.safeParse(input);\n if (!result.success) {\n throw new Error(\"Model does not match TransactionStatusReponse\");\n }\n return result.data;\n}\n//# sourceMappingURL=transactionStatusReponse.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { randomBytes } from \"crypto\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport { getBlockAnchoringTransaction } from \"../ICCF/IccfProofTxMaterialBuilder\";\nimport * as logger from \"../logger\";\nimport { toBuffer, toString, toQueryObjectGTV, ensureString, ensureBuffer } from \"../formatter\";\nimport { decodeValue, encodeValue } from \"../gtx/serialization\";\nimport * as gtxTool from \"../gtx/gtx\";\nimport { callbackPromiseBuilder, formatBlockInfoResponse, formatTransactionInfoResponse, getClientConfigFromSettings, getGTXFromBufferOrTransactionOrOperation, getSerializedGTX, handlePostResponsePromisified, handleSystemConfirmations, isKeyPair, getAnchoringClientAndSystemChainRid, getSystemAnchoringTransaction, linkPromiEvents, handleGetResponse, handlePostResponse, handleDappConfirmations, getMerkleHashVersionFromDapp, formatRejectedTransactionFromResponse, sleep, } from \"./utils\";\nimport { Web3PromiEvent } from \"../promiEvent/promiEvents\";\nimport { NumberOfSignersAndSignaturesException } from \"../gtx/errors\";\nimport { ResponseStatus, ChainConfirmationLevel, AnchoringStatus, TransactionEvent, Method, } from \"./enums\";\nimport { isBlockIdentifierValid } from \"./validation/blockIdentifier\";\nimport { isNetworkSettingValid } from \"./validation/networkSettings\";\nimport { isSignMethodValid } from \"./validation/signMethod\";\nimport { isTxRidValid } from \"./validation/txRid\";\nimport { AnchoringTransactionSchema } from \"./validation/anchoringTransaction\";\nimport { isBlockInfoResponse, isBlockInfoResponseArray, isRawGtv, isRejectedTransactionResponseArray, isTransaction, isTransactionConfirmationProof, isTransactionInfoResponse, isTransactionInfoResponseArray, isTransactionsCount, } from \"./validation/requests\";\nimport { awaitGetAnchoringTransactionForBlockRid } from \"../ICCF/utils\";\nimport { requestWithFailoverStrategy } from \"./requestWithFailoverStrategy\";\nimport { validateTransactionStatusReponse } from \"./validation/transactionStatusReponse\";\nexport function createClient(settings) {\n return __awaiter(this, void 0, void 0, function* () {\n isNetworkSettingValid(settings, { throwOnError: true });\n const config = yield getClientConfigFromSettings(settings);\n config.merkleHashVersion = yield getMerkleHashVersion(settings);\n return {\n config,\n query(nameOrQueryObject, args, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n let _name, _args;\n if (typeof nameOrQueryObject === \"string\") {\n _name = nameOrQueryObject;\n _args = args;\n }\n else {\n _name = nameOrQueryObject === null || nameOrQueryObject === void 0 ? void 0 : nameOrQueryObject.name;\n _args = nameOrQueryObject === null || nameOrQueryObject === void 0 ? void 0 : nameOrQueryObject.args;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.POST, `query_gtv/${config.blockchainRid}`, config, encodeValue(toQueryObjectGTV(_name, _args)));\n return new Promise((resolve, reject) => {\n handlePostResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n signTransaction(transaction, signMethod, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`Signing transaction with ${!isKeyPair(signMethod) ? \"signature provider containing \" : \"\"}pubKey: ${toString(signMethod.pubKey)}`);\n const gtx = getGTXFromBufferOrTransactionOrOperation(transaction, config.blockchainRid);\n try {\n const signedTx = yield (isKeyPair(signMethod)\n ? gtxTool.sign(gtx, signMethod.privKey, config.merkleHashVersion, signMethod.pubKey)\n : gtxTool.sign(gtx, signMethod, config.merkleHashVersion));\n const gtxBytes = getSerializedGTX(signedTx);\n if (typeof callback === \"function\") {\n callback(null, gtxBytes);\n }\n return gtxBytes;\n }\n catch (error) {\n if (typeof callback === \"function\") {\n callback(error, null);\n }\n // Todo the error should be replaced with the custom error MissingSignerException\n throw new Error(error);\n }\n });\n },\n sendTransactionWithRetries(transaction, callback, confirmationLevel = ChainConfirmationLevel.Dapp) {\n const client = this;\n function sendOnce() {\n return client.sendTransaction(transaction, true, callback, confirmationLevel);\n }\n const promiEvent = new Web3PromiEvent((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n let error = null;\n // await sleep(1000);\n for (let i = 0; i < config.retryTransactionPolling.count; i++) {\n logger.info(`sendTransactionWithRetries attempt ${i + 1} of ${config.retryTransactionPolling.count}`);\n const tmpPromiEvent = sendOnce()\n .on(TransactionEvent.ClusterAnchoringConfirmation, receipt => {\n promiEvent.emit(TransactionEvent.ClusterAnchoringConfirmation, receipt);\n })\n .on(TransactionEvent.SystemAnchoringConfirmation, receipt => {\n promiEvent.emit(TransactionEvent.SystemAnchoringConfirmation, receipt);\n })\n .on(TransactionEvent.DappReceived, receipt => {\n promiEvent.emit(TransactionEvent.DappReceived, receipt);\n })\n .on(TransactionEvent.Signed, receipt => {\n promiEvent.emit(TransactionEvent.Signed, receipt);\n })\n .on(TransactionEvent.DappConfirmed, receipt => {\n promiEvent.emit(TransactionEvent.DappConfirmed, receipt);\n })\n .catch(tmpError => {\n logger.warning(`sendTransactionWithRetries error on attempt ${i + 1} of ${config.retryTransactionPolling.count}: ${tmpError}`);\n promiEvent.emit(TransactionEvent.Rejected, tmpError);\n error = tmpError;\n });\n const tmpReceipt = yield tmpPromiEvent;\n if (tmpReceipt) {\n resolve(tmpReceipt);\n return;\n }\n yield sleep(config.retryTransactionPolling.interval);\n }\n reject(error);\n }));\n return promiEvent;\n },\n sendTransaction(transaction, doStatusPolling = true, callback, confirmationLevel = ChainConfirmationLevel.Dapp) {\n const promiEvent = new Web3PromiEvent((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n try {\n const gtx = getGTXFromBufferOrTransactionOrOperation(transaction, config.blockchainRid);\n if (gtx.signers.length !== ((_a = gtx.signatures) === null || _a === void 0 ? void 0 : _a.length)) {\n reject(new NumberOfSignersAndSignaturesException());\n }\n const gtxBytes = getSerializedGTX(gtx);\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.POST, `tx/${config.blockchainRid}`, config, gtxBytes);\n const transactionRid = gtxTool.getDigestToSign(gtx, config.merkleHashVersion);\n try {\n yield handlePostResponsePromisified(error, statusCode, isRawGtv(rspBody));\n if (typeof callback === \"function\") {\n callback(null, {\n status: ResponseStatus.Waiting,\n statusCode,\n transactionRid: transactionRid,\n node: (_b = config.nodeManager.lastUsedNode) === null || _b === void 0 ? void 0 : _b.url,\n });\n }\n }\n catch (_error) {\n if (typeof callback === \"function\") {\n callback(_error, null);\n }\n return reject(_error);\n }\n const client = this;\n const statusPollingConfig = {\n dappStatusPolling: client.config.dappStatusPolling,\n clusterAnchoringStatusPolling: client.config.clusterAnchoringStatusPolling,\n systemAnchoringStatusPolling: client.config.systemAnchoringStatusPolling,\n };\n const stickyNodeClient = yield createStickyNodeClient(client); //to avoid false rejections by oblivious nodes\n let transactionReceipt = yield handleDappConfirmations(transactionRid, doStatusPolling, confirmationLevel, promiEvent, statusPollingConfig.dappStatusPolling, () => stickyNodeClient.getTransactionStatus(transactionRid, callback), stickyNodeClient);\n if (confirmationLevel === ChainConfirmationLevel.None ||\n confirmationLevel === ChainConfirmationLevel.Dapp) {\n resolve(transactionReceipt);\n return;\n }\n const { anchoringClient, systemAnchoringChainBridString } = yield getAnchoringClientAndSystemChainRid(client);\n transactionReceipt = yield handleSystemConfirmations(transactionReceipt, confirmationLevel, promiEvent, statusPollingConfig, anchoringClient, systemAnchoringChainBridString, () => stickyNodeClient.getClusterAnchoringTransactionConfirmation(transactionRid, anchoringClient, callback), anchoredTxRid => stickyNodeClient.getSystemAnchoringTransactionConfirmation(anchoredTxRid, anchoringClient, systemAnchoringChainBridString, callback));\n resolve(transactionReceipt);\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n reject(error);\n }\n }));\n return promiEvent;\n },\n signAndSendUniqueTransaction(transactionOrOperation, signMethod, doStatusPolling = true, callback, confirmationLevel = ChainConfirmationLevel.Dapp) {\n isSignMethodValid(signMethod, { throwOnError: true });\n const promiEvent = new Web3PromiEvent((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const client = this;\n const transaction = \"name\" in transactionOrOperation\n ? {\n operations: [transactionOrOperation],\n signers: [signMethod.pubKey],\n }\n : transactionOrOperation;\n const hasNop = transaction.operations.some(operation => {\n return operation.name === \"nop\";\n });\n const transactionWithNop = hasNop ? transaction : client.addNop(transaction);\n try {\n const signedTx = yield client.signTransaction(transactionWithNop, signMethod);\n promiEvent.emit(TransactionEvent.Signed, signedTx);\n const sendTransactionPromiEvent = client.sendTransaction(signedTx, doStatusPolling, callback, confirmationLevel);\n linkPromiEvents(sendTransactionPromiEvent, promiEvent);\n resolve(yield sendTransactionPromiEvent);\n }\n catch (error) {\n reject(error);\n }\n }));\n return promiEvent;\n },\n getTransaction(transactionRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${config.blockchainRid}/${ensureString(transactionRid)}`, config);\n const transaction = isTransaction(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && transaction ? toBuffer(transaction.tx) : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getTransactionStatus(transactionRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${config.blockchainRid}/${transactionRid.toString(\"hex\")}/status`, config);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, result => resolve(validateTransactionStatusReponse({\n statusCode,\n result,\n })), callback));\n });\n });\n },\n addNop(transaction) {\n const _transaction = cloneDeep(transaction);\n const noOperation = {\n name: \"nop\",\n args: [randomBytes(32)],\n };\n _transaction.operations = [..._transaction.operations, noOperation];\n return _transaction;\n },\n getTransactionsInfo(limit = 25, beforeTime, callback, afterTime, signerPubKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const beforeTimeQueryParam = beforeTime ? `&before-time=${beforeTime.getTime()}` : \"\";\n const afterTimeQueryParam = afterTime ? `&after-time=${afterTime.getTime()}` : \"\";\n const signerQueryParam = signerPubKey ? `&signer=${signerPubKey}` : \"\";\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `transactions/${config.blockchainRid}?limit=${limit}${beforeTimeQueryParam}${afterTimeQueryParam}${signerQueryParam}`, config);\n const transactionsInfoResponseArray = isTransactionInfoResponseArray(rspBody);\n const body = statusCode === 200 && transactionsInfoResponseArray\n ? transactionsInfoResponseArray.map(formatTransactionInfoResponse)\n : rspBody;\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(body), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getTransactionInfo(transactionRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `transactions/${config.blockchainRid}/${ensureString(transactionRid)}`, config);\n const transactionInfoResponse = isTransactionInfoResponse(rspBody);\n const body = statusCode === 200 && transactionInfoResponse\n ? formatTransactionInfoResponse(transactionInfoResponse)\n : rspBody;\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(body), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getAnchoringStatusForBlockRid(blockRid, anchoringClient, systemAnchoringChainRid) {\n return __awaiter(this, void 0, void 0, function* () {\n const client = this;\n const result = { status: AnchoringStatus.NotAnchored };\n const clusterAnchoredTx = yield awaitGetAnchoringTransactionForBlockRid(anchoringClient, ensureBuffer(client.config.blockchainRid), ensureBuffer(blockRid), config.clusterAnchoringStatusPolling);\n if (!clusterAnchoredTx) {\n return result;\n }\n const anchoringTransactionValidation = AnchoringTransactionSchema.safeParse(clusterAnchoredTx);\n if (!anchoringTransactionValidation.success) {\n return result;\n }\n result.status = AnchoringStatus.ClusterAnchored;\n result.clusterAnchoredTx = anchoringTransactionValidation.data;\n const systemAnchoredTransaction = yield getSystemAnchoringTransaction(config.endpointPool, anchoringTransactionValidation.data.txRid, anchoringClient, systemAnchoringChainRid, config.systemAnchoringStatusPolling, config.merkleHashVersion);\n if (!systemAnchoredTransaction) {\n return result;\n }\n result.status = AnchoringStatus.SystemAnchored;\n result.systemAnchoredTx = systemAnchoredTransaction;\n return result;\n });\n },\n getTransactionConfirmationLevel(transactionRid, callback) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const client = this;\n const dappConfirmation = yield client.getTransactionStatus(transactionRid);\n const response = {\n status: dappConfirmation.status,\n statusCode: dappConfirmation.statusCode,\n transactionRid: ensureBuffer(transactionRid),\n node: (_a = client.config.nodeManager.lastUsedNode) === null || _a === void 0 ? void 0 : _a.url,\n };\n if (dappConfirmation.status === ResponseStatus.Waiting) {\n return response;\n }\n let clusterAnchoringResult = null;\n if (dappConfirmation.status === ResponseStatus.Confirmed) {\n const { anchoringClient, systemAnchoringChainBridString } = yield getAnchoringClientAndSystemChainRid(client);\n clusterAnchoringResult = yield client.getClusterAnchoringTransactionConfirmation(transactionRid, anchoringClient);\n if (clusterAnchoringResult === AnchoringStatus.NotAnchored || !clusterAnchoringResult) {\n return response;\n }\n if (clusterAnchoringResult === AnchoringStatus.FailedAnchoring) {\n response.status = AnchoringStatus.FailedAnchoring;\n response.statusCode = 400;\n return response;\n }\n const anchoringTransactionValidation = AnchoringTransactionSchema.safeParse(clusterAnchoringResult);\n if (!anchoringTransactionValidation.success) {\n return response;\n }\n if (anchoringTransactionValidation.success) {\n response.status = AnchoringStatus.ClusterAnchored;\n response.statusCode = 200;\n response.clusterAnchoredTx = anchoringTransactionValidation.data;\n response.clusterAnchoringClientBrid = anchoringClient.config.blockchainRid;\n const systemAnchoringResult = yield client.getSystemAnchoringTransactionConfirmation(anchoringTransactionValidation.data.txRid, anchoringClient, systemAnchoringChainBridString);\n if (!systemAnchoringResult) {\n return response;\n }\n response.status = AnchoringStatus.SystemAnchored;\n response.systemAnchoredTx = systemAnchoringResult;\n response.systemAnchoringClientBrid = systemAnchoringChainBridString;\n return response;\n }\n }\n return response;\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n });\n },\n getTransactionCount(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `transactions/${config.blockchainRid}/count`, config, undefined, true);\n const transactionsCount = isTransactionsCount(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 ? transactionsCount === null || transactionsCount === void 0 ? void 0 : transactionsCount.transactionsCount : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getBlockInfo(blockIdentifier, txs = false, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n isBlockIdentifierValid(blockIdentifier, { throwOnError: true });\n const queryString = typeof blockIdentifier === \"string\" ? blockIdentifier : `height/${blockIdentifier}`;\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `blocks/${config.blockchainRid}/${queryString}?txs=${txs}`, config);\n const blockInfoResponse = isBlockInfoResponse(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && blockInfoResponse !== null && blockInfoResponse\n ? formatBlockInfoResponse(blockInfoResponse)\n : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getLatestBlock(txs = false, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const shouldIncludeFullTransaction = txs ? `&txs=${txs}` : \"\";\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `blocks/${config.blockchainRid}?limit=1${shouldIncludeFullTransaction}`, config, undefined, true);\n const indexOfLatestBlock = 0;\n const blockInfoResponseArray = isBlockInfoResponseArray(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && blockInfoResponseArray !== null && blockInfoResponseArray\n ? formatBlockInfoResponse(blockInfoResponseArray[indexOfLatestBlock])\n : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getBlocks({ limit, beforeTime, afterTime, beforeHeight, afterHeight, excludeEmpty, txs, callback, } = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const searchValues = {\n limit,\n txs,\n \"before-time\": beforeTime,\n \"after-time\": afterTime,\n \"before-height\": beforeHeight,\n \"after-height\": afterHeight,\n \"exclude-empty\": excludeEmpty,\n };\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(searchValues)) {\n if (value !== undefined) {\n searchParams.append(key, value.toString());\n }\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `blocks/${config.blockchainRid}?${searchParams}`, config);\n const blockInfoResponseArray = isBlockInfoResponseArray(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 && blockInfoResponseArray\n ? blockInfoResponseArray.map(formatBlockInfoResponse)\n : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getClientNodeUrlPool() {\n return config.endpointPool.map((endpoint) => endpoint.url);\n },\n /**\n * Retrieves a confirmation proof for a transaction with the specified sha256\n * hash.\n * @param txRid A buffer of 32 bytes\n * @param callback parameters (error, responseObjectProof) if first\n * parameter is not null, an error occurred.\n * If first parameter is null, then the second parameter is an object\n * like the following:\n *\n * {hash: messageHashBuffer,\n * blockHeader: blockHeaderBuffer,\n * signatures: [{pubKey: pubKeyBuffer, signature: sigBuffer}, ...],\n * merklePath: [{side: <0|1>, hash: <hash buffer level n-1>},\n * ...\n * {side: <0|1>, hash: <hash buffer level 1>}]}\n *\n * If no such transaction RID exists, the callback will be called with (null, null).\n *\n * The proof object can be validated using\n * postchain-common.util.validateMerklePath(proof.merklePath, proof.hash,\n * proof.blockHeader.slice(32, 64))\n *\n * The signatures must be validated agains some know trusted source for valid signers\n * at this specific block height.\n */\n getConfirmationProof(txRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(txRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `tx/${config.blockchainRid}/${ensureString(txRid)}/confirmationProof`, config);\n const confirmationProof = {\n merkleProofTree: \"\",\n txIndex: 0,\n };\n if (statusCode === 200) {\n try {\n const transactionConfirmationProof = isTransactionConfirmationProof(rspBody);\n if (!transactionConfirmationProof) {\n throw error;\n }\n const decodedProof = decodeValue(toBuffer(transactionConfirmationProof.proof));\n confirmationProof.txIndex = decodedProof.txIndex;\n confirmationProof.hash = decodedProof.hash;\n confirmationProof.blockHeader = decodedProof.blockHeader;\n confirmationProof.witness = decodedProof.witness;\n confirmationProof.merkleProofTree = decodedProof.merkleProofTree;\n }\n catch (decodeError) {\n if (callback) {\n callback(decodeError, null);\n }\n throw decodeError;\n }\n }\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, statusCode === 200 ? confirmationProof : isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getClusterAnchoringTransactionConfirmation(transactionRid, anchoringClient, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(transactionRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const client = this;\n try {\n let confirmationProof;\n try {\n confirmationProof = yield client.getConfirmationProof(transactionRid);\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n return AnchoringStatus.NotAnchored;\n }\n const anchoringTransaction = yield getBlockAnchoringTransaction(client, anchoringClient, transactionRid, confirmationProof);\n if (!anchoringTransaction)\n return AnchoringStatus.NotAnchored;\n return anchoringTransaction;\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n return AnchoringStatus.FailedAnchoring;\n }\n });\n },\n getSystemAnchoringTransactionConfirmation(anchoredTxRid, anchoringClient, systemAnchoringChainRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n isTxRidValid(anchoredTxRid, { throwOnError: true });\n }\n catch (error) {\n callback === null || callback === void 0 ? void 0 : callback(error, null);\n throw error;\n }\n const systemAnchoringTransactionTransaction = yield getSystemAnchoringTransaction(config.endpointPool, anchoredTxRid, anchoringClient, systemAnchoringChainRid, config.systemAnchoringStatusPolling, config.merkleHashVersion);\n return systemAnchoringTransactionTransaction;\n });\n },\n getWaitingTransactions(blockchainRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/tx/${ensureString(blockchainRid)}/waiting`, config);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n getWaitingTransaction(blockchainRid, txRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody, transactionTimestamp } = yield requestWithFailoverStrategy(Method.GET, `/tx/${ensureString(blockchainRid)}/waiting/${ensureString(txRid)}`, config);\n const transaction = isTransaction(rspBody);\n const result = transaction ? toBuffer(transaction.tx) : isRawGtv(rspBody);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, result, callbackPromiseBuilder(reject, txData => resolve({\n txData: isRawGtv(txData),\n transactionTimestamp: Number(transactionTimestamp),\n }), callback));\n });\n });\n },\n getRejectedTransactions(blockchainRid, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/tx/${ensureString(blockchainRid)}/rejected`, config);\n const rejectedTransactionsArray = isRejectedTransactionResponseArray(rspBody);\n const validResponseBody = statusCode === 200 && rejectedTransactionsArray\n ? rejectedTransactionsArray.map(rejectedTransaction => formatRejectedTransactionFromResponse(rejectedTransaction))\n : rspBody;\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(validResponseBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n /**\n * Get app structure. Returns list of app modules in JSON format\n * @param callback - leverages error-first pattern and called when promise resolves\n */\n getAppStructure(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const { error, statusCode, rspBody } = yield requestWithFailoverStrategy(Method.GET, `/query/${config.blockchainRid}?type=rell.get_app_structure`, config);\n return new Promise((resolve, reject) => {\n handleGetResponse(error, statusCode, isRawGtv(rspBody), callbackPromiseBuilder(reject, resolve, callback));\n });\n });\n },\n };\n function getMerkleHashVersion(settings) {\n return __awaiter(this, void 0, void 0, function* () {\n let merkleHashVersion;\n if (settings.merkleHashVersion !== undefined) {\n merkleHashVersion = settings.merkleHashVersion;\n }\n else {\n merkleHashVersion = yield getMerkleHashVersionFromDapp(config);\n }\n return merkleHashVersion;\n });\n }\n function createStickyNodeClient(client) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (!client.config.nodeManager.lastUsedNode) {\n throw new Error(\"No last used node found; cannot create sticky node client\");\n }\n const stickyNodeClient = yield createClient({\n nodeUrlPool: (_a = client.config.nodeManager.lastUsedNode) === null || _a === void 0 ? void 0 : _a.url,\n blockchainRid: client.config.blockchainRid,\n merkleHashVersion: client.config.merkleHashVersion,\n useStickyNode: true,\n });\n return stickyNodeClient;\n });\n }\n });\n}\n//# sourceMappingURL=blockchainClient.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { FailoverStrategy } from \"./enums\";\nimport { Web3PromiEvent } from \"../promiEvent/promiEvents\";\nimport { createNodeManager } from \"./nodeManager\";\nimport { setRetryTransactionPolling, setStatusPolling } from \"./utils\";\nimport { MERKLE_HASH_VERSIONS } from \"../utils/constants\";\nexport function createStubClient() {\n return __awaiter(this, void 0, void 0, function* () {\n return {\n config: {\n merkleHashVersion: MERKLE_HASH_VERSIONS.ONE,\n nodeManager: createNodeManager({\n nodeUrls: [],\n }),\n endpointPool: [],\n blockchainRid: \"0000000000000000000000000000000000000000000000000000000000000000\",\n dappStatusPolling: setStatusPolling({ interval: 5000, count: 5 }),\n clusterAnchoringStatusPolling: setStatusPolling(),\n systemAnchoringStatusPolling: setStatusPolling(),\n retryTransactionPolling: setRetryTransactionPolling(),\n failoverStrategy: FailoverStrategy.AbortOnError,\n attemptsPerEndpoint: 3,\n attemptInterval: 5000,\n unreachableDuration: 30000,\n directoryChainRid: \"1111111111111111111111111111111111111111111111111111111111111111\",\n },\n query() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"query rejected\");\n });\n },\n signTransaction() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"signTransaction rejected\");\n });\n },\n sendTransaction() {\n return new Web3PromiEvent((_resolve, reject) => reject(\"sendTransaction rejected\"));\n },\n sendTransactionWithRetries() {\n return new Web3PromiEvent((_resolve, reject) => reject(\"sendTransactionWithRetries rejected\"));\n },\n signAndSendUniqueTransaction() {\n return new Web3PromiEvent((_resolve, reject) => reject(\"signAndSendUniqueTransaction rejected\"));\n },\n getTransaction() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransaction rejected\");\n });\n },\n getTransactionStatus() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionStatus rejected\");\n });\n },\n addNop() {\n throw new Error(\"addNop error\");\n },\n getTransactionsInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionsInfo rejected\");\n });\n },\n getTransactionInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionInfo rejected\");\n });\n },\n getAnchoringStatusForBlockRid() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getAnchoringStatusForBlockRid rejected\");\n });\n },\n getTransactionConfirmationLevel() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionConfirmationLevel rejected\");\n });\n },\n getTransactionCount() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getTransactionCount rejected\");\n });\n },\n getBlocks() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getBlockInfo rejected\");\n });\n },\n getBlockInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getBlockInfo rejected\");\n });\n },\n getLatestBlock() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getLatestBlock rejected\");\n });\n },\n getClientNodeUrlPool() {\n return [];\n },\n getConfirmationProof() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getConfirmationProof rejected\");\n });\n },\n getClusterAnchoringTransactionConfirmation() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getClusterAnchoringTransactionConfirmation rejected\");\n });\n },\n getSystemAnchoringTransactionConfirmation() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getSystemAnchoringTransactionConfirmation rejected\");\n });\n },\n getAppStructure() {\n return Promise.reject(\"getAppStructure rejected\");\n },\n getWaitingTransactions() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getWaitingTransactions rejected\");\n });\n },\n getWaitingTransaction() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getWaitingTransaction rejected\");\n });\n },\n getRejectedTransactions() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.reject(\"getRejectedTransactions rejected\");\n });\n },\n };\n });\n}\n//# sourceMappingURL=clientStub.js.map","import { GetTransactionRidException } from \"../blockchainClient/errors\";\nimport { getDigestToSignFromRawGtxBody } from \"../gtx/gtx\";\n/**\n * Calculates and returns the transaction RID, i.e., the merkle root hash of the transaction.\n * @param transaction The transaction in format of RawGtxBody\n *\n */\nexport function calculateTransactionRid(transaction, merkleHashVersion) {\n try {\n return getDigestToSignFromRawGtxBody(transaction, merkleHashVersion);\n }\n catch (error) {\n throw new GetTransactionRidException(error);\n }\n}\n//# sourceMappingURL=calculateTransactionRid.js.map","import { Buffer } from \"buffer\";\nimport { formatter } from \"../..\";\nexport function dumpGtx(gtxTx) {\n var _a;\n return `blockchainRid:\\n${formatter.toString(gtxTx.blockchainRid)}\\n\noperations:\n${gtxTx.operations.map(op => ` - ${op.opName}(${op.args.map(dumpGtv).join(\", \")})\\n`).join(\"\")}\nsigners:\n${gtxTx.signers.map(s => ` - ${formatter.toString(s)}\\n`).join(\"\")}\nsignatures:\n${(_a = gtxTx.signatures) === null || _a === void 0 ? void 0 : _a.map(s => ` - ${formatter.toString(s)}\\n`).join(\"\")}`;\n}\nexport function dumpGtv(rawGtv) {\n return JSON.stringify(rawGtv, (_key, value) => {\n if (typeof value === \"bigint\") {\n return `${value.toString()}L`;\n }\n if (Buffer.isBuffer(value)) {\n return formatter.toString(value);\n }\n if (typeof value === \"object\" &&\n value !== null &&\n value.type === \"Buffer\" &&\n Array.isArray(value.data)) {\n return `0x${value.data}`;\n }\n return value;\n });\n}\n//# sourceMappingURL=dump.js.map","import * as gtxTool from \"../gtx/gtx\";\nimport * as logger from \"../logger\";\nimport { dumpGtv } from \"./dump\";\n/**\n * Decodes the transaction using ASN.1.\n * @returns the transaction decoded in GTX format\n */\nexport function decodeTransactionToGtx(encodedTransaction) {\n const gtx = gtxTool.deserialize(encodedTransaction);\n logger.debug(`Output from deserializing a raw transaction: ${dumpGtv(gtx)}`);\n return gtx;\n}\n//# sourceMappingURL=decodeTransactionToGtx.js.map"],"names":["z","Buffer","buffer","BN","gtvHash","encode","serialization.encodeValue","decode","serialization.decodeValue","secp256k1","crypto","sign","serialization.encodeValueGtx","serialization.decodeValueGtx","__awaiter","this","gtv.gtvHash","gtxEncode","gtxDecode","_a","FailoverStrategy","ResponseStatus","TransactionEvent","AnchoringStatus","ChainConfirmationLevel","logger.debug","error","logger.error","logger.warning","logger.info","gtxTool.deserialize","EventEmitter","gtx","gtxTool.sign","gtxTool.getDigestToSign","randomBytes","formatter.toString"],"mappings":"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"}
|