diff --git a/.github/workflows/bundle_size.yml b/.github/workflows/bundle_size.yml index 38002f882..4b11b9992 100644 --- a/.github/workflows/bundle_size.yml +++ b/.github/workflows/bundle_size.yml @@ -7,12 +7,12 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - name: Install Node.js 18 - uses: actions/setup-node@v3 + - name: Install Node.js 20 + uses: actions/setup-node@v4 with: - node-version: '18.x' + node-version: '20.x' # Workaround for some `yarn` nonsense, see: # https://github.com/yarnpkg/yarn/issues/6312#issuecomment-429685210 diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 0c600db78..7216cb90d 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -10,12 +10,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Use Node.js 20 - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 20 + node-version: '20.x' # Workaround for some `yarn` nonsense, see: # https://github.com/yarnpkg/yarn/issues/6312#issuecomment-429685210 diff --git a/.github/workflows/gh_pages.yml b/.github/workflows/gh_pages.yml index c4e91e709..a7a4ecee6 100644 --- a/.github/workflows/gh_pages.yml +++ b/.github/workflows/gh_pages.yml @@ -8,14 +8,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Install Node (18.x) - uses: actions/setup-node@v3 + - name: Install Node (20.x) + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - name: Install Dependencies run: yarn install @@ -24,7 +24,7 @@ jobs: run: yarn preversion - name: Checkout GH pages - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: stellar/js-stellar-base ref: gh-pages diff --git a/.github/workflows/npm_publish.yml b/.github/workflows/npm_publish.yml index e90ab61d4..09e21b084 100644 --- a/.github/workflows/npm_publish.yml +++ b/.github/workflows/npm_publish.yml @@ -8,12 +8,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install Node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: '18.x' + node-version: '20.x' registry-url: 'https://registry.npmjs.org' - name: Install Depencencies @@ -24,16 +24,6 @@ jobs: - name: Publish npm package to both places run: | - yarn publish --access public - sed -i -e 's#"@stellar/stellar-base"#"stellar-base"#' package.json - yarn publish - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - - - name: Deprecate the old package - run: | - V=$(cat package.json | jq '.version' | sed -e 's/\"//g') - echo "Deprecating stellar-base@$V" - npm deprecate stellar-base@"<= $V" "⚠️ This package has moved to @stellar/stellar-base! 🚚" + yarn publish --access public --tag protocol-23-beta env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index fd372726d..6f8657aeb 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -13,7 +13,7 @@ jobs: fail-fast: false max-parallel: 4 matrix: - node-version: [18, 20, 22] + node-version: [20, 22] steps: - name: Checkout diff --git a/CHANGELOG.md b/CHANGELOG.md index d6929e3c4..040cbef60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,24 @@ ## Unreleased + +## [`v14.0.0-rc.1`](https://github.com/stellar/js-stellar-base/compare/v13.1.0...v14.0.0-rc.1): Protocol 23 + +### Breaking Changes +* This package now requires **>= Node 20**. +* XDR definitions have been updated to align with Protocol 23 ([#800](https://github.com/stellar/js-stellar-base/pull/800)). + +### Added +* The `sodium-native` and `tweetnacl` dependencies have been replaced with `@noble/curves` ([#802](https://github.com/stellar/js-stellar-base/pull/802)). +* Support for claimable balances and liquidity pools in `StrKey` ([#799](https://github.com/stellar/js-stellar-base/pull/799)). +* Support for claimable balances, liquidity pools, and muxed accounts in `Address` ([#801](https://github.com/stellar/js-stellar-base/pull/801)). +* Added the ability for `nativeToScVal` to convert arrays with differing types to smart contract values, e.g., `nativeToScVal([1, "x", "y"], { type: [ "i128", "symbol" ]})` will give you a `Vec` ([#803](https://github.com/stellar/js-stellar-base/pull/803)). + ### Fixed -* Removed [the custom `Buffer.subarray` polyfill](https://github.com/stellar/js-stellar-base/pull/733) introduced in v11.0.1 to address the issue of it not being usable in the React Native Hermes engine. We recommend using [`@exodus/patch-broken-hermes-typed-arrays`](https://github.com/ExodusMovement/patch-broken-hermes-typed-arrays) as an alternative. If needed, please review and consider manually adding it to your project ([#795](https://github.com/stellar/js-stellar-base/pull/795)). -* Remove `MuxedAccount.parseBaseAddress` from TypeScript definitions ([#797](https://github.com/stellar/js-stellar-base/pull/797)). +* Removed the custom `Buffer.subarray` polyfill introduced in [#733](https://github.com/stellar/js-stellar-base/pull/733) in [v11.0.1](https://github.com/stellar/js-stellar-sdk/releases/tag/v11.0.1) as a workaround for React Native's Hermes engine. Please use [`@exodus/patch-broken-hermes-typed-arrays`](https://github.com/ExodusMovement/patch-broken-hermes-typed-arrays) as an alternative, if needed ([#795](https://github.com/stellar/js-stellar-base/pull/795)). * Fix browser compatibility with proper module resolution and UMD configuration ([#798](https://github.com/stellar/js-stellar-base/pull/798)). +* Remove `MuxedAccount.parseBaseAddress` from TypeScript definitions ([#797](https://github.com/stellar/js-stellar-base/pull/797)). + ## [`v13.1.0`](https://github.com/stellar/js-stellar-base/compare/v13.0.1...v13.1.0) diff --git a/Makefile b/Makefile index 85313fdd5..213be4ecc 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -XDR_BASE_URL_CURR=https://github.com/stellar/stellar-xdr/raw/529d5176f24c73eeccfa5eba481d4e89c19b1181 +XDR_BASE_URL_CURR=https://github.com/stellar/stellar-xdr/raw/4b7a2ef7931ab2ca2499be68d849f38190b443ca XDR_BASE_LOCAL_CURR=xdr/curr XDR_FILES_CURR= \ Stellar-SCP.x \ @@ -11,10 +11,11 @@ XDR_FILES_CURR= \ Stellar-contract-env-meta.x \ Stellar-contract-meta.x \ Stellar-contract-spec.x \ - Stellar-contract-config-setting.x + Stellar-contract-config-setting.x \ + Stellar-exporter.x XDR_FILES_LOCAL_CURR=$(addprefix xdr/curr/,$(XDR_FILES_CURR)) -XDR_BASE_URL_NEXT=https://github.com/stellar/stellar-xdr/raw/8c88608d0a20b01873056a5ec13be245e1f2aa27 +XDR_BASE_URL_NEXT=https://github.com/stellar/stellar-xdr/raw/4b7a2ef7931ab2ca2499be68d849f38190b443ca XDR_BASE_LOCAL_NEXT=xdr/next XDR_FILES_NEXT= \ Stellar-SCP.x \ @@ -27,7 +28,8 @@ XDR_FILES_NEXT= \ Stellar-contract-env-meta.x \ Stellar-contract-meta.x \ Stellar-contract-spec.x \ - Stellar-contract-config-setting.x + Stellar-contract-config-setting.x \ + Stellar-exporter.x XDR_FILES_LOCAL_NEXT=$(addprefix xdr/next/,$(XDR_FILES_NEXT)) XDRGEN_COMMIT=master diff --git a/README.md b/README.md index 502204330..6ca2e1d2f 100644 --- a/README.md +++ b/README.md @@ -146,8 +146,22 @@ earlier versions of Node, so the tests need to run on those versions.) #### Updating XDR definitions +XDR updates are complicated due to the fact that you need workarounds for bugs +in the generator, formatter, or a namespace adjustment. + 1. Make sure you have [Docker](https://www.docker.com/) installed and running. -2. `make reset-xdr` +2. Change the commit hash to the right version of [stellar-xdr](https://github.com/stellar/stellar-xdr) and add any filenames that might've been introduced. +3. Run `make reset-xdr` +4. Run `sed -ie s/\"/\'/g types/{curr,next}.d.ts` to minimize the diff (the generator's formatter uses `"` but the repo uses `'`). +5. Move `xdr.Operation` into a hidden namespace to avoid conflicts with the SDK's `Operation`. +6. Add generator workarounds: + * `type Hash = Opaque[]` is a necessary alias that doesn't get generated + * `Hyper`, `UnsignedHyper`, and `ScSpecEventV0` need their signatures + fixed because linting wants an `Array` instead of a naked `[]`. + * Some constants aren't generated correctly (e.g, Ctrl+F `SCSYMBOL_LIMIT` in `src/curr_generated.js`) +7. Finally, make code adjustments related to the XDR (these are usually revealed by running the tests). + +As an example PR to follow, [stellar-base#800](https://github.com/stellar/js-stellar-base/pull/800) has detailed steps for each part of the process. ## Usage diff --git a/config/webpack.config.browser.js b/config/webpack.config.browser.js index 865a1b955..9d86521ed 100644 --- a/config/webpack.config.browser.js +++ b/config/webpack.config.browser.js @@ -62,8 +62,6 @@ const config = { new ESLintPlugin({ overrideConfigFile: path.resolve(__dirname, './.eslintrc.js') }), - // Ignore native modules (sodium-native) - new webpack.IgnorePlugin({ resourceRegExp: /sodium-native/ }), new NodePolyfillPlugin(), new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] diff --git a/docs/reference/base-examples.md b/docs/reference/base-examples.md index 8fdde5155..530f49da3 100644 --- a/docs/reference/base-examples.md +++ b/docs/reference/base-examples.md @@ -10,8 +10,8 @@ title: Transaction Examples ## Creating an account -In the example below a new account is created by the source account with secret -`SA3W53XXG64ITFFIYQSBIJDG26LMXYRIMEVMNQMFAQJOYCZACCYBA34L`. The source account +In the example below a new account is created by the source account with secret +`SA3W53XXG64ITFFIYQSBIJDG26LMXYRIMEVMNQMFAQJOYCZACCYBA34L`. The source account is giving the new account 25 XLM as its initial balance. @@ -126,7 +126,7 @@ In each example, we'll use the root account. ```js -var rootKeypair = StellarSdk.Keypair.fromSecret("SBQWY3DNPFWGSZTFNV4WQZLBOJ2GQYLTMJSWK3TTMVQXEY3INFXGO52X") +var rootKeypair = StellarSdk.Keypair.fromSecret("SBQW...") var account = new StellarSdk.Account(rootkeypair.publicKey(), "46316927324160"); var secondaryAddress = "GC6HHHS7SH7KNUAOBKVGT2QZIQLRB5UA7QAGLA3IROWPH4TN65UKNJPK"; @@ -166,11 +166,9 @@ var transaction = new StellarSdk.TransactionBuilder(account, { .setTimeout(30) .build(); -var secondKeypair = StellarSdk.Keypair.fromSecret("SAMZUAAPLRUH62HH3XE7NVD6ZSMTWPWGM6DS4X47HLVRHEBKP4U2H5E7"); +var secondKeypair = StellarSdk.Keypair.fromSecret("SAMZ..."); // now we need to sign the transaction with both the root and the secondaryAddress transaction.sign(rootKeypair); transaction.sign(secondKeypair); ``` - - diff --git a/docs/reference/building-transactions.md b/docs/reference/building-transactions.md index 3e3e9ce01..1df57014b 100644 --- a/docs/reference/building-transactions.md +++ b/docs/reference/building-transactions.md @@ -143,8 +143,8 @@ var keypair = Keypair.random(); ```js -var key1 = Keypair.fromSecret('SBK2VIYYSVG76E7VC3QHYARNFLY2EAQXDHRC7BMXBBGIFG74ARPRMNQM'); -var key2 = Keypair.fromSecret('SAMZUAAPLRUH62HH3XE7NVD6ZSMTWPWGM6DS4X47HLVRHEBKP4U2H5E7'); +var key1 = Keypair.fromSecret('SBK2...'); +var key2 = Keypair.fromSecret('SAMZ...'); // Create an Account object from an address and sequence number. var account=new StellarBase.Account("GD6WU64OEP5C4LRBH6NK3MHYIA2ADN6K6II6EXPNVUR3ERBXT4AN4ACD","2319149195853854"); @@ -165,5 +165,3 @@ transaction.sign(key1); transaction.sign(key2); // submit tx to Horizon... ``` - - diff --git a/package.json b/package.json index 1e77783bf..637195562 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,10 @@ { "name": "@stellar/stellar-base", - "version": "13.1.0", + "version": "14.0.0-rc.1", "description": "Low-level support library for the Stellar network.", "main": "./lib/index.js", "browser": { - "./lib/index.js": "./dist/stellar-base.min.js", - "sodium-native": false + "./lib/index.js": "./dist/stellar-base.min.js" }, "types": "./types/index.d.ts", "scripts": { @@ -27,7 +26,7 @@ "_nyc": "nyc --nycrc-path ./config/.nycrc" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" }, "mocha": { "require": [ @@ -73,12 +72,12 @@ }, "homepage": "https://github.com/stellar/js-stellar-base", "devDependencies": { - "@babel/cli": "^7.27.0", - "@babel/core": "^7.26.10", - "@babel/eslint-parser": "^7.27.0", - "@babel/eslint-plugin": "^7.27.0", - "@babel/preset-env": "^7.26.9", - "@babel/register": "^7.25.9", + "@babel/cli": "^7.27.2", + "@babel/core": "^7.27.4", + "@babel/eslint-parser": "^7.27.5", + "@babel/eslint-plugin": "^7.27.1", + "@babel/preset-env": "^7.27.2", + "@babel/register": "^7.27.1", "@definitelytyped/dtslint": "^0.0.182", "@istanbuljs/nyc-config-babel": "3.0.0", "@types/node": "^20.14.11", @@ -94,7 +93,7 @@ "eslint-plugin-import": "^2.31.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prefer-import": "^0.0.1", - "eslint-plugin-prettier": "^5.2.5", + "eslint-plugin-prettier": "^5.5.0", "eslint-webpack-plugin": "^4.2.0", "ghooks": "^2.0.4", "husky": "^8.0.3", @@ -119,18 +118,15 @@ "terser-webpack-plugin": "^5.3.14", "ts-node": "^10.9.2", "typescript": "5.6.3", - "webpack": "^5.98.0", + "webpack": "^5.99.9", "webpack-cli": "^5.1.1" }, "dependencies": { + "@noble/curves": "^1.9.2", "@stellar/js-xdr": "^3.1.2", "base32.js": "^0.1.0", - "bignumber.js": "^9.1.2", + "bignumber.js": "^9.3.0", "buffer": "^6.0.3", - "sha.js": "^2.3.6", - "tweetnacl": "^1.0.3" - }, - "optionalDependencies": { - "sodium-native": "^4.3.3" + "sha.js": "^2.3.6" } } diff --git a/src/address.js b/src/address.js index d88c85001..c228abd47 100644 --- a/src/address.js +++ b/src/address.js @@ -4,15 +4,15 @@ import xdr from './xdr'; /** * Create a new Address object. * - * `Address` represents a single address in the Stellar network. An address can - * represent an account or a contract. + * `Address` represents a single address in the Stellar network that can be + * inputted to or outputted by a smart contract. An address can represent an + * account, muxed account, contract, claimable balance, or a liquidity pool + * (the latter two can only be present as the *output* of Core in the form + * of an event, never an input to a smart contract). * * @constructor * - * @param {string} address - ID of the account (ex. - * `GB3KJPLFUYN5VL6R3GU3EGCGVCKFDSD7BEDX42HWG5BWFKB3KQGJJRMA`). If you - * provide a muxed account address, this will throw; use {@link - * MuxedAccount} instead. + * @param {string} address - a {@link StrKey} of the address value */ export class Address { constructor(address) { @@ -22,6 +22,15 @@ export class Address { } else if (StrKey.isValidContract(address)) { this._type = 'contract'; this._key = StrKey.decodeContract(address); + } else if (StrKey.isValidMed25519PublicKey(address)) { + this._type = 'muxedAccount'; + this._key = StrKey.decodeMed25519PublicKey(address); + } else if (StrKey.isValidClaimableBalance(address)) { + this._type = 'claimableBalance'; + this._key = StrKey.decodeClaimableBalance(address); + } else if (StrKey.isValidLiquidityPool(address)) { + this._type = 'liquidityPool'; + this._key = StrKey.decodeLiquidityPool(address); } else { throw new Error(`Unsupported address type: ${address}`); } @@ -58,7 +67,37 @@ export class Address { } /** - * Convert this from an xdr.ScVal type + * Creates a new claimable balance Address object from a buffer of raw bytes. + * + * @param {Buffer} buffer - The bytes of a claimable balance ID to parse. + * @returns {Address} + */ + static claimableBalance(buffer) { + return new Address(StrKey.encodeClaimableBalance(buffer)); + } + + /** + * Creates a new liquidity pool Address object from a buffer of raw bytes. + * + * @param {Buffer} buffer - The bytes of an LP ID to parse. + * @returns {Address} + */ + static liquidityPool(buffer) { + return new Address(StrKey.encodeLiquidityPool(buffer)); + } + + /** + * Creates a new muxed account Address object from a buffer of raw bytes. + * + * @param {Buffer} buffer - The bytes of an address to parse. + * @returns {Address} + */ + static muxedAccount(buffer) { + return new Address(StrKey.encodeMed25519PublicKey(buffer)); + } + + /** + * Convert this from an xdr.ScVal type. * * @param {xdr.ScVal} scVal - The xdr.ScVal type to parse * @returns {Address} @@ -79,8 +118,14 @@ export class Address { return Address.account(scAddress.accountId().ed25519()); case xdr.ScAddressType.scAddressTypeContract().value: return Address.contract(scAddress.contractId()); + case xdr.ScAddressType.scAddressTypeMuxedAccount().value: + return Address.muxedAccount(scAddress.muxedAccount()); + case xdr.ScAddressType.scAddressTypeClaimableBalance().value: + return Address.claimableBalance(scAddress.claimableBalanceId()); + case xdr.ScAddressType.scAddressTypeLiquidityPool().value: + return Address.liquidityPool(scAddress.liquidityPoolId()); default: - throw new Error('Unsupported address type'); + throw new Error(`Unsupported address type: ${scAddress.switch().name}`); } } @@ -95,6 +140,12 @@ export class Address { return StrKey.encodeEd25519PublicKey(this._key); case 'contract': return StrKey.encodeContract(this._key); + case 'claimableBalance': + return StrKey.encodeClaimableBalance(this._key); + case 'liquidityPool': + return StrKey.encodeLiquidityPool(this._key); + case 'muxedAccount': + return StrKey.encodeMed25519PublicKey(this._key); default: throw new Error('Unsupported address type'); } @@ -122,8 +173,14 @@ export class Address { ); case 'contract': return xdr.ScAddress.scAddressTypeContract(this._key); + case 'claimableBalance': + return xdr.ScAddress.scAddressTypeClaimableBalance(this._key); + case 'liquidityPool': + return xdr.ScAddress.scAddressTypeLiquidityPool(this._key); + case 'muxedAccount': + return xdr.ScAddress.scAddressTypeMuxedAccount(this._key); default: - throw new Error('Unsupported address type'); + throw new Error(`Unsupported address type: ${this._type}`); } } diff --git a/src/generated/curr_generated.js b/src/generated/curr_generated.js index db4b4f403..977a3c5d9 100644 --- a/src/generated/curr_generated.js +++ b/src/generated/curr_generated.js @@ -1,4 +1,4 @@ -// Automatically generated by xdrgen on 2024-09-12T11:09:00-08:00 +// Automatically generated by xdrgen // DO NOT EDIT or your changes may be overwritten /* jshint maxstatements:2147483647 */ @@ -293,13 +293,6 @@ xdr.typedef("SequenceNumber", xdr.lookup("Int64")); // =========================================================================== xdr.typedef("DataValue", xdr.varOpaque(64)); -// === xdr source ============================================================ -// -// typedef Hash PoolID; -// -// =========================================================================== -xdr.typedef("PoolId", xdr.lookup("Hash")); - // === xdr source ============================================================ // // typedef opaque AssetCode4[4]; @@ -1237,38 +1230,6 @@ xdr.union("Claimant", { }, }); -// === xdr source ============================================================ -// -// enum ClaimableBalanceIDType -// { -// CLAIMABLE_BALANCE_ID_TYPE_V0 = 0 -// }; -// -// =========================================================================== -xdr.enum("ClaimableBalanceIdType", { - claimableBalanceIdTypeV0: 0, -}); - -// === xdr source ============================================================ -// -// union ClaimableBalanceID switch (ClaimableBalanceIDType type) -// { -// case CLAIMABLE_BALANCE_ID_TYPE_V0: -// Hash v0; -// }; -// -// =========================================================================== -xdr.union("ClaimableBalanceId", { - switchOn: xdr.lookup("ClaimableBalanceIdType"), - switchName: "type", - switches: [ - ["claimableBalanceIdTypeV0", "v0"], - ], - arms: { - v0: xdr.lookup("Hash"), - }, -}); - // === xdr source ============================================================ // // enum ClaimableBalanceFlags @@ -2059,15 +2020,13 @@ xdr.enum("EnvelopeType", { // enum BucketListType // { // LIVE = 0, -// HOT_ARCHIVE = 1, -// COLD_ARCHIVE = 2 +// HOT_ARCHIVE = 1 // }; // // =========================================================================== xdr.enum("BucketListType", { live: 0, hotArchive: 1, - coldArchive: 2, }); // === xdr source ============================================================ @@ -2096,10 +2055,9 @@ xdr.enum("BucketEntryType", { // { // HOT_ARCHIVE_METAENTRY = -1, // Bucket metadata, should come first. // HOT_ARCHIVE_ARCHIVED = 0, // Entry is Archived -// HOT_ARCHIVE_LIVE = 1, // Entry was previously HOT_ARCHIVE_ARCHIVED, or HOT_ARCHIVE_DELETED, but +// HOT_ARCHIVE_LIVE = 1 // Entry was previously HOT_ARCHIVE_ARCHIVED, but // // has been added back to the live BucketList. // // Does not need to be persisted. -// HOT_ARCHIVE_DELETED = 2 // Entry deleted (Note: must be persisted in archive) // }; // // =========================================================================== @@ -2107,27 +2065,6 @@ xdr.enum("HotArchiveBucketEntryType", { hotArchiveMetaentry: -1, hotArchiveArchived: 0, hotArchiveLive: 1, - hotArchiveDeleted: 2, -}); - -// === xdr source ============================================================ -// -// enum ColdArchiveBucketEntryType -// { -// COLD_ARCHIVE_METAENTRY = -1, // Bucket metadata, should come first. -// COLD_ARCHIVE_ARCHIVED_LEAF = 0, // Full LedgerEntry that was archived during the epoch -// COLD_ARCHIVE_DELETED_LEAF = 1, // LedgerKey that was deleted during the epoch -// COLD_ARCHIVE_BOUNDARY_LEAF = 2, // Dummy leaf representing low/high bound -// COLD_ARCHIVE_HASH = 3 // Intermediary Merkle hash entry -// }; -// -// =========================================================================== -xdr.enum("ColdArchiveBucketEntryType", { - coldArchiveMetaentry: -1, - coldArchiveArchivedLeaf: 0, - coldArchiveDeletedLeaf: 1, - coldArchiveBoundaryLeaf: 2, - coldArchiveHash: 3, }); // === xdr source ============================================================ @@ -2216,7 +2153,6 @@ xdr.union("BucketEntry", { // LedgerEntry archivedEntry; // // case HOT_ARCHIVE_LIVE: -// case HOT_ARCHIVE_DELETED: // LedgerKey key; // case HOT_ARCHIVE_METAENTRY: // BucketMetadata metaEntry; @@ -2229,7 +2165,6 @@ xdr.union("HotArchiveBucketEntry", { switches: [ ["hotArchiveArchived", "archivedEntry"], ["hotArchiveLive", "key"], - ["hotArchiveDeleted", "key"], ["hotArchiveMetaentry", "metaEntry"], ], arms: { @@ -2239,100 +2174,6 @@ xdr.union("HotArchiveBucketEntry", { }, }); -// === xdr source ============================================================ -// -// struct ColdArchiveArchivedLeaf -// { -// uint32 index; -// LedgerEntry archivedEntry; -// }; -// -// =========================================================================== -xdr.struct("ColdArchiveArchivedLeaf", [ - ["index", xdr.lookup("Uint32")], - ["archivedEntry", xdr.lookup("LedgerEntry")], -]); - -// === xdr source ============================================================ -// -// struct ColdArchiveDeletedLeaf -// { -// uint32 index; -// LedgerKey deletedKey; -// }; -// -// =========================================================================== -xdr.struct("ColdArchiveDeletedLeaf", [ - ["index", xdr.lookup("Uint32")], - ["deletedKey", xdr.lookup("LedgerKey")], -]); - -// === xdr source ============================================================ -// -// struct ColdArchiveBoundaryLeaf -// { -// uint32 index; -// bool isLowerBound; -// }; -// -// =========================================================================== -xdr.struct("ColdArchiveBoundaryLeaf", [ - ["index", xdr.lookup("Uint32")], - ["isLowerBound", xdr.bool()], -]); - -// === xdr source ============================================================ -// -// struct ColdArchiveHashEntry -// { -// uint32 index; -// uint32 level; -// Hash hash; -// }; -// -// =========================================================================== -xdr.struct("ColdArchiveHashEntry", [ - ["index", xdr.lookup("Uint32")], - ["level", xdr.lookup("Uint32")], - ["hash", xdr.lookup("Hash")], -]); - -// === xdr source ============================================================ -// -// union ColdArchiveBucketEntry switch (ColdArchiveBucketEntryType type) -// { -// case COLD_ARCHIVE_METAENTRY: -// BucketMetadata metaEntry; -// case COLD_ARCHIVE_ARCHIVED_LEAF: -// ColdArchiveArchivedLeaf archivedLeaf; -// case COLD_ARCHIVE_DELETED_LEAF: -// ColdArchiveDeletedLeaf deletedLeaf; -// case COLD_ARCHIVE_BOUNDARY_LEAF: -// ColdArchiveBoundaryLeaf boundaryLeaf; -// case COLD_ARCHIVE_HASH: -// ColdArchiveHashEntry hashEntry; -// }; -// -// =========================================================================== -xdr.union("ColdArchiveBucketEntry", { - switchOn: xdr.lookup("ColdArchiveBucketEntryType"), - switchName: "type", - switches: [ - ["coldArchiveMetaentry", "metaEntry"], - ["coldArchiveArchivedLeaf", "archivedLeaf"], - ["coldArchiveDeletedLeaf", "deletedLeaf"], - ["coldArchiveBoundaryLeaf", "boundaryLeaf"], - ["coldArchiveHash", "hashEntry"], - ], - arms: { - metaEntry: xdr.lookup("BucketMetadata"), - archivedLeaf: xdr.lookup("ColdArchiveArchivedLeaf"), - deletedLeaf: xdr.lookup("ColdArchiveDeletedLeaf"), - boundaryLeaf: xdr.lookup("ColdArchiveBoundaryLeaf"), - hashEntry: xdr.lookup("ColdArchiveHashEntry"), - }, -}); - // === xdr source ============================================================ // // typedef opaque UpgradeType<128>; @@ -2597,13 +2438,13 @@ xdr.enum("LedgerUpgradeType", { // === xdr source ============================================================ // // struct ConfigUpgradeSetKey { -// Hash contractID; +// ContractID contractID; // Hash contentHash; // }; // // =========================================================================== xdr.struct("ConfigUpgradeSetKey", [ - ["contractId", xdr.lookup("Hash")], + ["contractId", xdr.lookup("ContractId")], ["contentHash", xdr.lookup("Hash")], ]); @@ -2679,6 +2520,37 @@ xdr.enum("TxSetComponentType", { txsetCompTxsMaybeDiscountedFee: 0, }); +// === xdr source ============================================================ +// +// typedef TransactionEnvelope DependentTxCluster<>; +// +// =========================================================================== +xdr.typedef("DependentTxCluster", xdr.varArray(xdr.lookup("TransactionEnvelope"), 2147483647)); + +// === xdr source ============================================================ +// +// typedef DependentTxCluster ParallelTxExecutionStage<>; +// +// =========================================================================== +xdr.typedef("ParallelTxExecutionStage", xdr.varArray(xdr.lookup("DependentTxCluster"), 2147483647)); + +// === xdr source ============================================================ +// +// struct ParallelTxsComponent +// { +// int64* baseFee; +// // A sequence of stages that *may* have arbitrary data dependencies between +// // each other, i.e. in a general case the stage execution order may not be +// // arbitrarily shuffled without affecting the end result. +// ParallelTxExecutionStage executionStages<>; +// }; +// +// =========================================================================== +xdr.struct("ParallelTxsComponent", [ + ["baseFee", xdr.option(xdr.lookup("Int64"))], + ["executionStages", xdr.varArray(xdr.lookup("ParallelTxExecutionStage"), 2147483647)], +]); + // === xdr source ============================================================ // // struct @@ -2723,6 +2595,8 @@ xdr.union("TxSetComponent", { // { // case 0: // TxSetComponent v0Components<>; +// case 1: +// ParallelTxsComponent parallelTxsComponent; // }; // // =========================================================================== @@ -2731,9 +2605,11 @@ xdr.union("TransactionPhase", { switchName: "v", switches: [ [0, "v0Components"], + [1, "parallelTxsComponent"], ], arms: { v0Components: xdr.varArray(xdr.lookup("TxSetComponent"), 2147483647), + parallelTxsComponent: xdr.lookup("ParallelTxsComponent"), }, }); @@ -2999,7 +2875,8 @@ xdr.union("ScpHistoryEntry", { // LEDGER_ENTRY_CREATED = 0, // entry was added to the ledger // LEDGER_ENTRY_UPDATED = 1, // entry was modified in the ledger // LEDGER_ENTRY_REMOVED = 2, // entry was removed from the ledger -// LEDGER_ENTRY_STATE = 3 // value of the entry +// LEDGER_ENTRY_STATE = 3, // value of the entry +// LEDGER_ENTRY_RESTORED = 4 // archived entry was restored in the ledger // }; // // =========================================================================== @@ -3008,6 +2885,7 @@ xdr.enum("LedgerEntryChangeType", { ledgerEntryUpdated: 1, ledgerEntryRemoved: 2, ledgerEntryState: 3, + ledgerEntryRestored: 4, }); // === xdr source ============================================================ @@ -3022,6 +2900,8 @@ xdr.enum("LedgerEntryChangeType", { // LedgerKey removed; // case LEDGER_ENTRY_STATE: // LedgerEntry state; +// case LEDGER_ENTRY_RESTORED: +// LedgerEntry restored; // }; // // =========================================================================== @@ -3033,12 +2913,14 @@ xdr.union("LedgerEntryChange", { ["ledgerEntryUpdated", "updated"], ["ledgerEntryRemoved", "removed"], ["ledgerEntryState", "state"], + ["ledgerEntryRestored", "restored"], ], arms: { created: xdr.lookup("LedgerEntry"), updated: xdr.lookup("LedgerEntry"), removed: xdr.lookup("LedgerKey"), state: xdr.lookup("LedgerEntry"), + restored: xdr.lookup("LedgerEntry"), }, }); @@ -3155,7 +3037,7 @@ xdr.union("ContractEventBody", { // // is first, to change ContractEvent into a union. // ExtensionPoint ext; // -// Hash* contractID; +// ContractID* contractID; // ContractEventType type; // // union switch (int v) @@ -3173,7 +3055,7 @@ xdr.union("ContractEventBody", { // =========================================================================== xdr.struct("ContractEvent", [ ["ext", xdr.lookup("ExtensionPoint")], - ["contractId", xdr.option(xdr.lookup("Hash"))], + ["contractId", xdr.option(xdr.lookup("ContractId"))], ["type", xdr.lookup("ContractEventType")], ["body", xdr.lookup("ContractEventBody")], ]); @@ -3192,13 +3074,6 @@ xdr.struct("DiagnosticEvent", [ ["event", xdr.lookup("ContractEvent")], ]); -// === xdr source ============================================================ -// -// typedef DiagnosticEvent DiagnosticEvents<>; -// -// =========================================================================== -xdr.typedef("DiagnosticEvents", xdr.varArray(xdr.lookup("DiagnosticEvent"), 2147483647)); - // === xdr source ============================================================ // // struct SorobanTransactionMetaExtV1 @@ -3314,6 +3189,102 @@ xdr.struct("TransactionMetaV3", [ ["sorobanMeta", xdr.option(xdr.lookup("SorobanTransactionMeta"))], ]); +// === xdr source ============================================================ +// +// struct OperationMetaV2 +// { +// ExtensionPoint ext; +// +// LedgerEntryChanges changes; +// +// ContractEvent events<>; +// }; +// +// =========================================================================== +xdr.struct("OperationMetaV2", [ + ["ext", xdr.lookup("ExtensionPoint")], + ["changes", xdr.lookup("LedgerEntryChanges")], + ["events", xdr.varArray(xdr.lookup("ContractEvent"), 2147483647)], +]); + +// === xdr source ============================================================ +// +// struct SorobanTransactionMetaV2 +// { +// SorobanTransactionMetaExt ext; +// +// SCVal* returnValue; +// }; +// +// =========================================================================== +xdr.struct("SorobanTransactionMetaV2", [ + ["ext", xdr.lookup("SorobanTransactionMetaExt")], + ["returnValue", xdr.option(xdr.lookup("ScVal"))], +]); + +// === xdr source ============================================================ +// +// enum TransactionEventStage { +// // The event has happened before any one of the transactions has its +// // operations applied. +// TRANSACTION_EVENT_STAGE_BEFORE_ALL_TXS = 0, +// // The event has happened immediately after operations of the transaction +// // have been applied. +// TRANSACTION_EVENT_STAGE_AFTER_TX = 1, +// // The event has happened after every transaction had its operations +// // applied. +// TRANSACTION_EVENT_STAGE_AFTER_ALL_TXS = 2 +// }; +// +// =========================================================================== +xdr.enum("TransactionEventStage", { + transactionEventStageBeforeAllTxes: 0, + transactionEventStageAfterTx: 1, + transactionEventStageAfterAllTxes: 2, +}); + +// === xdr source ============================================================ +// +// struct TransactionEvent { +// TransactionEventStage stage; // Stage at which an event has occurred. +// ContractEvent event; // The contract event that has occurred. +// }; +// +// =========================================================================== +xdr.struct("TransactionEvent", [ + ["stage", xdr.lookup("TransactionEventStage")], + ["event", xdr.lookup("ContractEvent")], +]); + +// === xdr source ============================================================ +// +// struct TransactionMetaV4 +// { +// ExtensionPoint ext; +// +// LedgerEntryChanges txChangesBefore; // tx level changes before operations +// // are applied if any +// OperationMetaV2 operations<>; // meta for each operation +// LedgerEntryChanges txChangesAfter; // tx level changes after operations are +// // applied if any +// SorobanTransactionMetaV2* sorobanMeta; // Soroban-specific meta (only for +// // Soroban transactions). +// +// TransactionEvent events<>; // Used for transaction-level events (like fee payment) +// DiagnosticEvent diagnosticEvents<>; // Used for all diagnostic information +// }; +// +// =========================================================================== +xdr.struct("TransactionMetaV4", [ + ["ext", xdr.lookup("ExtensionPoint")], + ["txChangesBefore", xdr.lookup("LedgerEntryChanges")], + ["operations", xdr.varArray(xdr.lookup("OperationMetaV2"), 2147483647)], + ["txChangesAfter", xdr.lookup("LedgerEntryChanges")], + ["sorobanMeta", xdr.option(xdr.lookup("SorobanTransactionMetaV2"))], + ["events", xdr.varArray(xdr.lookup("TransactionEvent"), 2147483647)], + ["diagnosticEvents", xdr.varArray(xdr.lookup("DiagnosticEvent"), 2147483647)], +]); + // === xdr source ============================================================ // // struct InvokeHostFunctionSuccessPreImage @@ -3340,6 +3311,8 @@ xdr.struct("InvokeHostFunctionSuccessPreImage", [ // TransactionMetaV2 v2; // case 3: // TransactionMetaV3 v3; +// case 4: +// TransactionMetaV4 v4; // }; // // =========================================================================== @@ -3351,12 +3324,14 @@ xdr.union("TransactionMeta", { [1, "v1"], [2, "v2"], [3, "v3"], + [4, "v4"], ], arms: { operations: xdr.varArray(xdr.lookup("OperationMeta"), 2147483647), v1: xdr.lookup("TransactionMetaV1"), v2: xdr.lookup("TransactionMetaV2"), v3: xdr.lookup("TransactionMetaV3"), + v4: xdr.lookup("TransactionMetaV4"), }, }); @@ -3376,6 +3351,28 @@ xdr.struct("TransactionResultMeta", [ ["txApplyProcessing", xdr.lookup("TransactionMeta")], ]); +// === xdr source ============================================================ +// +// struct TransactionResultMetaV1 +// { +// ExtensionPoint ext; +// +// TransactionResultPair result; +// LedgerEntryChanges feeProcessing; +// TransactionMeta txApplyProcessing; +// +// LedgerEntryChanges postTxApplyFeeProcessing; +// }; +// +// =========================================================================== +xdr.struct("TransactionResultMetaV1", [ + ["ext", xdr.lookup("ExtensionPoint")], + ["result", xdr.lookup("TransactionResultPair")], + ["feeProcessing", xdr.lookup("LedgerEntryChanges")], + ["txApplyProcessing", xdr.lookup("TransactionMeta")], + ["postTxApplyFeeProcessing", xdr.lookup("LedgerEntryChanges")], +]); + // === xdr source ============================================================ // // struct UpgradeEntryMeta @@ -3477,16 +3474,15 @@ xdr.union("LedgerCloseMetaExt", { // // other misc information attached to the ledger close // SCPHistoryEntry scpInfo<>; // -// // Size in bytes of BucketList, to support downstream +// // Size in bytes of live Soroban state, to support downstream // // systems calculating storage fees correctly. -// uint64 totalByteSizeOfBucketList; +// uint64 totalByteSizeOfLiveSorobanState; // -// // Temp keys that are being evicted at this ledger. -// LedgerKey evictedTemporaryLedgerKeys<>; +// // TTL and data/code keys that have been evicted at this ledger. +// LedgerKey evictedKeys<>; // -// // Archived restorable ledger entries that are being -// // evicted at this ledger. -// LedgerEntry evictedPersistentLedgerEntries<>; +// // Maintained for backwards compatibility, should never be populated. +// LedgerEntry unused<>; // }; // // =========================================================================== @@ -3497,9 +3493,50 @@ xdr.struct("LedgerCloseMetaV1", [ ["txProcessing", xdr.varArray(xdr.lookup("TransactionResultMeta"), 2147483647)], ["upgradesProcessing", xdr.varArray(xdr.lookup("UpgradeEntryMeta"), 2147483647)], ["scpInfo", xdr.varArray(xdr.lookup("ScpHistoryEntry"), 2147483647)], - ["totalByteSizeOfBucketList", xdr.lookup("Uint64")], - ["evictedTemporaryLedgerKeys", xdr.varArray(xdr.lookup("LedgerKey"), 2147483647)], - ["evictedPersistentLedgerEntries", xdr.varArray(xdr.lookup("LedgerEntry"), 2147483647)], + ["totalByteSizeOfLiveSorobanState", xdr.lookup("Uint64")], + ["evictedKeys", xdr.varArray(xdr.lookup("LedgerKey"), 2147483647)], + ["unused", xdr.varArray(xdr.lookup("LedgerEntry"), 2147483647)], +]); + +// === xdr source ============================================================ +// +// struct LedgerCloseMetaV2 +// { +// LedgerCloseMetaExt ext; +// +// LedgerHeaderHistoryEntry ledgerHeader; +// +// GeneralizedTransactionSet txSet; +// +// // NB: transactions are sorted in apply order here +// // fees for all transactions are processed first +// // followed by applying transactions +// TransactionResultMetaV1 txProcessing<>; +// +// // upgrades are applied last +// UpgradeEntryMeta upgradesProcessing<>; +// +// // other misc information attached to the ledger close +// SCPHistoryEntry scpInfo<>; +// +// // Size in bytes of live Soroban state, to support downstream +// // systems calculating storage fees correctly. +// uint64 totalByteSizeOfLiveSorobanState; +// +// // TTL and data/code keys that have been evicted at this ledger. +// LedgerKey evictedKeys<>; +// }; +// +// =========================================================================== +xdr.struct("LedgerCloseMetaV2", [ + ["ext", xdr.lookup("LedgerCloseMetaExt")], + ["ledgerHeader", xdr.lookup("LedgerHeaderHistoryEntry")], + ["txSet", xdr.lookup("GeneralizedTransactionSet")], + ["txProcessing", xdr.varArray(xdr.lookup("TransactionResultMetaV1"), 2147483647)], + ["upgradesProcessing", xdr.varArray(xdr.lookup("UpgradeEntryMeta"), 2147483647)], + ["scpInfo", xdr.varArray(xdr.lookup("ScpHistoryEntry"), 2147483647)], + ["totalByteSizeOfLiveSorobanState", xdr.lookup("Uint64")], + ["evictedKeys", xdr.varArray(xdr.lookup("LedgerKey"), 2147483647)], ]); // === xdr source ============================================================ @@ -3510,6 +3547,8 @@ xdr.struct("LedgerCloseMetaV1", [ // LedgerCloseMetaV0 v0; // case 1: // LedgerCloseMetaV1 v1; +// case 2: +// LedgerCloseMetaV2 v2; // }; // // =========================================================================== @@ -3519,10 +3558,12 @@ xdr.union("LedgerCloseMeta", { switches: [ [0, "v0"], [1, "v1"], + [2, "v2"], ], arms: { v0: xdr.lookup("LedgerCloseMetaV0"), v1: xdr.lookup("LedgerCloseMetaV1"), + v2: xdr.lookup("LedgerCloseMetaV2"), }, }); @@ -3717,8 +3758,8 @@ xdr.struct("PeerAddress", [ // ERROR_MSG = 0, // AUTH = 2, // DONT_HAVE = 3, +// // GET_PEERS (4) is deprecated // -// GET_PEERS = 4, // gets a list of peers this guy knows about // PEERS = 5, // // GET_TX_SET = 6, // gets a particular txset by hash @@ -3736,8 +3777,8 @@ xdr.struct("PeerAddress", [ // // new messages // HELLO = 13, // -// SURVEY_REQUEST = 14, -// SURVEY_RESPONSE = 15, +// // SURVEY_REQUEST (14) removed and replaced by TIME_SLICED_SURVEY_REQUEST +// // SURVEY_RESPONSE (15) removed and replaced by TIME_SLICED_SURVEY_RESPONSE // // SEND_MORE = 16, // SEND_MORE_EXTENDED = 20, @@ -3756,7 +3797,6 @@ xdr.enum("MessageType", { errorMsg: 0, auth: 2, dontHave: 3, - getPeers: 4, peers: 5, getTxSet: 6, txSet: 7, @@ -3767,8 +3807,6 @@ xdr.enum("MessageType", { scpMessage: 11, getScpState: 12, hello: 13, - surveyRequest: 14, - surveyResponse: 15, sendMore: 16, sendMoreExtended: 20, floodAdvert: 18, @@ -3797,13 +3835,11 @@ xdr.struct("DontHave", [ // // enum SurveyMessageCommandType // { -// SURVEY_TOPOLOGY = 0, // TIME_SLICED_SURVEY_TOPOLOGY = 1 // }; // // =========================================================================== xdr.enum("SurveyMessageCommandType", { - surveyTopology: 0, timeSlicedSurveyTopology: 1, }); @@ -3811,15 +3847,11 @@ xdr.enum("SurveyMessageCommandType", { // // enum SurveyMessageResponseType // { -// SURVEY_TOPOLOGY_RESPONSE_V0 = 0, -// SURVEY_TOPOLOGY_RESPONSE_V1 = 1, // SURVEY_TOPOLOGY_RESPONSE_V2 = 2 // }; // // =========================================================================== xdr.enum("SurveyMessageResponseType", { - surveyTopologyResponseV0: 0, - surveyTopologyResponseV1: 1, surveyTopologyResponseV2: 2, }); @@ -3921,20 +3953,6 @@ xdr.struct("TimeSlicedSurveyRequestMessage", [ ["outboundPeersIndex", xdr.lookup("Uint32")], ]); -// === xdr source ============================================================ -// -// struct SignedSurveyRequestMessage -// { -// Signature requestSignature; -// SurveyRequestMessage request; -// }; -// -// =========================================================================== -xdr.struct("SignedSurveyRequestMessage", [ - ["requestSignature", xdr.lookup("Signature")], - ["request", xdr.lookup("SurveyRequestMessage")], -]); - // === xdr source ============================================================ // // struct SignedTimeSlicedSurveyRequestMessage @@ -3990,20 +4008,6 @@ xdr.struct("TimeSlicedSurveyResponseMessage", [ ["nonce", xdr.lookup("Uint32")], ]); -// === xdr source ============================================================ -// -// struct SignedSurveyResponseMessage -// { -// Signature responseSignature; -// SurveyResponseMessage response; -// }; -// -// =========================================================================== -xdr.struct("SignedSurveyResponseMessage", [ - ["responseSignature", xdr.lookup("Signature")], - ["response", xdr.lookup("SurveyResponseMessage")], -]); - // === xdr source ============================================================ // // struct SignedTimeSlicedSurveyResponseMessage @@ -4060,13 +4064,6 @@ xdr.struct("PeerStats", [ ["duplicateFetchMessageRecv", xdr.lookup("Uint64")], ]); -// === xdr source ============================================================ -// -// typedef PeerStats PeerStatList<25>; -// -// =========================================================================== -xdr.typedef("PeerStatList", xdr.varArray(xdr.lookup("PeerStats"), 25)); - // === xdr source ============================================================ // // struct TimeSlicedNodeData @@ -4105,68 +4102,25 @@ xdr.struct("TimeSlicedNodeData", [ // === xdr source ============================================================ // -// struct TimeSlicedPeerData -// { -// PeerStats peerStats; -// uint32 averageLatencyMs; -// }; -// -// =========================================================================== -xdr.struct("TimeSlicedPeerData", [ - ["peerStats", xdr.lookup("PeerStats")], - ["averageLatencyMs", xdr.lookup("Uint32")], -]); - -// === xdr source ============================================================ -// -// typedef TimeSlicedPeerData TimeSlicedPeerDataList<25>; -// -// =========================================================================== -xdr.typedef("TimeSlicedPeerDataList", xdr.varArray(xdr.lookup("TimeSlicedPeerData"), 25)); - -// === xdr source ============================================================ -// -// struct TopologyResponseBodyV0 -// { -// PeerStatList inboundPeers; -// PeerStatList outboundPeers; -// -// uint32 totalInboundPeerCount; -// uint32 totalOutboundPeerCount; -// }; -// -// =========================================================================== -xdr.struct("TopologyResponseBodyV0", [ - ["inboundPeers", xdr.lookup("PeerStatList")], - ["outboundPeers", xdr.lookup("PeerStatList")], - ["totalInboundPeerCount", xdr.lookup("Uint32")], - ["totalOutboundPeerCount", xdr.lookup("Uint32")], -]); - -// === xdr source ============================================================ -// -// struct TopologyResponseBodyV1 +// struct TimeSlicedPeerData // { -// PeerStatList inboundPeers; -// PeerStatList outboundPeers; -// -// uint32 totalInboundPeerCount; -// uint32 totalOutboundPeerCount; -// -// uint32 maxInboundPeerCount; -// uint32 maxOutboundPeerCount; +// PeerStats peerStats; +// uint32 averageLatencyMs; // }; // // =========================================================================== -xdr.struct("TopologyResponseBodyV1", [ - ["inboundPeers", xdr.lookup("PeerStatList")], - ["outboundPeers", xdr.lookup("PeerStatList")], - ["totalInboundPeerCount", xdr.lookup("Uint32")], - ["totalOutboundPeerCount", xdr.lookup("Uint32")], - ["maxInboundPeerCount", xdr.lookup("Uint32")], - ["maxOutboundPeerCount", xdr.lookup("Uint32")], +xdr.struct("TimeSlicedPeerData", [ + ["peerStats", xdr.lookup("PeerStats")], + ["averageLatencyMs", xdr.lookup("Uint32")], ]); +// === xdr source ============================================================ +// +// typedef TimeSlicedPeerData TimeSlicedPeerDataList<25>; +// +// =========================================================================== +xdr.typedef("TimeSlicedPeerDataList", xdr.varArray(xdr.lookup("TimeSlicedPeerData"), 25)); + // === xdr source ============================================================ // // struct TopologyResponseBodyV2 @@ -4187,10 +4141,6 @@ xdr.struct("TopologyResponseBodyV2", [ // // union SurveyResponseBody switch (SurveyMessageResponseType type) // { -// case SURVEY_TOPOLOGY_RESPONSE_V0: -// TopologyResponseBodyV0 topologyResponseBodyV0; -// case SURVEY_TOPOLOGY_RESPONSE_V1: -// TopologyResponseBodyV1 topologyResponseBodyV1; // case SURVEY_TOPOLOGY_RESPONSE_V2: // TopologyResponseBodyV2 topologyResponseBodyV2; // }; @@ -4200,13 +4150,9 @@ xdr.union("SurveyResponseBody", { switchOn: xdr.lookup("SurveyMessageResponseType"), switchName: "type", switches: [ - ["surveyTopologyResponseV0", "topologyResponseBodyV0"], - ["surveyTopologyResponseV1", "topologyResponseBodyV1"], ["surveyTopologyResponseV2", "topologyResponseBodyV2"], ], arms: { - topologyResponseBodyV0: xdr.lookup("TopologyResponseBodyV0"), - topologyResponseBodyV1: xdr.lookup("TopologyResponseBodyV1"), topologyResponseBodyV2: xdr.lookup("TopologyResponseBodyV2"), }, }); @@ -4275,8 +4221,6 @@ xdr.struct("FloodDemand", [ // Auth auth; // case DONT_HAVE: // DontHave dontHave; -// case GET_PEERS: -// void; // case PEERS: // PeerAddress peers<100>; // @@ -4290,12 +4234,6 @@ xdr.struct("FloodDemand", [ // case TRANSACTION: // TransactionEnvelope transaction; // -// case SURVEY_REQUEST: -// SignedSurveyRequestMessage signedSurveyRequestMessage; -// -// case SURVEY_RESPONSE: -// SignedSurveyResponseMessage signedSurveyResponseMessage; -// // case TIME_SLICED_SURVEY_REQUEST: // SignedTimeSlicedSurveyRequestMessage signedTimeSlicedSurveyRequestMessage; // @@ -4339,14 +4277,11 @@ xdr.union("StellarMessage", { ["hello", "hello"], ["auth", "auth"], ["dontHave", "dontHave"], - ["getPeers", xdr.void()], ["peers", "peers"], ["getTxSet", "txSetHash"], ["txSet", "txSet"], ["generalizedTxSet", "generalizedTxSet"], ["transaction", "transaction"], - ["surveyRequest", "signedSurveyRequestMessage"], - ["surveyResponse", "signedSurveyResponseMessage"], ["timeSlicedSurveyRequest", "signedTimeSlicedSurveyRequestMessage"], ["timeSlicedSurveyResponse", "signedTimeSlicedSurveyResponseMessage"], ["timeSlicedSurveyStartCollecting", "signedTimeSlicedSurveyStartCollectingMessage"], @@ -4370,8 +4305,6 @@ xdr.union("StellarMessage", { txSet: xdr.lookup("TransactionSet"), generalizedTxSet: xdr.lookup("GeneralizedTransactionSet"), transaction: xdr.lookup("TransactionEnvelope"), - signedSurveyRequestMessage: xdr.lookup("SignedSurveyRequestMessage"), - signedSurveyResponseMessage: xdr.lookup("SignedSurveyResponseMessage"), signedTimeSlicedSurveyRequestMessage: xdr.lookup("SignedTimeSlicedSurveyRequestMessage"), signedTimeSlicedSurveyResponseMessage: xdr.lookup("SignedTimeSlicedSurveyResponseMessage"), signedTimeSlicedSurveyStartCollectingMessage: xdr.lookup("SignedTimeSlicedSurveyStartCollectingMessage"), @@ -5326,6 +5259,13 @@ xdr.struct("SorobanAuthorizationEntry", [ ["rootInvocation", xdr.lookup("SorobanAuthorizedInvocation")], ]); +// === xdr source ============================================================ +// +// typedef SorobanAuthorizationEntry SorobanAuthorizationEntries<>; +// +// =========================================================================== +xdr.typedef("SorobanAuthorizationEntries", xdr.varArray(xdr.lookup("SorobanAuthorizationEntry"), 2147483647)); + // === xdr source ============================================================ // // struct InvokeHostFunctionOp @@ -5874,153 +5814,76 @@ xdr.struct("LedgerFootprint", [ // === xdr source ============================================================ // -// enum ArchivalProofType -// { -// EXISTENCE = 0, -// NONEXISTENCE = 1 -// }; -// -// =========================================================================== -xdr.enum("ArchivalProofType", { - existence: 0, - nonexistence: 1, -}); - -// === xdr source ============================================================ -// -// struct ArchivalProofNode -// { -// uint32 index; -// Hash hash; -// }; -// -// =========================================================================== -xdr.struct("ArchivalProofNode", [ - ["index", xdr.lookup("Uint32")], - ["hash", xdr.lookup("Hash")], -]); - -// === xdr source ============================================================ -// -// typedef ArchivalProofNode ProofLevel<>; -// -// =========================================================================== -xdr.typedef("ProofLevel", xdr.varArray(xdr.lookup("ArchivalProofNode"), 2147483647)); - -// === xdr source ============================================================ -// -// struct NonexistenceProofBody +// struct SorobanResources // { -// ColdArchiveBucketEntry entriesToProve<>; +// // The ledger footprint of the transaction. +// LedgerFootprint footprint; +// // The maximum number of instructions this transaction can use +// uint32 instructions; // -// // Vector of vectors, where proofLevels[level] -// // contains all HashNodes that correspond with that level -// ProofLevel proofLevels<>; +// // The maximum number of bytes this transaction can read from disk backed entries +// uint32 diskReadBytes; +// // The maximum number of bytes this transaction can write to ledger +// uint32 writeBytes; // }; // // =========================================================================== -xdr.struct("NonexistenceProofBody", [ - ["entriesToProve", xdr.varArray(xdr.lookup("ColdArchiveBucketEntry"), 2147483647)], - ["proofLevels", xdr.varArray(xdr.lookup("ProofLevel"), 2147483647)], +xdr.struct("SorobanResources", [ + ["footprint", xdr.lookup("LedgerFootprint")], + ["instructions", xdr.lookup("Uint32")], + ["diskReadBytes", xdr.lookup("Uint32")], + ["writeBytes", xdr.lookup("Uint32")], ]); // === xdr source ============================================================ // -// struct ExistenceProofBody +// struct SorobanResourcesExtV0 // { -// LedgerKey keysToProve<>; -// -// // Bounds for each key being proved, where bound[n] -// // corresponds to keysToProve[n] -// ColdArchiveBucketEntry lowBoundEntries<>; -// ColdArchiveBucketEntry highBoundEntries<>; -// -// // Vector of vectors, where proofLevels[level] -// // contains all HashNodes that correspond with that level -// ProofLevel proofLevels<>; +// // Vector of indices representing what Soroban +// // entries in the footprint are archived, based on the +// // order of keys provided in the readWrite footprint. +// uint32 archivedSorobanEntries<>; // }; // // =========================================================================== -xdr.struct("ExistenceProofBody", [ - ["keysToProve", xdr.varArray(xdr.lookup("LedgerKey"), 2147483647)], - ["lowBoundEntries", xdr.varArray(xdr.lookup("ColdArchiveBucketEntry"), 2147483647)], - ["highBoundEntries", xdr.varArray(xdr.lookup("ColdArchiveBucketEntry"), 2147483647)], - ["proofLevels", xdr.varArray(xdr.lookup("ProofLevel"), 2147483647)], +xdr.struct("SorobanResourcesExtV0", [ + ["archivedSorobanEntries", xdr.varArray(xdr.lookup("Uint32"), 2147483647)], ]); // === xdr source ============================================================ // -// union switch (ArchivalProofType t) +// union switch (int v) // { -// case EXISTENCE: -// NonexistenceProofBody nonexistenceProof; -// case NONEXISTENCE: -// ExistenceProofBody existenceProof; +// case 0: +// void; +// case 1: +// SorobanResourcesExtV0 resourceExt; // } // // =========================================================================== -xdr.union("ArchivalProofBody", { - switchOn: xdr.lookup("ArchivalProofType"), - switchName: "t", +xdr.union("SorobanTransactionDataExt", { + switchOn: xdr.int(), + switchName: "v", switches: [ - ["existence", "nonexistenceProof"], - ["nonexistence", "existenceProof"], + [0, xdr.void()], + [1, "resourceExt"], ], arms: { - nonexistenceProof: xdr.lookup("NonexistenceProofBody"), - existenceProof: xdr.lookup("ExistenceProofBody"), + resourceExt: xdr.lookup("SorobanResourcesExtV0"), }, }); -// === xdr source ============================================================ -// -// struct ArchivalProof -// { -// uint32 epoch; // AST Subtree for this proof -// -// union switch (ArchivalProofType t) -// { -// case EXISTENCE: -// NonexistenceProofBody nonexistenceProof; -// case NONEXISTENCE: -// ExistenceProofBody existenceProof; -// } body; -// }; -// -// =========================================================================== -xdr.struct("ArchivalProof", [ - ["epoch", xdr.lookup("Uint32")], - ["body", xdr.lookup("ArchivalProofBody")], -]); - -// === xdr source ============================================================ -// -// struct SorobanResources -// { -// // The ledger footprint of the transaction. -// LedgerFootprint footprint; -// // The maximum number of instructions this transaction can use -// uint32 instructions; -// -// // The maximum number of bytes this transaction can read from ledger -// uint32 readBytes; -// // The maximum number of bytes this transaction can write to ledger -// uint32 writeBytes; -// }; -// -// =========================================================================== -xdr.struct("SorobanResources", [ - ["footprint", xdr.lookup("LedgerFootprint")], - ["instructions", xdr.lookup("Uint32")], - ["readBytes", xdr.lookup("Uint32")], - ["writeBytes", xdr.lookup("Uint32")], -]); - // === xdr source ============================================================ // // struct SorobanTransactionData // { -// ExtensionPoint ext; +// union switch (int v) +// { +// case 0: +// void; +// case 1: +// SorobanResourcesExtV0 resourceExt; +// } ext; // SorobanResources resources; // // Amount of the transaction `fee` allocated to the Soroban resource fees. // // The fraction of `resourceFee` corresponding to `resources` specified @@ -6036,7 +5899,7 @@ xdr.struct("SorobanResources", [ // // =========================================================================== xdr.struct("SorobanTransactionData", [ - ["ext", xdr.lookup("ExtensionPoint")], + ["ext", xdr.lookup("SorobanTransactionDataExt")], ["resources", xdr.lookup("SorobanResources")], ["resourceFee", xdr.lookup("Int64")], ]); @@ -6148,7 +6011,6 @@ xdr.union("TransactionExt", { // // Operation operations; // -// // reserved for future use // union switch (int v) // { // case 0: @@ -8956,6 +8818,13 @@ xdr.typedef("NodeId", xdr.lookup("PublicKey")); // =========================================================================== xdr.typedef("AccountId", xdr.lookup("PublicKey")); +// === xdr source ============================================================ +// +// typedef Hash ContractID; +// +// =========================================================================== +xdr.typedef("ContractId", xdr.lookup("Hash")); + // === xdr source ============================================================ // // struct Curve25519Secret @@ -9066,6 +8935,45 @@ xdr.struct("SerializedBinaryFuseFilter", [ ["fingerprints", xdr.varOpaque()], ]); +// === xdr source ============================================================ +// +// typedef Hash PoolID; +// +// =========================================================================== +xdr.typedef("PoolId", xdr.lookup("Hash")); + +// === xdr source ============================================================ +// +// enum ClaimableBalanceIDType +// { +// CLAIMABLE_BALANCE_ID_TYPE_V0 = 0 +// }; +// +// =========================================================================== +xdr.enum("ClaimableBalanceIdType", { + claimableBalanceIdTypeV0: 0, +}); + +// === xdr source ============================================================ +// +// union ClaimableBalanceID switch (ClaimableBalanceIDType type) +// { +// case CLAIMABLE_BALANCE_ID_TYPE_V0: +// Hash v0; +// }; +// +// =========================================================================== +xdr.union("ClaimableBalanceId", { + switchOn: xdr.lookup("ClaimableBalanceIdType"), + switchName: "type", + switches: [ + ["claimableBalanceIdTypeV0", "v0"], + ], + arms: { + v0: xdr.lookup("Hash"), + }, +}); + // === xdr source ============================================================ // // enum SCValType @@ -9351,15 +9259,35 @@ xdr.union("ContractExecutable", { // enum SCAddressType // { // SC_ADDRESS_TYPE_ACCOUNT = 0, -// SC_ADDRESS_TYPE_CONTRACT = 1 +// SC_ADDRESS_TYPE_CONTRACT = 1, +// SC_ADDRESS_TYPE_MUXED_ACCOUNT = 2, +// SC_ADDRESS_TYPE_CLAIMABLE_BALANCE = 3, +// SC_ADDRESS_TYPE_LIQUIDITY_POOL = 4 // }; // // =========================================================================== xdr.enum("ScAddressType", { scAddressTypeAccount: 0, scAddressTypeContract: 1, + scAddressTypeMuxedAccount: 2, + scAddressTypeClaimableBalance: 3, + scAddressTypeLiquidityPool: 4, }); +// === xdr source ============================================================ +// +// struct MuxedEd25519Account +// { +// uint64 id; +// uint256 ed25519; +// }; +// +// =========================================================================== +xdr.struct("MuxedEd25519Account", [ + ["id", xdr.lookup("Uint64")], + ["ed25519", xdr.lookup("Uint256")], +]); + // === xdr source ============================================================ // // union SCAddress switch (SCAddressType type) @@ -9367,7 +9295,13 @@ xdr.enum("ScAddressType", { // case SC_ADDRESS_TYPE_ACCOUNT: // AccountID accountId; // case SC_ADDRESS_TYPE_CONTRACT: -// Hash contractId; +// ContractID contractId; +// case SC_ADDRESS_TYPE_MUXED_ACCOUNT: +// MuxedEd25519Account muxedAccount; +// case SC_ADDRESS_TYPE_CLAIMABLE_BALANCE: +// ClaimableBalanceID claimableBalanceId; +// case SC_ADDRESS_TYPE_LIQUIDITY_POOL: +// PoolID liquidityPoolId; // }; // // =========================================================================== @@ -9377,10 +9311,16 @@ xdr.union("ScAddress", { switches: [ ["scAddressTypeAccount", "accountId"], ["scAddressTypeContract", "contractId"], + ["scAddressTypeMuxedAccount", "muxedAccount"], + ["scAddressTypeClaimableBalance", "claimableBalanceId"], + ["scAddressTypeLiquidityPool", "liquidityPoolId"], ], arms: { accountId: xdr.lookup("AccountId"), - contractId: xdr.lookup("Hash"), + contractId: xdr.lookup("ContractId"), + muxedAccount: xdr.lookup("MuxedEd25519Account"), + claimableBalanceId: xdr.lookup("ClaimableBalanceId"), + liquidityPoolId: xdr.lookup("PoolId"), }, }); @@ -9505,13 +9445,12 @@ xdr.struct("ScContractInstance", [ // // // Special SCVals reserved for system-constructed contract-data // // ledger keys, not generally usable elsewhere. +// case SCV_CONTRACT_INSTANCE: +// SCContractInstance instance; // case SCV_LEDGER_KEY_CONTRACT_INSTANCE: // void; // case SCV_LEDGER_KEY_NONCE: // SCNonceKey nonce_key; -// -// case SCV_CONTRACT_INSTANCE: -// SCContractInstance instance; // }; // // =========================================================================== @@ -9538,9 +9477,9 @@ xdr.union("ScVal", { ["scvVec", "vec"], ["scvMap", "map"], ["scvAddress", "address"], + ["scvContractInstance", "instance"], ["scvLedgerKeyContractInstance", xdr.void()], ["scvLedgerKeyNonce", "nonceKey"], - ["scvContractInstance", "instance"], ], arms: { b: xdr.bool(), @@ -9561,8 +9500,8 @@ xdr.union("ScVal", { vec: xdr.option(xdr.lookup("ScVec")), map: xdr.option(xdr.lookup("ScMap")), address: xdr.lookup("ScAddress"), - nonceKey: xdr.lookup("ScNonceKey"), instance: xdr.lookup("ScContractInstance"), + nonceKey: xdr.lookup("ScNonceKey"), }, }); @@ -9705,6 +9644,7 @@ xdr.const("SC_SPEC_DOC_LIMIT", 1024); // SC_SPEC_TYPE_STRING = 16, // SC_SPEC_TYPE_SYMBOL = 17, // SC_SPEC_TYPE_ADDRESS = 19, +// SC_SPEC_TYPE_MUXED_ADDRESS = 20, // // // Types with parameters. // SC_SPEC_TYPE_OPTION = 1000, @@ -9738,6 +9678,7 @@ xdr.enum("ScSpecType", { scSpecTypeString: 16, scSpecTypeSymbol: 17, scSpecTypeAddress: 19, + scSpecTypeMuxedAddress: 20, scSpecTypeOption: 1000, scSpecTypeResult: 1001, scSpecTypeVec: 1002, @@ -9857,6 +9798,7 @@ xdr.struct("ScSpecTypeUdt", [ // case SC_SPEC_TYPE_STRING: // case SC_SPEC_TYPE_SYMBOL: // case SC_SPEC_TYPE_ADDRESS: +// case SC_SPEC_TYPE_MUXED_ADDRESS: // void; // case SC_SPEC_TYPE_OPTION: // SCSpecTypeOption option; @@ -9897,6 +9839,7 @@ xdr.union("ScSpecTypeDef", { ["scSpecTypeString", xdr.void()], ["scSpecTypeSymbol", xdr.void()], ["scSpecTypeAddress", xdr.void()], + ["scSpecTypeMuxedAddress", xdr.void()], ["scSpecTypeOption", "option"], ["scSpecTypeResult", "result"], ["scSpecTypeVec", "vec"], @@ -10138,6 +10081,76 @@ xdr.struct("ScSpecFunctionV0", [ ["outputs", xdr.varArray(xdr.lookup("ScSpecTypeDef"), 1)], ]); +// === xdr source ============================================================ +// +// enum SCSpecEventParamLocationV0 +// { +// SC_SPEC_EVENT_PARAM_LOCATION_DATA = 0, +// SC_SPEC_EVENT_PARAM_LOCATION_TOPIC_LIST = 1 +// }; +// +// =========================================================================== +xdr.enum("ScSpecEventParamLocationV0", { + scSpecEventParamLocationData: 0, + scSpecEventParamLocationTopicList: 1, +}); + +// === xdr source ============================================================ +// +// struct SCSpecEventParamV0 +// { +// string doc; +// string name<30>; +// SCSpecTypeDef type; +// SCSpecEventParamLocationV0 location; +// }; +// +// =========================================================================== +xdr.struct("ScSpecEventParamV0", [ + ["doc", xdr.string(SC_SPEC_DOC_LIMIT)], + ["name", xdr.string(30)], + ["type", xdr.lookup("ScSpecTypeDef")], + ["location", xdr.lookup("ScSpecEventParamLocationV0")], +]); + +// === xdr source ============================================================ +// +// enum SCSpecEventDataFormat +// { +// SC_SPEC_EVENT_DATA_FORMAT_SINGLE_VALUE = 0, +// SC_SPEC_EVENT_DATA_FORMAT_VEC = 1, +// SC_SPEC_EVENT_DATA_FORMAT_MAP = 2 +// }; +// +// =========================================================================== +xdr.enum("ScSpecEventDataFormat", { + scSpecEventDataFormatSingleValue: 0, + scSpecEventDataFormatVec: 1, + scSpecEventDataFormatMap: 2, +}); + +// === xdr source ============================================================ +// +// struct SCSpecEventV0 +// { +// string doc; +// string lib<80>; +// SCSymbol name; +// SCSymbol prefixTopics<2>; +// SCSpecEventParamV0 params<50>; +// SCSpecEventDataFormat dataFormat; +// }; +// +// =========================================================================== +xdr.struct("ScSpecEventV0", [ + ["doc", xdr.string(SC_SPEC_DOC_LIMIT)], + ["lib", xdr.string(80)], + ["name", xdr.lookup("ScSymbol")], + ["prefixTopics", xdr.varArray(xdr.lookup("ScSymbol"), 2)], + ["params", xdr.varArray(xdr.lookup("ScSpecEventParamV0"), 50)], + ["dataFormat", xdr.lookup("ScSpecEventDataFormat")], +]); + // === xdr source ============================================================ // // enum SCSpecEntryKind @@ -10146,7 +10159,8 @@ xdr.struct("ScSpecFunctionV0", [ // SC_SPEC_ENTRY_UDT_STRUCT_V0 = 1, // SC_SPEC_ENTRY_UDT_UNION_V0 = 2, // SC_SPEC_ENTRY_UDT_ENUM_V0 = 3, -// SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0 = 4 +// SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0 = 4, +// SC_SPEC_ENTRY_EVENT_V0 = 5 // }; // // =========================================================================== @@ -10156,6 +10170,7 @@ xdr.enum("ScSpecEntryKind", { scSpecEntryUdtUnionV0: 2, scSpecEntryUdtEnumV0: 3, scSpecEntryUdtErrorEnumV0: 4, + scSpecEntryEventV0: 5, }); // === xdr source ============================================================ @@ -10172,6 +10187,8 @@ xdr.enum("ScSpecEntryKind", { // SCSpecUDTEnumV0 udtEnumV0; // case SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0: // SCSpecUDTErrorEnumV0 udtErrorEnumV0; +// case SC_SPEC_ENTRY_EVENT_V0: +// SCSpecEventV0 eventV0; // }; // // =========================================================================== @@ -10184,6 +10201,7 @@ xdr.union("ScSpecEntry", { ["scSpecEntryUdtUnionV0", "udtUnionV0"], ["scSpecEntryUdtEnumV0", "udtEnumV0"], ["scSpecEntryUdtErrorEnumV0", "udtErrorEnumV0"], + ["scSpecEntryEventV0", "eventV0"], ], arms: { functionV0: xdr.lookup("ScSpecFunctionV0"), @@ -10191,6 +10209,7 @@ xdr.union("ScSpecEntry", { udtUnionV0: xdr.lookup("ScSpecUdtUnionV0"), udtEnumV0: xdr.lookup("ScSpecUdtEnumV0"), udtErrorEnumV0: xdr.lookup("ScSpecUdtErrorEnumV0"), + eventV0: xdr.lookup("ScSpecEventV0"), }, }); @@ -10231,61 +10250,95 @@ xdr.struct("ConfigSettingContractComputeV0", [ ["txMemoryLimit", xdr.lookup("Uint32")], ]); +// === xdr source ============================================================ +// +// struct ConfigSettingContractParallelComputeV0 +// { +// // Maximum number of clusters with dependent transactions allowed in a +// // stage of parallel tx set component. +// // This effectively sets the lower bound on the number of physical threads +// // necessary to effectively apply transaction sets in parallel. +// uint32 ledgerMaxDependentTxClusters; +// }; +// +// =========================================================================== +xdr.struct("ConfigSettingContractParallelComputeV0", [ + ["ledgerMaxDependentTxClusters", xdr.lookup("Uint32")], +]); + // === xdr source ============================================================ // // struct ConfigSettingContractLedgerCostV0 // { -// // Maximum number of ledger entry read operations per ledger -// uint32 ledgerMaxReadLedgerEntries; -// // Maximum number of bytes that can be read per ledger -// uint32 ledgerMaxReadBytes; +// // Maximum number of disk entry read operations per ledger +// uint32 ledgerMaxDiskReadEntries; +// // Maximum number of bytes of disk reads that can be performed per ledger +// uint32 ledgerMaxDiskReadBytes; // // Maximum number of ledger entry write operations per ledger // uint32 ledgerMaxWriteLedgerEntries; // // Maximum number of bytes that can be written per ledger // uint32 ledgerMaxWriteBytes; // -// // Maximum number of ledger entry read operations per transaction -// uint32 txMaxReadLedgerEntries; -// // Maximum number of bytes that can be read per transaction -// uint32 txMaxReadBytes; +// // Maximum number of disk entry read operations per transaction +// uint32 txMaxDiskReadEntries; +// // Maximum number of bytes of disk reads that can be performed per transaction +// uint32 txMaxDiskReadBytes; // // Maximum number of ledger entry write operations per transaction // uint32 txMaxWriteLedgerEntries; // // Maximum number of bytes that can be written per transaction // uint32 txMaxWriteBytes; // -// int64 feeReadLedgerEntry; // Fee per ledger entry read -// int64 feeWriteLedgerEntry; // Fee per ledger entry write +// int64 feeDiskReadLedgerEntry; // Fee per disk ledger entry read +// int64 feeWriteLedgerEntry; // Fee per ledger entry write // -// int64 feeRead1KB; // Fee for reading 1KB +// int64 feeDiskRead1KB; // Fee for reading 1KB disk // // // The following parameters determine the write fee per 1KB. -// // Write fee grows linearly until bucket list reaches this size -// int64 bucketListTargetSizeBytes; -// // Fee per 1KB write when the bucket list is empty -// int64 writeFee1KBBucketListLow; -// // Fee per 1KB write when the bucket list has reached `bucketListTargetSizeBytes` -// int64 writeFee1KBBucketListHigh; -// // Write fee multiplier for any additional data past the first `bucketListTargetSizeBytes` -// uint32 bucketListWriteFeeGrowthFactor; +// // Rent fee grows linearly until soroban state reaches this size +// int64 sorobanStateTargetSizeBytes; +// // Fee per 1KB rent when the soroban state is empty +// int64 rentFee1KBSorobanStateSizeLow; +// // Fee per 1KB rent when the soroban state has reached `sorobanStateTargetSizeBytes` +// int64 rentFee1KBSorobanStateSizeHigh; +// // Rent fee multiplier for any additional data past the first `sorobanStateTargetSizeBytes` +// uint32 sorobanStateRentFeeGrowthFactor; // }; // // =========================================================================== xdr.struct("ConfigSettingContractLedgerCostV0", [ - ["ledgerMaxReadLedgerEntries", xdr.lookup("Uint32")], - ["ledgerMaxReadBytes", xdr.lookup("Uint32")], + ["ledgerMaxDiskReadEntries", xdr.lookup("Uint32")], + ["ledgerMaxDiskReadBytes", xdr.lookup("Uint32")], ["ledgerMaxWriteLedgerEntries", xdr.lookup("Uint32")], ["ledgerMaxWriteBytes", xdr.lookup("Uint32")], - ["txMaxReadLedgerEntries", xdr.lookup("Uint32")], - ["txMaxReadBytes", xdr.lookup("Uint32")], + ["txMaxDiskReadEntries", xdr.lookup("Uint32")], + ["txMaxDiskReadBytes", xdr.lookup("Uint32")], ["txMaxWriteLedgerEntries", xdr.lookup("Uint32")], ["txMaxWriteBytes", xdr.lookup("Uint32")], - ["feeReadLedgerEntry", xdr.lookup("Int64")], + ["feeDiskReadLedgerEntry", xdr.lookup("Int64")], ["feeWriteLedgerEntry", xdr.lookup("Int64")], - ["feeRead1Kb", xdr.lookup("Int64")], - ["bucketListTargetSizeBytes", xdr.lookup("Int64")], - ["writeFee1KbBucketListLow", xdr.lookup("Int64")], - ["writeFee1KbBucketListHigh", xdr.lookup("Int64")], - ["bucketListWriteFeeGrowthFactor", xdr.lookup("Uint32")], + ["feeDiskRead1Kb", xdr.lookup("Int64")], + ["sorobanStateTargetSizeBytes", xdr.lookup("Int64")], + ["rentFee1KbSorobanStateSizeLow", xdr.lookup("Int64")], + ["rentFee1KbSorobanStateSizeHigh", xdr.lookup("Int64")], + ["sorobanStateRentFeeGrowthFactor", xdr.lookup("Uint32")], +]); + +// === xdr source ============================================================ +// +// struct ConfigSettingContractLedgerCostExtV0 +// { +// // Maximum number of RO+RW entries in the transaction footprint. +// uint32 txMaxFootprintEntries; +// // Fee per 1 KB of data written to the ledger. +// // Unlike the rent fee, this is a flat fee that is charged for any ledger +// // write, independent of the type of the entry being written. +// int64 feeWrite1KB; +// }; +// +// =========================================================================== +xdr.struct("ConfigSettingContractLedgerCostExtV0", [ + ["txMaxFootprintEntries", xdr.lookup("Uint32")], + ["feeWrite1Kb", xdr.lookup("Int64")], ]); // === xdr source ============================================================ @@ -10596,11 +10649,11 @@ xdr.struct("ContractCostParamEntry", [ // // max number of entries that emit archival meta in a single ledger // uint32 maxEntriesToArchive; // -// // Number of snapshots to use when calculating average BucketList size -// uint32 bucketListSizeWindowSampleSize; +// // Number of snapshots to use when calculating average live Soroban State size +// uint32 liveSorobanStateSizeWindowSampleSize; // -// // How often to sample the BucketList size for the average, in ledgers -// uint32 bucketListWindowSamplePeriod; +// // How often to sample the live Soroban State size for the average, in ledgers +// uint32 liveSorobanStateSizeWindowSamplePeriod; // // // Maximum number of bytes that we scan for eviction per ledger // uint32 evictionScanSize; @@ -10617,8 +10670,8 @@ xdr.struct("StateArchivalSettings", [ ["persistentRentRateDenominator", xdr.lookup("Int64")], ["tempRentRateDenominator", xdr.lookup("Int64")], ["maxEntriesToArchive", xdr.lookup("Uint32")], - ["bucketListSizeWindowSampleSize", xdr.lookup("Uint32")], - ["bucketListWindowSamplePeriod", xdr.lookup("Uint32")], + ["liveSorobanStateSizeWindowSampleSize", xdr.lookup("Uint32")], + ["liveSorobanStateSizeWindowSamplePeriod", xdr.lookup("Uint32")], ["evictionScanSize", xdr.lookup("Uint32")], ["startingEvictionScanLevel", xdr.lookup("Uint32")], ]); @@ -10638,6 +10691,25 @@ xdr.struct("EvictionIterator", [ ["bucketFileOffset", xdr.lookup("Uint64")], ]); +// === xdr source ============================================================ +// +// struct ConfigSettingSCPTiming { +// uint32 ledgerTargetCloseTimeMilliseconds; +// uint32 nominationTimeoutInitialMilliseconds; +// uint32 nominationTimeoutIncrementMilliseconds; +// uint32 ballotTimeoutInitialMilliseconds; +// uint32 ballotTimeoutIncrementMilliseconds; +// }; +// +// =========================================================================== +xdr.struct("ConfigSettingScpTiming", [ + ["ledgerTargetCloseTimeMilliseconds", xdr.lookup("Uint32")], + ["nominationTimeoutInitialMilliseconds", xdr.lookup("Uint32")], + ["nominationTimeoutIncrementMilliseconds", xdr.lookup("Uint32")], + ["ballotTimeoutInitialMilliseconds", xdr.lookup("Uint32")], + ["ballotTimeoutIncrementMilliseconds", xdr.lookup("Uint32")], +]); + // === xdr source ============================================================ // // const CONTRACT_COST_COUNT_LIMIT = 1024; @@ -10668,8 +10740,11 @@ xdr.typedef("ContractCostParams", xdr.varArray(xdr.lookup("ContractCostParamEntr // CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES = 9, // CONFIG_SETTING_STATE_ARCHIVAL = 10, // CONFIG_SETTING_CONTRACT_EXECUTION_LANES = 11, -// CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW = 12, -// CONFIG_SETTING_EVICTION_ITERATOR = 13 +// CONFIG_SETTING_LIVE_SOROBAN_STATE_SIZE_WINDOW = 12, +// CONFIG_SETTING_EVICTION_ITERATOR = 13, +// CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0 = 14, +// CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0 = 15, +// CONFIG_SETTING_SCP_TIMING = 16 // }; // // =========================================================================== @@ -10686,8 +10761,11 @@ xdr.enum("ConfigSettingId", { configSettingContractDataEntrySizeBytes: 9, configSettingStateArchival: 10, configSettingContractExecutionLanes: 11, - configSettingBucketlistSizeWindow: 12, + configSettingLiveSorobanStateSizeWindow: 12, configSettingEvictionIterator: 13, + configSettingContractParallelComputeV0: 14, + configSettingContractLedgerCostExtV0: 15, + configSettingScpTiming: 16, }); // === xdr source ============================================================ @@ -10718,10 +10796,16 @@ xdr.enum("ConfigSettingId", { // StateArchivalSettings stateArchivalSettings; // case CONFIG_SETTING_CONTRACT_EXECUTION_LANES: // ConfigSettingContractExecutionLanesV0 contractExecutionLanes; -// case CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW: -// uint64 bucketListSizeWindow<>; +// case CONFIG_SETTING_LIVE_SOROBAN_STATE_SIZE_WINDOW: +// uint64 liveSorobanStateSizeWindow<>; // case CONFIG_SETTING_EVICTION_ITERATOR: // EvictionIterator evictionIterator; +// case CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0: +// ConfigSettingContractParallelComputeV0 contractParallelCompute; +// case CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0: +// ConfigSettingContractLedgerCostExtV0 contractLedgerCostExt; +// case CONFIG_SETTING_SCP_TIMING: +// ConfigSettingSCPTiming contractSCPTiming; // }; // // =========================================================================== @@ -10741,8 +10825,11 @@ xdr.union("ConfigSettingEntry", { ["configSettingContractDataEntrySizeBytes", "contractDataEntrySizeBytes"], ["configSettingStateArchival", "stateArchivalSettings"], ["configSettingContractExecutionLanes", "contractExecutionLanes"], - ["configSettingBucketlistSizeWindow", "bucketListSizeWindow"], + ["configSettingLiveSorobanStateSizeWindow", "liveSorobanStateSizeWindow"], ["configSettingEvictionIterator", "evictionIterator"], + ["configSettingContractParallelComputeV0", "contractParallelCompute"], + ["configSettingContractLedgerCostExtV0", "contractLedgerCostExt"], + ["configSettingScpTiming", "contractScpTiming"], ], arms: { contractMaxSizeBytes: xdr.lookup("Uint32"), @@ -10757,10 +10844,34 @@ xdr.union("ConfigSettingEntry", { contractDataEntrySizeBytes: xdr.lookup("Uint32"), stateArchivalSettings: xdr.lookup("StateArchivalSettings"), contractExecutionLanes: xdr.lookup("ConfigSettingContractExecutionLanesV0"), - bucketListSizeWindow: xdr.varArray(xdr.lookup("Uint64"), 2147483647), + liveSorobanStateSizeWindow: xdr.varArray(xdr.lookup("Uint64"), 2147483647), evictionIterator: xdr.lookup("EvictionIterator"), + contractParallelCompute: xdr.lookup("ConfigSettingContractParallelComputeV0"), + contractLedgerCostExt: xdr.lookup("ConfigSettingContractLedgerCostExtV0"), + contractScpTiming: xdr.lookup("ConfigSettingScpTiming"), }, }); +// === xdr source ============================================================ +// +// struct LedgerCloseMetaBatch +// { +// // starting ledger sequence number in the batch +// uint32 startSequence; +// +// // ending ledger sequence number in the batch +// uint32 endSequence; +// +// // Ledger close meta for each ledger within the batch +// LedgerCloseMeta ledgerCloseMetas<>; +// }; +// +// =========================================================================== +xdr.struct("LedgerCloseMetaBatch", [ + ["startSequence", xdr.lookup("Uint32")], + ["endSequence", xdr.lookup("Uint32")], + ["ledgerCloseMeta", xdr.varArray(xdr.lookup("LedgerCloseMeta"), 2147483647)], +]); + }); export default types; diff --git a/src/generated/next_generated.js b/src/generated/next_generated.js index fe8ce8690..977a3c5d9 100644 --- a/src/generated/next_generated.js +++ b/src/generated/next_generated.js @@ -1,4 +1,4 @@ -// Automatically generated by xdrgen on 2024-09-12T11:09:00-08:00 +// Automatically generated by xdrgen // DO NOT EDIT or your changes may be overwritten /* jshint maxstatements:2147483647 */ @@ -15,6 +15,13 @@ var types = XDR.config(xdr => { const SCSYMBOL_LIMIT = 32; const SC_SPEC_DOC_LIMIT = 1024; +// === xdr source ============================================================ +// +// typedef opaque Value<>; +// +// =========================================================================== +xdr.typedef("Value", xdr.varOpaque()); + // === xdr source ============================================================ // // struct SCPBallot @@ -286,13 +293,6 @@ xdr.typedef("SequenceNumber", xdr.lookup("Int64")); // =========================================================================== xdr.typedef("DataValue", xdr.varOpaque(64)); -// === xdr source ============================================================ -// -// typedef Hash PoolID; -// -// =========================================================================== -xdr.typedef("PoolId", xdr.lookup("Hash")); - // === xdr source ============================================================ // // typedef opaque AssetCode4[4]; @@ -1230,38 +1230,6 @@ xdr.union("Claimant", { }, }); -// === xdr source ============================================================ -// -// enum ClaimableBalanceIDType -// { -// CLAIMABLE_BALANCE_ID_TYPE_V0 = 0 -// }; -// -// =========================================================================== -xdr.enum("ClaimableBalanceIdType", { - claimableBalanceIdTypeV0: 0, -}); - -// === xdr source ============================================================ -// -// union ClaimableBalanceID switch (ClaimableBalanceIDType type) -// { -// case CLAIMABLE_BALANCE_ID_TYPE_V0: -// Hash v0; -// }; -// -// =========================================================================== -xdr.union("ClaimableBalanceId", { - switchOn: xdr.lookup("ClaimableBalanceIdType"), - switchName: "type", - switches: [ - ["claimableBalanceIdTypeV0", "v0"], - ], - arms: { - v0: xdr.lookup("Hash"), - }, -}); - // === xdr source ============================================================ // // enum ClaimableBalanceFlags @@ -2052,15 +2020,13 @@ xdr.enum("EnvelopeType", { // enum BucketListType // { // LIVE = 0, -// HOT_ARCHIVE = 1, -// COLD_ARCHIVE = 2 +// HOT_ARCHIVE = 1 // }; // // =========================================================================== xdr.enum("BucketListType", { live: 0, hotArchive: 1, - coldArchive: 2, }); // === xdr source ============================================================ @@ -2089,10 +2055,9 @@ xdr.enum("BucketEntryType", { // { // HOT_ARCHIVE_METAENTRY = -1, // Bucket metadata, should come first. // HOT_ARCHIVE_ARCHIVED = 0, // Entry is Archived -// HOT_ARCHIVE_LIVE = 1, // Entry was previously HOT_ARCHIVE_ARCHIVED, or HOT_ARCHIVE_DELETED, but +// HOT_ARCHIVE_LIVE = 1 // Entry was previously HOT_ARCHIVE_ARCHIVED, but // // has been added back to the live BucketList. // // Does not need to be persisted. -// HOT_ARCHIVE_DELETED = 2 // Entry deleted (Note: must be persisted in archive) // }; // // =========================================================================== @@ -2100,27 +2065,6 @@ xdr.enum("HotArchiveBucketEntryType", { hotArchiveMetaentry: -1, hotArchiveArchived: 0, hotArchiveLive: 1, - hotArchiveDeleted: 2, -}); - -// === xdr source ============================================================ -// -// enum ColdArchiveBucketEntryType -// { -// COLD_ARCHIVE_METAENTRY = -1, // Bucket metadata, should come first. -// COLD_ARCHIVE_ARCHIVED_LEAF = 0, // Full LedgerEntry that was archived during the epoch -// COLD_ARCHIVE_DELETED_LEAF = 1, // LedgerKey that was deleted during the epoch -// COLD_ARCHIVE_BOUNDARY_LEAF = 2, // Dummy leaf representing low/high bound -// COLD_ARCHIVE_HASH = 3 // Intermediary Merkle hash entry -// }; -// -// =========================================================================== -xdr.enum("ColdArchiveBucketEntryType", { - coldArchiveMetaentry: -1, - coldArchiveArchivedLeaf: 0, - coldArchiveDeletedLeaf: 1, - coldArchiveBoundaryLeaf: 2, - coldArchiveHash: 3, }); // === xdr source ============================================================ @@ -2209,7 +2153,6 @@ xdr.union("BucketEntry", { // LedgerEntry archivedEntry; // // case HOT_ARCHIVE_LIVE: -// case HOT_ARCHIVE_DELETED: // LedgerKey key; // case HOT_ARCHIVE_METAENTRY: // BucketMetadata metaEntry; @@ -2222,7 +2165,6 @@ xdr.union("HotArchiveBucketEntry", { switches: [ ["hotArchiveArchived", "archivedEntry"], ["hotArchiveLive", "key"], - ["hotArchiveDeleted", "key"], ["hotArchiveMetaentry", "metaEntry"], ], arms: { @@ -2232,100 +2174,6 @@ xdr.union("HotArchiveBucketEntry", { }, }); -// === xdr source ============================================================ -// -// struct ColdArchiveArchivedLeaf -// { -// uint32 index; -// LedgerEntry archivedEntry; -// }; -// -// =========================================================================== -xdr.struct("ColdArchiveArchivedLeaf", [ - ["index", xdr.lookup("Uint32")], - ["archivedEntry", xdr.lookup("LedgerEntry")], -]); - -// === xdr source ============================================================ -// -// struct ColdArchiveDeletedLeaf -// { -// uint32 index; -// LedgerKey deletedKey; -// }; -// -// =========================================================================== -xdr.struct("ColdArchiveDeletedLeaf", [ - ["index", xdr.lookup("Uint32")], - ["deletedKey", xdr.lookup("LedgerKey")], -]); - -// === xdr source ============================================================ -// -// struct ColdArchiveBoundaryLeaf -// { -// uint32 index; -// bool isLowerBound; -// }; -// -// =========================================================================== -xdr.struct("ColdArchiveBoundaryLeaf", [ - ["index", xdr.lookup("Uint32")], - ["isLowerBound", xdr.bool()], -]); - -// === xdr source ============================================================ -// -// struct ColdArchiveHashEntry -// { -// uint32 index; -// uint32 level; -// Hash hash; -// }; -// -// =========================================================================== -xdr.struct("ColdArchiveHashEntry", [ - ["index", xdr.lookup("Uint32")], - ["level", xdr.lookup("Uint32")], - ["hash", xdr.lookup("Hash")], -]); - -// === xdr source ============================================================ -// -// union ColdArchiveBucketEntry switch (ColdArchiveBucketEntryType type) -// { -// case COLD_ARCHIVE_METAENTRY: -// BucketMetadata metaEntry; -// case COLD_ARCHIVE_ARCHIVED_LEAF: -// ColdArchiveArchivedLeaf archivedLeaf; -// case COLD_ARCHIVE_DELETED_LEAF: -// ColdArchiveDeletedLeaf deletedLeaf; -// case COLD_ARCHIVE_BOUNDARY_LEAF: -// ColdArchiveBoundaryLeaf boundaryLeaf; -// case COLD_ARCHIVE_HASH: -// ColdArchiveHashEntry hashEntry; -// }; -// -// =========================================================================== -xdr.union("ColdArchiveBucketEntry", { - switchOn: xdr.lookup("ColdArchiveBucketEntryType"), - switchName: "type", - switches: [ - ["coldArchiveMetaentry", "metaEntry"], - ["coldArchiveArchivedLeaf", "archivedLeaf"], - ["coldArchiveDeletedLeaf", "deletedLeaf"], - ["coldArchiveBoundaryLeaf", "boundaryLeaf"], - ["coldArchiveHash", "hashEntry"], - ], - arms: { - metaEntry: xdr.lookup("BucketMetadata"), - archivedLeaf: xdr.lookup("ColdArchiveArchivedLeaf"), - deletedLeaf: xdr.lookup("ColdArchiveDeletedLeaf"), - boundaryLeaf: xdr.lookup("ColdArchiveBoundaryLeaf"), - hashEntry: xdr.lookup("ColdArchiveHashEntry"), - }, -}); - // === xdr source ============================================================ // // typedef opaque UpgradeType<128>; @@ -2590,13 +2438,13 @@ xdr.enum("LedgerUpgradeType", { // === xdr source ============================================================ // // struct ConfigUpgradeSetKey { -// Hash contractID; +// ContractID contractID; // Hash contentHash; // }; // // =========================================================================== xdr.struct("ConfigUpgradeSetKey", [ - ["contractId", xdr.lookup("Hash")], + ["contractId", xdr.lookup("ContractId")], ["contentHash", xdr.lookup("Hash")], ]); @@ -2674,23 +2522,26 @@ xdr.enum("TxSetComponentType", { // === xdr source ============================================================ // -// typedef TransactionEnvelope TxExecutionThread<>; +// typedef TransactionEnvelope DependentTxCluster<>; // // =========================================================================== -xdr.typedef("TxExecutionThread", xdr.varArray(xdr.lookup("TransactionEnvelope"), 2147483647)); +xdr.typedef("DependentTxCluster", xdr.varArray(xdr.lookup("TransactionEnvelope"), 2147483647)); // === xdr source ============================================================ // -// typedef TxExecutionThread ParallelTxExecutionStage<>; +// typedef DependentTxCluster ParallelTxExecutionStage<>; // // =========================================================================== -xdr.typedef("ParallelTxExecutionStage", xdr.varArray(xdr.lookup("TxExecutionThread"), 2147483647)); +xdr.typedef("ParallelTxExecutionStage", xdr.varArray(xdr.lookup("DependentTxCluster"), 2147483647)); // === xdr source ============================================================ // // struct ParallelTxsComponent // { // int64* baseFee; +// // A sequence of stages that *may* have arbitrary data dependencies between +// // each other, i.e. in a general case the stage execution order may not be +// // arbitrarily shuffled without affecting the end result. // ParallelTxExecutionStage executionStages<>; // }; // @@ -3024,7 +2875,8 @@ xdr.union("ScpHistoryEntry", { // LEDGER_ENTRY_CREATED = 0, // entry was added to the ledger // LEDGER_ENTRY_UPDATED = 1, // entry was modified in the ledger // LEDGER_ENTRY_REMOVED = 2, // entry was removed from the ledger -// LEDGER_ENTRY_STATE = 3 // value of the entry +// LEDGER_ENTRY_STATE = 3, // value of the entry +// LEDGER_ENTRY_RESTORED = 4 // archived entry was restored in the ledger // }; // // =========================================================================== @@ -3033,6 +2885,7 @@ xdr.enum("LedgerEntryChangeType", { ledgerEntryUpdated: 1, ledgerEntryRemoved: 2, ledgerEntryState: 3, + ledgerEntryRestored: 4, }); // === xdr source ============================================================ @@ -3047,6 +2900,8 @@ xdr.enum("LedgerEntryChangeType", { // LedgerKey removed; // case LEDGER_ENTRY_STATE: // LedgerEntry state; +// case LEDGER_ENTRY_RESTORED: +// LedgerEntry restored; // }; // // =========================================================================== @@ -3058,12 +2913,14 @@ xdr.union("LedgerEntryChange", { ["ledgerEntryUpdated", "updated"], ["ledgerEntryRemoved", "removed"], ["ledgerEntryState", "state"], + ["ledgerEntryRestored", "restored"], ], arms: { created: xdr.lookup("LedgerEntry"), updated: xdr.lookup("LedgerEntry"), removed: xdr.lookup("LedgerKey"), state: xdr.lookup("LedgerEntry"), + restored: xdr.lookup("LedgerEntry"), }, }); @@ -3180,7 +3037,7 @@ xdr.union("ContractEventBody", { // // is first, to change ContractEvent into a union. // ExtensionPoint ext; // -// Hash* contractID; +// ContractID* contractID; // ContractEventType type; // // union switch (int v) @@ -3198,7 +3055,7 @@ xdr.union("ContractEventBody", { // =========================================================================== xdr.struct("ContractEvent", [ ["ext", xdr.lookup("ExtensionPoint")], - ["contractId", xdr.option(xdr.lookup("Hash"))], + ["contractId", xdr.option(xdr.lookup("ContractId"))], ["type", xdr.lookup("ContractEventType")], ["body", xdr.lookup("ContractEventBody")], ]); @@ -3332,6 +3189,102 @@ xdr.struct("TransactionMetaV3", [ ["sorobanMeta", xdr.option(xdr.lookup("SorobanTransactionMeta"))], ]); +// === xdr source ============================================================ +// +// struct OperationMetaV2 +// { +// ExtensionPoint ext; +// +// LedgerEntryChanges changes; +// +// ContractEvent events<>; +// }; +// +// =========================================================================== +xdr.struct("OperationMetaV2", [ + ["ext", xdr.lookup("ExtensionPoint")], + ["changes", xdr.lookup("LedgerEntryChanges")], + ["events", xdr.varArray(xdr.lookup("ContractEvent"), 2147483647)], +]); + +// === xdr source ============================================================ +// +// struct SorobanTransactionMetaV2 +// { +// SorobanTransactionMetaExt ext; +// +// SCVal* returnValue; +// }; +// +// =========================================================================== +xdr.struct("SorobanTransactionMetaV2", [ + ["ext", xdr.lookup("SorobanTransactionMetaExt")], + ["returnValue", xdr.option(xdr.lookup("ScVal"))], +]); + +// === xdr source ============================================================ +// +// enum TransactionEventStage { +// // The event has happened before any one of the transactions has its +// // operations applied. +// TRANSACTION_EVENT_STAGE_BEFORE_ALL_TXS = 0, +// // The event has happened immediately after operations of the transaction +// // have been applied. +// TRANSACTION_EVENT_STAGE_AFTER_TX = 1, +// // The event has happened after every transaction had its operations +// // applied. +// TRANSACTION_EVENT_STAGE_AFTER_ALL_TXS = 2 +// }; +// +// =========================================================================== +xdr.enum("TransactionEventStage", { + transactionEventStageBeforeAllTxes: 0, + transactionEventStageAfterTx: 1, + transactionEventStageAfterAllTxes: 2, +}); + +// === xdr source ============================================================ +// +// struct TransactionEvent { +// TransactionEventStage stage; // Stage at which an event has occurred. +// ContractEvent event; // The contract event that has occurred. +// }; +// +// =========================================================================== +xdr.struct("TransactionEvent", [ + ["stage", xdr.lookup("TransactionEventStage")], + ["event", xdr.lookup("ContractEvent")], +]); + +// === xdr source ============================================================ +// +// struct TransactionMetaV4 +// { +// ExtensionPoint ext; +// +// LedgerEntryChanges txChangesBefore; // tx level changes before operations +// // are applied if any +// OperationMetaV2 operations<>; // meta for each operation +// LedgerEntryChanges txChangesAfter; // tx level changes after operations are +// // applied if any +// SorobanTransactionMetaV2* sorobanMeta; // Soroban-specific meta (only for +// // Soroban transactions). +// +// TransactionEvent events<>; // Used for transaction-level events (like fee payment) +// DiagnosticEvent diagnosticEvents<>; // Used for all diagnostic information +// }; +// +// =========================================================================== +xdr.struct("TransactionMetaV4", [ + ["ext", xdr.lookup("ExtensionPoint")], + ["txChangesBefore", xdr.lookup("LedgerEntryChanges")], + ["operations", xdr.varArray(xdr.lookup("OperationMetaV2"), 2147483647)], + ["txChangesAfter", xdr.lookup("LedgerEntryChanges")], + ["sorobanMeta", xdr.option(xdr.lookup("SorobanTransactionMetaV2"))], + ["events", xdr.varArray(xdr.lookup("TransactionEvent"), 2147483647)], + ["diagnosticEvents", xdr.varArray(xdr.lookup("DiagnosticEvent"), 2147483647)], +]); + // === xdr source ============================================================ // // struct InvokeHostFunctionSuccessPreImage @@ -3358,6 +3311,8 @@ xdr.struct("InvokeHostFunctionSuccessPreImage", [ // TransactionMetaV2 v2; // case 3: // TransactionMetaV3 v3; +// case 4: +// TransactionMetaV4 v4; // }; // // =========================================================================== @@ -3369,12 +3324,14 @@ xdr.union("TransactionMeta", { [1, "v1"], [2, "v2"], [3, "v3"], + [4, "v4"], ], arms: { operations: xdr.varArray(xdr.lookup("OperationMeta"), 2147483647), v1: xdr.lookup("TransactionMetaV1"), v2: xdr.lookup("TransactionMetaV2"), v3: xdr.lookup("TransactionMetaV3"), + v4: xdr.lookup("TransactionMetaV4"), }, }); @@ -3394,6 +3351,28 @@ xdr.struct("TransactionResultMeta", [ ["txApplyProcessing", xdr.lookup("TransactionMeta")], ]); +// === xdr source ============================================================ +// +// struct TransactionResultMetaV1 +// { +// ExtensionPoint ext; +// +// TransactionResultPair result; +// LedgerEntryChanges feeProcessing; +// TransactionMeta txApplyProcessing; +// +// LedgerEntryChanges postTxApplyFeeProcessing; +// }; +// +// =========================================================================== +xdr.struct("TransactionResultMetaV1", [ + ["ext", xdr.lookup("ExtensionPoint")], + ["result", xdr.lookup("TransactionResultPair")], + ["feeProcessing", xdr.lookup("LedgerEntryChanges")], + ["txApplyProcessing", xdr.lookup("TransactionMeta")], + ["postTxApplyFeeProcessing", xdr.lookup("LedgerEntryChanges")], +]); + // === xdr source ============================================================ // // struct UpgradeEntryMeta @@ -3495,16 +3474,15 @@ xdr.union("LedgerCloseMetaExt", { // // other misc information attached to the ledger close // SCPHistoryEntry scpInfo<>; // -// // Size in bytes of BucketList, to support downstream +// // Size in bytes of live Soroban state, to support downstream // // systems calculating storage fees correctly. -// uint64 totalByteSizeOfBucketList; +// uint64 totalByteSizeOfLiveSorobanState; // -// // Temp keys that are being evicted at this ledger. -// LedgerKey evictedTemporaryLedgerKeys<>; +// // TTL and data/code keys that have been evicted at this ledger. +// LedgerKey evictedKeys<>; // -// // Archived restorable ledger entries that are being -// // evicted at this ledger. -// LedgerEntry evictedPersistentLedgerEntries<>; +// // Maintained for backwards compatibility, should never be populated. +// LedgerEntry unused<>; // }; // // =========================================================================== @@ -3515,9 +3493,50 @@ xdr.struct("LedgerCloseMetaV1", [ ["txProcessing", xdr.varArray(xdr.lookup("TransactionResultMeta"), 2147483647)], ["upgradesProcessing", xdr.varArray(xdr.lookup("UpgradeEntryMeta"), 2147483647)], ["scpInfo", xdr.varArray(xdr.lookup("ScpHistoryEntry"), 2147483647)], - ["totalByteSizeOfBucketList", xdr.lookup("Uint64")], - ["evictedTemporaryLedgerKeys", xdr.varArray(xdr.lookup("LedgerKey"), 2147483647)], - ["evictedPersistentLedgerEntries", xdr.varArray(xdr.lookup("LedgerEntry"), 2147483647)], + ["totalByteSizeOfLiveSorobanState", xdr.lookup("Uint64")], + ["evictedKeys", xdr.varArray(xdr.lookup("LedgerKey"), 2147483647)], + ["unused", xdr.varArray(xdr.lookup("LedgerEntry"), 2147483647)], +]); + +// === xdr source ============================================================ +// +// struct LedgerCloseMetaV2 +// { +// LedgerCloseMetaExt ext; +// +// LedgerHeaderHistoryEntry ledgerHeader; +// +// GeneralizedTransactionSet txSet; +// +// // NB: transactions are sorted in apply order here +// // fees for all transactions are processed first +// // followed by applying transactions +// TransactionResultMetaV1 txProcessing<>; +// +// // upgrades are applied last +// UpgradeEntryMeta upgradesProcessing<>; +// +// // other misc information attached to the ledger close +// SCPHistoryEntry scpInfo<>; +// +// // Size in bytes of live Soroban state, to support downstream +// // systems calculating storage fees correctly. +// uint64 totalByteSizeOfLiveSorobanState; +// +// // TTL and data/code keys that have been evicted at this ledger. +// LedgerKey evictedKeys<>; +// }; +// +// =========================================================================== +xdr.struct("LedgerCloseMetaV2", [ + ["ext", xdr.lookup("LedgerCloseMetaExt")], + ["ledgerHeader", xdr.lookup("LedgerHeaderHistoryEntry")], + ["txSet", xdr.lookup("GeneralizedTransactionSet")], + ["txProcessing", xdr.varArray(xdr.lookup("TransactionResultMetaV1"), 2147483647)], + ["upgradesProcessing", xdr.varArray(xdr.lookup("UpgradeEntryMeta"), 2147483647)], + ["scpInfo", xdr.varArray(xdr.lookup("ScpHistoryEntry"), 2147483647)], + ["totalByteSizeOfLiveSorobanState", xdr.lookup("Uint64")], + ["evictedKeys", xdr.varArray(xdr.lookup("LedgerKey"), 2147483647)], ]); // === xdr source ============================================================ @@ -3528,6 +3547,8 @@ xdr.struct("LedgerCloseMetaV1", [ // LedgerCloseMetaV0 v0; // case 1: // LedgerCloseMetaV1 v1; +// case 2: +// LedgerCloseMetaV2 v2; // }; // // =========================================================================== @@ -3537,10 +3558,12 @@ xdr.union("LedgerCloseMeta", { switches: [ [0, "v0"], [1, "v1"], + [2, "v2"], ], arms: { v0: xdr.lookup("LedgerCloseMetaV0"), v1: xdr.lookup("LedgerCloseMetaV1"), + v2: xdr.lookup("LedgerCloseMetaV2"), }, }); @@ -3735,8 +3758,8 @@ xdr.struct("PeerAddress", [ // ERROR_MSG = 0, // AUTH = 2, // DONT_HAVE = 3, +// // GET_PEERS (4) is deprecated // -// GET_PEERS = 4, // gets a list of peers this guy knows about // PEERS = 5, // // GET_TX_SET = 6, // gets a particular txset by hash @@ -3754,8 +3777,8 @@ xdr.struct("PeerAddress", [ // // new messages // HELLO = 13, // -// SURVEY_REQUEST = 14, -// SURVEY_RESPONSE = 15, +// // SURVEY_REQUEST (14) removed and replaced by TIME_SLICED_SURVEY_REQUEST +// // SURVEY_RESPONSE (15) removed and replaced by TIME_SLICED_SURVEY_RESPONSE // // SEND_MORE = 16, // SEND_MORE_EXTENDED = 20, @@ -3774,7 +3797,6 @@ xdr.enum("MessageType", { errorMsg: 0, auth: 2, dontHave: 3, - getPeers: 4, peers: 5, getTxSet: 6, txSet: 7, @@ -3785,8 +3807,6 @@ xdr.enum("MessageType", { scpMessage: 11, getScpState: 12, hello: 13, - surveyRequest: 14, - surveyResponse: 15, sendMore: 16, sendMoreExtended: 20, floodAdvert: 18, @@ -3815,13 +3835,11 @@ xdr.struct("DontHave", [ // // enum SurveyMessageCommandType // { -// SURVEY_TOPOLOGY = 0, // TIME_SLICED_SURVEY_TOPOLOGY = 1 // }; // // =========================================================================== xdr.enum("SurveyMessageCommandType", { - surveyTopology: 0, timeSlicedSurveyTopology: 1, }); @@ -3829,15 +3847,11 @@ xdr.enum("SurveyMessageCommandType", { // // enum SurveyMessageResponseType // { -// SURVEY_TOPOLOGY_RESPONSE_V0 = 0, -// SURVEY_TOPOLOGY_RESPONSE_V1 = 1, // SURVEY_TOPOLOGY_RESPONSE_V2 = 2 // }; // // =========================================================================== xdr.enum("SurveyMessageResponseType", { - surveyTopologyResponseV0: 0, - surveyTopologyResponseV1: 1, surveyTopologyResponseV2: 2, }); @@ -3939,20 +3953,6 @@ xdr.struct("TimeSlicedSurveyRequestMessage", [ ["outboundPeersIndex", xdr.lookup("Uint32")], ]); -// === xdr source ============================================================ -// -// struct SignedSurveyRequestMessage -// { -// Signature requestSignature; -// SurveyRequestMessage request; -// }; -// -// =========================================================================== -xdr.struct("SignedSurveyRequestMessage", [ - ["requestSignature", xdr.lookup("Signature")], - ["request", xdr.lookup("SurveyRequestMessage")], -]); - // === xdr source ============================================================ // // struct SignedTimeSlicedSurveyRequestMessage @@ -4008,20 +4008,6 @@ xdr.struct("TimeSlicedSurveyResponseMessage", [ ["nonce", xdr.lookup("Uint32")], ]); -// === xdr source ============================================================ -// -// struct SignedSurveyResponseMessage -// { -// Signature responseSignature; -// SurveyResponseMessage response; -// }; -// -// =========================================================================== -xdr.struct("SignedSurveyResponseMessage", [ - ["responseSignature", xdr.lookup("Signature")], - ["response", xdr.lookup("SurveyResponseMessage")], -]); - // === xdr source ============================================================ // // struct SignedTimeSlicedSurveyResponseMessage @@ -4078,13 +4064,6 @@ xdr.struct("PeerStats", [ ["duplicateFetchMessageRecv", xdr.lookup("Uint64")], ]); -// === xdr source ============================================================ -// -// typedef PeerStats PeerStatList<25>; -// -// =========================================================================== -xdr.typedef("PeerStatList", xdr.varArray(xdr.lookup("PeerStats"), 25)); - // === xdr source ============================================================ // // struct TimeSlicedNodeData @@ -4142,49 +4121,6 @@ xdr.struct("TimeSlicedPeerData", [ // =========================================================================== xdr.typedef("TimeSlicedPeerDataList", xdr.varArray(xdr.lookup("TimeSlicedPeerData"), 25)); -// === xdr source ============================================================ -// -// struct TopologyResponseBodyV0 -// { -// PeerStatList inboundPeers; -// PeerStatList outboundPeers; -// -// uint32 totalInboundPeerCount; -// uint32 totalOutboundPeerCount; -// }; -// -// =========================================================================== -xdr.struct("TopologyResponseBodyV0", [ - ["inboundPeers", xdr.lookup("PeerStatList")], - ["outboundPeers", xdr.lookup("PeerStatList")], - ["totalInboundPeerCount", xdr.lookup("Uint32")], - ["totalOutboundPeerCount", xdr.lookup("Uint32")], -]); - -// === xdr source ============================================================ -// -// struct TopologyResponseBodyV1 -// { -// PeerStatList inboundPeers; -// PeerStatList outboundPeers; -// -// uint32 totalInboundPeerCount; -// uint32 totalOutboundPeerCount; -// -// uint32 maxInboundPeerCount; -// uint32 maxOutboundPeerCount; -// }; -// -// =========================================================================== -xdr.struct("TopologyResponseBodyV1", [ - ["inboundPeers", xdr.lookup("PeerStatList")], - ["outboundPeers", xdr.lookup("PeerStatList")], - ["totalInboundPeerCount", xdr.lookup("Uint32")], - ["totalOutboundPeerCount", xdr.lookup("Uint32")], - ["maxInboundPeerCount", xdr.lookup("Uint32")], - ["maxOutboundPeerCount", xdr.lookup("Uint32")], -]); - // === xdr source ============================================================ // // struct TopologyResponseBodyV2 @@ -4205,10 +4141,6 @@ xdr.struct("TopologyResponseBodyV2", [ // // union SurveyResponseBody switch (SurveyMessageResponseType type) // { -// case SURVEY_TOPOLOGY_RESPONSE_V0: -// TopologyResponseBodyV0 topologyResponseBodyV0; -// case SURVEY_TOPOLOGY_RESPONSE_V1: -// TopologyResponseBodyV1 topologyResponseBodyV1; // case SURVEY_TOPOLOGY_RESPONSE_V2: // TopologyResponseBodyV2 topologyResponseBodyV2; // }; @@ -4218,13 +4150,9 @@ xdr.union("SurveyResponseBody", { switchOn: xdr.lookup("SurveyMessageResponseType"), switchName: "type", switches: [ - ["surveyTopologyResponseV0", "topologyResponseBodyV0"], - ["surveyTopologyResponseV1", "topologyResponseBodyV1"], ["surveyTopologyResponseV2", "topologyResponseBodyV2"], ], arms: { - topologyResponseBodyV0: xdr.lookup("TopologyResponseBodyV0"), - topologyResponseBodyV1: xdr.lookup("TopologyResponseBodyV1"), topologyResponseBodyV2: xdr.lookup("TopologyResponseBodyV2"), }, }); @@ -4293,8 +4221,6 @@ xdr.struct("FloodDemand", [ // Auth auth; // case DONT_HAVE: // DontHave dontHave; -// case GET_PEERS: -// void; // case PEERS: // PeerAddress peers<100>; // @@ -4308,12 +4234,6 @@ xdr.struct("FloodDemand", [ // case TRANSACTION: // TransactionEnvelope transaction; // -// case SURVEY_REQUEST: -// SignedSurveyRequestMessage signedSurveyRequestMessage; -// -// case SURVEY_RESPONSE: -// SignedSurveyResponseMessage signedSurveyResponseMessage; -// // case TIME_SLICED_SURVEY_REQUEST: // SignedTimeSlicedSurveyRequestMessage signedTimeSlicedSurveyRequestMessage; // @@ -4357,14 +4277,11 @@ xdr.union("StellarMessage", { ["hello", "hello"], ["auth", "auth"], ["dontHave", "dontHave"], - ["getPeers", xdr.void()], ["peers", "peers"], ["getTxSet", "txSetHash"], ["txSet", "txSet"], ["generalizedTxSet", "generalizedTxSet"], ["transaction", "transaction"], - ["surveyRequest", "signedSurveyRequestMessage"], - ["surveyResponse", "signedSurveyResponseMessage"], ["timeSlicedSurveyRequest", "signedTimeSlicedSurveyRequestMessage"], ["timeSlicedSurveyResponse", "signedTimeSlicedSurveyResponseMessage"], ["timeSlicedSurveyStartCollecting", "signedTimeSlicedSurveyStartCollectingMessage"], @@ -4388,8 +4305,6 @@ xdr.union("StellarMessage", { txSet: xdr.lookup("TransactionSet"), generalizedTxSet: xdr.lookup("GeneralizedTransactionSet"), transaction: xdr.lookup("TransactionEnvelope"), - signedSurveyRequestMessage: xdr.lookup("SignedSurveyRequestMessage"), - signedSurveyResponseMessage: xdr.lookup("SignedSurveyResponseMessage"), signedTimeSlicedSurveyRequestMessage: xdr.lookup("SignedTimeSlicedSurveyRequestMessage"), signedTimeSlicedSurveyResponseMessage: xdr.lookup("SignedTimeSlicedSurveyResponseMessage"), signedTimeSlicedSurveyStartCollectingMessage: xdr.lookup("SignedTimeSlicedSurveyStartCollectingMessage"), @@ -5344,6 +5259,13 @@ xdr.struct("SorobanAuthorizationEntry", [ ["rootInvocation", xdr.lookup("SorobanAuthorizedInvocation")], ]); +// === xdr source ============================================================ +// +// typedef SorobanAuthorizationEntry SorobanAuthorizationEntries<>; +// +// =========================================================================== +xdr.typedef("SorobanAuthorizationEntries", xdr.varArray(xdr.lookup("SorobanAuthorizationEntry"), 2147483647)); + // === xdr source ============================================================ // // struct InvokeHostFunctionOp @@ -5890,127 +5812,6 @@ xdr.struct("LedgerFootprint", [ ["readWrite", xdr.varArray(xdr.lookup("LedgerKey"), 2147483647)], ]); -// === xdr source ============================================================ -// -// enum ArchivalProofType -// { -// EXISTENCE = 0, -// NONEXISTENCE = 1 -// }; -// -// =========================================================================== -xdr.enum("ArchivalProofType", { - existence: 0, - nonexistence: 1, -}); - -// === xdr source ============================================================ -// -// struct ArchivalProofNode -// { -// uint32 index; -// Hash hash; -// }; -// -// =========================================================================== -xdr.struct("ArchivalProofNode", [ - ["index", xdr.lookup("Uint32")], - ["hash", xdr.lookup("Hash")], -]); - -// === xdr source ============================================================ -// -// typedef ArchivalProofNode ProofLevel<>; -// -// =========================================================================== -xdr.typedef("ProofLevel", xdr.varArray(xdr.lookup("ArchivalProofNode"), 2147483647)); - -// === xdr source ============================================================ -// -// struct NonexistenceProofBody -// { -// ColdArchiveBucketEntry entriesToProve<>; -// -// // Vector of vectors, where proofLevels[level] -// // contains all HashNodes that correspond with that level -// ProofLevel proofLevels<>; -// }; -// -// =========================================================================== -xdr.struct("NonexistenceProofBody", [ - ["entriesToProve", xdr.varArray(xdr.lookup("ColdArchiveBucketEntry"), 2147483647)], - ["proofLevels", xdr.varArray(xdr.lookup("ProofLevel"), 2147483647)], -]); - -// === xdr source ============================================================ -// -// struct ExistenceProofBody -// { -// LedgerKey keysToProve<>; -// -// // Bounds for each key being proved, where bound[n] -// // corresponds to keysToProve[n] -// ColdArchiveBucketEntry lowBoundEntries<>; -// ColdArchiveBucketEntry highBoundEntries<>; -// -// // Vector of vectors, where proofLevels[level] -// // contains all HashNodes that correspond with that level -// ProofLevel proofLevels<>; -// }; -// -// =========================================================================== -xdr.struct("ExistenceProofBody", [ - ["keysToProve", xdr.varArray(xdr.lookup("LedgerKey"), 2147483647)], - ["lowBoundEntries", xdr.varArray(xdr.lookup("ColdArchiveBucketEntry"), 2147483647)], - ["highBoundEntries", xdr.varArray(xdr.lookup("ColdArchiveBucketEntry"), 2147483647)], - ["proofLevels", xdr.varArray(xdr.lookup("ProofLevel"), 2147483647)], -]); - -// === xdr source ============================================================ -// -// union switch (ArchivalProofType t) -// { -// case EXISTENCE: -// NonexistenceProofBody nonexistenceProof; -// case NONEXISTENCE: -// ExistenceProofBody existenceProof; -// } -// -// =========================================================================== -xdr.union("ArchivalProofBody", { - switchOn: xdr.lookup("ArchivalProofType"), - switchName: "t", - switches: [ - ["existence", "nonexistenceProof"], - ["nonexistence", "existenceProof"], - ], - arms: { - nonexistenceProof: xdr.lookup("NonexistenceProofBody"), - existenceProof: xdr.lookup("ExistenceProofBody"), - }, -}); - -// === xdr source ============================================================ -// -// struct ArchivalProof -// { -// uint32 epoch; // AST Subtree for this proof -// -// union switch (ArchivalProofType t) -// { -// case EXISTENCE: -// NonexistenceProofBody nonexistenceProof; -// case NONEXISTENCE: -// ExistenceProofBody existenceProof; -// } body; -// }; -// -// =========================================================================== -xdr.struct("ArchivalProof", [ - ["epoch", xdr.lookup("Uint32")], - ["body", xdr.lookup("ArchivalProofBody")], -]); - // === xdr source ============================================================ // // struct SorobanResources @@ -6020,8 +5821,8 @@ xdr.struct("ArchivalProof", [ // // The maximum number of instructions this transaction can use // uint32 instructions; // -// // The maximum number of bytes this transaction can read from ledger -// uint32 readBytes; +// // The maximum number of bytes this transaction can read from disk backed entries +// uint32 diskReadBytes; // // The maximum number of bytes this transaction can write to ledger // uint32 writeBytes; // }; @@ -6030,10 +5831,25 @@ xdr.struct("ArchivalProof", [ xdr.struct("SorobanResources", [ ["footprint", xdr.lookup("LedgerFootprint")], ["instructions", xdr.lookup("Uint32")], - ["readBytes", xdr.lookup("Uint32")], + ["diskReadBytes", xdr.lookup("Uint32")], ["writeBytes", xdr.lookup("Uint32")], ]); +// === xdr source ============================================================ +// +// struct SorobanResourcesExtV0 +// { +// // Vector of indices representing what Soroban +// // entries in the footprint are archived, based on the +// // order of keys provided in the readWrite footprint. +// uint32 archivedSorobanEntries<>; +// }; +// +// =========================================================================== +xdr.struct("SorobanResourcesExtV0", [ + ["archivedSorobanEntries", xdr.varArray(xdr.lookup("Uint32"), 2147483647)], +]); + // === xdr source ============================================================ // // union switch (int v) @@ -6041,7 +5857,7 @@ xdr.struct("SorobanResources", [ // case 0: // void; // case 1: -// ArchivalProof proofs<>; +// SorobanResourcesExtV0 resourceExt; // } // // =========================================================================== @@ -6050,10 +5866,10 @@ xdr.union("SorobanTransactionDataExt", { switchName: "v", switches: [ [0, xdr.void()], - [1, "proofs"], + [1, "resourceExt"], ], arms: { - proofs: xdr.varArray(xdr.lookup("ArchivalProof"), 2147483647), + resourceExt: xdr.lookup("SorobanResourcesExtV0"), }, }); @@ -6066,7 +5882,7 @@ xdr.union("SorobanTransactionDataExt", { // case 0: // void; // case 1: -// ArchivalProof proofs<>; +// SorobanResourcesExtV0 resourceExt; // } ext; // SorobanResources resources; // // Amount of the transaction `fee` allocated to the Soroban resource fees. @@ -6195,7 +6011,6 @@ xdr.union("TransactionExt", { // // Operation operations; // -// // reserved for future use // union switch (int v) // { // case 0: @@ -9003,6 +8818,13 @@ xdr.typedef("NodeId", xdr.lookup("PublicKey")); // =========================================================================== xdr.typedef("AccountId", xdr.lookup("PublicKey")); +// === xdr source ============================================================ +// +// typedef Hash ContractID; +// +// =========================================================================== +xdr.typedef("ContractId", xdr.lookup("Hash")); + // === xdr source ============================================================ // // struct Curve25519Secret @@ -9113,6 +8935,45 @@ xdr.struct("SerializedBinaryFuseFilter", [ ["fingerprints", xdr.varOpaque()], ]); +// === xdr source ============================================================ +// +// typedef Hash PoolID; +// +// =========================================================================== +xdr.typedef("PoolId", xdr.lookup("Hash")); + +// === xdr source ============================================================ +// +// enum ClaimableBalanceIDType +// { +// CLAIMABLE_BALANCE_ID_TYPE_V0 = 0 +// }; +// +// =========================================================================== +xdr.enum("ClaimableBalanceIdType", { + claimableBalanceIdTypeV0: 0, +}); + +// === xdr source ============================================================ +// +// union ClaimableBalanceID switch (ClaimableBalanceIDType type) +// { +// case CLAIMABLE_BALANCE_ID_TYPE_V0: +// Hash v0; +// }; +// +// =========================================================================== +xdr.union("ClaimableBalanceId", { + switchOn: xdr.lookup("ClaimableBalanceIdType"), + switchName: "type", + switches: [ + ["claimableBalanceIdTypeV0", "v0"], + ], + arms: { + v0: xdr.lookup("Hash"), + }, +}); + // === xdr source ============================================================ // // enum SCValType @@ -9398,15 +9259,35 @@ xdr.union("ContractExecutable", { // enum SCAddressType // { // SC_ADDRESS_TYPE_ACCOUNT = 0, -// SC_ADDRESS_TYPE_CONTRACT = 1 +// SC_ADDRESS_TYPE_CONTRACT = 1, +// SC_ADDRESS_TYPE_MUXED_ACCOUNT = 2, +// SC_ADDRESS_TYPE_CLAIMABLE_BALANCE = 3, +// SC_ADDRESS_TYPE_LIQUIDITY_POOL = 4 // }; // // =========================================================================== xdr.enum("ScAddressType", { scAddressTypeAccount: 0, scAddressTypeContract: 1, + scAddressTypeMuxedAccount: 2, + scAddressTypeClaimableBalance: 3, + scAddressTypeLiquidityPool: 4, }); +// === xdr source ============================================================ +// +// struct MuxedEd25519Account +// { +// uint64 id; +// uint256 ed25519; +// }; +// +// =========================================================================== +xdr.struct("MuxedEd25519Account", [ + ["id", xdr.lookup("Uint64")], + ["ed25519", xdr.lookup("Uint256")], +]); + // === xdr source ============================================================ // // union SCAddress switch (SCAddressType type) @@ -9414,7 +9295,13 @@ xdr.enum("ScAddressType", { // case SC_ADDRESS_TYPE_ACCOUNT: // AccountID accountId; // case SC_ADDRESS_TYPE_CONTRACT: -// Hash contractId; +// ContractID contractId; +// case SC_ADDRESS_TYPE_MUXED_ACCOUNT: +// MuxedEd25519Account muxedAccount; +// case SC_ADDRESS_TYPE_CLAIMABLE_BALANCE: +// ClaimableBalanceID claimableBalanceId; +// case SC_ADDRESS_TYPE_LIQUIDITY_POOL: +// PoolID liquidityPoolId; // }; // // =========================================================================== @@ -9424,10 +9311,16 @@ xdr.union("ScAddress", { switches: [ ["scAddressTypeAccount", "accountId"], ["scAddressTypeContract", "contractId"], + ["scAddressTypeMuxedAccount", "muxedAccount"], + ["scAddressTypeClaimableBalance", "claimableBalanceId"], + ["scAddressTypeLiquidityPool", "liquidityPoolId"], ], arms: { accountId: xdr.lookup("AccountId"), - contractId: xdr.lookup("Hash"), + contractId: xdr.lookup("ContractId"), + muxedAccount: xdr.lookup("MuxedEd25519Account"), + claimableBalanceId: xdr.lookup("ClaimableBalanceId"), + liquidityPoolId: xdr.lookup("PoolId"), }, }); @@ -9552,13 +9445,12 @@ xdr.struct("ScContractInstance", [ // // // Special SCVals reserved for system-constructed contract-data // // ledger keys, not generally usable elsewhere. +// case SCV_CONTRACT_INSTANCE: +// SCContractInstance instance; // case SCV_LEDGER_KEY_CONTRACT_INSTANCE: // void; // case SCV_LEDGER_KEY_NONCE: // SCNonceKey nonce_key; -// -// case SCV_CONTRACT_INSTANCE: -// SCContractInstance instance; // }; // // =========================================================================== @@ -9585,9 +9477,9 @@ xdr.union("ScVal", { ["scvVec", "vec"], ["scvMap", "map"], ["scvAddress", "address"], + ["scvContractInstance", "instance"], ["scvLedgerKeyContractInstance", xdr.void()], ["scvLedgerKeyNonce", "nonceKey"], - ["scvContractInstance", "instance"], ], arms: { b: xdr.bool(), @@ -9608,8 +9500,8 @@ xdr.union("ScVal", { vec: xdr.option(xdr.lookup("ScVec")), map: xdr.option(xdr.lookup("ScMap")), address: xdr.lookup("ScAddress"), - nonceKey: xdr.lookup("ScNonceKey"), instance: xdr.lookup("ScContractInstance"), + nonceKey: xdr.lookup("ScNonceKey"), }, }); @@ -9752,6 +9644,7 @@ xdr.const("SC_SPEC_DOC_LIMIT", 1024); // SC_SPEC_TYPE_STRING = 16, // SC_SPEC_TYPE_SYMBOL = 17, // SC_SPEC_TYPE_ADDRESS = 19, +// SC_SPEC_TYPE_MUXED_ADDRESS = 20, // // // Types with parameters. // SC_SPEC_TYPE_OPTION = 1000, @@ -9785,6 +9678,7 @@ xdr.enum("ScSpecType", { scSpecTypeString: 16, scSpecTypeSymbol: 17, scSpecTypeAddress: 19, + scSpecTypeMuxedAddress: 20, scSpecTypeOption: 1000, scSpecTypeResult: 1001, scSpecTypeVec: 1002, @@ -9904,6 +9798,7 @@ xdr.struct("ScSpecTypeUdt", [ // case SC_SPEC_TYPE_STRING: // case SC_SPEC_TYPE_SYMBOL: // case SC_SPEC_TYPE_ADDRESS: +// case SC_SPEC_TYPE_MUXED_ADDRESS: // void; // case SC_SPEC_TYPE_OPTION: // SCSpecTypeOption option; @@ -9944,6 +9839,7 @@ xdr.union("ScSpecTypeDef", { ["scSpecTypeString", xdr.void()], ["scSpecTypeSymbol", xdr.void()], ["scSpecTypeAddress", xdr.void()], + ["scSpecTypeMuxedAddress", xdr.void()], ["scSpecTypeOption", "option"], ["scSpecTypeResult", "result"], ["scSpecTypeVec", "vec"], @@ -10185,6 +10081,76 @@ xdr.struct("ScSpecFunctionV0", [ ["outputs", xdr.varArray(xdr.lookup("ScSpecTypeDef"), 1)], ]); +// === xdr source ============================================================ +// +// enum SCSpecEventParamLocationV0 +// { +// SC_SPEC_EVENT_PARAM_LOCATION_DATA = 0, +// SC_SPEC_EVENT_PARAM_LOCATION_TOPIC_LIST = 1 +// }; +// +// =========================================================================== +xdr.enum("ScSpecEventParamLocationV0", { + scSpecEventParamLocationData: 0, + scSpecEventParamLocationTopicList: 1, +}); + +// === xdr source ============================================================ +// +// struct SCSpecEventParamV0 +// { +// string doc; +// string name<30>; +// SCSpecTypeDef type; +// SCSpecEventParamLocationV0 location; +// }; +// +// =========================================================================== +xdr.struct("ScSpecEventParamV0", [ + ["doc", xdr.string(SC_SPEC_DOC_LIMIT)], + ["name", xdr.string(30)], + ["type", xdr.lookup("ScSpecTypeDef")], + ["location", xdr.lookup("ScSpecEventParamLocationV0")], +]); + +// === xdr source ============================================================ +// +// enum SCSpecEventDataFormat +// { +// SC_SPEC_EVENT_DATA_FORMAT_SINGLE_VALUE = 0, +// SC_SPEC_EVENT_DATA_FORMAT_VEC = 1, +// SC_SPEC_EVENT_DATA_FORMAT_MAP = 2 +// }; +// +// =========================================================================== +xdr.enum("ScSpecEventDataFormat", { + scSpecEventDataFormatSingleValue: 0, + scSpecEventDataFormatVec: 1, + scSpecEventDataFormatMap: 2, +}); + +// === xdr source ============================================================ +// +// struct SCSpecEventV0 +// { +// string doc; +// string lib<80>; +// SCSymbol name; +// SCSymbol prefixTopics<2>; +// SCSpecEventParamV0 params<50>; +// SCSpecEventDataFormat dataFormat; +// }; +// +// =========================================================================== +xdr.struct("ScSpecEventV0", [ + ["doc", xdr.string(SC_SPEC_DOC_LIMIT)], + ["lib", xdr.string(80)], + ["name", xdr.lookup("ScSymbol")], + ["prefixTopics", xdr.varArray(xdr.lookup("ScSymbol"), 2)], + ["params", xdr.varArray(xdr.lookup("ScSpecEventParamV0"), 50)], + ["dataFormat", xdr.lookup("ScSpecEventDataFormat")], +]); + // === xdr source ============================================================ // // enum SCSpecEntryKind @@ -10193,7 +10159,8 @@ xdr.struct("ScSpecFunctionV0", [ // SC_SPEC_ENTRY_UDT_STRUCT_V0 = 1, // SC_SPEC_ENTRY_UDT_UNION_V0 = 2, // SC_SPEC_ENTRY_UDT_ENUM_V0 = 3, -// SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0 = 4 +// SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0 = 4, +// SC_SPEC_ENTRY_EVENT_V0 = 5 // }; // // =========================================================================== @@ -10203,6 +10170,7 @@ xdr.enum("ScSpecEntryKind", { scSpecEntryUdtUnionV0: 2, scSpecEntryUdtEnumV0: 3, scSpecEntryUdtErrorEnumV0: 4, + scSpecEntryEventV0: 5, }); // === xdr source ============================================================ @@ -10219,6 +10187,8 @@ xdr.enum("ScSpecEntryKind", { // SCSpecUDTEnumV0 udtEnumV0; // case SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0: // SCSpecUDTErrorEnumV0 udtErrorEnumV0; +// case SC_SPEC_ENTRY_EVENT_V0: +// SCSpecEventV0 eventV0; // }; // // =========================================================================== @@ -10231,6 +10201,7 @@ xdr.union("ScSpecEntry", { ["scSpecEntryUdtUnionV0", "udtUnionV0"], ["scSpecEntryUdtEnumV0", "udtEnumV0"], ["scSpecEntryUdtErrorEnumV0", "udtErrorEnumV0"], + ["scSpecEntryEventV0", "eventV0"], ], arms: { functionV0: xdr.lookup("ScSpecFunctionV0"), @@ -10238,6 +10209,7 @@ xdr.union("ScSpecEntry", { udtUnionV0: xdr.lookup("ScSpecUdtUnionV0"), udtEnumV0: xdr.lookup("ScSpecUdtEnumV0"), udtErrorEnumV0: xdr.lookup("ScSpecUdtErrorEnumV0"), + eventV0: xdr.lookup("ScSpecEventV0"), }, }); @@ -10282,75 +10254,91 @@ xdr.struct("ConfigSettingContractComputeV0", [ // // struct ConfigSettingContractParallelComputeV0 // { -// // Maximum number of threads that can be used to apply a -// // transaction set to close the ledger. -// // This doesn't limit or defined the actual number of -// // threads used and instead only defines the minimum number -// // of physical threads that a tier-1 validator has to support -// // in order to not fall out of sync with the network. -// uint32 ledgerMaxParallelThreads; +// // Maximum number of clusters with dependent transactions allowed in a +// // stage of parallel tx set component. +// // This effectively sets the lower bound on the number of physical threads +// // necessary to effectively apply transaction sets in parallel. +// uint32 ledgerMaxDependentTxClusters; // }; // // =========================================================================== xdr.struct("ConfigSettingContractParallelComputeV0", [ - ["ledgerMaxParallelThreads", xdr.lookup("Uint32")], + ["ledgerMaxDependentTxClusters", xdr.lookup("Uint32")], ]); // === xdr source ============================================================ // // struct ConfigSettingContractLedgerCostV0 // { -// // Maximum number of ledger entry read operations per ledger -// uint32 ledgerMaxReadLedgerEntries; -// // Maximum number of bytes that can be read per ledger -// uint32 ledgerMaxReadBytes; +// // Maximum number of disk entry read operations per ledger +// uint32 ledgerMaxDiskReadEntries; +// // Maximum number of bytes of disk reads that can be performed per ledger +// uint32 ledgerMaxDiskReadBytes; // // Maximum number of ledger entry write operations per ledger // uint32 ledgerMaxWriteLedgerEntries; // // Maximum number of bytes that can be written per ledger // uint32 ledgerMaxWriteBytes; // -// // Maximum number of ledger entry read operations per transaction -// uint32 txMaxReadLedgerEntries; -// // Maximum number of bytes that can be read per transaction -// uint32 txMaxReadBytes; +// // Maximum number of disk entry read operations per transaction +// uint32 txMaxDiskReadEntries; +// // Maximum number of bytes of disk reads that can be performed per transaction +// uint32 txMaxDiskReadBytes; // // Maximum number of ledger entry write operations per transaction // uint32 txMaxWriteLedgerEntries; // // Maximum number of bytes that can be written per transaction // uint32 txMaxWriteBytes; // -// int64 feeReadLedgerEntry; // Fee per ledger entry read -// int64 feeWriteLedgerEntry; // Fee per ledger entry write +// int64 feeDiskReadLedgerEntry; // Fee per disk ledger entry read +// int64 feeWriteLedgerEntry; // Fee per ledger entry write // -// int64 feeRead1KB; // Fee for reading 1KB +// int64 feeDiskRead1KB; // Fee for reading 1KB disk // // // The following parameters determine the write fee per 1KB. -// // Write fee grows linearly until bucket list reaches this size -// int64 bucketListTargetSizeBytes; -// // Fee per 1KB write when the bucket list is empty -// int64 writeFee1KBBucketListLow; -// // Fee per 1KB write when the bucket list has reached `bucketListTargetSizeBytes` -// int64 writeFee1KBBucketListHigh; -// // Write fee multiplier for any additional data past the first `bucketListTargetSizeBytes` -// uint32 bucketListWriteFeeGrowthFactor; +// // Rent fee grows linearly until soroban state reaches this size +// int64 sorobanStateTargetSizeBytes; +// // Fee per 1KB rent when the soroban state is empty +// int64 rentFee1KBSorobanStateSizeLow; +// // Fee per 1KB rent when the soroban state has reached `sorobanStateTargetSizeBytes` +// int64 rentFee1KBSorobanStateSizeHigh; +// // Rent fee multiplier for any additional data past the first `sorobanStateTargetSizeBytes` +// uint32 sorobanStateRentFeeGrowthFactor; // }; // // =========================================================================== xdr.struct("ConfigSettingContractLedgerCostV0", [ - ["ledgerMaxReadLedgerEntries", xdr.lookup("Uint32")], - ["ledgerMaxReadBytes", xdr.lookup("Uint32")], + ["ledgerMaxDiskReadEntries", xdr.lookup("Uint32")], + ["ledgerMaxDiskReadBytes", xdr.lookup("Uint32")], ["ledgerMaxWriteLedgerEntries", xdr.lookup("Uint32")], ["ledgerMaxWriteBytes", xdr.lookup("Uint32")], - ["txMaxReadLedgerEntries", xdr.lookup("Uint32")], - ["txMaxReadBytes", xdr.lookup("Uint32")], + ["txMaxDiskReadEntries", xdr.lookup("Uint32")], + ["txMaxDiskReadBytes", xdr.lookup("Uint32")], ["txMaxWriteLedgerEntries", xdr.lookup("Uint32")], ["txMaxWriteBytes", xdr.lookup("Uint32")], - ["feeReadLedgerEntry", xdr.lookup("Int64")], + ["feeDiskReadLedgerEntry", xdr.lookup("Int64")], ["feeWriteLedgerEntry", xdr.lookup("Int64")], - ["feeRead1Kb", xdr.lookup("Int64")], - ["bucketListTargetSizeBytes", xdr.lookup("Int64")], - ["writeFee1KbBucketListLow", xdr.lookup("Int64")], - ["writeFee1KbBucketListHigh", xdr.lookup("Int64")], - ["bucketListWriteFeeGrowthFactor", xdr.lookup("Uint32")], + ["feeDiskRead1Kb", xdr.lookup("Int64")], + ["sorobanStateTargetSizeBytes", xdr.lookup("Int64")], + ["rentFee1KbSorobanStateSizeLow", xdr.lookup("Int64")], + ["rentFee1KbSorobanStateSizeHigh", xdr.lookup("Int64")], + ["sorobanStateRentFeeGrowthFactor", xdr.lookup("Uint32")], +]); + +// === xdr source ============================================================ +// +// struct ConfigSettingContractLedgerCostExtV0 +// { +// // Maximum number of RO+RW entries in the transaction footprint. +// uint32 txMaxFootprintEntries; +// // Fee per 1 KB of data written to the ledger. +// // Unlike the rent fee, this is a flat fee that is charged for any ledger +// // write, independent of the type of the entry being written. +// int64 feeWrite1KB; +// }; +// +// =========================================================================== +xdr.struct("ConfigSettingContractLedgerCostExtV0", [ + ["txMaxFootprintEntries", xdr.lookup("Uint32")], + ["feeWrite1Kb", xdr.lookup("Int64")], ]); // === xdr source ============================================================ @@ -10661,11 +10649,11 @@ xdr.struct("ContractCostParamEntry", [ // // max number of entries that emit archival meta in a single ledger // uint32 maxEntriesToArchive; // -// // Number of snapshots to use when calculating average BucketList size -// uint32 bucketListSizeWindowSampleSize; +// // Number of snapshots to use when calculating average live Soroban State size +// uint32 liveSorobanStateSizeWindowSampleSize; // -// // How often to sample the BucketList size for the average, in ledgers -// uint32 bucketListWindowSamplePeriod; +// // How often to sample the live Soroban State size for the average, in ledgers +// uint32 liveSorobanStateSizeWindowSamplePeriod; // // // Maximum number of bytes that we scan for eviction per ledger // uint32 evictionScanSize; @@ -10682,8 +10670,8 @@ xdr.struct("StateArchivalSettings", [ ["persistentRentRateDenominator", xdr.lookup("Int64")], ["tempRentRateDenominator", xdr.lookup("Int64")], ["maxEntriesToArchive", xdr.lookup("Uint32")], - ["bucketListSizeWindowSampleSize", xdr.lookup("Uint32")], - ["bucketListWindowSamplePeriod", xdr.lookup("Uint32")], + ["liveSorobanStateSizeWindowSampleSize", xdr.lookup("Uint32")], + ["liveSorobanStateSizeWindowSamplePeriod", xdr.lookup("Uint32")], ["evictionScanSize", xdr.lookup("Uint32")], ["startingEvictionScanLevel", xdr.lookup("Uint32")], ]); @@ -10703,6 +10691,25 @@ xdr.struct("EvictionIterator", [ ["bucketFileOffset", xdr.lookup("Uint64")], ]); +// === xdr source ============================================================ +// +// struct ConfigSettingSCPTiming { +// uint32 ledgerTargetCloseTimeMilliseconds; +// uint32 nominationTimeoutInitialMilliseconds; +// uint32 nominationTimeoutIncrementMilliseconds; +// uint32 ballotTimeoutInitialMilliseconds; +// uint32 ballotTimeoutIncrementMilliseconds; +// }; +// +// =========================================================================== +xdr.struct("ConfigSettingScpTiming", [ + ["ledgerTargetCloseTimeMilliseconds", xdr.lookup("Uint32")], + ["nominationTimeoutInitialMilliseconds", xdr.lookup("Uint32")], + ["nominationTimeoutIncrementMilliseconds", xdr.lookup("Uint32")], + ["ballotTimeoutInitialMilliseconds", xdr.lookup("Uint32")], + ["ballotTimeoutIncrementMilliseconds", xdr.lookup("Uint32")], +]); + // === xdr source ============================================================ // // const CONTRACT_COST_COUNT_LIMIT = 1024; @@ -10733,9 +10740,11 @@ xdr.typedef("ContractCostParams", xdr.varArray(xdr.lookup("ContractCostParamEntr // CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES = 9, // CONFIG_SETTING_STATE_ARCHIVAL = 10, // CONFIG_SETTING_CONTRACT_EXECUTION_LANES = 11, -// CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW = 12, +// CONFIG_SETTING_LIVE_SOROBAN_STATE_SIZE_WINDOW = 12, // CONFIG_SETTING_EVICTION_ITERATOR = 13, -// CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0 = 14 +// CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0 = 14, +// CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0 = 15, +// CONFIG_SETTING_SCP_TIMING = 16 // }; // // =========================================================================== @@ -10752,9 +10761,11 @@ xdr.enum("ConfigSettingId", { configSettingContractDataEntrySizeBytes: 9, configSettingStateArchival: 10, configSettingContractExecutionLanes: 11, - configSettingBucketlistSizeWindow: 12, + configSettingLiveSorobanStateSizeWindow: 12, configSettingEvictionIterator: 13, configSettingContractParallelComputeV0: 14, + configSettingContractLedgerCostExtV0: 15, + configSettingScpTiming: 16, }); // === xdr source ============================================================ @@ -10785,12 +10796,16 @@ xdr.enum("ConfigSettingId", { // StateArchivalSettings stateArchivalSettings; // case CONFIG_SETTING_CONTRACT_EXECUTION_LANES: // ConfigSettingContractExecutionLanesV0 contractExecutionLanes; -// case CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW: -// uint64 bucketListSizeWindow<>; +// case CONFIG_SETTING_LIVE_SOROBAN_STATE_SIZE_WINDOW: +// uint64 liveSorobanStateSizeWindow<>; // case CONFIG_SETTING_EVICTION_ITERATOR: // EvictionIterator evictionIterator; // case CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0: // ConfigSettingContractParallelComputeV0 contractParallelCompute; +// case CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0: +// ConfigSettingContractLedgerCostExtV0 contractLedgerCostExt; +// case CONFIG_SETTING_SCP_TIMING: +// ConfigSettingSCPTiming contractSCPTiming; // }; // // =========================================================================== @@ -10810,9 +10825,11 @@ xdr.union("ConfigSettingEntry", { ["configSettingContractDataEntrySizeBytes", "contractDataEntrySizeBytes"], ["configSettingStateArchival", "stateArchivalSettings"], ["configSettingContractExecutionLanes", "contractExecutionLanes"], - ["configSettingBucketlistSizeWindow", "bucketListSizeWindow"], + ["configSettingLiveSorobanStateSizeWindow", "liveSorobanStateSizeWindow"], ["configSettingEvictionIterator", "evictionIterator"], ["configSettingContractParallelComputeV0", "contractParallelCompute"], + ["configSettingContractLedgerCostExtV0", "contractLedgerCostExt"], + ["configSettingScpTiming", "contractScpTiming"], ], arms: { contractMaxSizeBytes: xdr.lookup("Uint32"), @@ -10827,11 +10844,34 @@ xdr.union("ConfigSettingEntry", { contractDataEntrySizeBytes: xdr.lookup("Uint32"), stateArchivalSettings: xdr.lookup("StateArchivalSettings"), contractExecutionLanes: xdr.lookup("ConfigSettingContractExecutionLanesV0"), - bucketListSizeWindow: xdr.varArray(xdr.lookup("Uint64"), 2147483647), + liveSorobanStateSizeWindow: xdr.varArray(xdr.lookup("Uint64"), 2147483647), evictionIterator: xdr.lookup("EvictionIterator"), contractParallelCompute: xdr.lookup("ConfigSettingContractParallelComputeV0"), + contractLedgerCostExt: xdr.lookup("ConfigSettingContractLedgerCostExtV0"), + contractScpTiming: xdr.lookup("ConfigSettingScpTiming"), }, }); +// === xdr source ============================================================ +// +// struct LedgerCloseMetaBatch +// { +// // starting ledger sequence number in the batch +// uint32 startSequence; +// +// // ending ledger sequence number in the batch +// uint32 endSequence; +// +// // Ledger close meta for each ledger within the batch +// LedgerCloseMeta ledgerCloseMetas<>; +// }; +// +// =========================================================================== +xdr.struct("LedgerCloseMetaBatch", [ + ["startSequence", xdr.lookup("Uint32")], + ["endSequence", xdr.lookup("Uint32")], + ["ledgerCloseMeta", xdr.varArray(xdr.lookup("LedgerCloseMeta"), 2147483647)], +]); + }); export default types; diff --git a/src/index.js b/src/index.js index fcbca04f0..ded100fac 100644 --- a/src/index.js +++ b/src/index.js @@ -5,7 +5,7 @@ import cereal from './jsxdr'; export { xdr }; export { cereal }; export { hash } from './hashing'; -export { sign, verify, FastSigning } from './signing'; +export { sign, verify } from './signing'; export { getLiquidityPoolId, LiquidityPoolFeeV18 diff --git a/src/keypair.js b/src/keypair.js index c2cc6b8f6..8d36b3852 100644 --- a/src/keypair.js +++ b/src/keypair.js @@ -1,7 +1,6 @@ /* eslint no-bitwise: ["error", {"allow": ["^"]}] */ -import nacl from 'tweetnacl'; - +import { ed25519 } from '@noble/curves/ed25519'; import { sign, verify, generate } from './signing'; import { StrKey } from './strkey'; import { hash } from './hashing'; @@ -42,7 +41,7 @@ export class Keypair { this._secretSeed = keys.secretKey; this._publicKey = generate(keys.secretKey); - this._secretKey = Buffer.concat([keys.secretKey, this._publicKey]); + this._secretKey = keys.secretKey; if ( keys.publicKey && @@ -62,7 +61,7 @@ export class Keypair { /** * Creates a new `Keypair` instance from secret. This can either be secret key or secret seed depending * on underlying public-key signature system. Currently `Keypair` only supports ed25519. - * @param {string} secret secret key (ex. `SDAKFNYEIAORZKKCYRILFQKLLOCNPL5SWJ3YY5NM3ZH6GJSZGXHZEPQS`) + * @param {string} secret secret key (ex. `SDAK....`) * @returns {Keypair} */ static fromSecret(secret) { @@ -113,7 +112,7 @@ export class Keypair { * @returns {Keypair} */ static random() { - const secret = nacl.randomBytes(32); + const secret = ed25519.utils.randomPrivateKey(); return this.fromRawEd25519Seed(secret); } diff --git a/src/numbers/xdr_large_int.js b/src/numbers/xdr_large_int.js index 7208d503d..66c028184 100644 --- a/src/numbers/xdr_large_int.js +++ b/src/numbers/xdr_large_int.js @@ -15,9 +15,9 @@ import xdr from '../xdr'; * the type / width / size in bits of the integer you're targeting, regardless * of the input value(s) you provide. * - * @param {string} type - force a specific data type. the type choices are: - * 'i64', 'u64', 'i128', 'u128', 'i256', and 'u256' (default: the smallest - * one that fits the `value`) (see {@link XdrLargeInt.isType}) + * @param {string} type - specifies a data type to use to represent the, one + * of: 'i64', 'u64', 'i128', 'u128', 'i256', and 'u256' (see + * {@link XdrLargeInt.isType}) * @param {number|bigint|string|Array} values a list of * integer-like values interpreted in big-endian order */ @@ -39,7 +39,7 @@ export class XdrLargeInt { if (typeof i === 'bigint') { return i; } - if (i instanceof XdrLargeInt) { + if (typeof i.toBigInt === 'function') { return i.toBigInt(); } return BigInt(i); diff --git a/src/operations/invoke_host_function.js b/src/operations/invoke_host_function.js index 94e61a5a8..44ded32b4 100644 --- a/src/operations/invoke_host_function.js +++ b/src/operations/invoke_host_function.js @@ -34,6 +34,35 @@ export function invokeHostFunction(opts) { ); } + if ( + opts.func.switch().value === + xdr.HostFunctionType.hostFunctionTypeInvokeContract().value + ) { + // Ensure that there are no claimable balance or liquidity pool IDs in the + // invocation because those are not allowed. + opts.func + .invokeContract() + .args() + .forEach((arg) => { + let scv; + try { + scv = Address.fromScVal(arg); + } catch { + // swallow non-Address errors + return; + } + + switch (scv._type) { + case 'claimableBalance': + case 'liquidityPool': + throw new TypeError( + `claimable balances and liquidity pools cannot be arguments to invokeHostFunction` + ); + default: + } + }); + } + const invokeHostFunctionOp = new xdr.InvokeHostFunctionOp({ hostFunction: opts.func, auth: opts.auth || [] @@ -228,7 +257,7 @@ export function uploadContractWasm(opts) { }); } -/** @returns {Buffer} a random 256-bit "salt" value. */ +/* Returns a random 256-bit "salt" value. */ function getSalty() { return Keypair.random().xdrPublicKey().value(); // ed25519 is 256 bits, too } diff --git a/src/scval.js b/src/scval.js index 79ae643c6..5f0e355cd 100644 --- a/src/scval.js +++ b/src/scval.js @@ -91,6 +91,9 @@ import { ScInt, XdrLargeInt, scValToBigInt } from './numbers/index'; * nativeToScVal(true); // scvBool * nativeToScVal([1, 2, 3]); // gives scvVec with each element as scvU64 * nativeToScVal([1, 2, 3], { type: 'i128' }); // scvVec + * nativeToScVal([1, '2'], { type: ['i128', 'symbol'] }); // scvVec with diff types + * nativeToScVal([1, '2', 3], { type: ['i128', 'symbol'] }); + * // scvVec with diff types, using the default when omitted * nativeToScVal({ 'hello': 1, 'world': [ true, false ] }, { * type: { * 'hello': [ 'symbol', 'i128' ], @@ -126,6 +129,7 @@ import { ScInt, XdrLargeInt, scValToBigInt } from './numbers/index'; * etc: false * }, * vec: ['same', 'type', 'list'], + * vec: ['diff', 1, 'type', 2, 'list'], * }; * * // then, simply: @@ -177,7 +181,23 @@ export function nativeToScVal(val, opts = {}) { } if (Array.isArray(val)) { - return xdr.ScVal.scvVec(val.map((v) => nativeToScVal(v, opts))); + return xdr.ScVal.scvVec( + val.map((v, idx) => { + // There may be different type specifications for each element in + // the array, so we need to apply those accordingly. + if (Array.isArray(opts.type)) { + return nativeToScVal( + v, + // only include a `{ type: ... }` if it's present (safer than + // `{type: undefined}`) + { ...(opts.type.length > idx && { type: opts.type[idx] }) } + ); + } + + // Otherwise apply a generic (or missing) type specifier on it. + return nativeToScVal(v, opts); + }) + ); } if ((val.constructor?.name ?? '') !== 'Object') { diff --git a/src/signing.js b/src/signing.js index c6030ce84..6bc47f0c9 100644 --- a/src/signing.js +++ b/src/signing.js @@ -1,107 +1,20 @@ -// This module provides the signing functionality used by the stellar network -// The code below may look a little strange... this is because we try to provide -// the most efficient signing method possible. First, we try to load the -// native `sodium-native` package for node.js environments, and if that fails we -// fallback to `tweetnacl` - -const actualMethods = {}; - -/** - * Use this flag to check if fast signing (provided by `sodium-native` package) is available. - * If your app is signing a large number of transaction or verifying a large number - * of signatures make sure `sodium-native` package is installed. - */ -export const FastSigning = checkFastSigning(); - -export function sign(data, secretKey) { - return actualMethods.sign(data, secretKey); -} - -export function verify(data, signature, publicKey) { - return actualMethods.verify(data, signature, publicKey); -} +import { ed25519 } from '@noble/curves/ed25519'; export function generate(secretKey) { - return actualMethods.generate(secretKey); + return Buffer.from(ed25519.getPublicKey(secretKey)); } -function checkFastSigning() { - return typeof window === 'undefined' - ? checkFastSigningNode() - : checkFastSigningBrowser(); +export function sign(data, secretKey) { + return Buffer.from(ed25519.sign(Buffer.from(data), secretKey)); } -function checkFastSigningNode() { - // NOTE: we use commonjs style require here because es6 imports - // can only occur at the top level. thanks, obama. - let sodium; - try { - // eslint-disable-next-line - sodium = require('sodium-native'); - } catch (err) { - return checkFastSigningBrowser(); - } - - if (!Object.keys(sodium).length) { - return checkFastSigningBrowser(); - } - - actualMethods.generate = (secretKey) => { - const pk = Buffer.alloc(sodium.crypto_sign_PUBLICKEYBYTES); - const sk = Buffer.alloc(sodium.crypto_sign_SECRETKEYBYTES); - sodium.crypto_sign_seed_keypair(pk, sk, secretKey); - return pk; - }; - - actualMethods.sign = (data, secretKey) => { - data = Buffer.from(data); - const signature = Buffer.alloc(sodium.crypto_sign_BYTES); - sodium.crypto_sign_detached(signature, data, secretKey); - return signature; - }; - - actualMethods.verify = (data, signature, publicKey) => { - data = Buffer.from(data); - try { - return sodium.crypto_sign_verify_detached(signature, data, publicKey); - } catch (e) { - return false; +export function verify(data, signature, publicKey) { + return ed25519.verify( + Buffer.from(signature), + Buffer.from(data), + Buffer.from(publicKey), + { + zip215: false } - }; - - return true; -} - -function checkFastSigningBrowser() { - // fallback to `tweetnacl` if we're in the browser or - // if there was a failure installing `sodium-native` - // eslint-disable-next-line - const nacl = require('tweetnacl'); - - actualMethods.generate = (secretKey) => { - const secretKeyUint8 = new Uint8Array(secretKey); - const naclKeys = nacl.sign.keyPair.fromSeed(secretKeyUint8); - return Buffer.from(naclKeys.publicKey); - }; - - actualMethods.sign = (data, secretKey) => { - data = Buffer.from(data); - data = new Uint8Array(data.toJSON().data); - secretKey = new Uint8Array(secretKey.toJSON().data); - - const signature = nacl.sign.detached(data, secretKey); - - return Buffer.from(signature); - }; - - actualMethods.verify = (data, signature, publicKey) => { - data = Buffer.from(data); - data = new Uint8Array(data.toJSON().data); - signature = new Uint8Array(signature.toJSON().data); - publicKey = new Uint8Array(publicKey.toJSON().data); - - return nacl.sign.detached.verify(data, signature, publicKey); - }; - - return false; + ); } diff --git a/src/sorobandata_builder.js b/src/sorobandata_builder.js index 14828d395..49183154b 100644 --- a/src/sorobandata_builder.js +++ b/src/sorobandata_builder.js @@ -41,10 +41,10 @@ export class SorobanDataBuilder { resources: new xdr.SorobanResources({ footprint: new xdr.LedgerFootprint({ readOnly: [], readWrite: [] }), instructions: 0, - readBytes: 0, + diskReadBytes: 0, writeBytes: 0 }), - ext: new xdr.ExtensionPoint(0), + ext: new xdr.SorobanTransactionDataExt(0), resourceFee: new xdr.Int64(0) }); } else if ( @@ -88,14 +88,14 @@ export class SorobanDataBuilder { * by transaction simulation/preflight from a Soroban RPC server. * * @param {number} cpuInstrs number of CPU instructions - * @param {number} readBytes number of bytes being read - * @param {number} writeBytes number of bytes being written + * @param {number} diskReadBytes number of bytes being read from disk + * @param {number} writeBytes number of bytes being written to disk/memory * * @returns {SorobanDataBuilder} */ - setResources(cpuInstrs, readBytes, writeBytes) { + setResources(cpuInstrs, diskReadBytes, writeBytes) { this._data.resources().instructions(cpuInstrs); - this._data.resources().readBytes(readBytes); + this._data.resources().diskReadBytes(diskReadBytes); this._data.resources().writeBytes(writeBytes); return this; diff --git a/src/strkey.js b/src/strkey.js index e2ad50ab8..9b6d818af 100644 --- a/src/strkey.js +++ b/src/strkey.js @@ -10,7 +10,9 @@ const versionBytes = { preAuthTx: 19 << 3, // T sha256Hash: 23 << 3, // X signedPayload: 15 << 3, // P - contract: 2 << 3 // C + contract: 2 << 3, // C + liquidityPool: 11 << 3, // L + claimableBalance: 1 << 3 // B }; const strkeyTypes = { @@ -20,7 +22,9 @@ const strkeyTypes = { T: 'preAuthTx', X: 'sha256Hash', P: 'signedPayload', - C: 'contract' + C: 'contract', + L: 'liquidityPool', + B: 'claimableBalance' }; /** @@ -29,6 +33,8 @@ const strkeyTypes = { * string (i.e. "GABCD...", etc.) representations. */ export class StrKey { + static types = strkeyTypes; + /** * Encodes `data` to strkey ed25519 public key. * @@ -205,6 +211,60 @@ export class StrKey { return isValid('contract', address); } + /** + * Encodes raw data to strkey claimable balance (B...). + * @param {Buffer} data data to encode + * @returns {string} + */ + static encodeClaimableBalance(data) { + return encodeCheck('claimableBalance', data); + } + + /** + * Decodes strkey contract (B...) to raw data. + * @param {string} address balance to decode + * @returns {Buffer} + */ + static decodeClaimableBalance(address) { + return decodeCheck('claimableBalance', address); + } + + /** + * Checks validity of alleged claimable balance (B...) strkey address. + * @param {string} address balance to check + * @returns {boolean} + */ + static isValidClaimableBalance(address) { + return isValid('claimableBalance', address); + } + + /** + * Encodes raw data to strkey liquidity pool (L...). + * @param {Buffer} data data to encode + * @returns {string} + */ + static encodeLiquidityPool(data) { + return encodeCheck('liquidityPool', data); + } + + /** + * Decodes strkey liquidity pool (L...) to raw data. + * @param {string} address address to decode + * @returns {Buffer} + */ + static decodeLiquidityPool(address) { + return decodeCheck('liquidityPool', address); + } + + /** + * Checks validity of alleged liquidity pool (L...) strkey address. + * @param {string} address pool to check + * @returns {boolean} + */ + static isValidLiquidityPool(address) { + return isValid('liquidityPool', address); + } + static getVersionByteForPrefix(address) { return strkeyTypes[address[0]]; } @@ -234,12 +294,19 @@ function isValid(versionByteName, encoded) { case 'ed25519SecretSeed': // falls through case 'preAuthTx': // falls through case 'sha256Hash': // falls through - case 'contract': + case 'contract': // falls through + case 'liquidityPool': if (encoded.length !== 56) { return false; } break; + case 'claimableBalance': + if (encoded.length !== 58) { + return false; + } + break; + case 'med25519PublicKey': if (encoded.length !== 69) { return false; @@ -270,8 +337,12 @@ function isValid(versionByteName, encoded) { case 'preAuthTx': // falls through case 'sha256Hash': // falls through case 'contract': + case 'liquidityPool': return decoded.length === 32; + case 'claimableBalance': + return decoded.length === 32 + 1; // +1 byte for discriminant + case 'med25519PublicKey': return decoded.length === 40; // +8 bytes for the ID diff --git a/test/unit/address_test.js b/test/unit/address_test.js index 87ec37657..b54a9ddd2 100644 --- a/test/unit/address_test.js +++ b/test/unit/address_test.js @@ -4,6 +4,16 @@ describe('Address', function () { const MUXED_ADDRESS = 'MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVAAAAAAAAAAAAAJLK'; + const MUXED_ZERO = StellarBase.StrKey.encodeMed25519PublicKey( + Buffer.alloc(40) + ); + const CLAIMABLE_BALANCE_ZERO = StellarBase.StrKey.encodeClaimableBalance( + Buffer.alloc(33) + ); + const LIQUIDITY_POOL_ZERO = StellarBase.StrKey.encodeLiquidityPool( + Buffer.alloc(32) + ); + describe('.constructor', function () { it('fails to create Address object from an invalid address', function () { expect(() => new StellarBase.Address('GBBB')).to.throw( @@ -11,130 +21,268 @@ describe('Address', function () { ); }); - it('creates an Address object for accounts', function () { - let account = new StellarBase.Address(ACCOUNT); - expect(account.toString()).to.equal(ACCOUNT); - }); - - it('creates an Address object for contracts', function () { - let account = new StellarBase.Address(CONTRACT); - expect(account.toString()).to.equal(CONTRACT); - }); - - it('wont create Address objects from muxed account strings', function () { - expect(() => { - new StellarBase.Account(MUXED_ADDRESS, '123'); - }).to.throw(/MuxedAccount/); + [ + ACCOUNT, + CONTRACT, + MUXED_ADDRESS, + CLAIMABLE_BALANCE_ZERO, + LIQUIDITY_POOL_ZERO + ].forEach((strkey) => { + const type = StellarBase.StrKey.types[strkey[0]]; + it(`creates an Address for ${type}`, function () { + expect(new StellarBase.Address(strkey).toString()).to.equal(strkey); + }); }); }); describe('static constructors', function () { it('.fromString', function () { - let account = StellarBase.Address.fromString(ACCOUNT); - expect(account.toString()).to.equal(ACCOUNT); + const a = StellarBase.Address.fromString(ACCOUNT); + expect(a.toString()).to.equal(ACCOUNT); }); it('.account', function () { - let account = StellarBase.Address.account(Buffer.alloc(32)); - expect(account.toString()).to.equal( + const a = StellarBase.Address.account(Buffer.alloc(32)); + expect(a.toString()).to.equal( 'GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF' ); }); it('.contract', function () { - let account = StellarBase.Address.contract(Buffer.alloc(32)); - expect(account.toString()).to.equal( + const c = StellarBase.Address.contract(Buffer.alloc(32)); + expect(c.toString()).to.equal( 'CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSC4' ); }); + it('.muxedAccount', function () { + const m = StellarBase.Address.muxedAccount(Buffer.alloc(40)); + expect(m.toString()).to.equal(MUXED_ZERO); + }); + + it('.claimableBalance', function () { + const cb = StellarBase.Address.claimableBalance(Buffer.alloc(33)); + expect(cb.toString()).to.equal(CLAIMABLE_BALANCE_ZERO); + }); + + it('.liquidityPool', function () { + const lp = StellarBase.Address.liquidityPool(Buffer.alloc(32)); + expect(lp.toString()).to.equal(LIQUIDITY_POOL_ZERO); + }); + describe('.fromScAddress', function () { - it('creates an Address object for accounts', function () { - let scAddress = StellarBase.xdr.ScAddress.scAddressTypeAccount( + it('parses account addresses', function () { + const sc = StellarBase.xdr.ScAddress.scAddressTypeAccount( StellarBase.xdr.PublicKey.publicKeyTypeEd25519( StellarBase.StrKey.decodeEd25519PublicKey(ACCOUNT) ) ); - let account = StellarBase.Address.fromScAddress(scAddress); - expect(account.toString()).to.equal(ACCOUNT); + const a = StellarBase.Address.fromScAddress(sc); + expect(a.toString()).to.equal(ACCOUNT); }); - it('creates an Address object for contracts', function () { - let scAddress = StellarBase.xdr.ScAddress.scAddressTypeContract( + it('parses contract addresses', function () { + const sc = StellarBase.xdr.ScAddress.scAddressTypeContract( StellarBase.StrKey.decodeContract(CONTRACT) ); - let contract = StellarBase.Address.fromScAddress(scAddress); - expect(contract.toString()).to.equal(CONTRACT); + const c = StellarBase.Address.fromScAddress(sc); + expect(c.toString()).to.equal(CONTRACT); + }); + + it('parses muxed-account addresses', function () { + const sc = StellarBase.xdr.ScAddress.scAddressTypeMuxedAccount( + StellarBase.StrKey.decodeMed25519PublicKey(MUXED_ADDRESS) + ); + const m = StellarBase.Address.fromScAddress(sc); + expect(m.toString()).to.equal(MUXED_ADDRESS); + }); + + it('parses claimable-balance addresses', function () { + const sc = StellarBase.xdr.ScAddress.scAddressTypeClaimableBalance( + Buffer.alloc(33) + ); + const cb = StellarBase.Address.fromScAddress(sc); + expect(cb.toString()).to.equal(CLAIMABLE_BALANCE_ZERO); + }); + + it('parses liquidity-pool addresses', function () { + const sc = StellarBase.xdr.ScAddress.scAddressTypeLiquidityPool( + Buffer.alloc(32) + ); + const lp = StellarBase.Address.fromScAddress(sc); + expect(lp.toString()).to.equal(LIQUIDITY_POOL_ZERO); }); }); describe('.fromScVal', function () { - it('creates an Address object for accounts', function () { - let scVal = StellarBase.xdr.ScVal.scvAddress( + it('parses account ScVals', function () { + const scVal = StellarBase.xdr.ScVal.scvAddress( StellarBase.xdr.ScAddress.scAddressTypeAccount( StellarBase.xdr.PublicKey.publicKeyTypeEd25519( StellarBase.StrKey.decodeEd25519PublicKey(ACCOUNT) ) ) ); - let account = StellarBase.Address.fromScVal(scVal); - expect(account.toString()).to.equal(ACCOUNT); + const a = StellarBase.Address.fromScVal(scVal); + expect(a.toString()).to.equal(ACCOUNT); }); - it('creates an Address object for contracts', function () { - let scVal = StellarBase.xdr.ScVal.scvAddress( + it('parses contract ScVals', function () { + const scVal = StellarBase.xdr.ScVal.scvAddress( StellarBase.xdr.ScAddress.scAddressTypeContract( StellarBase.StrKey.decodeContract(CONTRACT) ) ); - let contract = StellarBase.Address.fromScVal(scVal); - expect(contract.toString()).to.equal(CONTRACT); + const c = StellarBase.Address.fromScVal(scVal); + expect(c.toString()).to.equal(CONTRACT); + }); + + it('parses muxed-account ScVals', function () { + const scVal = StellarBase.xdr.ScVal.scvAddress( + StellarBase.xdr.ScAddress.scAddressTypeMuxedAccount( + StellarBase.StrKey.decodeMed25519PublicKey(MUXED_ADDRESS) + ) + ); + const m = StellarBase.Address.fromScVal(scVal); + expect(m.toString()).to.equal(MUXED_ADDRESS); + }); + + it('parses claimable-balance ScVals', function () { + const scVal = StellarBase.xdr.ScVal.scvAddress( + StellarBase.xdr.ScAddress.scAddressTypeClaimableBalance( + Buffer.alloc(33) + ) + ); + const cb = StellarBase.Address.fromScVal(scVal); + expect(cb.toString()).to.equal(CLAIMABLE_BALANCE_ZERO); + }); + + it('parses liquidity-pool ScVals', function () { + const scVal = StellarBase.xdr.ScVal.scvAddress( + StellarBase.xdr.ScAddress.scAddressTypeLiquidityPool(Buffer.alloc(32)) + ); + const lp = StellarBase.Address.fromScVal(scVal); + expect(lp.toString()).to.equal(LIQUIDITY_POOL_ZERO); }); }); }); describe('.toScAddress', function () { - it('converts accounts to an ScAddress', function () { + it('converts accounts', function () { const a = new StellarBase.Address(ACCOUNT); const s = a.toScAddress(); - expect(s).to.be.instanceof(StellarBase.xdr.ScAddress); expect(s.switch()).to.equal( StellarBase.xdr.ScAddressType.scAddressTypeAccount() ); }); - it('converts contracts to an ScAddress', function () { - const a = new StellarBase.Address(CONTRACT); - const s = a.toScAddress(); - expect(s).to.be.instanceof(StellarBase.xdr.ScAddress); + it('converts contracts', function () { + const c = new StellarBase.Address(CONTRACT); + const s = c.toScAddress(); expect(s.switch()).to.equal( StellarBase.xdr.ScAddressType.scAddressTypeContract() ); }); + + it('converts muxed accounts', function () { + const m = new StellarBase.Address(MUXED_ADDRESS); + const s = m.toScAddress(); + expect(s).to.be.instanceof(StellarBase.xdr.ScAddress); + expect(s.switch()).to.equal( + StellarBase.xdr.ScAddressType.scAddressTypeMuxedAccount() + ); + }); + + it('converts claimable balances', function () { + const cb = new StellarBase.Address(CLAIMABLE_BALANCE_ZERO); + const s = cb.toScAddress(); + expect(s.switch()).to.equal( + StellarBase.xdr.ScAddressType.scAddressTypeClaimableBalance() + ); + }); + + it('converts liquidity pools', function () { + const lp = new StellarBase.Address(LIQUIDITY_POOL_ZERO); + const s = lp.toScAddress(); + expect(s.switch()).to.equal( + StellarBase.xdr.ScAddressType.scAddressTypeLiquidityPool() + ); + }); }); describe('.toScVal', function () { - it('converts to an ScAddress', function () { + it('wraps account ScAddress types', function () { const a = new StellarBase.Address(ACCOUNT); - const s = a.toScVal(); - expect(s).to.be.instanceof(StellarBase.xdr.ScVal); - expect(s.address()).to.deep.equal(a.toScAddress()); + expect(a.toScVal().address().switch()).to.equal( + StellarBase.xdr.ScAddressType.scAddressTypeAccount() + ); + }); + + it('wraps contract ScAddress types', function () { + const c = new StellarBase.Address(CONTRACT); + expect(c.toScVal().address().switch()).to.equal( + StellarBase.xdr.ScAddressType.scAddressTypeContract() + ); + }); + + it('wraps muxed-account ScAddress types', function () { + const m = new StellarBase.Address(MUXED_ADDRESS); + expect(m.toScVal().address().switch()).to.equal( + StellarBase.xdr.ScAddressType.scAddressTypeMuxedAccount() + ); + }); + + it('wraps liquidity-pool ScAddress types', function () { + const lp = new StellarBase.Address(LIQUIDITY_POOL_ZERO); + expect(lp.toScVal().address().switch()).to.equal( + StellarBase.xdr.ScAddressType.scAddressTypeLiquidityPool() + ); + }); + + it('wraps claimable-balance ScAddress types', function () { + const cb = new StellarBase.Address(CLAIMABLE_BALANCE_ZERO); + const val = cb.toScVal(); + expect(val).to.be.instanceof(StellarBase.xdr.ScVal); + expect(val.address().switch()).to.equal( + StellarBase.xdr.ScAddressType.scAddressTypeClaimableBalance() + ); }); }); describe('.toBuffer', function () { - it('returns the raw public key bytes for accounts', function () { + it('returns the raw public-key bytes for accounts', function () { const a = new StellarBase.Address(ACCOUNT); - const b = a.toBuffer(); - expect(b).to.deep.equal( + expect(a.toBuffer()).to.deep.equal( StellarBase.StrKey.decodeEd25519PublicKey(ACCOUNT) ); }); - it('returns the raw public key bytes for contracts', function () { - const a = new StellarBase.Address(CONTRACT); - const b = a.toBuffer(); - expect(b).to.deep.equal(StellarBase.StrKey.decodeContract(CONTRACT)); + it('returns the raw hash for contracts', function () { + const c = new StellarBase.Address(CONTRACT); + expect(c.toBuffer()).to.deep.equal( + StellarBase.StrKey.decodeContract(CONTRACT) + ); + }); + + it('returns raw bytes for muxed accounts', function () { + const m = new StellarBase.Address(MUXED_ADDRESS); + expect(m.toBuffer()).to.deep.equal( + StellarBase.StrKey.decodeMed25519PublicKey(MUXED_ADDRESS) + ); + }); + + it('returns raw bytes for claimable balances', function () { + const cb = new StellarBase.Address(CLAIMABLE_BALANCE_ZERO); + expect(cb.toBuffer()).to.deep.equal( + StellarBase.StrKey.decodeClaimableBalance(CLAIMABLE_BALANCE_ZERO) + ); + }); + + it('returns raw bytes for liquidity pools', function () { + const lp = new StellarBase.Address(LIQUIDITY_POOL_ZERO); + expect(lp.toBuffer()).to.deep.equal( + StellarBase.StrKey.decodeLiquidityPool(LIQUIDITY_POOL_ZERO) + ); }); }); }); diff --git a/test/unit/operations/invoke_host_function_test.js b/test/unit/operations/invoke_host_function_test.js index 5c846d3ba..50a5acfbe 100644 --- a/test/unit/operations/invoke_host_function_test.js +++ b/test/unit/operations/invoke_host_function_test.js @@ -175,6 +175,22 @@ describe('Operation', function () { // compare that way instead. expect(ctorArgs[0].str().toString()).to.eql(constructorArgs[0].str()); }); + + it('prevents invocation with claimable balances', function () { + expect(() => + Operation.invokeContractFunction({ + contract: + 'CA3D5KRYM6CB7OWQ6TWYRR3Z4T7GNZLKERYNZGGA5SOAOPIFY6YQGAXE', + function: 'increment', + args: [ + nativeToScVal( + 'LA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUPJN', + { type: 'address' } + ) + ] + }) + ).to.throw(/liquidity pool/); + }); }); }); }); diff --git a/test/unit/scval_test.js b/test/unit/scval_test.js index 049cd7759..50db7a465 100644 --- a/test/unit/scval_test.js +++ b/test/unit/scval_test.js @@ -209,6 +209,18 @@ describe('parsing and building ScVals', function () { it('doesnt throw on arrays with mixed types', function () { expect(nativeToScVal([1, 'a', false]).switch().name).to.equal('scvVec'); }); + it('allows type specifications across an array', function () { + const scv = nativeToScVal([1, 'a', false, 'b'], { + type: ['i128', 'symbol'] + }); + expect(scv.switch().name).to.equal('scvVec'); + expect(scv.value().length).to.equal(4); + ['scvI128', 'scvSymbol', 'scvBool', 'scvString'].forEach( + (expectedType, idx) => { + expect(scv.value()[idx].switch().name).to.equal(expectedType); + } + ); + }); it('lets strings be small integer ScVals', function () { ['i32', 'u32'].forEach((type) => { diff --git a/test/unit/signing_test.js b/test/unit/signing_test.js index f7c2205f8..177c1f005 100644 --- a/test/unit/signing_test.js +++ b/test/unit/signing_test.js @@ -7,10 +7,7 @@ let publicKey = Buffer.from( 'ffbdd7ef9933fe7249dc5ca1e7120b6d7b7b99a7a367e1a2fc6cb062fe420437', 'hex' ); -let secretKey = Buffer.from( - '1123740522f11bfef6b3671f51e159ccf589ccf8965262dd5f97d1721d383dd4ffbdd7ef9933fe7249dc5ca1e7120b6d7b7b99a7a367e1a2fc6cb062fe420437', - 'hex' -); +let secretKey = seed; describe('StellarBase#sign', function () { let expectedSig = diff --git a/test/unit/sorobandata_builder_test.js b/test/unit/sorobandata_builder_test.js index aff86f6a4..536891ad5 100644 --- a/test/unit/sorobandata_builder_test.js +++ b/test/unit/sorobandata_builder_test.js @@ -6,11 +6,11 @@ describe('SorobanTransactionData can be built', function () { const c = new StellarBase.Contract(contractId); const sentinel = new xdr.SorobanTransactionData({ - ext: new xdr.ExtensionPoint(0), + ext: new xdr.SorobanTransactionDataExt(0), resources: new xdr.SorobanResources({ footprint: new xdr.LedgerFootprint({ readOnly: [], readWrite: [] }), instructions: 1, - readBytes: 2, + diskReadBytes: 2, writeBytes: 3 }), resourceFee: new xdr.Int64(5) diff --git a/test/unit/strkey_test.js b/test/unit/strkey_test.js index d0e0e0095..91c5998e4 100644 --- a/test/unit/strkey_test.js +++ b/test/unit/strkey_test.js @@ -413,6 +413,37 @@ describe('StrKey', function () { }); }); + describe('#liquidityPools', function () { + it('valid w/ 32-byte hash', function () { + const strkey = 'LA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUPJN'; + const asHex = + '3f0c34bf93ad0d9971d04ccc90f705511c838aad9734a4a2fb0d7a03fc7fe89a'; + expect(StellarBase.StrKey.isValidLiquidityPool(strkey)).to.be.true; + expect( + StellarBase.StrKey.decodeLiquidityPool(strkey).toString('hex') + ).to.equal(asHex); + expect( + StellarBase.StrKey.encodeLiquidityPool(Buffer.from(asHex, 'hex')) + ).to.equal(strkey); + }); + }); + + describe('#claimableBalances', function () { + it('valid w/ 33-byte strkey', function () { + const strkey = + 'BAAD6DBUX6J22DMZOHIEZTEQ64CVCHEDRKWZONFEUL5Q26QD7R76RGR4TU'; + const asHex = + '003f0c34bf93ad0d9971d04ccc90f705511c838aad9734a4a2fb0d7a03fc7fe89a'; + expect(StellarBase.StrKey.isValidClaimableBalance(strkey)).to.be.true; + expect( + StellarBase.StrKey.decodeClaimableBalance(strkey).toString('hex') + ).to.equal(asHex); + expect( + StellarBase.StrKey.encodeClaimableBalance(Buffer.from(asHex, 'hex')) + ).to.equal(strkey); + }); + }); + describe('#invalidStrKeys', function () { // From https://stellar.org/protocol/sep-23#invalid-test-cases const BAD_STRKEYS = [ @@ -430,7 +461,11 @@ describe('StrKey', function () { // Padding bytes are not allowed 'MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAACJUK===', // Invalid checksum - 'MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAACJUO' + 'MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAACJUO', + // Trailing bits should be zeroes + 'BAAD6DBUX6J22DMZOHIEZTEQ64CVCHEDRKWZONFEUL5Q26QD7R76RGR4TV', + // Invalid claimable balance type + 'BAAT6DBUX6J22DMZOHIEZTEQ64CVCHEDRKWZONFEUL5Q26QD7R76RGXACA' // // FIXME: The following test cases don't pass (i.e. don't throw). diff --git a/types/curr.d.ts b/types/curr.d.ts index 00be76e4f..897b1f201 100644 --- a/types/curr.d.ts +++ b/types/curr.d.ts @@ -49,7 +49,7 @@ export namespace xdr { * * @param items the key-value pairs to sort. * - * @warning This only performs "best-effort" sorting, working best when the + * @warning This only performs 'best-effort' sorting, working best when the * keys are all either numeric or string-like. */ function scvSortedMap(items: ScMapEntry[]): ScVal; @@ -436,14 +436,6 @@ export namespace xdr { static claimantTypeV0(): ClaimantType; } - class ClaimableBalanceIdType { - readonly name: 'claimableBalanceIdTypeV0'; - - readonly value: 0; - - static claimableBalanceIdTypeV0(): ClaimableBalanceIdType; - } - class ClaimableBalanceFlags { readonly name: 'claimableBalanceClawbackEnabledFlag'; @@ -499,15 +491,13 @@ export namespace xdr { } class BucketListType { - readonly name: 'live' | 'hotArchive' | 'coldArchive'; + readonly name: 'live' | 'hotArchive'; - readonly value: 0 | 1 | 2; + readonly value: 0 | 1; static live(): BucketListType; static hotArchive(): BucketListType; - - static coldArchive(): BucketListType; } class BucketEntryType { @@ -528,39 +518,15 @@ export namespace xdr { readonly name: | 'hotArchiveMetaentry' | 'hotArchiveArchived' - | 'hotArchiveLive' - | 'hotArchiveDeleted'; + | 'hotArchiveLive'; - readonly value: -1 | 0 | 1 | 2; + readonly value: -1 | 0 | 1; static hotArchiveMetaentry(): HotArchiveBucketEntryType; static hotArchiveArchived(): HotArchiveBucketEntryType; static hotArchiveLive(): HotArchiveBucketEntryType; - - static hotArchiveDeleted(): HotArchiveBucketEntryType; - } - - class ColdArchiveBucketEntryType { - readonly name: - | 'coldArchiveMetaentry' - | 'coldArchiveArchivedLeaf' - | 'coldArchiveDeletedLeaf' - | 'coldArchiveBoundaryLeaf' - | 'coldArchiveHash'; - - readonly value: -1 | 0 | 1 | 2 | 3; - - static coldArchiveMetaentry(): ColdArchiveBucketEntryType; - - static coldArchiveArchivedLeaf(): ColdArchiveBucketEntryType; - - static coldArchiveDeletedLeaf(): ColdArchiveBucketEntryType; - - static coldArchiveBoundaryLeaf(): ColdArchiveBucketEntryType; - - static coldArchiveHash(): ColdArchiveBucketEntryType; } class StellarValueType { @@ -628,9 +594,10 @@ export namespace xdr { | 'ledgerEntryCreated' | 'ledgerEntryUpdated' | 'ledgerEntryRemoved' - | 'ledgerEntryState'; + | 'ledgerEntryState' + | 'ledgerEntryRestored'; - readonly value: 0 | 1 | 2 | 3; + readonly value: 0 | 1 | 2 | 3 | 4; static ledgerEntryCreated(): LedgerEntryChangeType; @@ -639,6 +606,8 @@ export namespace xdr { static ledgerEntryRemoved(): LedgerEntryChangeType; static ledgerEntryState(): LedgerEntryChangeType; + + static ledgerEntryRestored(): LedgerEntryChangeType; } class ContractEventType { @@ -653,6 +622,21 @@ export namespace xdr { static diagnostic(): ContractEventType; } + class TransactionEventStage { + readonly name: + | 'transactionEventStageBeforeAllTxes' + | 'transactionEventStageAfterTx' + | 'transactionEventStageAfterAllTxes'; + + readonly value: 0 | 1 | 2; + + static transactionEventStageBeforeAllTxes(): TransactionEventStage; + + static transactionEventStageAfterTx(): TransactionEventStage; + + static transactionEventStageAfterAllTxes(): TransactionEventStage; + } + class ErrorCode { readonly name: 'errMisc' | 'errData' | 'errConf' | 'errAuth' | 'errLoad'; @@ -684,7 +668,6 @@ export namespace xdr { | 'errorMsg' | 'auth' | 'dontHave' - | 'getPeers' | 'peers' | 'getTxSet' | 'txSet' @@ -695,8 +678,6 @@ export namespace xdr { | 'scpMessage' | 'getScpState' | 'hello' - | 'surveyRequest' - | 'surveyResponse' | 'sendMore' | 'sendMoreExtended' | 'floodAdvert' @@ -710,7 +691,6 @@ export namespace xdr { | 0 | 2 | 3 - | 4 | 5 | 6 | 7 @@ -721,8 +701,6 @@ export namespace xdr { | 11 | 12 | 13 - | 14 - | 15 | 16 | 20 | 18 @@ -738,8 +716,6 @@ export namespace xdr { static dontHave(): MessageType; - static getPeers(): MessageType; - static peers(): MessageType; static getTxSet(): MessageType; @@ -760,10 +736,6 @@ export namespace xdr { static hello(): MessageType; - static surveyRequest(): MessageType; - - static surveyResponse(): MessageType; - static sendMore(): MessageType; static sendMoreExtended(): MessageType; @@ -782,26 +754,17 @@ export namespace xdr { } class SurveyMessageCommandType { - readonly name: 'surveyTopology' | 'timeSlicedSurveyTopology'; - - readonly value: 0 | 1; + readonly name: 'timeSlicedSurveyTopology'; - static surveyTopology(): SurveyMessageCommandType; + readonly value: 1; static timeSlicedSurveyTopology(): SurveyMessageCommandType; } class SurveyMessageResponseType { - readonly name: - | 'surveyTopologyResponseV0' - | 'surveyTopologyResponseV1' - | 'surveyTopologyResponseV2'; - - readonly value: 0 | 1 | 2; - - static surveyTopologyResponseV0(): SurveyMessageResponseType; + readonly name: 'surveyTopologyResponseV2'; - static surveyTopologyResponseV1(): SurveyMessageResponseType; + readonly value: 2; static surveyTopologyResponseV2(): SurveyMessageResponseType; } @@ -1020,16 +983,6 @@ export namespace xdr { static precondV2(): PreconditionType; } - class ArchivalProofType { - readonly name: 'existence' | 'nonexistence'; - - readonly value: 0 | 1; - - static existence(): ArchivalProofType; - - static nonexistence(): ArchivalProofType; - } - class ClaimAtomType { readonly name: | 'claimAtomTypeV0' @@ -1969,6 +1922,14 @@ export namespace xdr { static binaryFuseFilter32Bit(): BinaryFuseFilterType; } + class ClaimableBalanceIdType { + readonly name: 'claimableBalanceIdTypeV0'; + + readonly value: 0; + + static claimableBalanceIdTypeV0(): ClaimableBalanceIdType; + } + class ScValType { readonly name: | 'scvBool' @@ -2146,13 +2107,24 @@ export namespace xdr { } class ScAddressType { - readonly name: 'scAddressTypeAccount' | 'scAddressTypeContract'; + readonly name: + | 'scAddressTypeAccount' + | 'scAddressTypeContract' + | 'scAddressTypeMuxedAccount' + | 'scAddressTypeClaimableBalance' + | 'scAddressTypeLiquidityPool'; - readonly value: 0 | 1; + readonly value: 0 | 1 | 2 | 3 | 4; static scAddressTypeAccount(): ScAddressType; static scAddressTypeContract(): ScAddressType; + + static scAddressTypeMuxedAccount(): ScAddressType; + + static scAddressTypeClaimableBalance(): ScAddressType; + + static scAddressTypeLiquidityPool(): ScAddressType; } class ScEnvMetaKind { @@ -2191,6 +2163,7 @@ export namespace xdr { | 'scSpecTypeString' | 'scSpecTypeSymbol' | 'scSpecTypeAddress' + | 'scSpecTypeMuxedAddress' | 'scSpecTypeOption' | 'scSpecTypeResult' | 'scSpecTypeVec' @@ -2218,6 +2191,7 @@ export namespace xdr { | 16 | 17 | 19 + | 20 | 1000 | 1001 | 1002 @@ -2262,6 +2236,8 @@ export namespace xdr { static scSpecTypeAddress(): ScSpecType; + static scSpecTypeMuxedAddress(): ScSpecType; + static scSpecTypeOption(): ScSpecType; static scSpecTypeResult(): ScSpecType; @@ -2287,15 +2263,43 @@ export namespace xdr { static scSpecUdtUnionCaseTupleV0(): ScSpecUdtUnionCaseV0Kind; } + class ScSpecEventParamLocationV0 { + readonly name: + | 'scSpecEventParamLocationData' + | 'scSpecEventParamLocationTopicList'; + + readonly value: 0 | 1; + + static scSpecEventParamLocationData(): ScSpecEventParamLocationV0; + + static scSpecEventParamLocationTopicList(): ScSpecEventParamLocationV0; + } + + class ScSpecEventDataFormat { + readonly name: + | 'scSpecEventDataFormatSingleValue' + | 'scSpecEventDataFormatVec' + | 'scSpecEventDataFormatMap'; + + readonly value: 0 | 1 | 2; + + static scSpecEventDataFormatSingleValue(): ScSpecEventDataFormat; + + static scSpecEventDataFormatVec(): ScSpecEventDataFormat; + + static scSpecEventDataFormatMap(): ScSpecEventDataFormat; + } + class ScSpecEntryKind { readonly name: | 'scSpecEntryFunctionV0' | 'scSpecEntryUdtStructV0' | 'scSpecEntryUdtUnionV0' | 'scSpecEntryUdtEnumV0' - | 'scSpecEntryUdtErrorEnumV0'; + | 'scSpecEntryUdtErrorEnumV0' + | 'scSpecEntryEventV0'; - readonly value: 0 | 1 | 2 | 3 | 4; + readonly value: 0 | 1 | 2 | 3 | 4 | 5; static scSpecEntryFunctionV0(): ScSpecEntryKind; @@ -2306,6 +2310,8 @@ export namespace xdr { static scSpecEntryUdtEnumV0(): ScSpecEntryKind; static scSpecEntryUdtErrorEnumV0(): ScSpecEntryKind; + + static scSpecEntryEventV0(): ScSpecEntryKind; } class ContractCostType { @@ -2608,10 +2614,30 @@ export namespace xdr { | 'configSettingContractDataEntrySizeBytes' | 'configSettingStateArchival' | 'configSettingContractExecutionLanes' - | 'configSettingBucketlistSizeWindow' - | 'configSettingEvictionIterator'; + | 'configSettingLiveSorobanStateSizeWindow' + | 'configSettingEvictionIterator' + | 'configSettingContractParallelComputeV0' + | 'configSettingContractLedgerCostExtV0' + | 'configSettingScpTiming'; - readonly value: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13; + readonly value: + | 0 + | 1 + | 2 + | 3 + | 4 + | 5 + | 6 + | 7 + | 8 + | 9 + | 10 + | 11 + | 12 + | 13 + | 14 + | 15 + | 16; static configSettingContractMaxSizeBytes(): ConfigSettingId; @@ -2637,9 +2663,15 @@ export namespace xdr { static configSettingContractExecutionLanes(): ConfigSettingId; - static configSettingBucketlistSizeWindow(): ConfigSettingId; + static configSettingLiveSorobanStateSizeWindow(): ConfigSettingId; static configSettingEvictionIterator(): ConfigSettingId; + + static configSettingContractParallelComputeV0(): ConfigSettingId; + + static configSettingContractLedgerCostExtV0(): ConfigSettingId; + + static configSettingScpTiming(): ConfigSettingId; } const Value: VarOpaque; @@ -2654,8 +2686,6 @@ export namespace xdr { const DataValue: VarOpaque; - type PoolId = Hash; - const AssetCode4: Opaque; const AssetCode12: Opaque; @@ -2664,13 +2694,13 @@ export namespace xdr { const UpgradeType: VarOpaque; - const LedgerEntryChanges: XDRArray; + const DependentTxCluster: XDRArray; - const DiagnosticEvents: XDRArray; + const ParallelTxExecutionStage: XDRArray; - const EncryptedBody: VarOpaque; + const LedgerEntryChanges: XDRArray; - const PeerStatList: XDRArray; + const EncryptedBody: VarOpaque; const TimeSlicedPeerDataList: XDRArray; @@ -2678,7 +2708,7 @@ export namespace xdr { const TxDemandVector: XDRArray; - const ProofLevel: XDRArray; + const SorobanAuthorizationEntries: XDRArray; const Hash: Opaque; @@ -2704,6 +2734,10 @@ export namespace xdr { type AccountId = PublicKey; + type ContractId = Hash; + + type PoolId = Hash; + const ScVec: XDRArray; const ScMap: XDRArray; @@ -4318,132 +4352,6 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class ColdArchiveArchivedLeaf { - constructor(attributes: { index: number; archivedEntry: LedgerEntry }); - - index(value?: number): number; - - archivedEntry(value?: LedgerEntry): LedgerEntry; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ColdArchiveArchivedLeaf; - - static write(value: ColdArchiveArchivedLeaf, io: Buffer): void; - - static isValid(value: ColdArchiveArchivedLeaf): boolean; - - static toXDR(value: ColdArchiveArchivedLeaf): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ColdArchiveArchivedLeaf; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): ColdArchiveArchivedLeaf; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - - class ColdArchiveDeletedLeaf { - constructor(attributes: { index: number; deletedKey: LedgerKey }); - - index(value?: number): number; - - deletedKey(value?: LedgerKey): LedgerKey; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ColdArchiveDeletedLeaf; - - static write(value: ColdArchiveDeletedLeaf, io: Buffer): void; - - static isValid(value: ColdArchiveDeletedLeaf): boolean; - - static toXDR(value: ColdArchiveDeletedLeaf): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ColdArchiveDeletedLeaf; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): ColdArchiveDeletedLeaf; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - - class ColdArchiveBoundaryLeaf { - constructor(attributes: { index: number; isLowerBound: boolean }); - - index(value?: number): number; - - isLowerBound(value?: boolean): boolean; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ColdArchiveBoundaryLeaf; - - static write(value: ColdArchiveBoundaryLeaf, io: Buffer): void; - - static isValid(value: ColdArchiveBoundaryLeaf): boolean; - - static toXDR(value: ColdArchiveBoundaryLeaf): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ColdArchiveBoundaryLeaf; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): ColdArchiveBoundaryLeaf; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - - class ColdArchiveHashEntry { - constructor(attributes: { index: number; level: number; hash: Buffer }); - - index(value?: number): number; - - level(value?: number): number; - - hash(value?: Buffer): Buffer; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ColdArchiveHashEntry; - - static write(value: ColdArchiveHashEntry, io: Buffer): void; - - static isValid(value: ColdArchiveHashEntry): boolean; - - static toXDR(value: ColdArchiveHashEntry): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ColdArchiveHashEntry; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): ColdArchiveHashEntry; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - class LedgerCloseValueSignature { constructor(attributes: { nodeId: NodeId; signature: Buffer }); @@ -4614,9 +4522,9 @@ export namespace xdr { } class ConfigUpgradeSetKey { - constructor(attributes: { contractId: Buffer; contentHash: Buffer }); + constructor(attributes: { contractId: ContractId; contentHash: Buffer }); - contractId(value?: Buffer): Buffer; + contractId(value?: ContractId): ContractId; contentHash(value?: Buffer): Buffer; @@ -4670,6 +4578,42 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } + class ParallelTxsComponent { + constructor(attributes: { + baseFee: null | Int64; + executionStages: TransactionEnvelope[][][]; + }); + + baseFee(value?: null | Int64): null | Int64; + + executionStages( + value?: TransactionEnvelope[][][], + ): TransactionEnvelope[][][]; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): ParallelTxsComponent; + + static write(value: ParallelTxsComponent, io: Buffer): void; + + static isValid(value: ParallelTxsComponent): boolean; + + static toXDR(value: ParallelTxsComponent): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): ParallelTxsComponent; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): ParallelTxsComponent; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + class TxSetComponentTxsMaybeDiscountedFee { constructor(attributes: { baseFee: null | Int64; @@ -5129,14 +5073,14 @@ export namespace xdr { class ContractEvent { constructor(attributes: { ext: ExtensionPoint; - contractId: null | Buffer; + contractId: null | ContractId; type: ContractEventType; body: ContractEventBody; }); ext(value?: ExtensionPoint): ExtensionPoint; - contractId(value?: null | Buffer): null | Buffer; + contractId(value?: null | ContractId): null | ContractId; type(value?: ContractEventType): ContractEventType; @@ -5316,10 +5260,16 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class InvokeHostFunctionSuccessPreImage { - constructor(attributes: { returnValue: ScVal; events: ContractEvent[] }); + class OperationMetaV2 { + constructor(attributes: { + ext: ExtensionPoint; + changes: LedgerEntryChange[]; + events: ContractEvent[]; + }); - returnValue(value?: ScVal): ScVal; + ext(value?: ExtensionPoint): ExtensionPoint; + + changes(value?: LedgerEntryChange[]): LedgerEntryChange[]; events(value?: ContractEvent[]): ContractEvent[]; @@ -5327,37 +5277,178 @@ export namespace xdr { toXDR(format: 'hex' | 'base64'): string; - static read(io: Buffer): InvokeHostFunctionSuccessPreImage; + static read(io: Buffer): OperationMetaV2; - static write(value: InvokeHostFunctionSuccessPreImage, io: Buffer): void; + static write(value: OperationMetaV2, io: Buffer): void; - static isValid(value: InvokeHostFunctionSuccessPreImage): boolean; + static isValid(value: OperationMetaV2): boolean; - static toXDR(value: InvokeHostFunctionSuccessPreImage): Buffer; + static toXDR(value: OperationMetaV2): Buffer; - static fromXDR( - input: Buffer, - format?: 'raw', - ): InvokeHostFunctionSuccessPreImage; + static fromXDR(input: Buffer, format?: 'raw'): OperationMetaV2; - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): InvokeHostFunctionSuccessPreImage; + static fromXDR(input: string, format: 'hex' | 'base64'): OperationMetaV2; static validateXDR(input: Buffer, format?: 'raw'): boolean; static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class TransactionResultMeta { + class SorobanTransactionMetaV2 { constructor(attributes: { - result: TransactionResultPair; - feeProcessing: LedgerEntryChange[]; - txApplyProcessing: TransactionMeta; + ext: SorobanTransactionMetaExt; + returnValue: null | ScVal; }); - result(value?: TransactionResultPair): TransactionResultPair; + ext(value?: SorobanTransactionMetaExt): SorobanTransactionMetaExt; + + returnValue(value?: null | ScVal): null | ScVal; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): SorobanTransactionMetaV2; + + static write(value: SorobanTransactionMetaV2, io: Buffer): void; + + static isValid(value: SorobanTransactionMetaV2): boolean; + + static toXDR(value: SorobanTransactionMetaV2): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): SorobanTransactionMetaV2; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): SorobanTransactionMetaV2; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class TransactionEvent { + constructor(attributes: { + stage: TransactionEventStage; + event: ContractEvent; + }); + + stage(value?: TransactionEventStage): TransactionEventStage; + + event(value?: ContractEvent): ContractEvent; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): TransactionEvent; + + static write(value: TransactionEvent, io: Buffer): void; + + static isValid(value: TransactionEvent): boolean; + + static toXDR(value: TransactionEvent): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): TransactionEvent; + + static fromXDR(input: string, format: 'hex' | 'base64'): TransactionEvent; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class TransactionMetaV4 { + constructor(attributes: { + ext: ExtensionPoint; + txChangesBefore: LedgerEntryChange[]; + operations: OperationMetaV2[]; + txChangesAfter: LedgerEntryChange[]; + sorobanMeta: null | SorobanTransactionMetaV2; + events: TransactionEvent[]; + diagnosticEvents: DiagnosticEvent[]; + }); + + ext(value?: ExtensionPoint): ExtensionPoint; + + txChangesBefore(value?: LedgerEntryChange[]): LedgerEntryChange[]; + + operations(value?: OperationMetaV2[]): OperationMetaV2[]; + + txChangesAfter(value?: LedgerEntryChange[]): LedgerEntryChange[]; + + sorobanMeta( + value?: null | SorobanTransactionMetaV2, + ): null | SorobanTransactionMetaV2; + + events(value?: TransactionEvent[]): TransactionEvent[]; + + diagnosticEvents(value?: DiagnosticEvent[]): DiagnosticEvent[]; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): TransactionMetaV4; + + static write(value: TransactionMetaV4, io: Buffer): void; + + static isValid(value: TransactionMetaV4): boolean; + + static toXDR(value: TransactionMetaV4): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): TransactionMetaV4; + + static fromXDR(input: string, format: 'hex' | 'base64'): TransactionMetaV4; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class InvokeHostFunctionSuccessPreImage { + constructor(attributes: { returnValue: ScVal; events: ContractEvent[] }); + + returnValue(value?: ScVal): ScVal; + + events(value?: ContractEvent[]): ContractEvent[]; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): InvokeHostFunctionSuccessPreImage; + + static write(value: InvokeHostFunctionSuccessPreImage, io: Buffer): void; + + static isValid(value: InvokeHostFunctionSuccessPreImage): boolean; + + static toXDR(value: InvokeHostFunctionSuccessPreImage): Buffer; + + static fromXDR( + input: Buffer, + format?: 'raw', + ): InvokeHostFunctionSuccessPreImage; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): InvokeHostFunctionSuccessPreImage; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class TransactionResultMeta { + constructor(attributes: { + result: TransactionResultPair; + feeProcessing: LedgerEntryChange[]; + txApplyProcessing: TransactionMeta; + }); + + result(value?: TransactionResultPair): TransactionResultPair; feeProcessing(value?: LedgerEntryChange[]): LedgerEntryChange[]; @@ -5387,6 +5478,49 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } + class TransactionResultMetaV1 { + constructor(attributes: { + ext: ExtensionPoint; + result: TransactionResultPair; + feeProcessing: LedgerEntryChange[]; + txApplyProcessing: TransactionMeta; + postTxApplyFeeProcessing: LedgerEntryChange[]; + }); + + ext(value?: ExtensionPoint): ExtensionPoint; + + result(value?: TransactionResultPair): TransactionResultPair; + + feeProcessing(value?: LedgerEntryChange[]): LedgerEntryChange[]; + + txApplyProcessing(value?: TransactionMeta): TransactionMeta; + + postTxApplyFeeProcessing(value?: LedgerEntryChange[]): LedgerEntryChange[]; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): TransactionResultMetaV1; + + static write(value: TransactionResultMetaV1, io: Buffer): void; + + static isValid(value: TransactionResultMetaV1): boolean; + + static toXDR(value: TransactionResultMetaV1): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): TransactionResultMetaV1; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): TransactionResultMetaV1; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + class UpgradeEntryMeta { constructor(attributes: { upgrade: LedgerUpgrade; @@ -5497,9 +5631,9 @@ export namespace xdr { txProcessing: TransactionResultMeta[]; upgradesProcessing: UpgradeEntryMeta[]; scpInfo: ScpHistoryEntry[]; - totalByteSizeOfBucketList: Uint64; - evictedTemporaryLedgerKeys: LedgerKey[]; - evictedPersistentLedgerEntries: LedgerEntry[]; + totalByteSizeOfLiveSorobanState: Uint64; + evictedKeys: LedgerKey[]; + unused: LedgerEntry[]; }); ext(value?: LedgerCloseMetaExt): LedgerCloseMetaExt; @@ -5514,11 +5648,11 @@ export namespace xdr { scpInfo(value?: ScpHistoryEntry[]): ScpHistoryEntry[]; - totalByteSizeOfBucketList(value?: Uint64): Uint64; + totalByteSizeOfLiveSorobanState(value?: Uint64): Uint64; - evictedTemporaryLedgerKeys(value?: LedgerKey[]): LedgerKey[]; + evictedKeys(value?: LedgerKey[]): LedgerKey[]; - evictedPersistentLedgerEntries(value?: LedgerEntry[]): LedgerEntry[]; + unused(value?: LedgerEntry[]): LedgerEntry[]; toXDR(format?: 'raw'): Buffer; @@ -5541,6 +5675,55 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } + class LedgerCloseMetaV2 { + constructor(attributes: { + ext: LedgerCloseMetaExt; + ledgerHeader: LedgerHeaderHistoryEntry; + txSet: GeneralizedTransactionSet; + txProcessing: TransactionResultMetaV1[]; + upgradesProcessing: UpgradeEntryMeta[]; + scpInfo: ScpHistoryEntry[]; + totalByteSizeOfLiveSorobanState: Uint64; + evictedKeys: LedgerKey[]; + }); + + ext(value?: LedgerCloseMetaExt): LedgerCloseMetaExt; + + ledgerHeader(value?: LedgerHeaderHistoryEntry): LedgerHeaderHistoryEntry; + + txSet(value?: GeneralizedTransactionSet): GeneralizedTransactionSet; + + txProcessing(value?: TransactionResultMetaV1[]): TransactionResultMetaV1[]; + + upgradesProcessing(value?: UpgradeEntryMeta[]): UpgradeEntryMeta[]; + + scpInfo(value?: ScpHistoryEntry[]): ScpHistoryEntry[]; + + totalByteSizeOfLiveSorobanState(value?: Uint64): Uint64; + + evictedKeys(value?: LedgerKey[]): LedgerKey[]; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): LedgerCloseMetaV2; + + static write(value: LedgerCloseMetaV2, io: Buffer): void; + + static isValid(value: LedgerCloseMetaV2): boolean; + + static toXDR(value: LedgerCloseMetaV2): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): LedgerCloseMetaV2; + + static fromXDR(input: string, format: 'hex' | 'base64'): LedgerCloseMetaV2; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + class Error { constructor(attributes: { code: ErrorCode; msg: string | Buffer }); @@ -6055,40 +6238,6 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class SignedSurveyRequestMessage { - constructor(attributes: { - requestSignature: Buffer; - request: SurveyRequestMessage; - }); - - requestSignature(value?: Buffer): Buffer; - - request(value?: SurveyRequestMessage): SurveyRequestMessage; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): SignedSurveyRequestMessage; - - static write(value: SignedSurveyRequestMessage, io: Buffer): void; - - static isValid(value: SignedSurveyRequestMessage): boolean; - - static toXDR(value: SignedSurveyRequestMessage): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): SignedSurveyRequestMessage; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): SignedSurveyRequestMessage; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - class SignedTimeSlicedSurveyRequestMessage { constructor(attributes: { requestSignature: Buffer; @@ -6205,40 +6354,6 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class SignedSurveyResponseMessage { - constructor(attributes: { - responseSignature: Buffer; - response: SurveyResponseMessage; - }); - - responseSignature(value?: Buffer): Buffer; - - response(value?: SurveyResponseMessage): SurveyResponseMessage; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): SignedSurveyResponseMessage; - - static write(value: SignedSurveyResponseMessage, io: Buffer): void; - - static isValid(value: SignedSurveyResponseMessage): boolean; - - static toXDR(value: SignedSurveyResponseMessage): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): SignedSurveyResponseMessage; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): SignedSurveyResponseMessage; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - class SignedTimeSlicedSurveyResponseMessage { constructor(attributes: { responseSignature: Buffer; @@ -6434,92 +6549,6 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class TopologyResponseBodyV0 { - constructor(attributes: { - inboundPeers: PeerStats[]; - outboundPeers: PeerStats[]; - totalInboundPeerCount: number; - totalOutboundPeerCount: number; - }); - - inboundPeers(value?: PeerStats[]): PeerStats[]; - - outboundPeers(value?: PeerStats[]): PeerStats[]; - - totalInboundPeerCount(value?: number): number; - - totalOutboundPeerCount(value?: number): number; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): TopologyResponseBodyV0; - - static write(value: TopologyResponseBodyV0, io: Buffer): void; - - static isValid(value: TopologyResponseBodyV0): boolean; - - static toXDR(value: TopologyResponseBodyV0): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): TopologyResponseBodyV0; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): TopologyResponseBodyV0; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - - class TopologyResponseBodyV1 { - constructor(attributes: { - inboundPeers: PeerStats[]; - outboundPeers: PeerStats[]; - totalInboundPeerCount: number; - totalOutboundPeerCount: number; - maxInboundPeerCount: number; - maxOutboundPeerCount: number; - }); - - inboundPeers(value?: PeerStats[]): PeerStats[]; - - outboundPeers(value?: PeerStats[]): PeerStats[]; - - totalInboundPeerCount(value?: number): number; - - totalOutboundPeerCount(value?: number): number; - - maxInboundPeerCount(value?: number): number; - - maxOutboundPeerCount(value?: number): number; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): TopologyResponseBodyV1; - - static write(value: TopologyResponseBodyV1, io: Buffer): void; - - static isValid(value: TopologyResponseBodyV1): boolean; - - static toXDR(value: TopologyResponseBodyV1): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): TopologyResponseBodyV1; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): TopologyResponseBodyV1; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - class TopologyResponseBodyV2 { constructor(attributes: { inboundPeers: TimeSlicedPeerData[]; @@ -8090,166 +8119,66 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class ArchivalProofNode { - constructor(attributes: { index: number; hash: Buffer }); - - index(value?: number): number; - - hash(value?: Buffer): Buffer; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ArchivalProofNode; - - static write(value: ArchivalProofNode, io: Buffer): void; - - static isValid(value: ArchivalProofNode): boolean; - - static toXDR(value: ArchivalProofNode): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ArchivalProofNode; - - static fromXDR(input: string, format: 'hex' | 'base64'): ArchivalProofNode; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - - class NonexistenceProofBody { - constructor(attributes: { - entriesToProve: ColdArchiveBucketEntry[]; - proofLevels: ArchivalProofNode[][]; - }); - - entriesToProve(value?: ColdArchiveBucketEntry[]): ColdArchiveBucketEntry[]; - - proofLevels(value?: ArchivalProofNode[][]): ArchivalProofNode[][]; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): NonexistenceProofBody; - - static write(value: NonexistenceProofBody, io: Buffer): void; - - static isValid(value: NonexistenceProofBody): boolean; - - static toXDR(value: NonexistenceProofBody): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): NonexistenceProofBody; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): NonexistenceProofBody; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - - class ExistenceProofBody { + class SorobanResources { constructor(attributes: { - keysToProve: LedgerKey[]; - lowBoundEntries: ColdArchiveBucketEntry[]; - highBoundEntries: ColdArchiveBucketEntry[]; - proofLevels: ArchivalProofNode[][]; + footprint: LedgerFootprint; + instructions: number; + diskReadBytes: number; + writeBytes: number; }); - keysToProve(value?: LedgerKey[]): LedgerKey[]; - - lowBoundEntries(value?: ColdArchiveBucketEntry[]): ColdArchiveBucketEntry[]; - - highBoundEntries( - value?: ColdArchiveBucketEntry[], - ): ColdArchiveBucketEntry[]; - - proofLevels(value?: ArchivalProofNode[][]): ArchivalProofNode[][]; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ExistenceProofBody; - - static write(value: ExistenceProofBody, io: Buffer): void; - - static isValid(value: ExistenceProofBody): boolean; - - static toXDR(value: ExistenceProofBody): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ExistenceProofBody; - - static fromXDR(input: string, format: 'hex' | 'base64'): ExistenceProofBody; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } + footprint(value?: LedgerFootprint): LedgerFootprint; - class ArchivalProof { - constructor(attributes: { epoch: number; body: ArchivalProofBody }); + instructions(value?: number): number; - epoch(value?: number): number; + diskReadBytes(value?: number): number; - body(value?: ArchivalProofBody): ArchivalProofBody; + writeBytes(value?: number): number; toXDR(format?: 'raw'): Buffer; toXDR(format: 'hex' | 'base64'): string; - static read(io: Buffer): ArchivalProof; + static read(io: Buffer): SorobanResources; - static write(value: ArchivalProof, io: Buffer): void; + static write(value: SorobanResources, io: Buffer): void; - static isValid(value: ArchivalProof): boolean; + static isValid(value: SorobanResources): boolean; - static toXDR(value: ArchivalProof): Buffer; + static toXDR(value: SorobanResources): Buffer; - static fromXDR(input: Buffer, format?: 'raw'): ArchivalProof; + static fromXDR(input: Buffer, format?: 'raw'): SorobanResources; - static fromXDR(input: string, format: 'hex' | 'base64'): ArchivalProof; + static fromXDR(input: string, format: 'hex' | 'base64'): SorobanResources; static validateXDR(input: Buffer, format?: 'raw'): boolean; static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class SorobanResources { - constructor(attributes: { - footprint: LedgerFootprint; - instructions: number; - readBytes: number; - writeBytes: number; - }); - - footprint(value?: LedgerFootprint): LedgerFootprint; + class SorobanResourcesExtV0 { + constructor(attributes: { archivedSorobanEntries: number[] }); - instructions(value?: number): number; - - readBytes(value?: number): number; - - writeBytes(value?: number): number; + archivedSorobanEntries(value?: number[]): number[]; toXDR(format?: 'raw'): Buffer; toXDR(format: 'hex' | 'base64'): string; - static read(io: Buffer): SorobanResources; + static read(io: Buffer): SorobanResourcesExtV0; - static write(value: SorobanResources, io: Buffer): void; + static write(value: SorobanResourcesExtV0, io: Buffer): void; - static isValid(value: SorobanResources): boolean; + static isValid(value: SorobanResourcesExtV0): boolean; - static toXDR(value: SorobanResources): Buffer; + static toXDR(value: SorobanResourcesExtV0): Buffer; - static fromXDR(input: Buffer, format?: 'raw'): SorobanResources; + static fromXDR(input: Buffer, format?: 'raw'): SorobanResourcesExtV0; - static fromXDR(input: string, format: 'hex' | 'base64'): SorobanResources; + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): SorobanResourcesExtV0; static validateXDR(input: Buffer, format?: 'raw'): boolean; @@ -8258,12 +8187,12 @@ export namespace xdr { class SorobanTransactionData { constructor(attributes: { - ext: ExtensionPoint; + ext: SorobanTransactionDataExt; resources: SorobanResources; resourceFee: Int64; }); - ext(value?: ExtensionPoint): ExtensionPoint; + ext(value?: SorobanTransactionDataExt): SorobanTransactionDataExt; resources(value?: SorobanResources): SorobanResources; @@ -9310,6 +9239,37 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } + class MuxedEd25519Account { + constructor(attributes: { id: Uint64; ed25519: Buffer }); + + id(value?: Uint64): Uint64; + + ed25519(value?: Buffer): Buffer; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): MuxedEd25519Account; + + static write(value: MuxedEd25519Account, io: Buffer): void; + + static isValid(value: MuxedEd25519Account): boolean; + + static toXDR(value: MuxedEd25519Account): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): MuxedEd25519Account; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): MuxedEd25519Account; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + class ScNonceKey { constructor(attributes: { nonce: Int64 }); @@ -10038,15 +9998,95 @@ export namespace xdr { static read(io: Buffer): ScSpecFunctionV0; - static write(value: ScSpecFunctionV0, io: Buffer): void; + static write(value: ScSpecFunctionV0, io: Buffer): void; + + static isValid(value: ScSpecFunctionV0): boolean; + + static toXDR(value: ScSpecFunctionV0): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): ScSpecFunctionV0; + + static fromXDR(input: string, format: 'hex' | 'base64'): ScSpecFunctionV0; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class ScSpecEventParamV0 { + constructor(attributes: { + doc: string | Buffer; + name: string | Buffer; + type: ScSpecTypeDef; + location: ScSpecEventParamLocationV0; + }); + + doc(value?: string | Buffer): string | Buffer; + + name(value?: string | Buffer): string | Buffer; + + type(value?: ScSpecTypeDef): ScSpecTypeDef; + + location(value?: ScSpecEventParamLocationV0): ScSpecEventParamLocationV0; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): ScSpecEventParamV0; + + static write(value: ScSpecEventParamV0, io: Buffer): void; + + static isValid(value: ScSpecEventParamV0): boolean; + + static toXDR(value: ScSpecEventParamV0): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): ScSpecEventParamV0; + + static fromXDR(input: string, format: 'hex' | 'base64'): ScSpecEventParamV0; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class ScSpecEventV0 { + constructor(attributes: { + doc: string | Buffer; + lib: string | Buffer; + name: string | Buffer; + prefixTopics: Array; + params: ScSpecEventParamV0[]; + dataFormat: ScSpecEventDataFormat; + }); + + doc(value?: string | Buffer): string | Buffer; + + lib(value?: string | Buffer): string | Buffer; + + name(value?: string | Buffer): string | Buffer; + + prefixTopics(value?: Array): Array; + + params(value?: ScSpecEventParamV0[]): ScSpecEventParamV0[]; + + dataFormat(value?: ScSpecEventDataFormat): ScSpecEventDataFormat; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): ScSpecEventV0; + + static write(value: ScSpecEventV0, io: Buffer): void; - static isValid(value: ScSpecFunctionV0): boolean; + static isValid(value: ScSpecEventV0): boolean; - static toXDR(value: ScSpecFunctionV0): Buffer; + static toXDR(value: ScSpecEventV0): Buffer; - static fromXDR(input: Buffer, format?: 'raw'): ScSpecFunctionV0; + static fromXDR(input: Buffer, format?: 'raw'): ScSpecEventV0; - static fromXDR(input: string, format: 'hex' | 'base64'): ScSpecFunctionV0; + static fromXDR(input: string, format: 'hex' | 'base64'): ScSpecEventV0; static validateXDR(input: Buffer, format?: 'raw'): boolean; @@ -10131,54 +10171,89 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } + class ConfigSettingContractParallelComputeV0 { + constructor(attributes: { ledgerMaxDependentTxClusters: number }); + + ledgerMaxDependentTxClusters(value?: number): number; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): ConfigSettingContractParallelComputeV0; + + static write( + value: ConfigSettingContractParallelComputeV0, + io: Buffer, + ): void; + + static isValid(value: ConfigSettingContractParallelComputeV0): boolean; + + static toXDR(value: ConfigSettingContractParallelComputeV0): Buffer; + + static fromXDR( + input: Buffer, + format?: 'raw', + ): ConfigSettingContractParallelComputeV0; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): ConfigSettingContractParallelComputeV0; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + class ConfigSettingContractLedgerCostV0 { constructor(attributes: { - ledgerMaxReadLedgerEntries: number; - ledgerMaxReadBytes: number; + ledgerMaxDiskReadEntries: number; + ledgerMaxDiskReadBytes: number; ledgerMaxWriteLedgerEntries: number; ledgerMaxWriteBytes: number; - txMaxReadLedgerEntries: number; - txMaxReadBytes: number; + txMaxDiskReadEntries: number; + txMaxDiskReadBytes: number; txMaxWriteLedgerEntries: number; txMaxWriteBytes: number; - feeReadLedgerEntry: Int64; + feeDiskReadLedgerEntry: Int64; feeWriteLedgerEntry: Int64; - feeRead1Kb: Int64; - bucketListTargetSizeBytes: Int64; - writeFee1KbBucketListLow: Int64; - writeFee1KbBucketListHigh: Int64; - bucketListWriteFeeGrowthFactor: number; + feeDiskRead1Kb: Int64; + sorobanStateTargetSizeBytes: Int64; + rentFee1KbSorobanStateSizeLow: Int64; + rentFee1KbSorobanStateSizeHigh: Int64; + sorobanStateRentFeeGrowthFactor: number; }); - ledgerMaxReadLedgerEntries(value?: number): number; + ledgerMaxDiskReadEntries(value?: number): number; - ledgerMaxReadBytes(value?: number): number; + ledgerMaxDiskReadBytes(value?: number): number; ledgerMaxWriteLedgerEntries(value?: number): number; ledgerMaxWriteBytes(value?: number): number; - txMaxReadLedgerEntries(value?: number): number; + txMaxDiskReadEntries(value?: number): number; - txMaxReadBytes(value?: number): number; + txMaxDiskReadBytes(value?: number): number; txMaxWriteLedgerEntries(value?: number): number; txMaxWriteBytes(value?: number): number; - feeReadLedgerEntry(value?: Int64): Int64; + feeDiskReadLedgerEntry(value?: Int64): Int64; feeWriteLedgerEntry(value?: Int64): Int64; - feeRead1Kb(value?: Int64): Int64; + feeDiskRead1Kb(value?: Int64): Int64; - bucketListTargetSizeBytes(value?: Int64): Int64; + sorobanStateTargetSizeBytes(value?: Int64): Int64; - writeFee1KbBucketListLow(value?: Int64): Int64; + rentFee1KbSorobanStateSizeLow(value?: Int64): Int64; - writeFee1KbBucketListHigh(value?: Int64): Int64; + rentFee1KbSorobanStateSizeHigh(value?: Int64): Int64; - bucketListWriteFeeGrowthFactor(value?: number): number; + sorobanStateRentFeeGrowthFactor(value?: number): number; toXDR(format?: 'raw'): Buffer; @@ -10207,6 +10282,43 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } + class ConfigSettingContractLedgerCostExtV0 { + constructor(attributes: { + txMaxFootprintEntries: number; + feeWrite1Kb: Int64; + }); + + txMaxFootprintEntries(value?: number): number; + + feeWrite1Kb(value?: Int64): Int64; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): ConfigSettingContractLedgerCostExtV0; + + static write(value: ConfigSettingContractLedgerCostExtV0, io: Buffer): void; + + static isValid(value: ConfigSettingContractLedgerCostExtV0): boolean; + + static toXDR(value: ConfigSettingContractLedgerCostExtV0): Buffer; + + static fromXDR( + input: Buffer, + format?: 'raw', + ): ConfigSettingContractLedgerCostExtV0; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): ConfigSettingContractLedgerCostExtV0; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + class ConfigSettingContractHistoricalDataV0 { constructor(attributes: { feeHistorical1Kb: Int64 }); @@ -10364,8 +10476,8 @@ export namespace xdr { persistentRentRateDenominator: Int64; tempRentRateDenominator: Int64; maxEntriesToArchive: number; - bucketListSizeWindowSampleSize: number; - bucketListWindowSamplePeriod: number; + liveSorobanStateSizeWindowSampleSize: number; + liveSorobanStateSizeWindowSamplePeriod: number; evictionScanSize: number; startingEvictionScanLevel: number; }); @@ -10382,9 +10494,9 @@ export namespace xdr { maxEntriesToArchive(value?: number): number; - bucketListSizeWindowSampleSize(value?: number): number; + liveSorobanStateSizeWindowSampleSize(value?: number): number; - bucketListWindowSamplePeriod(value?: number): number; + liveSorobanStateSizeWindowSamplePeriod(value?: number): number; evictionScanSize(value?: number): number; @@ -10448,6 +10560,86 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } + class ConfigSettingScpTiming { + constructor(attributes: { + ledgerTargetCloseTimeMilliseconds: number; + nominationTimeoutInitialMilliseconds: number; + nominationTimeoutIncrementMilliseconds: number; + ballotTimeoutInitialMilliseconds: number; + ballotTimeoutIncrementMilliseconds: number; + }); + + ledgerTargetCloseTimeMilliseconds(value?: number): number; + + nominationTimeoutInitialMilliseconds(value?: number): number; + + nominationTimeoutIncrementMilliseconds(value?: number): number; + + ballotTimeoutInitialMilliseconds(value?: number): number; + + ballotTimeoutIncrementMilliseconds(value?: number): number; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): ConfigSettingScpTiming; + + static write(value: ConfigSettingScpTiming, io: Buffer): void; + + static isValid(value: ConfigSettingScpTiming): boolean; + + static toXDR(value: ConfigSettingScpTiming): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): ConfigSettingScpTiming; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): ConfigSettingScpTiming; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class LedgerCloseMetaBatch { + constructor(attributes: { + startSequence: number; + endSequence: number; + ledgerCloseMeta: LedgerCloseMeta[]; + }); + + startSequence(value?: number): number; + + endSequence(value?: number): number; + + ledgerCloseMeta(value?: LedgerCloseMeta[]): LedgerCloseMeta[]; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): LedgerCloseMetaBatch; + + static write(value: LedgerCloseMetaBatch, io: Buffer): void; + + static isValid(value: LedgerCloseMetaBatch): boolean; + + static toXDR(value: LedgerCloseMetaBatch): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): LedgerCloseMetaBatch; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): LedgerCloseMetaBatch; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + class ScpStatementPledges { switch(): ScpStatementType; @@ -10950,36 +11142,6 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class ClaimableBalanceId { - switch(): ClaimableBalanceIdType; - - v0(value?: Buffer): Buffer; - - static claimableBalanceIdTypeV0(value: Buffer): ClaimableBalanceId; - - value(): Buffer; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ClaimableBalanceId; - - static write(value: ClaimableBalanceId, io: Buffer): void; - - static isValid(value: ClaimableBalanceId): boolean; - - static toXDR(value: ClaimableBalanceId): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ClaimableBalanceId; - - static fromXDR(input: string, format: 'hex' | 'base64'): ClaimableBalanceId; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - class ClaimableBalanceEntryExtensionV1Ext { switch(): number; @@ -11425,8 +11587,6 @@ export namespace xdr { static hotArchiveLive(value: LedgerKey): HotArchiveBucketEntry; - static hotArchiveDeleted(value: LedgerKey): HotArchiveBucketEntry; - static hotArchiveMetaentry(value: BucketMetadata): HotArchiveBucketEntry; value(): LedgerEntry | LedgerKey | BucketMetadata; @@ -11455,66 +11615,6 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class ColdArchiveBucketEntry { - switch(): ColdArchiveBucketEntryType; - - metaEntry(value?: BucketMetadata): BucketMetadata; - - archivedLeaf(value?: ColdArchiveArchivedLeaf): ColdArchiveArchivedLeaf; - - deletedLeaf(value?: ColdArchiveDeletedLeaf): ColdArchiveDeletedLeaf; - - boundaryLeaf(value?: ColdArchiveBoundaryLeaf): ColdArchiveBoundaryLeaf; - - hashEntry(value?: ColdArchiveHashEntry): ColdArchiveHashEntry; - - static coldArchiveMetaentry(value: BucketMetadata): ColdArchiveBucketEntry; - - static coldArchiveArchivedLeaf( - value: ColdArchiveArchivedLeaf, - ): ColdArchiveBucketEntry; - - static coldArchiveDeletedLeaf( - value: ColdArchiveDeletedLeaf, - ): ColdArchiveBucketEntry; - - static coldArchiveBoundaryLeaf( - value: ColdArchiveBoundaryLeaf, - ): ColdArchiveBucketEntry; - - static coldArchiveHash(value: ColdArchiveHashEntry): ColdArchiveBucketEntry; - - value(): - | BucketMetadata - | ColdArchiveArchivedLeaf - | ColdArchiveDeletedLeaf - | ColdArchiveBoundaryLeaf - | ColdArchiveHashEntry; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ColdArchiveBucketEntry; - - static write(value: ColdArchiveBucketEntry, io: Buffer): void; - - static isValid(value: ColdArchiveBucketEntry): boolean; - - static toXDR(value: ColdArchiveBucketEntry): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ColdArchiveBucketEntry; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): ColdArchiveBucketEntry; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - class StellarValueExt { switch(): StellarValueType; @@ -11714,9 +11814,13 @@ export namespace xdr { v0Components(value?: TxSetComponent[]): TxSetComponent[]; + parallelTxsComponent(value?: ParallelTxsComponent): ParallelTxsComponent; + static 0(value: TxSetComponent[]): TransactionPhase; - value(): TxSetComponent[]; + static 1(value: ParallelTxsComponent): TransactionPhase; + + value(): TxSetComponent[] | ParallelTxsComponent; toXDR(format?: 'raw'): Buffer; @@ -11915,6 +12019,8 @@ export namespace xdr { state(value?: LedgerEntry): LedgerEntry; + restored(value?: LedgerEntry): LedgerEntry; + static ledgerEntryCreated(value: LedgerEntry): LedgerEntryChange; static ledgerEntryUpdated(value: LedgerEntry): LedgerEntryChange; @@ -11923,7 +12029,9 @@ export namespace xdr { static ledgerEntryState(value: LedgerEntry): LedgerEntryChange; - value(): LedgerEntry | LedgerEntry | LedgerKey | LedgerEntry; + static ledgerEntryRestored(value: LedgerEntry): LedgerEntryChange; + + value(): LedgerEntry | LedgerEntry | LedgerKey | LedgerEntry | LedgerEntry; toXDR(format?: 'raw'): Buffer; @@ -12022,6 +12130,8 @@ export namespace xdr { v3(value?: TransactionMetaV3): TransactionMetaV3; + v4(value?: TransactionMetaV4): TransactionMetaV4; + static 0(value: OperationMeta[]): TransactionMeta; static 1(value: TransactionMetaV1): TransactionMeta; @@ -12030,11 +12140,14 @@ export namespace xdr { static 3(value: TransactionMetaV3): TransactionMeta; + static 4(value: TransactionMetaV4): TransactionMeta; + value(): | OperationMeta[] | TransactionMetaV1 | TransactionMetaV2 - | TransactionMetaV3; + | TransactionMetaV3 + | TransactionMetaV4; toXDR(format?: 'raw'): Buffer; @@ -12096,11 +12209,15 @@ export namespace xdr { v1(value?: LedgerCloseMetaV1): LedgerCloseMetaV1; + v2(value?: LedgerCloseMetaV2): LedgerCloseMetaV2; + static 0(value: LedgerCloseMetaV0): LedgerCloseMeta; static 1(value: LedgerCloseMetaV1): LedgerCloseMeta; - value(): LedgerCloseMetaV0 | LedgerCloseMetaV1; + static 2(value: LedgerCloseMetaV2): LedgerCloseMeta; + + value(): LedgerCloseMetaV0 | LedgerCloseMetaV1 | LedgerCloseMetaV2; toXDR(format?: 'raw'): Buffer; @@ -12160,34 +12277,15 @@ export namespace xdr { class SurveyResponseBody { switch(): SurveyMessageResponseType; - topologyResponseBodyV0( - value?: TopologyResponseBodyV0, - ): TopologyResponseBodyV0; - - topologyResponseBodyV1( - value?: TopologyResponseBodyV1, - ): TopologyResponseBodyV1; - topologyResponseBodyV2( value?: TopologyResponseBodyV2, ): TopologyResponseBodyV2; - static surveyTopologyResponseV0( - value: TopologyResponseBodyV0, - ): SurveyResponseBody; - - static surveyTopologyResponseV1( - value: TopologyResponseBodyV1, - ): SurveyResponseBody; - static surveyTopologyResponseV2( value: TopologyResponseBodyV2, ): SurveyResponseBody; - value(): - | TopologyResponseBodyV0 - | TopologyResponseBodyV1 - | TopologyResponseBodyV2; + value(): TopologyResponseBodyV2; toXDR(format?: 'raw'): Buffer; @@ -12233,14 +12331,6 @@ export namespace xdr { transaction(value?: TransactionEnvelope): TransactionEnvelope; - signedSurveyRequestMessage( - value?: SignedSurveyRequestMessage, - ): SignedSurveyRequestMessage; - - signedSurveyResponseMessage( - value?: SignedSurveyResponseMessage, - ): SignedSurveyResponseMessage; - signedTimeSlicedSurveyRequestMessage( value?: SignedTimeSlicedSurveyRequestMessage, ): SignedTimeSlicedSurveyRequestMessage; @@ -12281,8 +12371,6 @@ export namespace xdr { static dontHave(value: DontHave): StellarMessage; - static getPeers(): StellarMessage; - static peers(value: PeerAddress[]): StellarMessage; static getTxSet(value: Buffer): StellarMessage; @@ -12293,10 +12381,6 @@ export namespace xdr { static transaction(value: TransactionEnvelope): StellarMessage; - static surveyRequest(value: SignedSurveyRequestMessage): StellarMessage; - - static surveyResponse(value: SignedSurveyResponseMessage): StellarMessage; - static timeSlicedSurveyRequest( value: SignedTimeSlicedSurveyRequestMessage, ): StellarMessage; @@ -12339,8 +12423,6 @@ export namespace xdr { | TransactionSet | GeneralizedTransactionSet | TransactionEnvelope - | SignedSurveyRequestMessage - | SignedSurveyResponseMessage | SignedTimeSlicedSurveyRequestMessage | SignedTimeSlicedSurveyResponseMessage | SignedTimeSlicedSurveyStartCollectingMessage @@ -12352,8 +12434,7 @@ export namespace xdr { | SendMore | SendMoreExtended | FloodAdvert - | FloodDemand - | void; + | FloodDemand; toXDR(format?: 'raw'): Buffer; @@ -13048,34 +13129,35 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class ArchivalProofBody { - switch(): ArchivalProofType; - - nonexistenceProof(value?: NonexistenceProofBody): NonexistenceProofBody; + class SorobanTransactionDataExt { + switch(): number; - existenceProof(value?: ExistenceProofBody): ExistenceProofBody; + resourceExt(value?: SorobanResourcesExtV0): SorobanResourcesExtV0; - static existence(value: NonexistenceProofBody): ArchivalProofBody; + static 0(): SorobanTransactionDataExt; - static nonexistence(value: ExistenceProofBody): ArchivalProofBody; + static 1(value: SorobanResourcesExtV0): SorobanTransactionDataExt; - value(): NonexistenceProofBody | ExistenceProofBody; + value(): SorobanResourcesExtV0 | void; toXDR(format?: 'raw'): Buffer; toXDR(format: 'hex' | 'base64'): string; - static read(io: Buffer): ArchivalProofBody; + static read(io: Buffer): SorobanTransactionDataExt; - static write(value: ArchivalProofBody, io: Buffer): void; + static write(value: SorobanTransactionDataExt, io: Buffer): void; - static isValid(value: ArchivalProofBody): boolean; + static isValid(value: SorobanTransactionDataExt): boolean; - static toXDR(value: ArchivalProofBody): Buffer; + static toXDR(value: SorobanTransactionDataExt): Buffer; - static fromXDR(input: Buffer, format?: 'raw'): ArchivalProofBody; + static fromXDR(input: Buffer, format?: 'raw'): SorobanTransactionDataExt; - static fromXDR(input: string, format: 'hex' | 'base64'): ArchivalProofBody; + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): SorobanTransactionDataExt; static validateXDR(input: Buffer, format?: 'raw'): boolean; @@ -15079,6 +15161,36 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } + class ClaimableBalanceId { + switch(): ClaimableBalanceIdType; + + v0(value?: Buffer): Buffer; + + static claimableBalanceIdTypeV0(value: Buffer): ClaimableBalanceId; + + value(): Buffer; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): ClaimableBalanceId; + + static write(value: ClaimableBalanceId, io: Buffer): void; + + static isValid(value: ClaimableBalanceId): boolean; + + static toXDR(value: ClaimableBalanceId): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): ClaimableBalanceId; + + static fromXDR(input: string, format: 'hex' | 'base64'): ClaimableBalanceId; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + class ScError { switch(): ScErrorType; @@ -15166,13 +15278,30 @@ export namespace xdr { accountId(value?: AccountId): AccountId; - contractId(value?: Buffer): Buffer; + contractId(value?: ContractId): ContractId; + + muxedAccount(value?: MuxedEd25519Account): MuxedEd25519Account; + + claimableBalanceId(value?: ClaimableBalanceId): ClaimableBalanceId; + + liquidityPoolId(value?: PoolId): PoolId; static scAddressTypeAccount(value: AccountId): ScAddress; - static scAddressTypeContract(value: Buffer): ScAddress; + static scAddressTypeContract(value: ContractId): ScAddress; + + static scAddressTypeMuxedAccount(value: MuxedEd25519Account): ScAddress; + + static scAddressTypeClaimableBalance(value: ClaimableBalanceId): ScAddress; - value(): AccountId | Buffer; + static scAddressTypeLiquidityPool(value: PoolId): ScAddress; + + value(): + | AccountId + | ContractId + | MuxedEd25519Account + | ClaimableBalanceId + | PoolId; toXDR(format?: 'raw'): Buffer; @@ -15234,10 +15363,10 @@ export namespace xdr { address(value?: ScAddress): ScAddress; - nonceKey(value?: ScNonceKey): ScNonceKey; - instance(value?: ScContractInstance): ScContractInstance; + nonceKey(value?: ScNonceKey): ScNonceKey; + static scvBool(value: boolean): ScVal; static scvVoid(): ScVal; @@ -15276,12 +15405,12 @@ export namespace xdr { static scvAddress(value: ScAddress): ScVal; + static scvContractInstance(value: ScContractInstance): ScVal; + static scvLedgerKeyContractInstance(): ScVal; static scvLedgerKeyNonce(value: ScNonceKey): ScVal; - static scvContractInstance(value: ScContractInstance): ScVal; - value(): | boolean | ScError @@ -15305,8 +15434,8 @@ export namespace xdr { | null | ScMapEntry[] | ScAddress - | ScNonceKey | ScContractInstance + | ScNonceKey | void; toXDR(format?: 'raw'): Buffer; @@ -15447,6 +15576,8 @@ export namespace xdr { static scSpecTypeAddress(): ScSpecTypeDef; + static scSpecTypeMuxedAddress(): ScSpecTypeDef; + static scSpecTypeOption(value: ScSpecTypeOption): ScSpecTypeDef; static scSpecTypeResult(value: ScSpecTypeResult): ScSpecTypeDef; @@ -15546,6 +15677,8 @@ export namespace xdr { udtErrorEnumV0(value?: ScSpecUdtErrorEnumV0): ScSpecUdtErrorEnumV0; + eventV0(value?: ScSpecEventV0): ScSpecEventV0; + static scSpecEntryFunctionV0(value: ScSpecFunctionV0): ScSpecEntry; static scSpecEntryUdtStructV0(value: ScSpecUdtStructV0): ScSpecEntry; @@ -15556,12 +15689,15 @@ export namespace xdr { static scSpecEntryUdtErrorEnumV0(value: ScSpecUdtErrorEnumV0): ScSpecEntry; + static scSpecEntryEventV0(value: ScSpecEventV0): ScSpecEntry; + value(): | ScSpecFunctionV0 | ScSpecUdtStructV0 | ScSpecUdtUnionV0 | ScSpecUdtEnumV0 - | ScSpecUdtErrorEnumV0; + | ScSpecUdtErrorEnumV0 + | ScSpecEventV0; toXDR(format?: 'raw'): Buffer; @@ -15627,10 +15763,20 @@ export namespace xdr { value?: ConfigSettingContractExecutionLanesV0, ): ConfigSettingContractExecutionLanesV0; - bucketListSizeWindow(value?: Uint64[]): Uint64[]; + liveSorobanStateSizeWindow(value?: Uint64[]): Uint64[]; evictionIterator(value?: EvictionIterator): EvictionIterator; + contractParallelCompute( + value?: ConfigSettingContractParallelComputeV0, + ): ConfigSettingContractParallelComputeV0; + + contractLedgerCostExt( + value?: ConfigSettingContractLedgerCostExtV0, + ): ConfigSettingContractLedgerCostExtV0; + + contractScpTiming(value?: ConfigSettingScpTiming): ConfigSettingScpTiming; + static configSettingContractMaxSizeBytes(value: number): ConfigSettingEntry; static configSettingContractComputeV0( @@ -15677,7 +15823,7 @@ export namespace xdr { value: ConfigSettingContractExecutionLanesV0, ): ConfigSettingEntry; - static configSettingBucketlistSizeWindow( + static configSettingLiveSorobanStateSizeWindow( value: Uint64[], ): ConfigSettingEntry; @@ -15685,6 +15831,18 @@ export namespace xdr { value: EvictionIterator, ): ConfigSettingEntry; + static configSettingContractParallelComputeV0( + value: ConfigSettingContractParallelComputeV0, + ): ConfigSettingEntry; + + static configSettingContractLedgerCostExtV0( + value: ConfigSettingContractLedgerCostExtV0, + ): ConfigSettingEntry; + + static configSettingScpTiming( + value: ConfigSettingScpTiming, + ): ConfigSettingEntry; + value(): | number | ConfigSettingContractComputeV0 @@ -15699,7 +15857,10 @@ export namespace xdr { | StateArchivalSettings | ConfigSettingContractExecutionLanesV0 | Uint64[] - | EvictionIterator; + | EvictionIterator + | ConfigSettingContractParallelComputeV0 + | ConfigSettingContractLedgerCostExtV0 + | ConfigSettingScpTiming; toXDR(format?: 'raw'): Buffer; diff --git a/types/index.d.ts b/types/index.d.ts index 5ebc58724..b8b6ffafc 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -989,6 +989,14 @@ export namespace StrKey { function encodeContract(data: Buffer): string; function decodeContract(address: string): Buffer; function isValidContract(address: string): boolean; + + function encodeClaimableBalance(data: Buffer): string; + function decodeClaimableBalance(address: string): Buffer; + function isValidClaimableBalance(address: string): boolean; + + function encodeLiquidityPool(data: Buffer): string; + function decodeLiquidityPool(address: string): Buffer; + function isValidLiquidityPool(address: string): boolean; } export namespace SignerKey { @@ -1190,7 +1198,7 @@ export class SorobanDataBuilder { setResourceFee(fee: IntLike): SorobanDataBuilder; setResources( cpuInstrs: number, - readBytes: number, + diskReadBytes: number, writeBytes: number ): SorobanDataBuilder; diff --git a/types/next.d.ts b/types/next.d.ts index ced3636f1..2e87eed38 100644 --- a/types/next.d.ts +++ b/types/next.d.ts @@ -44,6 +44,16 @@ export namespace xdr { type Hash = Opaque[]; // workaround, cause unknown + /** + * Returns an {@link ScVal} with a map type and sorted entries. + * + * @param items the key-value pairs to sort. + * + * @warning This only performs 'best-effort' sorting, working best when the + * keys are all either numeric or string-like. + */ + function scvSortedMap(items: ScMapEntry[]): ScVal; + interface SignedInt { readonly MAX_VALUE: 2147483647; readonly MIN_VALUE: -2147483648; @@ -89,7 +99,7 @@ export namespace xdr { unsigned: boolean; constructor( - values: string | bigint | number | (string | bigint | number)[], + values: string | bigint | number | Array, ); toXDR(format?: 'raw'): Buffer; @@ -133,7 +143,7 @@ export namespace xdr { unsigned: boolean; constructor( - values: string | bigint | number | (string | bigint | number)[], + values: string | bigint | number | Array, ); toXDR(format?: 'raw'): Buffer; @@ -426,14 +436,6 @@ export namespace xdr { static claimantTypeV0(): ClaimantType; } - class ClaimableBalanceIdType { - readonly name: 'claimableBalanceIdTypeV0'; - - readonly value: 0; - - static claimableBalanceIdTypeV0(): ClaimableBalanceIdType; - } - class ClaimableBalanceFlags { readonly name: 'claimableBalanceClawbackEnabledFlag'; @@ -489,15 +491,13 @@ export namespace xdr { } class BucketListType { - readonly name: 'live' | 'hotArchive' | 'coldArchive'; + readonly name: 'live' | 'hotArchive'; - readonly value: 0 | 1 | 2; + readonly value: 0 | 1; static live(): BucketListType; static hotArchive(): BucketListType; - - static coldArchive(): BucketListType; } class BucketEntryType { @@ -518,39 +518,15 @@ export namespace xdr { readonly name: | 'hotArchiveMetaentry' | 'hotArchiveArchived' - | 'hotArchiveLive' - | 'hotArchiveDeleted'; + | 'hotArchiveLive'; - readonly value: -1 | 0 | 1 | 2; + readonly value: -1 | 0 | 1; static hotArchiveMetaentry(): HotArchiveBucketEntryType; static hotArchiveArchived(): HotArchiveBucketEntryType; static hotArchiveLive(): HotArchiveBucketEntryType; - - static hotArchiveDeleted(): HotArchiveBucketEntryType; - } - - class ColdArchiveBucketEntryType { - readonly name: - | 'coldArchiveMetaentry' - | 'coldArchiveArchivedLeaf' - | 'coldArchiveDeletedLeaf' - | 'coldArchiveBoundaryLeaf' - | 'coldArchiveHash'; - - readonly value: -1 | 0 | 1 | 2 | 3; - - static coldArchiveMetaentry(): ColdArchiveBucketEntryType; - - static coldArchiveArchivedLeaf(): ColdArchiveBucketEntryType; - - static coldArchiveDeletedLeaf(): ColdArchiveBucketEntryType; - - static coldArchiveBoundaryLeaf(): ColdArchiveBucketEntryType; - - static coldArchiveHash(): ColdArchiveBucketEntryType; } class StellarValueType { @@ -618,9 +594,10 @@ export namespace xdr { | 'ledgerEntryCreated' | 'ledgerEntryUpdated' | 'ledgerEntryRemoved' - | 'ledgerEntryState'; + | 'ledgerEntryState' + | 'ledgerEntryRestored'; - readonly value: 0 | 1 | 2 | 3; + readonly value: 0 | 1 | 2 | 3 | 4; static ledgerEntryCreated(): LedgerEntryChangeType; @@ -629,6 +606,8 @@ export namespace xdr { static ledgerEntryRemoved(): LedgerEntryChangeType; static ledgerEntryState(): LedgerEntryChangeType; + + static ledgerEntryRestored(): LedgerEntryChangeType; } class ContractEventType { @@ -643,6 +622,21 @@ export namespace xdr { static diagnostic(): ContractEventType; } + class TransactionEventStage { + readonly name: + | 'transactionEventStageBeforeAllTxes' + | 'transactionEventStageAfterTx' + | 'transactionEventStageAfterAllTxes'; + + readonly value: 0 | 1 | 2; + + static transactionEventStageBeforeAllTxes(): TransactionEventStage; + + static transactionEventStageAfterTx(): TransactionEventStage; + + static transactionEventStageAfterAllTxes(): TransactionEventStage; + } + class ErrorCode { readonly name: 'errMisc' | 'errData' | 'errConf' | 'errAuth' | 'errLoad'; @@ -674,7 +668,6 @@ export namespace xdr { | 'errorMsg' | 'auth' | 'dontHave' - | 'getPeers' | 'peers' | 'getTxSet' | 'txSet' @@ -685,8 +678,6 @@ export namespace xdr { | 'scpMessage' | 'getScpState' | 'hello' - | 'surveyRequest' - | 'surveyResponse' | 'sendMore' | 'sendMoreExtended' | 'floodAdvert' @@ -700,7 +691,6 @@ export namespace xdr { | 0 | 2 | 3 - | 4 | 5 | 6 | 7 @@ -711,8 +701,6 @@ export namespace xdr { | 11 | 12 | 13 - | 14 - | 15 | 16 | 20 | 18 @@ -728,8 +716,6 @@ export namespace xdr { static dontHave(): MessageType; - static getPeers(): MessageType; - static peers(): MessageType; static getTxSet(): MessageType; @@ -750,10 +736,6 @@ export namespace xdr { static hello(): MessageType; - static surveyRequest(): MessageType; - - static surveyResponse(): MessageType; - static sendMore(): MessageType; static sendMoreExtended(): MessageType; @@ -772,26 +754,17 @@ export namespace xdr { } class SurveyMessageCommandType { - readonly name: 'surveyTopology' | 'timeSlicedSurveyTopology'; + readonly name: 'timeSlicedSurveyTopology'; - readonly value: 0 | 1; - - static surveyTopology(): SurveyMessageCommandType; + readonly value: 1; static timeSlicedSurveyTopology(): SurveyMessageCommandType; } class SurveyMessageResponseType { - readonly name: - | 'surveyTopologyResponseV0' - | 'surveyTopologyResponseV1' - | 'surveyTopologyResponseV2'; + readonly name: 'surveyTopologyResponseV2'; - readonly value: 0 | 1 | 2; - - static surveyTopologyResponseV0(): SurveyMessageResponseType; - - static surveyTopologyResponseV1(): SurveyMessageResponseType; + readonly value: 2; static surveyTopologyResponseV2(): SurveyMessageResponseType; } @@ -1010,16 +983,6 @@ export namespace xdr { static precondV2(): PreconditionType; } - class ArchivalProofType { - readonly name: 'existence' | 'nonexistence'; - - readonly value: 0 | 1; - - static existence(): ArchivalProofType; - - static nonexistence(): ArchivalProofType; - } - class ClaimAtomType { readonly name: | 'claimAtomTypeV0' @@ -1959,6 +1922,14 @@ export namespace xdr { static binaryFuseFilter32Bit(): BinaryFuseFilterType; } + class ClaimableBalanceIdType { + readonly name: 'claimableBalanceIdTypeV0'; + + readonly value: 0; + + static claimableBalanceIdTypeV0(): ClaimableBalanceIdType; + } + class ScValType { readonly name: | 'scvBool' @@ -2136,13 +2107,24 @@ export namespace xdr { } class ScAddressType { - readonly name: 'scAddressTypeAccount' | 'scAddressTypeContract'; + readonly name: + | 'scAddressTypeAccount' + | 'scAddressTypeContract' + | 'scAddressTypeMuxedAccount' + | 'scAddressTypeClaimableBalance' + | 'scAddressTypeLiquidityPool'; - readonly value: 0 | 1; + readonly value: 0 | 1 | 2 | 3 | 4; static scAddressTypeAccount(): ScAddressType; static scAddressTypeContract(): ScAddressType; + + static scAddressTypeMuxedAccount(): ScAddressType; + + static scAddressTypeClaimableBalance(): ScAddressType; + + static scAddressTypeLiquidityPool(): ScAddressType; } class ScEnvMetaKind { @@ -2181,6 +2163,7 @@ export namespace xdr { | 'scSpecTypeString' | 'scSpecTypeSymbol' | 'scSpecTypeAddress' + | 'scSpecTypeMuxedAddress' | 'scSpecTypeOption' | 'scSpecTypeResult' | 'scSpecTypeVec' @@ -2208,6 +2191,7 @@ export namespace xdr { | 16 | 17 | 19 + | 20 | 1000 | 1001 | 1002 @@ -2252,6 +2236,8 @@ export namespace xdr { static scSpecTypeAddress(): ScSpecType; + static scSpecTypeMuxedAddress(): ScSpecType; + static scSpecTypeOption(): ScSpecType; static scSpecTypeResult(): ScSpecType; @@ -2277,15 +2263,43 @@ export namespace xdr { static scSpecUdtUnionCaseTupleV0(): ScSpecUdtUnionCaseV0Kind; } + class ScSpecEventParamLocationV0 { + readonly name: + | 'scSpecEventParamLocationData' + | 'scSpecEventParamLocationTopicList'; + + readonly value: 0 | 1; + + static scSpecEventParamLocationData(): ScSpecEventParamLocationV0; + + static scSpecEventParamLocationTopicList(): ScSpecEventParamLocationV0; + } + + class ScSpecEventDataFormat { + readonly name: + | 'scSpecEventDataFormatSingleValue' + | 'scSpecEventDataFormatVec' + | 'scSpecEventDataFormatMap'; + + readonly value: 0 | 1 | 2; + + static scSpecEventDataFormatSingleValue(): ScSpecEventDataFormat; + + static scSpecEventDataFormatVec(): ScSpecEventDataFormat; + + static scSpecEventDataFormatMap(): ScSpecEventDataFormat; + } + class ScSpecEntryKind { readonly name: | 'scSpecEntryFunctionV0' | 'scSpecEntryUdtStructV0' | 'scSpecEntryUdtUnionV0' | 'scSpecEntryUdtEnumV0' - | 'scSpecEntryUdtErrorEnumV0'; + | 'scSpecEntryUdtErrorEnumV0' + | 'scSpecEntryEventV0'; - readonly value: 0 | 1 | 2 | 3 | 4; + readonly value: 0 | 1 | 2 | 3 | 4 | 5; static scSpecEntryFunctionV0(): ScSpecEntryKind; @@ -2296,6 +2310,8 @@ export namespace xdr { static scSpecEntryUdtEnumV0(): ScSpecEntryKind; static scSpecEntryUdtErrorEnumV0(): ScSpecEntryKind; + + static scSpecEntryEventV0(): ScSpecEntryKind; } class ContractCostType { @@ -2598,9 +2614,11 @@ export namespace xdr { | 'configSettingContractDataEntrySizeBytes' | 'configSettingStateArchival' | 'configSettingContractExecutionLanes' - | 'configSettingBucketlistSizeWindow' + | 'configSettingLiveSorobanStateSizeWindow' | 'configSettingEvictionIterator' - | 'configSettingContractParallelComputeV0'; + | 'configSettingContractParallelComputeV0' + | 'configSettingContractLedgerCostExtV0' + | 'configSettingScpTiming'; readonly value: | 0 @@ -2617,7 +2635,9 @@ export namespace xdr { | 11 | 12 | 13 - | 14; + | 14 + | 15 + | 16; static configSettingContractMaxSizeBytes(): ConfigSettingId; @@ -2643,11 +2663,15 @@ export namespace xdr { static configSettingContractExecutionLanes(): ConfigSettingId; - static configSettingBucketlistSizeWindow(): ConfigSettingId; + static configSettingLiveSorobanStateSizeWindow(): ConfigSettingId; static configSettingEvictionIterator(): ConfigSettingId; static configSettingContractParallelComputeV0(): ConfigSettingId; + + static configSettingContractLedgerCostExtV0(): ConfigSettingId; + + static configSettingScpTiming(): ConfigSettingId; } const Value: VarOpaque; @@ -2662,8 +2686,6 @@ export namespace xdr { const DataValue: VarOpaque; - type PoolId = Hash; - const AssetCode4: Opaque; const AssetCode12: Opaque; @@ -2672,7 +2694,7 @@ export namespace xdr { const UpgradeType: VarOpaque; - const TxExecutionThread: XDRArray; + const DependentTxCluster: XDRArray; const ParallelTxExecutionStage: XDRArray; @@ -2680,15 +2702,13 @@ export namespace xdr { const EncryptedBody: VarOpaque; - const PeerStatList: XDRArray; - const TimeSlicedPeerDataList: XDRArray; const TxAdvertVector: XDRArray; const TxDemandVector: XDRArray; - const ProofLevel: XDRArray; + const SorobanAuthorizationEntries: XDRArray; const Hash: Opaque; @@ -2714,6 +2734,10 @@ export namespace xdr { type AccountId = PublicKey; + type ContractId = Hash; + + type PoolId = Hash; + const ScVec: XDRArray; const ScMap: XDRArray; @@ -4328,132 +4352,6 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class ColdArchiveArchivedLeaf { - constructor(attributes: { index: number; archivedEntry: LedgerEntry }); - - index(value?: number): number; - - archivedEntry(value?: LedgerEntry): LedgerEntry; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ColdArchiveArchivedLeaf; - - static write(value: ColdArchiveArchivedLeaf, io: Buffer): void; - - static isValid(value: ColdArchiveArchivedLeaf): boolean; - - static toXDR(value: ColdArchiveArchivedLeaf): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ColdArchiveArchivedLeaf; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): ColdArchiveArchivedLeaf; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - - class ColdArchiveDeletedLeaf { - constructor(attributes: { index: number; deletedKey: LedgerKey }); - - index(value?: number): number; - - deletedKey(value?: LedgerKey): LedgerKey; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ColdArchiveDeletedLeaf; - - static write(value: ColdArchiveDeletedLeaf, io: Buffer): void; - - static isValid(value: ColdArchiveDeletedLeaf): boolean; - - static toXDR(value: ColdArchiveDeletedLeaf): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ColdArchiveDeletedLeaf; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): ColdArchiveDeletedLeaf; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - - class ColdArchiveBoundaryLeaf { - constructor(attributes: { index: number; isLowerBound: boolean }); - - index(value?: number): number; - - isLowerBound(value?: boolean): boolean; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ColdArchiveBoundaryLeaf; - - static write(value: ColdArchiveBoundaryLeaf, io: Buffer): void; - - static isValid(value: ColdArchiveBoundaryLeaf): boolean; - - static toXDR(value: ColdArchiveBoundaryLeaf): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ColdArchiveBoundaryLeaf; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): ColdArchiveBoundaryLeaf; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - - class ColdArchiveHashEntry { - constructor(attributes: { index: number; level: number; hash: Buffer }); - - index(value?: number): number; - - level(value?: number): number; - - hash(value?: Buffer): Buffer; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ColdArchiveHashEntry; - - static write(value: ColdArchiveHashEntry, io: Buffer): void; - - static isValid(value: ColdArchiveHashEntry): boolean; - - static toXDR(value: ColdArchiveHashEntry): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ColdArchiveHashEntry; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): ColdArchiveHashEntry; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - class LedgerCloseValueSignature { constructor(attributes: { nodeId: NodeId; signature: Buffer }); @@ -4624,9 +4522,9 @@ export namespace xdr { } class ConfigUpgradeSetKey { - constructor(attributes: { contractId: Buffer; contentHash: Buffer }); + constructor(attributes: { contractId: ContractId; contentHash: Buffer }); - contractId(value?: Buffer): Buffer; + contractId(value?: ContractId): ContractId; contentHash(value?: Buffer): Buffer; @@ -5175,14 +5073,14 @@ export namespace xdr { class ContractEvent { constructor(attributes: { ext: ExtensionPoint; - contractId: null | Buffer; + contractId: null | ContractId; type: ContractEventType; body: ContractEventBody; }); ext(value?: ExtensionPoint): ExtensionPoint; - contractId(value?: null | Buffer): null | Buffer; + contractId(value?: null | ContractId): null | ContractId; type(value?: ContractEventType): ContractEventType; @@ -5362,10 +5260,16 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class InvokeHostFunctionSuccessPreImage { - constructor(attributes: { returnValue: ScVal; events: ContractEvent[] }); + class OperationMetaV2 { + constructor(attributes: { + ext: ExtensionPoint; + changes: LedgerEntryChange[]; + events: ContractEvent[]; + }); - returnValue(value?: ScVal): ScVal; + ext(value?: ExtensionPoint): ExtensionPoint; + + changes(value?: LedgerEntryChange[]): LedgerEntryChange[]; events(value?: ContractEvent[]): ContractEvent[]; @@ -5373,117 +5277,301 @@ export namespace xdr { toXDR(format: 'hex' | 'base64'): string; - static read(io: Buffer): InvokeHostFunctionSuccessPreImage; + static read(io: Buffer): OperationMetaV2; - static write(value: InvokeHostFunctionSuccessPreImage, io: Buffer): void; + static write(value: OperationMetaV2, io: Buffer): void; - static isValid(value: InvokeHostFunctionSuccessPreImage): boolean; + static isValid(value: OperationMetaV2): boolean; - static toXDR(value: InvokeHostFunctionSuccessPreImage): Buffer; + static toXDR(value: OperationMetaV2): Buffer; - static fromXDR( - input: Buffer, - format?: 'raw', - ): InvokeHostFunctionSuccessPreImage; + static fromXDR(input: Buffer, format?: 'raw'): OperationMetaV2; - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): InvokeHostFunctionSuccessPreImage; + static fromXDR(input: string, format: 'hex' | 'base64'): OperationMetaV2; static validateXDR(input: Buffer, format?: 'raw'): boolean; static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class TransactionResultMeta { + class SorobanTransactionMetaV2 { constructor(attributes: { - result: TransactionResultPair; - feeProcessing: LedgerEntryChange[]; - txApplyProcessing: TransactionMeta; + ext: SorobanTransactionMetaExt; + returnValue: null | ScVal; }); - result(value?: TransactionResultPair): TransactionResultPair; - - feeProcessing(value?: LedgerEntryChange[]): LedgerEntryChange[]; + ext(value?: SorobanTransactionMetaExt): SorobanTransactionMetaExt; - txApplyProcessing(value?: TransactionMeta): TransactionMeta; + returnValue(value?: null | ScVal): null | ScVal; toXDR(format?: 'raw'): Buffer; toXDR(format: 'hex' | 'base64'): string; - static read(io: Buffer): TransactionResultMeta; + static read(io: Buffer): SorobanTransactionMetaV2; - static write(value: TransactionResultMeta, io: Buffer): void; + static write(value: SorobanTransactionMetaV2, io: Buffer): void; - static isValid(value: TransactionResultMeta): boolean; + static isValid(value: SorobanTransactionMetaV2): boolean; - static toXDR(value: TransactionResultMeta): Buffer; + static toXDR(value: SorobanTransactionMetaV2): Buffer; - static fromXDR(input: Buffer, format?: 'raw'): TransactionResultMeta; + static fromXDR(input: Buffer, format?: 'raw'): SorobanTransactionMetaV2; static fromXDR( input: string, format: 'hex' | 'base64', - ): TransactionResultMeta; + ): SorobanTransactionMetaV2; static validateXDR(input: Buffer, format?: 'raw'): boolean; static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class UpgradeEntryMeta { + class TransactionEvent { constructor(attributes: { - upgrade: LedgerUpgrade; - changes: LedgerEntryChange[]; + stage: TransactionEventStage; + event: ContractEvent; }); - upgrade(value?: LedgerUpgrade): LedgerUpgrade; + stage(value?: TransactionEventStage): TransactionEventStage; - changes(value?: LedgerEntryChange[]): LedgerEntryChange[]; + event(value?: ContractEvent): ContractEvent; toXDR(format?: 'raw'): Buffer; toXDR(format: 'hex' | 'base64'): string; - static read(io: Buffer): UpgradeEntryMeta; + static read(io: Buffer): TransactionEvent; - static write(value: UpgradeEntryMeta, io: Buffer): void; + static write(value: TransactionEvent, io: Buffer): void; - static isValid(value: UpgradeEntryMeta): boolean; + static isValid(value: TransactionEvent): boolean; - static toXDR(value: UpgradeEntryMeta): Buffer; + static toXDR(value: TransactionEvent): Buffer; - static fromXDR(input: Buffer, format?: 'raw'): UpgradeEntryMeta; + static fromXDR(input: Buffer, format?: 'raw'): TransactionEvent; - static fromXDR(input: string, format: 'hex' | 'base64'): UpgradeEntryMeta; + static fromXDR(input: string, format: 'hex' | 'base64'): TransactionEvent; static validateXDR(input: Buffer, format?: 'raw'): boolean; static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class LedgerCloseMetaV0 { + class TransactionMetaV4 { constructor(attributes: { - ledgerHeader: LedgerHeaderHistoryEntry; - txSet: TransactionSet; - txProcessing: TransactionResultMeta[]; - upgradesProcessing: UpgradeEntryMeta[]; - scpInfo: ScpHistoryEntry[]; + ext: ExtensionPoint; + txChangesBefore: LedgerEntryChange[]; + operations: OperationMetaV2[]; + txChangesAfter: LedgerEntryChange[]; + sorobanMeta: null | SorobanTransactionMetaV2; + events: TransactionEvent[]; + diagnosticEvents: DiagnosticEvent[]; }); - ledgerHeader(value?: LedgerHeaderHistoryEntry): LedgerHeaderHistoryEntry; + ext(value?: ExtensionPoint): ExtensionPoint; - txSet(value?: TransactionSet): TransactionSet; + txChangesBefore(value?: LedgerEntryChange[]): LedgerEntryChange[]; - txProcessing(value?: TransactionResultMeta[]): TransactionResultMeta[]; + operations(value?: OperationMetaV2[]): OperationMetaV2[]; - upgradesProcessing(value?: UpgradeEntryMeta[]): UpgradeEntryMeta[]; + txChangesAfter(value?: LedgerEntryChange[]): LedgerEntryChange[]; - scpInfo(value?: ScpHistoryEntry[]): ScpHistoryEntry[]; + sorobanMeta( + value?: null | SorobanTransactionMetaV2, + ): null | SorobanTransactionMetaV2; - toXDR(format?: 'raw'): Buffer; + events(value?: TransactionEvent[]): TransactionEvent[]; + + diagnosticEvents(value?: DiagnosticEvent[]): DiagnosticEvent[]; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): TransactionMetaV4; + + static write(value: TransactionMetaV4, io: Buffer): void; + + static isValid(value: TransactionMetaV4): boolean; + + static toXDR(value: TransactionMetaV4): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): TransactionMetaV4; + + static fromXDR(input: string, format: 'hex' | 'base64'): TransactionMetaV4; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class InvokeHostFunctionSuccessPreImage { + constructor(attributes: { returnValue: ScVal; events: ContractEvent[] }); + + returnValue(value?: ScVal): ScVal; + + events(value?: ContractEvent[]): ContractEvent[]; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): InvokeHostFunctionSuccessPreImage; + + static write(value: InvokeHostFunctionSuccessPreImage, io: Buffer): void; + + static isValid(value: InvokeHostFunctionSuccessPreImage): boolean; + + static toXDR(value: InvokeHostFunctionSuccessPreImage): Buffer; + + static fromXDR( + input: Buffer, + format?: 'raw', + ): InvokeHostFunctionSuccessPreImage; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): InvokeHostFunctionSuccessPreImage; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class TransactionResultMeta { + constructor(attributes: { + result: TransactionResultPair; + feeProcessing: LedgerEntryChange[]; + txApplyProcessing: TransactionMeta; + }); + + result(value?: TransactionResultPair): TransactionResultPair; + + feeProcessing(value?: LedgerEntryChange[]): LedgerEntryChange[]; + + txApplyProcessing(value?: TransactionMeta): TransactionMeta; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): TransactionResultMeta; + + static write(value: TransactionResultMeta, io: Buffer): void; + + static isValid(value: TransactionResultMeta): boolean; + + static toXDR(value: TransactionResultMeta): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): TransactionResultMeta; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): TransactionResultMeta; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class TransactionResultMetaV1 { + constructor(attributes: { + ext: ExtensionPoint; + result: TransactionResultPair; + feeProcessing: LedgerEntryChange[]; + txApplyProcessing: TransactionMeta; + postTxApplyFeeProcessing: LedgerEntryChange[]; + }); + + ext(value?: ExtensionPoint): ExtensionPoint; + + result(value?: TransactionResultPair): TransactionResultPair; + + feeProcessing(value?: LedgerEntryChange[]): LedgerEntryChange[]; + + txApplyProcessing(value?: TransactionMeta): TransactionMeta; + + postTxApplyFeeProcessing(value?: LedgerEntryChange[]): LedgerEntryChange[]; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): TransactionResultMetaV1; + + static write(value: TransactionResultMetaV1, io: Buffer): void; + + static isValid(value: TransactionResultMetaV1): boolean; + + static toXDR(value: TransactionResultMetaV1): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): TransactionResultMetaV1; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): TransactionResultMetaV1; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class UpgradeEntryMeta { + constructor(attributes: { + upgrade: LedgerUpgrade; + changes: LedgerEntryChange[]; + }); + + upgrade(value?: LedgerUpgrade): LedgerUpgrade; + + changes(value?: LedgerEntryChange[]): LedgerEntryChange[]; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): UpgradeEntryMeta; + + static write(value: UpgradeEntryMeta, io: Buffer): void; + + static isValid(value: UpgradeEntryMeta): boolean; + + static toXDR(value: UpgradeEntryMeta): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): UpgradeEntryMeta; + + static fromXDR(input: string, format: 'hex' | 'base64'): UpgradeEntryMeta; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class LedgerCloseMetaV0 { + constructor(attributes: { + ledgerHeader: LedgerHeaderHistoryEntry; + txSet: TransactionSet; + txProcessing: TransactionResultMeta[]; + upgradesProcessing: UpgradeEntryMeta[]; + scpInfo: ScpHistoryEntry[]; + }); + + ledgerHeader(value?: LedgerHeaderHistoryEntry): LedgerHeaderHistoryEntry; + + txSet(value?: TransactionSet): TransactionSet; + + txProcessing(value?: TransactionResultMeta[]): TransactionResultMeta[]; + + upgradesProcessing(value?: UpgradeEntryMeta[]): UpgradeEntryMeta[]; + + scpInfo(value?: ScpHistoryEntry[]): ScpHistoryEntry[]; + + toXDR(format?: 'raw'): Buffer; toXDR(format: 'hex' | 'base64'): string; @@ -5543,9 +5631,9 @@ export namespace xdr { txProcessing: TransactionResultMeta[]; upgradesProcessing: UpgradeEntryMeta[]; scpInfo: ScpHistoryEntry[]; - totalByteSizeOfBucketList: Uint64; - evictedTemporaryLedgerKeys: LedgerKey[]; - evictedPersistentLedgerEntries: LedgerEntry[]; + totalByteSizeOfLiveSorobanState: Uint64; + evictedKeys: LedgerKey[]; + unused: LedgerEntry[]; }); ext(value?: LedgerCloseMetaExt): LedgerCloseMetaExt; @@ -5560,11 +5648,11 @@ export namespace xdr { scpInfo(value?: ScpHistoryEntry[]): ScpHistoryEntry[]; - totalByteSizeOfBucketList(value?: Uint64): Uint64; + totalByteSizeOfLiveSorobanState(value?: Uint64): Uint64; - evictedTemporaryLedgerKeys(value?: LedgerKey[]): LedgerKey[]; + evictedKeys(value?: LedgerKey[]): LedgerKey[]; - evictedPersistentLedgerEntries(value?: LedgerEntry[]): LedgerEntry[]; + unused(value?: LedgerEntry[]): LedgerEntry[]; toXDR(format?: 'raw'): Buffer; @@ -5587,6 +5675,55 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } + class LedgerCloseMetaV2 { + constructor(attributes: { + ext: LedgerCloseMetaExt; + ledgerHeader: LedgerHeaderHistoryEntry; + txSet: GeneralizedTransactionSet; + txProcessing: TransactionResultMetaV1[]; + upgradesProcessing: UpgradeEntryMeta[]; + scpInfo: ScpHistoryEntry[]; + totalByteSizeOfLiveSorobanState: Uint64; + evictedKeys: LedgerKey[]; + }); + + ext(value?: LedgerCloseMetaExt): LedgerCloseMetaExt; + + ledgerHeader(value?: LedgerHeaderHistoryEntry): LedgerHeaderHistoryEntry; + + txSet(value?: GeneralizedTransactionSet): GeneralizedTransactionSet; + + txProcessing(value?: TransactionResultMetaV1[]): TransactionResultMetaV1[]; + + upgradesProcessing(value?: UpgradeEntryMeta[]): UpgradeEntryMeta[]; + + scpInfo(value?: ScpHistoryEntry[]): ScpHistoryEntry[]; + + totalByteSizeOfLiveSorobanState(value?: Uint64): Uint64; + + evictedKeys(value?: LedgerKey[]): LedgerKey[]; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): LedgerCloseMetaV2; + + static write(value: LedgerCloseMetaV2, io: Buffer): void; + + static isValid(value: LedgerCloseMetaV2): boolean; + + static toXDR(value: LedgerCloseMetaV2): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): LedgerCloseMetaV2; + + static fromXDR(input: string, format: 'hex' | 'base64'): LedgerCloseMetaV2; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + class Error { constructor(attributes: { code: ErrorCode; msg: string | Buffer }); @@ -6101,40 +6238,6 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class SignedSurveyRequestMessage { - constructor(attributes: { - requestSignature: Buffer; - request: SurveyRequestMessage; - }); - - requestSignature(value?: Buffer): Buffer; - - request(value?: SurveyRequestMessage): SurveyRequestMessage; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): SignedSurveyRequestMessage; - - static write(value: SignedSurveyRequestMessage, io: Buffer): void; - - static isValid(value: SignedSurveyRequestMessage): boolean; - - static toXDR(value: SignedSurveyRequestMessage): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): SignedSurveyRequestMessage; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): SignedSurveyRequestMessage; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - class SignedTimeSlicedSurveyRequestMessage { constructor(attributes: { requestSignature: Buffer; @@ -6251,40 +6354,6 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class SignedSurveyResponseMessage { - constructor(attributes: { - responseSignature: Buffer; - response: SurveyResponseMessage; - }); - - responseSignature(value?: Buffer): Buffer; - - response(value?: SurveyResponseMessage): SurveyResponseMessage; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): SignedSurveyResponseMessage; - - static write(value: SignedSurveyResponseMessage, io: Buffer): void; - - static isValid(value: SignedSurveyResponseMessage): boolean; - - static toXDR(value: SignedSurveyResponseMessage): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): SignedSurveyResponseMessage; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): SignedSurveyResponseMessage; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - class SignedTimeSlicedSurveyResponseMessage { constructor(attributes: { responseSignature: Buffer; @@ -6419,147 +6488,61 @@ export namespace xdr { totalOutboundPeerCount(value?: number): number; - p75ScpFirstToSelfLatencyMs(value?: number): number; - - p75ScpSelfToOtherLatencyMs(value?: number): number; - - lostSyncCount(value?: number): number; - - isValidator(value?: boolean): boolean; - - maxInboundPeerCount(value?: number): number; - - maxOutboundPeerCount(value?: number): number; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): TimeSlicedNodeData; - - static write(value: TimeSlicedNodeData, io: Buffer): void; - - static isValid(value: TimeSlicedNodeData): boolean; - - static toXDR(value: TimeSlicedNodeData): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): TimeSlicedNodeData; - - static fromXDR(input: string, format: 'hex' | 'base64'): TimeSlicedNodeData; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - - class TimeSlicedPeerData { - constructor(attributes: { peerStats: PeerStats; averageLatencyMs: number }); - - peerStats(value?: PeerStats): PeerStats; - - averageLatencyMs(value?: number): number; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): TimeSlicedPeerData; - - static write(value: TimeSlicedPeerData, io: Buffer): void; - - static isValid(value: TimeSlicedPeerData): boolean; - - static toXDR(value: TimeSlicedPeerData): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): TimeSlicedPeerData; - - static fromXDR(input: string, format: 'hex' | 'base64'): TimeSlicedPeerData; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } + p75ScpFirstToSelfLatencyMs(value?: number): number; - class TopologyResponseBodyV0 { - constructor(attributes: { - inboundPeers: PeerStats[]; - outboundPeers: PeerStats[]; - totalInboundPeerCount: number; - totalOutboundPeerCount: number; - }); + p75ScpSelfToOtherLatencyMs(value?: number): number; - inboundPeers(value?: PeerStats[]): PeerStats[]; + lostSyncCount(value?: number): number; - outboundPeers(value?: PeerStats[]): PeerStats[]; + isValidator(value?: boolean): boolean; - totalInboundPeerCount(value?: number): number; + maxInboundPeerCount(value?: number): number; - totalOutboundPeerCount(value?: number): number; + maxOutboundPeerCount(value?: number): number; toXDR(format?: 'raw'): Buffer; toXDR(format: 'hex' | 'base64'): string; - static read(io: Buffer): TopologyResponseBodyV0; + static read(io: Buffer): TimeSlicedNodeData; - static write(value: TopologyResponseBodyV0, io: Buffer): void; + static write(value: TimeSlicedNodeData, io: Buffer): void; - static isValid(value: TopologyResponseBodyV0): boolean; + static isValid(value: TimeSlicedNodeData): boolean; - static toXDR(value: TopologyResponseBodyV0): Buffer; + static toXDR(value: TimeSlicedNodeData): Buffer; - static fromXDR(input: Buffer, format?: 'raw'): TopologyResponseBodyV0; + static fromXDR(input: Buffer, format?: 'raw'): TimeSlicedNodeData; - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): TopologyResponseBodyV0; + static fromXDR(input: string, format: 'hex' | 'base64'): TimeSlicedNodeData; static validateXDR(input: Buffer, format?: 'raw'): boolean; static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class TopologyResponseBodyV1 { - constructor(attributes: { - inboundPeers: PeerStats[]; - outboundPeers: PeerStats[]; - totalInboundPeerCount: number; - totalOutboundPeerCount: number; - maxInboundPeerCount: number; - maxOutboundPeerCount: number; - }); - - inboundPeers(value?: PeerStats[]): PeerStats[]; - - outboundPeers(value?: PeerStats[]): PeerStats[]; - - totalInboundPeerCount(value?: number): number; - - totalOutboundPeerCount(value?: number): number; + class TimeSlicedPeerData { + constructor(attributes: { peerStats: PeerStats; averageLatencyMs: number }); - maxInboundPeerCount(value?: number): number; + peerStats(value?: PeerStats): PeerStats; - maxOutboundPeerCount(value?: number): number; + averageLatencyMs(value?: number): number; toXDR(format?: 'raw'): Buffer; toXDR(format: 'hex' | 'base64'): string; - static read(io: Buffer): TopologyResponseBodyV1; + static read(io: Buffer): TimeSlicedPeerData; - static write(value: TopologyResponseBodyV1, io: Buffer): void; + static write(value: TimeSlicedPeerData, io: Buffer): void; - static isValid(value: TopologyResponseBodyV1): boolean; + static isValid(value: TimeSlicedPeerData): boolean; - static toXDR(value: TopologyResponseBodyV1): Buffer; + static toXDR(value: TimeSlicedPeerData): Buffer; - static fromXDR(input: Buffer, format?: 'raw'): TopologyResponseBodyV1; + static fromXDR(input: Buffer, format?: 'raw'): TimeSlicedPeerData; - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): TopologyResponseBodyV1; + static fromXDR(input: string, format: 'hex' | 'base64'): TimeSlicedPeerData; static validateXDR(input: Buffer, format?: 'raw'): boolean; @@ -7850,37 +7833,6 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class Operation { - constructor(attributes: { - sourceAccount: null | MuxedAccount; - body: OperationBody; - }); - - sourceAccount(value?: null | MuxedAccount): null | MuxedAccount; - - body(value?: OperationBody): OperationBody; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): Operation; - - static write(value: Operation, io: Buffer): void; - - static isValid(value: Operation): boolean; - - static toXDR(value: Operation): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): Operation; - - static fromXDR(input: string, format: 'hex' | 'base64'): Operation; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - class HashIdPreimageOperationId { constructor(attributes: { sourceAccount: AccountId; @@ -8167,166 +8119,66 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class ArchivalProofNode { - constructor(attributes: { index: number; hash: Buffer }); - - index(value?: number): number; - - hash(value?: Buffer): Buffer; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ArchivalProofNode; - - static write(value: ArchivalProofNode, io: Buffer): void; - - static isValid(value: ArchivalProofNode): boolean; - - static toXDR(value: ArchivalProofNode): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ArchivalProofNode; - - static fromXDR(input: string, format: 'hex' | 'base64'): ArchivalProofNode; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - - class NonexistenceProofBody { - constructor(attributes: { - entriesToProve: ColdArchiveBucketEntry[]; - proofLevels: ArchivalProofNode[][]; - }); - - entriesToProve(value?: ColdArchiveBucketEntry[]): ColdArchiveBucketEntry[]; - - proofLevels(value?: ArchivalProofNode[][]): ArchivalProofNode[][]; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): NonexistenceProofBody; - - static write(value: NonexistenceProofBody, io: Buffer): void; - - static isValid(value: NonexistenceProofBody): boolean; - - static toXDR(value: NonexistenceProofBody): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): NonexistenceProofBody; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): NonexistenceProofBody; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - - class ExistenceProofBody { + class SorobanResources { constructor(attributes: { - keysToProve: LedgerKey[]; - lowBoundEntries: ColdArchiveBucketEntry[]; - highBoundEntries: ColdArchiveBucketEntry[]; - proofLevels: ArchivalProofNode[][]; + footprint: LedgerFootprint; + instructions: number; + diskReadBytes: number; + writeBytes: number; }); - keysToProve(value?: LedgerKey[]): LedgerKey[]; - - lowBoundEntries(value?: ColdArchiveBucketEntry[]): ColdArchiveBucketEntry[]; - - highBoundEntries( - value?: ColdArchiveBucketEntry[], - ): ColdArchiveBucketEntry[]; - - proofLevels(value?: ArchivalProofNode[][]): ArchivalProofNode[][]; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ExistenceProofBody; - - static write(value: ExistenceProofBody, io: Buffer): void; - - static isValid(value: ExistenceProofBody): boolean; - - static toXDR(value: ExistenceProofBody): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ExistenceProofBody; - - static fromXDR(input: string, format: 'hex' | 'base64'): ExistenceProofBody; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } + footprint(value?: LedgerFootprint): LedgerFootprint; - class ArchivalProof { - constructor(attributes: { epoch: number; body: ArchivalProofBody }); + instructions(value?: number): number; - epoch(value?: number): number; + diskReadBytes(value?: number): number; - body(value?: ArchivalProofBody): ArchivalProofBody; + writeBytes(value?: number): number; toXDR(format?: 'raw'): Buffer; toXDR(format: 'hex' | 'base64'): string; - static read(io: Buffer): ArchivalProof; + static read(io: Buffer): SorobanResources; - static write(value: ArchivalProof, io: Buffer): void; + static write(value: SorobanResources, io: Buffer): void; - static isValid(value: ArchivalProof): boolean; + static isValid(value: SorobanResources): boolean; - static toXDR(value: ArchivalProof): Buffer; + static toXDR(value: SorobanResources): Buffer; - static fromXDR(input: Buffer, format?: 'raw'): ArchivalProof; + static fromXDR(input: Buffer, format?: 'raw'): SorobanResources; - static fromXDR(input: string, format: 'hex' | 'base64'): ArchivalProof; + static fromXDR(input: string, format: 'hex' | 'base64'): SorobanResources; static validateXDR(input: Buffer, format?: 'raw'): boolean; static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class SorobanResources { - constructor(attributes: { - footprint: LedgerFootprint; - instructions: number; - readBytes: number; - writeBytes: number; - }); - - footprint(value?: LedgerFootprint): LedgerFootprint; - - instructions(value?: number): number; - - readBytes(value?: number): number; + class SorobanResourcesExtV0 { + constructor(attributes: { archivedSorobanEntries: number[] }); - writeBytes(value?: number): number; + archivedSorobanEntries(value?: number[]): number[]; toXDR(format?: 'raw'): Buffer; toXDR(format: 'hex' | 'base64'): string; - static read(io: Buffer): SorobanResources; + static read(io: Buffer): SorobanResourcesExtV0; - static write(value: SorobanResources, io: Buffer): void; + static write(value: SorobanResourcesExtV0, io: Buffer): void; - static isValid(value: SorobanResources): boolean; + static isValid(value: SorobanResourcesExtV0): boolean; - static toXDR(value: SorobanResources): Buffer; + static toXDR(value: SorobanResourcesExtV0): Buffer; - static fromXDR(input: Buffer, format?: 'raw'): SorobanResources; + static fromXDR(input: Buffer, format?: 'raw'): SorobanResourcesExtV0; - static fromXDR(input: string, format: 'hex' | 'base64'): SorobanResources; + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): SorobanResourcesExtV0; static validateXDR(input: Buffer, format?: 'raw'): boolean; @@ -9387,6 +9239,37 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } + class MuxedEd25519Account { + constructor(attributes: { id: Uint64; ed25519: Buffer }); + + id(value?: Uint64): Uint64; + + ed25519(value?: Buffer): Buffer; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): MuxedEd25519Account; + + static write(value: MuxedEd25519Account, io: Buffer): void; + + static isValid(value: MuxedEd25519Account): boolean; + + static toXDR(value: MuxedEd25519Account): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): MuxedEd25519Account; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): MuxedEd25519Account; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + class ScNonceKey { constructor(attributes: { nonce: Int64 }); @@ -10081,49 +9964,129 @@ export namespace xdr { static toXDR(value: ScSpecFunctionInputV0): Buffer; - static fromXDR(input: Buffer, format?: 'raw'): ScSpecFunctionInputV0; + static fromXDR(input: Buffer, format?: 'raw'): ScSpecFunctionInputV0; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): ScSpecFunctionInputV0; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class ScSpecFunctionV0 { + constructor(attributes: { + doc: string | Buffer; + name: string | Buffer; + inputs: ScSpecFunctionInputV0[]; + outputs: ScSpecTypeDef[]; + }); + + doc(value?: string | Buffer): string | Buffer; + + name(value?: string | Buffer): string | Buffer; + + inputs(value?: ScSpecFunctionInputV0[]): ScSpecFunctionInputV0[]; + + outputs(value?: ScSpecTypeDef[]): ScSpecTypeDef[]; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): ScSpecFunctionV0; + + static write(value: ScSpecFunctionV0, io: Buffer): void; + + static isValid(value: ScSpecFunctionV0): boolean; + + static toXDR(value: ScSpecFunctionV0): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): ScSpecFunctionV0; + + static fromXDR(input: string, format: 'hex' | 'base64'): ScSpecFunctionV0; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class ScSpecEventParamV0 { + constructor(attributes: { + doc: string | Buffer; + name: string | Buffer; + type: ScSpecTypeDef; + location: ScSpecEventParamLocationV0; + }); + + doc(value?: string | Buffer): string | Buffer; + + name(value?: string | Buffer): string | Buffer; + + type(value?: ScSpecTypeDef): ScSpecTypeDef; + + location(value?: ScSpecEventParamLocationV0): ScSpecEventParamLocationV0; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): ScSpecEventParamV0; + + static write(value: ScSpecEventParamV0, io: Buffer): void; + + static isValid(value: ScSpecEventParamV0): boolean; + + static toXDR(value: ScSpecEventParamV0): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): ScSpecEventParamV0; - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): ScSpecFunctionInputV0; + static fromXDR(input: string, format: 'hex' | 'base64'): ScSpecEventParamV0; static validateXDR(input: Buffer, format?: 'raw'): boolean; static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class ScSpecFunctionV0 { + class ScSpecEventV0 { constructor(attributes: { doc: string | Buffer; + lib: string | Buffer; name: string | Buffer; - inputs: ScSpecFunctionInputV0[]; - outputs: ScSpecTypeDef[]; + prefixTopics: (string | Buffer)[]; + params: ScSpecEventParamV0[]; + dataFormat: ScSpecEventDataFormat; }); doc(value?: string | Buffer): string | Buffer; + lib(value?: string | Buffer): string | Buffer; + name(value?: string | Buffer): string | Buffer; - inputs(value?: ScSpecFunctionInputV0[]): ScSpecFunctionInputV0[]; + prefixTopics(value?: (string | Buffer)[]): (string | Buffer)[]; - outputs(value?: ScSpecTypeDef[]): ScSpecTypeDef[]; + params(value?: ScSpecEventParamV0[]): ScSpecEventParamV0[]; + + dataFormat(value?: ScSpecEventDataFormat): ScSpecEventDataFormat; toXDR(format?: 'raw'): Buffer; toXDR(format: 'hex' | 'base64'): string; - static read(io: Buffer): ScSpecFunctionV0; + static read(io: Buffer): ScSpecEventV0; - static write(value: ScSpecFunctionV0, io: Buffer): void; + static write(value: ScSpecEventV0, io: Buffer): void; - static isValid(value: ScSpecFunctionV0): boolean; + static isValid(value: ScSpecEventV0): boolean; - static toXDR(value: ScSpecFunctionV0): Buffer; + static toXDR(value: ScSpecEventV0): Buffer; - static fromXDR(input: Buffer, format?: 'raw'): ScSpecFunctionV0; + static fromXDR(input: Buffer, format?: 'raw'): ScSpecEventV0; - static fromXDR(input: string, format: 'hex' | 'base64'): ScSpecFunctionV0; + static fromXDR(input: string, format: 'hex' | 'base64'): ScSpecEventV0; static validateXDR(input: Buffer, format?: 'raw'): boolean; @@ -10209,9 +10172,9 @@ export namespace xdr { } class ConfigSettingContractParallelComputeV0 { - constructor(attributes: { ledgerMaxParallelThreads: number }); + constructor(attributes: { ledgerMaxDependentTxClusters: number }); - ledgerMaxParallelThreads(value?: number): number; + ledgerMaxDependentTxClusters(value?: number): number; toXDR(format?: 'raw'): Buffer; @@ -10245,52 +10208,52 @@ export namespace xdr { class ConfigSettingContractLedgerCostV0 { constructor(attributes: { - ledgerMaxReadLedgerEntries: number; - ledgerMaxReadBytes: number; + ledgerMaxDiskReadEntries: number; + ledgerMaxDiskReadBytes: number; ledgerMaxWriteLedgerEntries: number; ledgerMaxWriteBytes: number; - txMaxReadLedgerEntries: number; - txMaxReadBytes: number; + txMaxDiskReadEntries: number; + txMaxDiskReadBytes: number; txMaxWriteLedgerEntries: number; txMaxWriteBytes: number; - feeReadLedgerEntry: Int64; + feeDiskReadLedgerEntry: Int64; feeWriteLedgerEntry: Int64; - feeRead1Kb: Int64; - bucketListTargetSizeBytes: Int64; - writeFee1KbBucketListLow: Int64; - writeFee1KbBucketListHigh: Int64; - bucketListWriteFeeGrowthFactor: number; + feeDiskRead1Kb: Int64; + sorobanStateTargetSizeBytes: Int64; + rentFee1KbSorobanStateSizeLow: Int64; + rentFee1KbSorobanStateSizeHigh: Int64; + sorobanStateRentFeeGrowthFactor: number; }); - ledgerMaxReadLedgerEntries(value?: number): number; + ledgerMaxDiskReadEntries(value?: number): number; - ledgerMaxReadBytes(value?: number): number; + ledgerMaxDiskReadBytes(value?: number): number; ledgerMaxWriteLedgerEntries(value?: number): number; ledgerMaxWriteBytes(value?: number): number; - txMaxReadLedgerEntries(value?: number): number; + txMaxDiskReadEntries(value?: number): number; - txMaxReadBytes(value?: number): number; + txMaxDiskReadBytes(value?: number): number; txMaxWriteLedgerEntries(value?: number): number; txMaxWriteBytes(value?: number): number; - feeReadLedgerEntry(value?: Int64): Int64; + feeDiskReadLedgerEntry(value?: Int64): Int64; feeWriteLedgerEntry(value?: Int64): Int64; - feeRead1Kb(value?: Int64): Int64; + feeDiskRead1Kb(value?: Int64): Int64; - bucketListTargetSizeBytes(value?: Int64): Int64; + sorobanStateTargetSizeBytes(value?: Int64): Int64; - writeFee1KbBucketListLow(value?: Int64): Int64; + rentFee1KbSorobanStateSizeLow(value?: Int64): Int64; - writeFee1KbBucketListHigh(value?: Int64): Int64; + rentFee1KbSorobanStateSizeHigh(value?: Int64): Int64; - bucketListWriteFeeGrowthFactor(value?: number): number; + sorobanStateRentFeeGrowthFactor(value?: number): number; toXDR(format?: 'raw'): Buffer; @@ -10319,6 +10282,43 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } + class ConfigSettingContractLedgerCostExtV0 { + constructor(attributes: { + txMaxFootprintEntries: number; + feeWrite1Kb: Int64; + }); + + txMaxFootprintEntries(value?: number): number; + + feeWrite1Kb(value?: Int64): Int64; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): ConfigSettingContractLedgerCostExtV0; + + static write(value: ConfigSettingContractLedgerCostExtV0, io: Buffer): void; + + static isValid(value: ConfigSettingContractLedgerCostExtV0): boolean; + + static toXDR(value: ConfigSettingContractLedgerCostExtV0): Buffer; + + static fromXDR( + input: Buffer, + format?: 'raw', + ): ConfigSettingContractLedgerCostExtV0; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): ConfigSettingContractLedgerCostExtV0; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + class ConfigSettingContractHistoricalDataV0 { constructor(attributes: { feeHistorical1Kb: Int64 }); @@ -10476,8 +10476,8 @@ export namespace xdr { persistentRentRateDenominator: Int64; tempRentRateDenominator: Int64; maxEntriesToArchive: number; - bucketListSizeWindowSampleSize: number; - bucketListWindowSamplePeriod: number; + liveSorobanStateSizeWindowSampleSize: number; + liveSorobanStateSizeWindowSamplePeriod: number; evictionScanSize: number; startingEvictionScanLevel: number; }); @@ -10494,9 +10494,9 @@ export namespace xdr { maxEntriesToArchive(value?: number): number; - bucketListSizeWindowSampleSize(value?: number): number; + liveSorobanStateSizeWindowSampleSize(value?: number): number; - bucketListWindowSamplePeriod(value?: number): number; + liveSorobanStateSizeWindowSamplePeriod(value?: number): number; evictionScanSize(value?: number): number; @@ -10560,6 +10560,86 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } + class ConfigSettingScpTiming { + constructor(attributes: { + ledgerTargetCloseTimeMilliseconds: number; + nominationTimeoutInitialMilliseconds: number; + nominationTimeoutIncrementMilliseconds: number; + ballotTimeoutInitialMilliseconds: number; + ballotTimeoutIncrementMilliseconds: number; + }); + + ledgerTargetCloseTimeMilliseconds(value?: number): number; + + nominationTimeoutInitialMilliseconds(value?: number): number; + + nominationTimeoutIncrementMilliseconds(value?: number): number; + + ballotTimeoutInitialMilliseconds(value?: number): number; + + ballotTimeoutIncrementMilliseconds(value?: number): number; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): ConfigSettingScpTiming; + + static write(value: ConfigSettingScpTiming, io: Buffer): void; + + static isValid(value: ConfigSettingScpTiming): boolean; + + static toXDR(value: ConfigSettingScpTiming): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): ConfigSettingScpTiming; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): ConfigSettingScpTiming; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + + class LedgerCloseMetaBatch { + constructor(attributes: { + startSequence: number; + endSequence: number; + ledgerCloseMeta: LedgerCloseMeta[]; + }); + + startSequence(value?: number): number; + + endSequence(value?: number): number; + + ledgerCloseMeta(value?: LedgerCloseMeta[]): LedgerCloseMeta[]; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): LedgerCloseMetaBatch; + + static write(value: LedgerCloseMetaBatch, io: Buffer): void; + + static isValid(value: LedgerCloseMetaBatch): boolean; + + static toXDR(value: LedgerCloseMetaBatch): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): LedgerCloseMetaBatch; + + static fromXDR( + input: string, + format: 'hex' | 'base64', + ): LedgerCloseMetaBatch; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + class ScpStatementPledges { switch(): ScpStatementType; @@ -11062,36 +11142,6 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class ClaimableBalanceId { - switch(): ClaimableBalanceIdType; - - v0(value?: Buffer): Buffer; - - static claimableBalanceIdTypeV0(value: Buffer): ClaimableBalanceId; - - value(): Buffer; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ClaimableBalanceId; - - static write(value: ClaimableBalanceId, io: Buffer): void; - - static isValid(value: ClaimableBalanceId): boolean; - - static toXDR(value: ClaimableBalanceId): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ClaimableBalanceId; - - static fromXDR(input: string, format: 'hex' | 'base64'): ClaimableBalanceId; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - class ClaimableBalanceEntryExtensionV1Ext { switch(): number; @@ -11537,8 +11587,6 @@ export namespace xdr { static hotArchiveLive(value: LedgerKey): HotArchiveBucketEntry; - static hotArchiveDeleted(value: LedgerKey): HotArchiveBucketEntry; - static hotArchiveMetaentry(value: BucketMetadata): HotArchiveBucketEntry; value(): LedgerEntry | LedgerKey | BucketMetadata; @@ -11567,66 +11615,6 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class ColdArchiveBucketEntry { - switch(): ColdArchiveBucketEntryType; - - metaEntry(value?: BucketMetadata): BucketMetadata; - - archivedLeaf(value?: ColdArchiveArchivedLeaf): ColdArchiveArchivedLeaf; - - deletedLeaf(value?: ColdArchiveDeletedLeaf): ColdArchiveDeletedLeaf; - - boundaryLeaf(value?: ColdArchiveBoundaryLeaf): ColdArchiveBoundaryLeaf; - - hashEntry(value?: ColdArchiveHashEntry): ColdArchiveHashEntry; - - static coldArchiveMetaentry(value: BucketMetadata): ColdArchiveBucketEntry; - - static coldArchiveArchivedLeaf( - value: ColdArchiveArchivedLeaf, - ): ColdArchiveBucketEntry; - - static coldArchiveDeletedLeaf( - value: ColdArchiveDeletedLeaf, - ): ColdArchiveBucketEntry; - - static coldArchiveBoundaryLeaf( - value: ColdArchiveBoundaryLeaf, - ): ColdArchiveBucketEntry; - - static coldArchiveHash(value: ColdArchiveHashEntry): ColdArchiveBucketEntry; - - value(): - | BucketMetadata - | ColdArchiveArchivedLeaf - | ColdArchiveDeletedLeaf - | ColdArchiveBoundaryLeaf - | ColdArchiveHashEntry; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ColdArchiveBucketEntry; - - static write(value: ColdArchiveBucketEntry, io: Buffer): void; - - static isValid(value: ColdArchiveBucketEntry): boolean; - - static toXDR(value: ColdArchiveBucketEntry): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ColdArchiveBucketEntry; - - static fromXDR( - input: string, - format: 'hex' | 'base64', - ): ColdArchiveBucketEntry; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - class StellarValueExt { switch(): StellarValueType; @@ -12031,6 +12019,8 @@ export namespace xdr { state(value?: LedgerEntry): LedgerEntry; + restored(value?: LedgerEntry): LedgerEntry; + static ledgerEntryCreated(value: LedgerEntry): LedgerEntryChange; static ledgerEntryUpdated(value: LedgerEntry): LedgerEntryChange; @@ -12039,7 +12029,9 @@ export namespace xdr { static ledgerEntryState(value: LedgerEntry): LedgerEntryChange; - value(): LedgerEntry | LedgerEntry | LedgerKey | LedgerEntry; + static ledgerEntryRestored(value: LedgerEntry): LedgerEntryChange; + + value(): LedgerEntry | LedgerEntry | LedgerKey | LedgerEntry | LedgerEntry; toXDR(format?: 'raw'): Buffer; @@ -12138,6 +12130,8 @@ export namespace xdr { v3(value?: TransactionMetaV3): TransactionMetaV3; + v4(value?: TransactionMetaV4): TransactionMetaV4; + static 0(value: OperationMeta[]): TransactionMeta; static 1(value: TransactionMetaV1): TransactionMeta; @@ -12146,11 +12140,14 @@ export namespace xdr { static 3(value: TransactionMetaV3): TransactionMeta; + static 4(value: TransactionMetaV4): TransactionMeta; + value(): | OperationMeta[] | TransactionMetaV1 | TransactionMetaV2 - | TransactionMetaV3; + | TransactionMetaV3 + | TransactionMetaV4; toXDR(format?: 'raw'): Buffer; @@ -12212,11 +12209,15 @@ export namespace xdr { v1(value?: LedgerCloseMetaV1): LedgerCloseMetaV1; + v2(value?: LedgerCloseMetaV2): LedgerCloseMetaV2; + static 0(value: LedgerCloseMetaV0): LedgerCloseMeta; static 1(value: LedgerCloseMetaV1): LedgerCloseMeta; - value(): LedgerCloseMetaV0 | LedgerCloseMetaV1; + static 2(value: LedgerCloseMetaV2): LedgerCloseMeta; + + value(): LedgerCloseMetaV0 | LedgerCloseMetaV1 | LedgerCloseMetaV2; toXDR(format?: 'raw'): Buffer; @@ -12276,34 +12277,15 @@ export namespace xdr { class SurveyResponseBody { switch(): SurveyMessageResponseType; - topologyResponseBodyV0( - value?: TopologyResponseBodyV0, - ): TopologyResponseBodyV0; - - topologyResponseBodyV1( - value?: TopologyResponseBodyV1, - ): TopologyResponseBodyV1; - topologyResponseBodyV2( value?: TopologyResponseBodyV2, ): TopologyResponseBodyV2; - static surveyTopologyResponseV0( - value: TopologyResponseBodyV0, - ): SurveyResponseBody; - - static surveyTopologyResponseV1( - value: TopologyResponseBodyV1, - ): SurveyResponseBody; - static surveyTopologyResponseV2( value: TopologyResponseBodyV2, ): SurveyResponseBody; - value(): - | TopologyResponseBodyV0 - | TopologyResponseBodyV1 - | TopologyResponseBodyV2; + value(): TopologyResponseBodyV2; toXDR(format?: 'raw'): Buffer; @@ -12349,14 +12331,6 @@ export namespace xdr { transaction(value?: TransactionEnvelope): TransactionEnvelope; - signedSurveyRequestMessage( - value?: SignedSurveyRequestMessage, - ): SignedSurveyRequestMessage; - - signedSurveyResponseMessage( - value?: SignedSurveyResponseMessage, - ): SignedSurveyResponseMessage; - signedTimeSlicedSurveyRequestMessage( value?: SignedTimeSlicedSurveyRequestMessage, ): SignedTimeSlicedSurveyRequestMessage; @@ -12397,8 +12371,6 @@ export namespace xdr { static dontHave(value: DontHave): StellarMessage; - static getPeers(): StellarMessage; - static peers(value: PeerAddress[]): StellarMessage; static getTxSet(value: Buffer): StellarMessage; @@ -12409,10 +12381,6 @@ export namespace xdr { static transaction(value: TransactionEnvelope): StellarMessage; - static surveyRequest(value: SignedSurveyRequestMessage): StellarMessage; - - static surveyResponse(value: SignedSurveyResponseMessage): StellarMessage; - static timeSlicedSurveyRequest( value: SignedTimeSlicedSurveyRequestMessage, ): StellarMessage; @@ -12455,8 +12423,6 @@ export namespace xdr { | TransactionSet | GeneralizedTransactionSet | TransactionEnvelope - | SignedSurveyRequestMessage - | SignedSurveyResponseMessage | SignedTimeSlicedSurveyRequestMessage | SignedTimeSlicedSurveyResponseMessage | SignedTimeSlicedSurveyStartCollectingMessage @@ -12468,8 +12434,7 @@ export namespace xdr { | SendMore | SendMoreExtended | FloodAdvert - | FloodDemand - | void; + | FloodDemand; toXDR(format?: 'raw'): Buffer; @@ -13164,50 +13129,16 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } - class ArchivalProofBody { - switch(): ArchivalProofType; - - nonexistenceProof(value?: NonexistenceProofBody): NonexistenceProofBody; - - existenceProof(value?: ExistenceProofBody): ExistenceProofBody; - - static existence(value: NonexistenceProofBody): ArchivalProofBody; - - static nonexistence(value: ExistenceProofBody): ArchivalProofBody; - - value(): NonexistenceProofBody | ExistenceProofBody; - - toXDR(format?: 'raw'): Buffer; - - toXDR(format: 'hex' | 'base64'): string; - - static read(io: Buffer): ArchivalProofBody; - - static write(value: ArchivalProofBody, io: Buffer): void; - - static isValid(value: ArchivalProofBody): boolean; - - static toXDR(value: ArchivalProofBody): Buffer; - - static fromXDR(input: Buffer, format?: 'raw'): ArchivalProofBody; - - static fromXDR(input: string, format: 'hex' | 'base64'): ArchivalProofBody; - - static validateXDR(input: Buffer, format?: 'raw'): boolean; - - static validateXDR(input: string, format: 'hex' | 'base64'): boolean; - } - class SorobanTransactionDataExt { switch(): number; - proofs(value?: ArchivalProof[]): ArchivalProof[]; + resourceExt(value?: SorobanResourcesExtV0): SorobanResourcesExtV0; static 0(): SorobanTransactionDataExt; - static 1(value: ArchivalProof[]): SorobanTransactionDataExt; + static 1(value: SorobanResourcesExtV0): SorobanTransactionDataExt; - value(): ArchivalProof[] | void; + value(): SorobanResourcesExtV0 | void; toXDR(format?: 'raw'): Buffer; @@ -15230,6 +15161,36 @@ export namespace xdr { static validateXDR(input: string, format: 'hex' | 'base64'): boolean; } + class ClaimableBalanceId { + switch(): ClaimableBalanceIdType; + + v0(value?: Buffer): Buffer; + + static claimableBalanceIdTypeV0(value: Buffer): ClaimableBalanceId; + + value(): Buffer; + + toXDR(format?: 'raw'): Buffer; + + toXDR(format: 'hex' | 'base64'): string; + + static read(io: Buffer): ClaimableBalanceId; + + static write(value: ClaimableBalanceId, io: Buffer): void; + + static isValid(value: ClaimableBalanceId): boolean; + + static toXDR(value: ClaimableBalanceId): Buffer; + + static fromXDR(input: Buffer, format?: 'raw'): ClaimableBalanceId; + + static fromXDR(input: string, format: 'hex' | 'base64'): ClaimableBalanceId; + + static validateXDR(input: Buffer, format?: 'raw'): boolean; + + static validateXDR(input: string, format: 'hex' | 'base64'): boolean; + } + class ScError { switch(): ScErrorType; @@ -15317,13 +15278,30 @@ export namespace xdr { accountId(value?: AccountId): AccountId; - contractId(value?: Buffer): Buffer; + contractId(value?: ContractId): ContractId; + + muxedAccount(value?: MuxedEd25519Account): MuxedEd25519Account; + + claimableBalanceId(value?: ClaimableBalanceId): ClaimableBalanceId; + + liquidityPoolId(value?: PoolId): PoolId; static scAddressTypeAccount(value: AccountId): ScAddress; - static scAddressTypeContract(value: Buffer): ScAddress; + static scAddressTypeContract(value: ContractId): ScAddress; + + static scAddressTypeMuxedAccount(value: MuxedEd25519Account): ScAddress; + + static scAddressTypeClaimableBalance(value: ClaimableBalanceId): ScAddress; + + static scAddressTypeLiquidityPool(value: PoolId): ScAddress; - value(): AccountId | Buffer; + value(): + | AccountId + | ContractId + | MuxedEd25519Account + | ClaimableBalanceId + | PoolId; toXDR(format?: 'raw'): Buffer; @@ -15385,10 +15363,10 @@ export namespace xdr { address(value?: ScAddress): ScAddress; - nonceKey(value?: ScNonceKey): ScNonceKey; - instance(value?: ScContractInstance): ScContractInstance; + nonceKey(value?: ScNonceKey): ScNonceKey; + static scvBool(value: boolean): ScVal; static scvVoid(): ScVal; @@ -15427,12 +15405,12 @@ export namespace xdr { static scvAddress(value: ScAddress): ScVal; + static scvContractInstance(value: ScContractInstance): ScVal; + static scvLedgerKeyContractInstance(): ScVal; static scvLedgerKeyNonce(value: ScNonceKey): ScVal; - static scvContractInstance(value: ScContractInstance): ScVal; - value(): | boolean | ScError @@ -15456,8 +15434,8 @@ export namespace xdr { | null | ScMapEntry[] | ScAddress - | ScNonceKey | ScContractInstance + | ScNonceKey | void; toXDR(format?: 'raw'): Buffer; @@ -15598,6 +15576,8 @@ export namespace xdr { static scSpecTypeAddress(): ScSpecTypeDef; + static scSpecTypeMuxedAddress(): ScSpecTypeDef; + static scSpecTypeOption(value: ScSpecTypeOption): ScSpecTypeDef; static scSpecTypeResult(value: ScSpecTypeResult): ScSpecTypeDef; @@ -15697,6 +15677,8 @@ export namespace xdr { udtErrorEnumV0(value?: ScSpecUdtErrorEnumV0): ScSpecUdtErrorEnumV0; + eventV0(value?: ScSpecEventV0): ScSpecEventV0; + static scSpecEntryFunctionV0(value: ScSpecFunctionV0): ScSpecEntry; static scSpecEntryUdtStructV0(value: ScSpecUdtStructV0): ScSpecEntry; @@ -15707,12 +15689,15 @@ export namespace xdr { static scSpecEntryUdtErrorEnumV0(value: ScSpecUdtErrorEnumV0): ScSpecEntry; + static scSpecEntryEventV0(value: ScSpecEventV0): ScSpecEntry; + value(): | ScSpecFunctionV0 | ScSpecUdtStructV0 | ScSpecUdtUnionV0 | ScSpecUdtEnumV0 - | ScSpecUdtErrorEnumV0; + | ScSpecUdtErrorEnumV0 + | ScSpecEventV0; toXDR(format?: 'raw'): Buffer; @@ -15778,7 +15763,7 @@ export namespace xdr { value?: ConfigSettingContractExecutionLanesV0, ): ConfigSettingContractExecutionLanesV0; - bucketListSizeWindow(value?: Uint64[]): Uint64[]; + liveSorobanStateSizeWindow(value?: Uint64[]): Uint64[]; evictionIterator(value?: EvictionIterator): EvictionIterator; @@ -15786,6 +15771,12 @@ export namespace xdr { value?: ConfigSettingContractParallelComputeV0, ): ConfigSettingContractParallelComputeV0; + contractLedgerCostExt( + value?: ConfigSettingContractLedgerCostExtV0, + ): ConfigSettingContractLedgerCostExtV0; + + contractScpTiming(value?: ConfigSettingScpTiming): ConfigSettingScpTiming; + static configSettingContractMaxSizeBytes(value: number): ConfigSettingEntry; static configSettingContractComputeV0( @@ -15832,7 +15823,7 @@ export namespace xdr { value: ConfigSettingContractExecutionLanesV0, ): ConfigSettingEntry; - static configSettingBucketlistSizeWindow( + static configSettingLiveSorobanStateSizeWindow( value: Uint64[], ): ConfigSettingEntry; @@ -15844,6 +15835,14 @@ export namespace xdr { value: ConfigSettingContractParallelComputeV0, ): ConfigSettingEntry; + static configSettingContractLedgerCostExtV0( + value: ConfigSettingContractLedgerCostExtV0, + ): ConfigSettingEntry; + + static configSettingScpTiming( + value: ConfigSettingScpTiming, + ): ConfigSettingEntry; + value(): | number | ConfigSettingContractComputeV0 @@ -15859,7 +15858,9 @@ export namespace xdr { | ConfigSettingContractExecutionLanesV0 | Uint64[] | EvictionIterator - | ConfigSettingContractParallelComputeV0; + | ConfigSettingContractParallelComputeV0 + | ConfigSettingContractLedgerCostExtV0 + | ConfigSettingScpTiming; toXDR(format?: 'raw'): Buffer; diff --git a/xdr/curr/Stellar-contract-config-setting.x b/xdr/curr/Stellar-contract-config-setting.x index 9f09c7b0e..b075c6b4f 100644 --- a/xdr/curr/Stellar-contract-config-setting.x +++ b/xdr/curr/Stellar-contract-config-setting.x @@ -23,41 +23,62 @@ struct ConfigSettingContractComputeV0 uint32 txMemoryLimit; }; +// Settings for running the contract transactions in parallel. +struct ConfigSettingContractParallelComputeV0 +{ + // Maximum number of clusters with dependent transactions allowed in a + // stage of parallel tx set component. + // This effectively sets the lower bound on the number of physical threads + // necessary to effectively apply transaction sets in parallel. + uint32 ledgerMaxDependentTxClusters; +}; + // Ledger access settings for contracts. struct ConfigSettingContractLedgerCostV0 { - // Maximum number of ledger entry read operations per ledger - uint32 ledgerMaxReadLedgerEntries; - // Maximum number of bytes that can be read per ledger - uint32 ledgerMaxReadBytes; + // Maximum number of disk entry read operations per ledger + uint32 ledgerMaxDiskReadEntries; + // Maximum number of bytes of disk reads that can be performed per ledger + uint32 ledgerMaxDiskReadBytes; // Maximum number of ledger entry write operations per ledger uint32 ledgerMaxWriteLedgerEntries; // Maximum number of bytes that can be written per ledger uint32 ledgerMaxWriteBytes; - // Maximum number of ledger entry read operations per transaction - uint32 txMaxReadLedgerEntries; - // Maximum number of bytes that can be read per transaction - uint32 txMaxReadBytes; + // Maximum number of disk entry read operations per transaction + uint32 txMaxDiskReadEntries; + // Maximum number of bytes of disk reads that can be performed per transaction + uint32 txMaxDiskReadBytes; // Maximum number of ledger entry write operations per transaction uint32 txMaxWriteLedgerEntries; // Maximum number of bytes that can be written per transaction uint32 txMaxWriteBytes; - int64 feeReadLedgerEntry; // Fee per ledger entry read - int64 feeWriteLedgerEntry; // Fee per ledger entry write + int64 feeDiskReadLedgerEntry; // Fee per disk ledger entry read + int64 feeWriteLedgerEntry; // Fee per ledger entry write - int64 feeRead1KB; // Fee for reading 1KB + int64 feeDiskRead1KB; // Fee for reading 1KB disk // The following parameters determine the write fee per 1KB. - // Write fee grows linearly until bucket list reaches this size - int64 bucketListTargetSizeBytes; - // Fee per 1KB write when the bucket list is empty - int64 writeFee1KBBucketListLow; - // Fee per 1KB write when the bucket list has reached `bucketListTargetSizeBytes` - int64 writeFee1KBBucketListHigh; - // Write fee multiplier for any additional data past the first `bucketListTargetSizeBytes` - uint32 bucketListWriteFeeGrowthFactor; + // Rent fee grows linearly until soroban state reaches this size + int64 sorobanStateTargetSizeBytes; + // Fee per 1KB rent when the soroban state is empty + int64 rentFee1KBSorobanStateSizeLow; + // Fee per 1KB rent when the soroban state has reached `sorobanStateTargetSizeBytes` + int64 rentFee1KBSorobanStateSizeHigh; + // Rent fee multiplier for any additional data past the first `sorobanStateTargetSizeBytes` + uint32 sorobanStateRentFeeGrowthFactor; +}; + +// Ledger access settings for contracts. +struct ConfigSettingContractLedgerCostExtV0 +{ + // Maximum number of RO+RW entries in the transaction footprint. + uint32 txMaxFootprintEntries; + // Fee per 1 KB of data written to the ledger. + // Unlike the rent fee, this is a flat fee that is charged for any ledger + // write, independent of the type of the entry being written. + int64 feeWrite1KB; }; // Historical data (pushed to core archives) settings for contracts. @@ -262,11 +283,11 @@ struct StateArchivalSettings { // max number of entries that emit archival meta in a single ledger uint32 maxEntriesToArchive; - // Number of snapshots to use when calculating average BucketList size - uint32 bucketListSizeWindowSampleSize; + // Number of snapshots to use when calculating average live Soroban State size + uint32 liveSorobanStateSizeWindowSampleSize; - // How often to sample the BucketList size for the average, in ledgers - uint32 bucketListWindowSamplePeriod; + // How often to sample the live Soroban State size for the average, in ledgers + uint32 liveSorobanStateSizeWindowSamplePeriod; // Maximum number of bytes that we scan for eviction per ledger uint32 evictionScanSize; @@ -281,6 +302,14 @@ struct EvictionIterator { uint64 bucketFileOffset; }; +struct ConfigSettingSCPTiming { + uint32 ledgerTargetCloseTimeMilliseconds; + uint32 nominationTimeoutInitialMilliseconds; + uint32 nominationTimeoutIncrementMilliseconds; + uint32 ballotTimeoutInitialMilliseconds; + uint32 ballotTimeoutIncrementMilliseconds; +}; + // limits the ContractCostParams size to 20kB const CONTRACT_COST_COUNT_LIMIT = 1024; @@ -301,8 +330,11 @@ enum ConfigSettingID CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES = 9, CONFIG_SETTING_STATE_ARCHIVAL = 10, CONFIG_SETTING_CONTRACT_EXECUTION_LANES = 11, - CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW = 12, - CONFIG_SETTING_EVICTION_ITERATOR = 13 + CONFIG_SETTING_LIVE_SOROBAN_STATE_SIZE_WINDOW = 12, + CONFIG_SETTING_EVICTION_ITERATOR = 13, + CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0 = 14, + CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0 = 15, + CONFIG_SETTING_SCP_TIMING = 16 }; union ConfigSettingEntry switch (ConfigSettingID configSettingID) @@ -331,9 +363,15 @@ case CONFIG_SETTING_STATE_ARCHIVAL: StateArchivalSettings stateArchivalSettings; case CONFIG_SETTING_CONTRACT_EXECUTION_LANES: ConfigSettingContractExecutionLanesV0 contractExecutionLanes; -case CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW: - uint64 bucketListSizeWindow<>; +case CONFIG_SETTING_LIVE_SOROBAN_STATE_SIZE_WINDOW: + uint64 liveSorobanStateSizeWindow<>; case CONFIG_SETTING_EVICTION_ITERATOR: EvictionIterator evictionIterator; +case CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0: + ConfigSettingContractParallelComputeV0 contractParallelCompute; +case CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0: + ConfigSettingContractLedgerCostExtV0 contractLedgerCostExt; +case CONFIG_SETTING_SCP_TIMING: + ConfigSettingSCPTiming contractSCPTiming; }; } diff --git a/xdr/curr/Stellar-contract-spec.x b/xdr/curr/Stellar-contract-spec.x index 6988a6338..ce6e03072 100644 --- a/xdr/curr/Stellar-contract-spec.x +++ b/xdr/curr/Stellar-contract-spec.x @@ -34,6 +34,7 @@ enum SCSpecType SC_SPEC_TYPE_STRING = 16, SC_SPEC_TYPE_SYMBOL = 17, SC_SPEC_TYPE_ADDRESS = 19, + SC_SPEC_TYPE_MUXED_ADDRESS = 20, // Types with parameters. SC_SPEC_TYPE_OPTION = 1000, @@ -104,6 +105,7 @@ case SC_SPEC_TYPE_BYTES: case SC_SPEC_TYPE_STRING: case SC_SPEC_TYPE_SYMBOL: case SC_SPEC_TYPE_ADDRESS: +case SC_SPEC_TYPE_MUXED_ADDRESS: void; case SC_SPEC_TYPE_OPTION: SCSpecTypeOption option; @@ -216,13 +218,45 @@ struct SCSpecFunctionV0 SCSpecTypeDef outputs<1>; }; +enum SCSpecEventParamLocationV0 +{ + SC_SPEC_EVENT_PARAM_LOCATION_DATA = 0, + SC_SPEC_EVENT_PARAM_LOCATION_TOPIC_LIST = 1 +}; + +struct SCSpecEventParamV0 +{ + string doc; + string name<30>; + SCSpecTypeDef type; + SCSpecEventParamLocationV0 location; +}; + +enum SCSpecEventDataFormat +{ + SC_SPEC_EVENT_DATA_FORMAT_SINGLE_VALUE = 0, + SC_SPEC_EVENT_DATA_FORMAT_VEC = 1, + SC_SPEC_EVENT_DATA_FORMAT_MAP = 2 +}; + +struct SCSpecEventV0 +{ + string doc; + string lib<80>; + SCSymbol name; + SCSymbol prefixTopics<2>; + SCSpecEventParamV0 params<50>; + SCSpecEventDataFormat dataFormat; +}; + enum SCSpecEntryKind { SC_SPEC_ENTRY_FUNCTION_V0 = 0, SC_SPEC_ENTRY_UDT_STRUCT_V0 = 1, SC_SPEC_ENTRY_UDT_UNION_V0 = 2, SC_SPEC_ENTRY_UDT_ENUM_V0 = 3, - SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0 = 4 + SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0 = 4, + SC_SPEC_ENTRY_EVENT_V0 = 5 }; union SCSpecEntry switch (SCSpecEntryKind kind) @@ -237,6 +271,8 @@ case SC_SPEC_ENTRY_UDT_ENUM_V0: SCSpecUDTEnumV0 udtEnumV0; case SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0: SCSpecUDTErrorEnumV0 udtErrorEnumV0; +case SC_SPEC_ENTRY_EVENT_V0: + SCSpecEventV0 eventV0; }; } diff --git a/xdr/curr/Stellar-contract.x b/xdr/curr/Stellar-contract.x index 511300562..0e67dc3f3 100644 --- a/xdr/curr/Stellar-contract.x +++ b/xdr/curr/Stellar-contract.x @@ -179,7 +179,16 @@ case CONTRACT_EXECUTABLE_STELLAR_ASSET: enum SCAddressType { SC_ADDRESS_TYPE_ACCOUNT = 0, - SC_ADDRESS_TYPE_CONTRACT = 1 + SC_ADDRESS_TYPE_CONTRACT = 1, + SC_ADDRESS_TYPE_MUXED_ACCOUNT = 2, + SC_ADDRESS_TYPE_CLAIMABLE_BALANCE = 3, + SC_ADDRESS_TYPE_LIQUIDITY_POOL = 4 +}; + +struct MuxedEd25519Account +{ + uint64 id; + uint256 ed25519; }; union SCAddress switch (SCAddressType type) @@ -187,7 +196,13 @@ union SCAddress switch (SCAddressType type) case SC_ADDRESS_TYPE_ACCOUNT: AccountID accountId; case SC_ADDRESS_TYPE_CONTRACT: - Hash contractId; + ContractID contractId; +case SC_ADDRESS_TYPE_MUXED_ACCOUNT: + MuxedEd25519Account muxedAccount; +case SC_ADDRESS_TYPE_CLAIMABLE_BALANCE: + ClaimableBalanceID claimableBalanceId; +case SC_ADDRESS_TYPE_LIQUIDITY_POOL: + PoolID liquidityPoolId; }; %struct SCVal; @@ -264,13 +279,12 @@ case SCV_ADDRESS: // Special SCVals reserved for system-constructed contract-data // ledger keys, not generally usable elsewhere. +case SCV_CONTRACT_INSTANCE: + SCContractInstance instance; case SCV_LEDGER_KEY_CONTRACT_INSTANCE: void; case SCV_LEDGER_KEY_NONCE: SCNonceKey nonce_key; - -case SCV_CONTRACT_INSTANCE: - SCContractInstance instance; }; struct SCMapEntry diff --git a/xdr/curr/Stellar-exporter.x b/xdr/curr/Stellar-exporter.x new file mode 100644 index 000000000..4ac92654b --- /dev/null +++ b/xdr/curr/Stellar-exporter.x @@ -0,0 +1,23 @@ +// Copyright 2024 Stellar Development Foundation and contributors. Licensed +// under the Apache License, Version 2.0. See the COPYING file at the root +// of this distribution or at http://www.apache.org/licenses/LICENSE-2.0 + +%#include "xdr/Stellar-ledger.h" + +namespace stellar +{ + +// Batch of ledgers along with their transaction metadata +struct LedgerCloseMetaBatch +{ + // starting ledger sequence number in the batch + uint32 startSequence; + + // ending ledger sequence number in the batch + uint32 endSequence; + + // Ledger close meta for each ledger within the batch + LedgerCloseMeta ledgerCloseMetas<>; +}; + +} diff --git a/xdr/curr/Stellar-ledger-entries.x b/xdr/curr/Stellar-ledger-entries.x index 5bf4f9d36..b9a9a1688 100644 --- a/xdr/curr/Stellar-ledger-entries.x +++ b/xdr/curr/Stellar-ledger-entries.x @@ -14,7 +14,6 @@ typedef string string32<32>; typedef string string64<64>; typedef int64 SequenceNumber; typedef opaque DataValue<64>; -typedef Hash PoolID; // SHA256(LiquidityPoolParameters) // 1-4 alphanumeric characters right-padded with 0 bytes typedef opaque AssetCode4[4]; @@ -409,17 +408,6 @@ case CLAIMANT_TYPE_V0: } v0; }; -enum ClaimableBalanceIDType -{ - CLAIMABLE_BALANCE_ID_TYPE_V0 = 0 -}; - -union ClaimableBalanceID switch (ClaimableBalanceIDType type) -{ -case CLAIMABLE_BALANCE_ID_TYPE_V0: - Hash v0; -}; - enum ClaimableBalanceFlags { // If set, the issuer account of the asset held by the claimable balance may @@ -682,8 +670,7 @@ enum EnvelopeType enum BucketListType { LIVE = 0, - HOT_ARCHIVE = 1, - COLD_ARCHIVE = 2 + HOT_ARCHIVE = 1 }; /* Entries used to define the bucket list */ @@ -701,19 +688,9 @@ enum HotArchiveBucketEntryType { HOT_ARCHIVE_METAENTRY = -1, // Bucket metadata, should come first. HOT_ARCHIVE_ARCHIVED = 0, // Entry is Archived - HOT_ARCHIVE_LIVE = 1, // Entry was previously HOT_ARCHIVE_ARCHIVED, or HOT_ARCHIVE_DELETED, but + HOT_ARCHIVE_LIVE = 1 // Entry was previously HOT_ARCHIVE_ARCHIVED, but // has been added back to the live BucketList. // Does not need to be persisted. - HOT_ARCHIVE_DELETED = 2 // Entry deleted (Note: must be persisted in archive) -}; - -enum ColdArchiveBucketEntryType -{ - COLD_ARCHIVE_METAENTRY = -1, // Bucket metadata, should come first. - COLD_ARCHIVE_ARCHIVED_LEAF = 0, // Full LedgerEntry that was archived during the epoch - COLD_ARCHIVE_DELETED_LEAF = 1, // LedgerKey that was deleted during the epoch - COLD_ARCHIVE_BOUNDARY_LEAF = 2, // Dummy leaf representing low/high bound - COLD_ARCHIVE_HASH = 3 // Intermediary Merkle hash entry }; struct BucketMetadata @@ -750,48 +727,8 @@ case HOT_ARCHIVE_ARCHIVED: LedgerEntry archivedEntry; case HOT_ARCHIVE_LIVE: -case HOT_ARCHIVE_DELETED: LedgerKey key; case HOT_ARCHIVE_METAENTRY: BucketMetadata metaEntry; }; - -struct ColdArchiveArchivedLeaf -{ - uint32 index; - LedgerEntry archivedEntry; -}; - -struct ColdArchiveDeletedLeaf -{ - uint32 index; - LedgerKey deletedKey; -}; - -struct ColdArchiveBoundaryLeaf -{ - uint32 index; - bool isLowerBound; -}; - -struct ColdArchiveHashEntry -{ - uint32 index; - uint32 level; - Hash hash; -}; - -union ColdArchiveBucketEntry switch (ColdArchiveBucketEntryType type) -{ -case COLD_ARCHIVE_METAENTRY: - BucketMetadata metaEntry; -case COLD_ARCHIVE_ARCHIVED_LEAF: - ColdArchiveArchivedLeaf archivedLeaf; -case COLD_ARCHIVE_DELETED_LEAF: - ColdArchiveDeletedLeaf deletedLeaf; -case COLD_ARCHIVE_BOUNDARY_LEAF: - ColdArchiveBoundaryLeaf boundaryLeaf; -case COLD_ARCHIVE_HASH: - ColdArchiveHashEntry hashEntry; -}; -} \ No newline at end of file +} diff --git a/xdr/curr/Stellar-ledger.x b/xdr/curr/Stellar-ledger.x index 0fc03e2af..a17036b84 100644 --- a/xdr/curr/Stellar-ledger.x +++ b/xdr/curr/Stellar-ledger.x @@ -128,7 +128,7 @@ enum LedgerUpgradeType }; struct ConfigUpgradeSetKey { - Hash contractID; + ContractID contractID; Hash contentHash; }; @@ -164,6 +164,33 @@ enum TxSetComponentType TXSET_COMP_TXS_MAYBE_DISCOUNTED_FEE = 0 }; +// A collection of transactions that *may* have arbitrary read-write data +// dependencies between each other, i.e. in a general case the transaction +// execution order within a cluster may not be arbitrarily shuffled without +// affecting the end result. +typedef TransactionEnvelope DependentTxCluster<>; +// A collection of clusters such that are *guaranteed* to not have read-write +// data dependencies in-between clusters, i.e. such that the cluster execution +// order can be arbitrarily shuffled without affecting the end result. Thus +// clusters can be executed in parallel with respect to each other. +typedef DependentTxCluster ParallelTxExecutionStage<>; + +// Transaction set component that contains transactions organized in a +// parallelism-friendly fashion. +// +// The component consists of several stages that have to be executed in +// sequential order, each stage consists of several clusters that can be +// executed in parallel, and the cluster itself consists of several +// transactions that have to be executed in sequential order in a general case. +struct ParallelTxsComponent +{ + int64* baseFee; + // A sequence of stages that *may* have arbitrary data dependencies between + // each other, i.e. in a general case the stage execution order may not be + // arbitrarily shuffled without affecting the end result. + ParallelTxExecutionStage executionStages<>; +}; + union TxSetComponent switch (TxSetComponentType type) { case TXSET_COMP_TXS_MAYBE_DISCOUNTED_FEE: @@ -178,6 +205,8 @@ union TransactionPhase switch (int v) { case 0: TxSetComponent v0Components<>; +case 1: + ParallelTxsComponent parallelTxsComponent; }; // Transaction sets are the unit used by SCP to decide on transitions @@ -292,7 +321,8 @@ enum LedgerEntryChangeType LEDGER_ENTRY_CREATED = 0, // entry was added to the ledger LEDGER_ENTRY_UPDATED = 1, // entry was modified in the ledger LEDGER_ENTRY_REMOVED = 2, // entry was removed from the ledger - LEDGER_ENTRY_STATE = 3 // value of the entry + LEDGER_ENTRY_STATE = 3, // value of the entry + LEDGER_ENTRY_RESTORED = 4 // archived entry was restored in the ledger }; union LedgerEntryChange switch (LedgerEntryChangeType type) @@ -305,6 +335,8 @@ case LEDGER_ENTRY_REMOVED: LedgerKey removed; case LEDGER_ENTRY_STATE: LedgerEntry state; +case LEDGER_ENTRY_RESTORED: + LedgerEntry restored; }; typedef LedgerEntryChange LedgerEntryChanges<>; @@ -342,7 +374,7 @@ struct ContractEvent // is first, to change ContractEvent into a union. ExtensionPoint ext; - Hash* contractID; + ContractID* contractID; ContractEventType type; union switch (int v) @@ -363,8 +395,6 @@ struct DiagnosticEvent ContractEvent event; }; -typedef DiagnosticEvent DiagnosticEvents<>; - struct SorobanTransactionMetaExtV1 { ExtensionPoint ext; @@ -434,6 +464,64 @@ struct TransactionMetaV3 // Soroban transactions). }; +struct OperationMetaV2 +{ + ExtensionPoint ext; + + LedgerEntryChanges changes; + + ContractEvent events<>; +}; + +struct SorobanTransactionMetaV2 +{ + SorobanTransactionMetaExt ext; + + SCVal* returnValue; +}; + +// Transaction-level events happen at different stages of the ledger apply flow +// (as opposed to the operation events that all happen atomically after +// a transaction is applied). +// This enum represents the possible stages during which an event has been +// emitted. +enum TransactionEventStage { + // The event has happened before any one of the transactions has its + // operations applied. + TRANSACTION_EVENT_STAGE_BEFORE_ALL_TXS = 0, + // The event has happened immediately after operations of the transaction + // have been applied. + TRANSACTION_EVENT_STAGE_AFTER_TX = 1, + // The event has happened after every transaction had its operations + // applied. + TRANSACTION_EVENT_STAGE_AFTER_ALL_TXS = 2 +}; + +// Represents a transaction-level event in metadata. +// Currently this is limited to the fee events (when fee is charged or +// refunded). +struct TransactionEvent { + TransactionEventStage stage; // Stage at which an event has occurred. + ContractEvent event; // The contract event that has occurred. +}; + +struct TransactionMetaV4 +{ + ExtensionPoint ext; + + LedgerEntryChanges txChangesBefore; // tx level changes before operations + // are applied if any + OperationMetaV2 operations<>; // meta for each operation + LedgerEntryChanges txChangesAfter; // tx level changes after operations are + // applied if any + SorobanTransactionMetaV2* sorobanMeta; // Soroban-specific meta (only for + // Soroban transactions). + + TransactionEvent events<>; // Used for transaction-level events (like fee payment) + DiagnosticEvent diagnosticEvents<>; // Used for all diagnostic information +}; + + // This is in Stellar-ledger.x to due to a circular dependency struct InvokeHostFunctionSuccessPreImage { @@ -453,6 +541,8 @@ case 2: TransactionMetaV2 v2; case 3: TransactionMetaV3 v3; +case 4: + TransactionMetaV4 v4; }; // This struct groups together changes on a per transaction basis @@ -465,6 +555,20 @@ struct TransactionResultMeta TransactionMeta txApplyProcessing; }; +// This struct groups together changes on a per transaction basis +// note however that fees and transaction application are done in separate +// phases +struct TransactionResultMetaV1 +{ + ExtensionPoint ext; + + TransactionResultPair result; + LedgerEntryChanges feeProcessing; + TransactionMeta txApplyProcessing; + + LedgerEntryChanges postTxApplyFeeProcessing; +}; + // this represents a single upgrade that was performed as part of a ledger // upgrade struct UpgradeEntryMeta @@ -524,16 +628,42 @@ struct LedgerCloseMetaV1 // other misc information attached to the ledger close SCPHistoryEntry scpInfo<>; - // Size in bytes of BucketList, to support downstream + // Size in bytes of live Soroban state, to support downstream // systems calculating storage fees correctly. - uint64 totalByteSizeOfBucketList; + uint64 totalByteSizeOfLiveSorobanState; - // Temp keys that are being evicted at this ledger. - LedgerKey evictedTemporaryLedgerKeys<>; + // TTL and data/code keys that have been evicted at this ledger. + LedgerKey evictedKeys<>; - // Archived restorable ledger entries that are being - // evicted at this ledger. - LedgerEntry evictedPersistentLedgerEntries<>; + // Maintained for backwards compatibility, should never be populated. + LedgerEntry unused<>; +}; + +struct LedgerCloseMetaV2 +{ + LedgerCloseMetaExt ext; + + LedgerHeaderHistoryEntry ledgerHeader; + + GeneralizedTransactionSet txSet; + + // NB: transactions are sorted in apply order here + // fees for all transactions are processed first + // followed by applying transactions + TransactionResultMetaV1 txProcessing<>; + + // upgrades are applied last + UpgradeEntryMeta upgradesProcessing<>; + + // other misc information attached to the ledger close + SCPHistoryEntry scpInfo<>; + + // Size in bytes of live Soroban state, to support downstream + // systems calculating storage fees correctly. + uint64 totalByteSizeOfLiveSorobanState; + + // TTL and data/code keys that have been evicted at this ledger. + LedgerKey evictedKeys<>; }; union LedgerCloseMeta switch (int v) @@ -542,5 +672,7 @@ case 0: LedgerCloseMetaV0 v0; case 1: LedgerCloseMetaV1 v1; +case 2: + LedgerCloseMetaV2 v2; }; } diff --git a/xdr/curr/Stellar-overlay.x b/xdr/curr/Stellar-overlay.x index b398f883d..1eda1fc17 100644 --- a/xdr/curr/Stellar-overlay.x +++ b/xdr/curr/Stellar-overlay.x @@ -87,14 +87,14 @@ struct PeerAddress uint32 numFailures; }; -// Next ID: 21 +// Next ID: 25 enum MessageType { ERROR_MSG = 0, AUTH = 2, DONT_HAVE = 3, + // GET_PEERS (4) is deprecated - GET_PEERS = 4, // gets a list of peers this guy knows about PEERS = 5, GET_TX_SET = 6, // gets a particular txset by hash @@ -112,8 +112,8 @@ enum MessageType // new messages HELLO = 13, - SURVEY_REQUEST = 14, - SURVEY_RESPONSE = 15, + // SURVEY_REQUEST (14) removed and replaced by TIME_SLICED_SURVEY_REQUEST + // SURVEY_RESPONSE (15) removed and replaced by TIME_SLICED_SURVEY_RESPONSE SEND_MORE = 16, SEND_MORE_EXTENDED = 20, @@ -135,14 +135,11 @@ struct DontHave enum SurveyMessageCommandType { - SURVEY_TOPOLOGY = 0, TIME_SLICED_SURVEY_TOPOLOGY = 1 }; enum SurveyMessageResponseType { - SURVEY_TOPOLOGY_RESPONSE_V0 = 0, - SURVEY_TOPOLOGY_RESPONSE_V1 = 1, SURVEY_TOPOLOGY_RESPONSE_V2 = 2 }; @@ -189,12 +186,6 @@ struct TimeSlicedSurveyRequestMessage uint32 outboundPeersIndex; }; -struct SignedSurveyRequestMessage -{ - Signature requestSignature; - SurveyRequestMessage request; -}; - struct SignedTimeSlicedSurveyRequestMessage { Signature requestSignature; @@ -217,12 +208,6 @@ struct TimeSlicedSurveyResponseMessage uint32 nonce; }; -struct SignedSurveyResponseMessage -{ - Signature responseSignature; - SurveyResponseMessage response; -}; - struct SignedTimeSlicedSurveyResponseMessage { Signature responseSignature; @@ -250,8 +235,6 @@ struct PeerStats uint64 duplicateFetchMessageRecv; }; -typedef PeerStats PeerStatList<25>; - struct TimeSlicedNodeData { uint32 addedAuthenticatedPeers; @@ -280,27 +263,6 @@ struct TimeSlicedPeerData typedef TimeSlicedPeerData TimeSlicedPeerDataList<25>; -struct TopologyResponseBodyV0 -{ - PeerStatList inboundPeers; - PeerStatList outboundPeers; - - uint32 totalInboundPeerCount; - uint32 totalOutboundPeerCount; -}; - -struct TopologyResponseBodyV1 -{ - PeerStatList inboundPeers; - PeerStatList outboundPeers; - - uint32 totalInboundPeerCount; - uint32 totalOutboundPeerCount; - - uint32 maxInboundPeerCount; - uint32 maxOutboundPeerCount; -}; - struct TopologyResponseBodyV2 { TimeSlicedPeerDataList inboundPeers; @@ -310,10 +272,6 @@ struct TopologyResponseBodyV2 union SurveyResponseBody switch (SurveyMessageResponseType type) { -case SURVEY_TOPOLOGY_RESPONSE_V0: - TopologyResponseBodyV0 topologyResponseBodyV0; -case SURVEY_TOPOLOGY_RESPONSE_V1: - TopologyResponseBodyV1 topologyResponseBodyV1; case SURVEY_TOPOLOGY_RESPONSE_V2: TopologyResponseBodyV2 topologyResponseBodyV2; }; @@ -344,8 +302,6 @@ case AUTH: Auth auth; case DONT_HAVE: DontHave dontHave; -case GET_PEERS: - void; case PEERS: PeerAddress peers<100>; @@ -359,12 +315,6 @@ case GENERALIZED_TX_SET: case TRANSACTION: TransactionEnvelope transaction; -case SURVEY_REQUEST: - SignedSurveyRequestMessage signedSurveyRequestMessage; - -case SURVEY_RESPONSE: - SignedSurveyResponseMessage signedSurveyResponseMessage; - case TIME_SLICED_SURVEY_REQUEST: SignedTimeSlicedSurveyRequestMessage signedTimeSlicedSurveyRequestMessage; diff --git a/xdr/curr/Stellar-transaction.x b/xdr/curr/Stellar-transaction.x index 7d3248102..9a14d6e4f 100644 --- a/xdr/curr/Stellar-transaction.x +++ b/xdr/curr/Stellar-transaction.x @@ -594,6 +594,8 @@ struct SorobanAuthorizationEntry SorobanAuthorizedInvocation rootInvocation; }; +typedef SorobanAuthorizationEntry SorobanAuthorizationEntries<>; + /* Upload Wasm, create, and invoke contracts in Soroban. Threshold: med @@ -823,56 +825,6 @@ struct LedgerFootprint LedgerKey readWrite<>; }; -enum ArchivalProofType -{ - EXISTENCE = 0, - NONEXISTENCE = 1 -}; - -struct ArchivalProofNode -{ - uint32 index; - Hash hash; -}; - -typedef ArchivalProofNode ProofLevel<>; - -struct NonexistenceProofBody -{ - ColdArchiveBucketEntry entriesToProve<>; - - // Vector of vectors, where proofLevels[level] - // contains all HashNodes that correspond with that level - ProofLevel proofLevels<>; -}; - -struct ExistenceProofBody -{ - LedgerKey keysToProve<>; - - // Bounds for each key being proved, where bound[n] - // corresponds to keysToProve[n] - ColdArchiveBucketEntry lowBoundEntries<>; - ColdArchiveBucketEntry highBoundEntries<>; - - // Vector of vectors, where proofLevels[level] - // contains all HashNodes that correspond with that level - ProofLevel proofLevels<>; -}; - -struct ArchivalProof -{ - uint32 epoch; // AST Subtree for this proof - - union switch (ArchivalProofType t) - { - case EXISTENCE: - NonexistenceProofBody nonexistenceProof; - case NONEXISTENCE: - ExistenceProofBody existenceProof; - } body; -}; - // Resource limits for a Soroban transaction. // The transaction will fail if it exceeds any of these limits. struct SorobanResources @@ -882,16 +834,30 @@ struct SorobanResources // The maximum number of instructions this transaction can use uint32 instructions; - // The maximum number of bytes this transaction can read from ledger - uint32 readBytes; + // The maximum number of bytes this transaction can read from disk backed entries + uint32 diskReadBytes; // The maximum number of bytes this transaction can write to ledger uint32 writeBytes; }; +struct SorobanResourcesExtV0 +{ + // Vector of indices representing what Soroban + // entries in the footprint are archived, based on the + // order of keys provided in the readWrite footprint. + uint32 archivedSorobanEntries<>; +}; + // The transaction extension for Soroban. struct SorobanTransactionData { - ExtensionPoint ext; + union switch (int v) + { + case 0: + void; + case 1: + SorobanResourcesExtV0 resourceExt; + } ext; SorobanResources resources; // Amount of the transaction `fee` allocated to the Soroban resource fees. // The fraction of `resourceFee` corresponding to `resources` specified @@ -960,7 +926,6 @@ struct Transaction Operation operations; - // reserved for future use union switch (int v) { case 0: diff --git a/xdr/curr/Stellar-types.x b/xdr/curr/Stellar-types.x index 73c4e7958..f383d2e41 100644 --- a/xdr/curr/Stellar-types.x +++ b/xdr/curr/Stellar-types.x @@ -84,6 +84,8 @@ typedef opaque SignatureHint[4]; typedef PublicKey NodeID; typedef PublicKey AccountID; +typedef Hash ContractID; + struct Curve25519Secret { opaque key[32]; @@ -134,4 +136,17 @@ struct SerializedBinaryFuseFilter // Array of uint8_t, uint16_t, or uint32_t depending on filter type opaque fingerprints<>; }; + +typedef Hash PoolID; // SHA256(LiquidityPoolParameters) + +enum ClaimableBalanceIDType +{ + CLAIMABLE_BALANCE_ID_TYPE_V0 = 0 +}; + +union ClaimableBalanceID switch (ClaimableBalanceIDType type) +{ +case CLAIMABLE_BALANCE_ID_TYPE_V0: + Hash v0; +}; } \ No newline at end of file diff --git a/xdr/next/Stellar-contract-config-setting.x b/xdr/next/Stellar-contract-config-setting.x index bd96f9f45..b075c6b4f 100644 --- a/xdr/next/Stellar-contract-config-setting.x +++ b/xdr/next/Stellar-contract-config-setting.x @@ -26,50 +26,59 @@ struct ConfigSettingContractComputeV0 // Settings for running the contract transactions in parallel. struct ConfigSettingContractParallelComputeV0 { - // Maximum number of threads that can be used to apply a - // transaction set to close the ledger. - // This doesn't limit or defined the actual number of - // threads used and instead only defines the minimum number - // of physical threads that a tier-1 validator has to support - // in order to not fall out of sync with the network. - uint32 ledgerMaxParallelThreads; + // Maximum number of clusters with dependent transactions allowed in a + // stage of parallel tx set component. + // This effectively sets the lower bound on the number of physical threads + // necessary to effectively apply transaction sets in parallel. + uint32 ledgerMaxDependentTxClusters; }; // Ledger access settings for contracts. struct ConfigSettingContractLedgerCostV0 { - // Maximum number of ledger entry read operations per ledger - uint32 ledgerMaxReadLedgerEntries; - // Maximum number of bytes that can be read per ledger - uint32 ledgerMaxReadBytes; + // Maximum number of disk entry read operations per ledger + uint32 ledgerMaxDiskReadEntries; + // Maximum number of bytes of disk reads that can be performed per ledger + uint32 ledgerMaxDiskReadBytes; // Maximum number of ledger entry write operations per ledger uint32 ledgerMaxWriteLedgerEntries; // Maximum number of bytes that can be written per ledger uint32 ledgerMaxWriteBytes; - // Maximum number of ledger entry read operations per transaction - uint32 txMaxReadLedgerEntries; - // Maximum number of bytes that can be read per transaction - uint32 txMaxReadBytes; + // Maximum number of disk entry read operations per transaction + uint32 txMaxDiskReadEntries; + // Maximum number of bytes of disk reads that can be performed per transaction + uint32 txMaxDiskReadBytes; // Maximum number of ledger entry write operations per transaction uint32 txMaxWriteLedgerEntries; // Maximum number of bytes that can be written per transaction uint32 txMaxWriteBytes; - int64 feeReadLedgerEntry; // Fee per ledger entry read - int64 feeWriteLedgerEntry; // Fee per ledger entry write + int64 feeDiskReadLedgerEntry; // Fee per disk ledger entry read + int64 feeWriteLedgerEntry; // Fee per ledger entry write - int64 feeRead1KB; // Fee for reading 1KB + int64 feeDiskRead1KB; // Fee for reading 1KB disk // The following parameters determine the write fee per 1KB. - // Write fee grows linearly until bucket list reaches this size - int64 bucketListTargetSizeBytes; - // Fee per 1KB write when the bucket list is empty - int64 writeFee1KBBucketListLow; - // Fee per 1KB write when the bucket list has reached `bucketListTargetSizeBytes` - int64 writeFee1KBBucketListHigh; - // Write fee multiplier for any additional data past the first `bucketListTargetSizeBytes` - uint32 bucketListWriteFeeGrowthFactor; + // Rent fee grows linearly until soroban state reaches this size + int64 sorobanStateTargetSizeBytes; + // Fee per 1KB rent when the soroban state is empty + int64 rentFee1KBSorobanStateSizeLow; + // Fee per 1KB rent when the soroban state has reached `sorobanStateTargetSizeBytes` + int64 rentFee1KBSorobanStateSizeHigh; + // Rent fee multiplier for any additional data past the first `sorobanStateTargetSizeBytes` + uint32 sorobanStateRentFeeGrowthFactor; +}; + +// Ledger access settings for contracts. +struct ConfigSettingContractLedgerCostExtV0 +{ + // Maximum number of RO+RW entries in the transaction footprint. + uint32 txMaxFootprintEntries; + // Fee per 1 KB of data written to the ledger. + // Unlike the rent fee, this is a flat fee that is charged for any ledger + // write, independent of the type of the entry being written. + int64 feeWrite1KB; }; // Historical data (pushed to core archives) settings for contracts. @@ -274,11 +283,11 @@ struct StateArchivalSettings { // max number of entries that emit archival meta in a single ledger uint32 maxEntriesToArchive; - // Number of snapshots to use when calculating average BucketList size - uint32 bucketListSizeWindowSampleSize; + // Number of snapshots to use when calculating average live Soroban State size + uint32 liveSorobanStateSizeWindowSampleSize; - // How often to sample the BucketList size for the average, in ledgers - uint32 bucketListWindowSamplePeriod; + // How often to sample the live Soroban State size for the average, in ledgers + uint32 liveSorobanStateSizeWindowSamplePeriod; // Maximum number of bytes that we scan for eviction per ledger uint32 evictionScanSize; @@ -293,6 +302,14 @@ struct EvictionIterator { uint64 bucketFileOffset; }; +struct ConfigSettingSCPTiming { + uint32 ledgerTargetCloseTimeMilliseconds; + uint32 nominationTimeoutInitialMilliseconds; + uint32 nominationTimeoutIncrementMilliseconds; + uint32 ballotTimeoutInitialMilliseconds; + uint32 ballotTimeoutIncrementMilliseconds; +}; + // limits the ContractCostParams size to 20kB const CONTRACT_COST_COUNT_LIMIT = 1024; @@ -313,9 +330,11 @@ enum ConfigSettingID CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES = 9, CONFIG_SETTING_STATE_ARCHIVAL = 10, CONFIG_SETTING_CONTRACT_EXECUTION_LANES = 11, - CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW = 12, + CONFIG_SETTING_LIVE_SOROBAN_STATE_SIZE_WINDOW = 12, CONFIG_SETTING_EVICTION_ITERATOR = 13, - CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0 = 14 + CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0 = 14, + CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0 = 15, + CONFIG_SETTING_SCP_TIMING = 16 }; union ConfigSettingEntry switch (ConfigSettingID configSettingID) @@ -344,11 +363,15 @@ case CONFIG_SETTING_STATE_ARCHIVAL: StateArchivalSettings stateArchivalSettings; case CONFIG_SETTING_CONTRACT_EXECUTION_LANES: ConfigSettingContractExecutionLanesV0 contractExecutionLanes; -case CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW: - uint64 bucketListSizeWindow<>; +case CONFIG_SETTING_LIVE_SOROBAN_STATE_SIZE_WINDOW: + uint64 liveSorobanStateSizeWindow<>; case CONFIG_SETTING_EVICTION_ITERATOR: EvictionIterator evictionIterator; case CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0: ConfigSettingContractParallelComputeV0 contractParallelCompute; +case CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0: + ConfigSettingContractLedgerCostExtV0 contractLedgerCostExt; +case CONFIG_SETTING_SCP_TIMING: + ConfigSettingSCPTiming contractSCPTiming; }; } diff --git a/xdr/next/Stellar-contract-spec.x b/xdr/next/Stellar-contract-spec.x index 6988a6338..ce6e03072 100644 --- a/xdr/next/Stellar-contract-spec.x +++ b/xdr/next/Stellar-contract-spec.x @@ -34,6 +34,7 @@ enum SCSpecType SC_SPEC_TYPE_STRING = 16, SC_SPEC_TYPE_SYMBOL = 17, SC_SPEC_TYPE_ADDRESS = 19, + SC_SPEC_TYPE_MUXED_ADDRESS = 20, // Types with parameters. SC_SPEC_TYPE_OPTION = 1000, @@ -104,6 +105,7 @@ case SC_SPEC_TYPE_BYTES: case SC_SPEC_TYPE_STRING: case SC_SPEC_TYPE_SYMBOL: case SC_SPEC_TYPE_ADDRESS: +case SC_SPEC_TYPE_MUXED_ADDRESS: void; case SC_SPEC_TYPE_OPTION: SCSpecTypeOption option; @@ -216,13 +218,45 @@ struct SCSpecFunctionV0 SCSpecTypeDef outputs<1>; }; +enum SCSpecEventParamLocationV0 +{ + SC_SPEC_EVENT_PARAM_LOCATION_DATA = 0, + SC_SPEC_EVENT_PARAM_LOCATION_TOPIC_LIST = 1 +}; + +struct SCSpecEventParamV0 +{ + string doc; + string name<30>; + SCSpecTypeDef type; + SCSpecEventParamLocationV0 location; +}; + +enum SCSpecEventDataFormat +{ + SC_SPEC_EVENT_DATA_FORMAT_SINGLE_VALUE = 0, + SC_SPEC_EVENT_DATA_FORMAT_VEC = 1, + SC_SPEC_EVENT_DATA_FORMAT_MAP = 2 +}; + +struct SCSpecEventV0 +{ + string doc; + string lib<80>; + SCSymbol name; + SCSymbol prefixTopics<2>; + SCSpecEventParamV0 params<50>; + SCSpecEventDataFormat dataFormat; +}; + enum SCSpecEntryKind { SC_SPEC_ENTRY_FUNCTION_V0 = 0, SC_SPEC_ENTRY_UDT_STRUCT_V0 = 1, SC_SPEC_ENTRY_UDT_UNION_V0 = 2, SC_SPEC_ENTRY_UDT_ENUM_V0 = 3, - SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0 = 4 + SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0 = 4, + SC_SPEC_ENTRY_EVENT_V0 = 5 }; union SCSpecEntry switch (SCSpecEntryKind kind) @@ -237,6 +271,8 @@ case SC_SPEC_ENTRY_UDT_ENUM_V0: SCSpecUDTEnumV0 udtEnumV0; case SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0: SCSpecUDTErrorEnumV0 udtErrorEnumV0; +case SC_SPEC_ENTRY_EVENT_V0: + SCSpecEventV0 eventV0; }; } diff --git a/xdr/next/Stellar-contract.x b/xdr/next/Stellar-contract.x index 511300562..0e67dc3f3 100644 --- a/xdr/next/Stellar-contract.x +++ b/xdr/next/Stellar-contract.x @@ -179,7 +179,16 @@ case CONTRACT_EXECUTABLE_STELLAR_ASSET: enum SCAddressType { SC_ADDRESS_TYPE_ACCOUNT = 0, - SC_ADDRESS_TYPE_CONTRACT = 1 + SC_ADDRESS_TYPE_CONTRACT = 1, + SC_ADDRESS_TYPE_MUXED_ACCOUNT = 2, + SC_ADDRESS_TYPE_CLAIMABLE_BALANCE = 3, + SC_ADDRESS_TYPE_LIQUIDITY_POOL = 4 +}; + +struct MuxedEd25519Account +{ + uint64 id; + uint256 ed25519; }; union SCAddress switch (SCAddressType type) @@ -187,7 +196,13 @@ union SCAddress switch (SCAddressType type) case SC_ADDRESS_TYPE_ACCOUNT: AccountID accountId; case SC_ADDRESS_TYPE_CONTRACT: - Hash contractId; + ContractID contractId; +case SC_ADDRESS_TYPE_MUXED_ACCOUNT: + MuxedEd25519Account muxedAccount; +case SC_ADDRESS_TYPE_CLAIMABLE_BALANCE: + ClaimableBalanceID claimableBalanceId; +case SC_ADDRESS_TYPE_LIQUIDITY_POOL: + PoolID liquidityPoolId; }; %struct SCVal; @@ -264,13 +279,12 @@ case SCV_ADDRESS: // Special SCVals reserved for system-constructed contract-data // ledger keys, not generally usable elsewhere. +case SCV_CONTRACT_INSTANCE: + SCContractInstance instance; case SCV_LEDGER_KEY_CONTRACT_INSTANCE: void; case SCV_LEDGER_KEY_NONCE: SCNonceKey nonce_key; - -case SCV_CONTRACT_INSTANCE: - SCContractInstance instance; }; struct SCMapEntry diff --git a/xdr/next/Stellar-exporter.x b/xdr/next/Stellar-exporter.x new file mode 100644 index 000000000..4ac92654b --- /dev/null +++ b/xdr/next/Stellar-exporter.x @@ -0,0 +1,23 @@ +// Copyright 2024 Stellar Development Foundation and contributors. Licensed +// under the Apache License, Version 2.0. See the COPYING file at the root +// of this distribution or at http://www.apache.org/licenses/LICENSE-2.0 + +%#include "xdr/Stellar-ledger.h" + +namespace stellar +{ + +// Batch of ledgers along with their transaction metadata +struct LedgerCloseMetaBatch +{ + // starting ledger sequence number in the batch + uint32 startSequence; + + // ending ledger sequence number in the batch + uint32 endSequence; + + // Ledger close meta for each ledger within the batch + LedgerCloseMeta ledgerCloseMetas<>; +}; + +} diff --git a/xdr/next/Stellar-ledger-entries.x b/xdr/next/Stellar-ledger-entries.x index 9238fcdaf..b9a9a1688 100644 --- a/xdr/next/Stellar-ledger-entries.x +++ b/xdr/next/Stellar-ledger-entries.x @@ -14,7 +14,6 @@ typedef string string32<32>; typedef string string64<64>; typedef int64 SequenceNumber; typedef opaque DataValue<64>; -typedef Hash PoolID; // SHA256(LiquidityPoolParameters) // 1-4 alphanumeric characters right-padded with 0 bytes typedef opaque AssetCode4[4]; @@ -409,17 +408,6 @@ case CLAIMANT_TYPE_V0: } v0; }; -enum ClaimableBalanceIDType -{ - CLAIMABLE_BALANCE_ID_TYPE_V0 = 0 -}; - -union ClaimableBalanceID switch (ClaimableBalanceIDType type) -{ -case CLAIMABLE_BALANCE_ID_TYPE_V0: - Hash v0; -}; - enum ClaimableBalanceFlags { // If set, the issuer account of the asset held by the claimable balance may @@ -682,8 +670,7 @@ enum EnvelopeType enum BucketListType { LIVE = 0, - HOT_ARCHIVE = 1, - COLD_ARCHIVE = 2 + HOT_ARCHIVE = 1 }; /* Entries used to define the bucket list */ @@ -701,19 +688,9 @@ enum HotArchiveBucketEntryType { HOT_ARCHIVE_METAENTRY = -1, // Bucket metadata, should come first. HOT_ARCHIVE_ARCHIVED = 0, // Entry is Archived - HOT_ARCHIVE_LIVE = 1, // Entry was previously HOT_ARCHIVE_ARCHIVED, or HOT_ARCHIVE_DELETED, but + HOT_ARCHIVE_LIVE = 1 // Entry was previously HOT_ARCHIVE_ARCHIVED, but // has been added back to the live BucketList. // Does not need to be persisted. - HOT_ARCHIVE_DELETED = 2 // Entry deleted (Note: must be persisted in archive) -}; - -enum ColdArchiveBucketEntryType -{ - COLD_ARCHIVE_METAENTRY = -1, // Bucket metadata, should come first. - COLD_ARCHIVE_ARCHIVED_LEAF = 0, // Full LedgerEntry that was archived during the epoch - COLD_ARCHIVE_DELETED_LEAF = 1, // LedgerKey that was deleted during the epoch - COLD_ARCHIVE_BOUNDARY_LEAF = 2, // Dummy leaf representing low/high bound - COLD_ARCHIVE_HASH = 3 // Intermediary Merkle hash entry }; struct BucketMetadata @@ -750,48 +727,8 @@ case HOT_ARCHIVE_ARCHIVED: LedgerEntry archivedEntry; case HOT_ARCHIVE_LIVE: -case HOT_ARCHIVE_DELETED: LedgerKey key; case HOT_ARCHIVE_METAENTRY: BucketMetadata metaEntry; }; - -struct ColdArchiveArchivedLeaf -{ - uint32 index; - LedgerEntry archivedEntry; -}; - -struct ColdArchiveDeletedLeaf -{ - uint32 index; - LedgerKey deletedKey; -}; - -struct ColdArchiveBoundaryLeaf -{ - uint32 index; - bool isLowerBound; -}; - -struct ColdArchiveHashEntry -{ - uint32 index; - uint32 level; - Hash hash; -}; - -union ColdArchiveBucketEntry switch (ColdArchiveBucketEntryType type) -{ -case COLD_ARCHIVE_METAENTRY: - BucketMetadata metaEntry; -case COLD_ARCHIVE_ARCHIVED_LEAF: - ColdArchiveArchivedLeaf archivedLeaf; -case COLD_ARCHIVE_DELETED_LEAF: - ColdArchiveDeletedLeaf deletedLeaf; -case COLD_ARCHIVE_BOUNDARY_LEAF: - ColdArchiveBoundaryLeaf boundaryLeaf; -case COLD_ARCHIVE_HASH: - ColdArchiveHashEntry hashEntry; -}; } diff --git a/xdr/next/Stellar-ledger.x b/xdr/next/Stellar-ledger.x index 9c0d0360e..a17036b84 100644 --- a/xdr/next/Stellar-ledger.x +++ b/xdr/next/Stellar-ledger.x @@ -128,7 +128,7 @@ enum LedgerUpgradeType }; struct ConfigUpgradeSetKey { - Hash contractID; + ContractID contractID; Hash contentHash; }; @@ -164,12 +164,30 @@ enum TxSetComponentType TXSET_COMP_TXS_MAYBE_DISCOUNTED_FEE = 0 }; -typedef TransactionEnvelope TxExecutionThread<>; -typedef TxExecutionThread ParallelTxExecutionStage<>; - +// A collection of transactions that *may* have arbitrary read-write data +// dependencies between each other, i.e. in a general case the transaction +// execution order within a cluster may not be arbitrarily shuffled without +// affecting the end result. +typedef TransactionEnvelope DependentTxCluster<>; +// A collection of clusters such that are *guaranteed* to not have read-write +// data dependencies in-between clusters, i.e. such that the cluster execution +// order can be arbitrarily shuffled without affecting the end result. Thus +// clusters can be executed in parallel with respect to each other. +typedef DependentTxCluster ParallelTxExecutionStage<>; + +// Transaction set component that contains transactions organized in a +// parallelism-friendly fashion. +// +// The component consists of several stages that have to be executed in +// sequential order, each stage consists of several clusters that can be +// executed in parallel, and the cluster itself consists of several +// transactions that have to be executed in sequential order in a general case. struct ParallelTxsComponent { int64* baseFee; + // A sequence of stages that *may* have arbitrary data dependencies between + // each other, i.e. in a general case the stage execution order may not be + // arbitrarily shuffled without affecting the end result. ParallelTxExecutionStage executionStages<>; }; @@ -303,7 +321,8 @@ enum LedgerEntryChangeType LEDGER_ENTRY_CREATED = 0, // entry was added to the ledger LEDGER_ENTRY_UPDATED = 1, // entry was modified in the ledger LEDGER_ENTRY_REMOVED = 2, // entry was removed from the ledger - LEDGER_ENTRY_STATE = 3 // value of the entry + LEDGER_ENTRY_STATE = 3, // value of the entry + LEDGER_ENTRY_RESTORED = 4 // archived entry was restored in the ledger }; union LedgerEntryChange switch (LedgerEntryChangeType type) @@ -316,6 +335,8 @@ case LEDGER_ENTRY_REMOVED: LedgerKey removed; case LEDGER_ENTRY_STATE: LedgerEntry state; +case LEDGER_ENTRY_RESTORED: + LedgerEntry restored; }; typedef LedgerEntryChange LedgerEntryChanges<>; @@ -353,7 +374,7 @@ struct ContractEvent // is first, to change ContractEvent into a union. ExtensionPoint ext; - Hash* contractID; + ContractID* contractID; ContractEventType type; union switch (int v) @@ -443,6 +464,64 @@ struct TransactionMetaV3 // Soroban transactions). }; +struct OperationMetaV2 +{ + ExtensionPoint ext; + + LedgerEntryChanges changes; + + ContractEvent events<>; +}; + +struct SorobanTransactionMetaV2 +{ + SorobanTransactionMetaExt ext; + + SCVal* returnValue; +}; + +// Transaction-level events happen at different stages of the ledger apply flow +// (as opposed to the operation events that all happen atomically after +// a transaction is applied). +// This enum represents the possible stages during which an event has been +// emitted. +enum TransactionEventStage { + // The event has happened before any one of the transactions has its + // operations applied. + TRANSACTION_EVENT_STAGE_BEFORE_ALL_TXS = 0, + // The event has happened immediately after operations of the transaction + // have been applied. + TRANSACTION_EVENT_STAGE_AFTER_TX = 1, + // The event has happened after every transaction had its operations + // applied. + TRANSACTION_EVENT_STAGE_AFTER_ALL_TXS = 2 +}; + +// Represents a transaction-level event in metadata. +// Currently this is limited to the fee events (when fee is charged or +// refunded). +struct TransactionEvent { + TransactionEventStage stage; // Stage at which an event has occurred. + ContractEvent event; // The contract event that has occurred. +}; + +struct TransactionMetaV4 +{ + ExtensionPoint ext; + + LedgerEntryChanges txChangesBefore; // tx level changes before operations + // are applied if any + OperationMetaV2 operations<>; // meta for each operation + LedgerEntryChanges txChangesAfter; // tx level changes after operations are + // applied if any + SorobanTransactionMetaV2* sorobanMeta; // Soroban-specific meta (only for + // Soroban transactions). + + TransactionEvent events<>; // Used for transaction-level events (like fee payment) + DiagnosticEvent diagnosticEvents<>; // Used for all diagnostic information +}; + + // This is in Stellar-ledger.x to due to a circular dependency struct InvokeHostFunctionSuccessPreImage { @@ -462,6 +541,8 @@ case 2: TransactionMetaV2 v2; case 3: TransactionMetaV3 v3; +case 4: + TransactionMetaV4 v4; }; // This struct groups together changes on a per transaction basis @@ -474,6 +555,20 @@ struct TransactionResultMeta TransactionMeta txApplyProcessing; }; +// This struct groups together changes on a per transaction basis +// note however that fees and transaction application are done in separate +// phases +struct TransactionResultMetaV1 +{ + ExtensionPoint ext; + + TransactionResultPair result; + LedgerEntryChanges feeProcessing; + TransactionMeta txApplyProcessing; + + LedgerEntryChanges postTxApplyFeeProcessing; +}; + // this represents a single upgrade that was performed as part of a ledger // upgrade struct UpgradeEntryMeta @@ -533,16 +628,42 @@ struct LedgerCloseMetaV1 // other misc information attached to the ledger close SCPHistoryEntry scpInfo<>; - // Size in bytes of BucketList, to support downstream + // Size in bytes of live Soroban state, to support downstream // systems calculating storage fees correctly. - uint64 totalByteSizeOfBucketList; + uint64 totalByteSizeOfLiveSorobanState; - // Temp keys that are being evicted at this ledger. - LedgerKey evictedTemporaryLedgerKeys<>; + // TTL and data/code keys that have been evicted at this ledger. + LedgerKey evictedKeys<>; - // Archived restorable ledger entries that are being - // evicted at this ledger. - LedgerEntry evictedPersistentLedgerEntries<>; + // Maintained for backwards compatibility, should never be populated. + LedgerEntry unused<>; +}; + +struct LedgerCloseMetaV2 +{ + LedgerCloseMetaExt ext; + + LedgerHeaderHistoryEntry ledgerHeader; + + GeneralizedTransactionSet txSet; + + // NB: transactions are sorted in apply order here + // fees for all transactions are processed first + // followed by applying transactions + TransactionResultMetaV1 txProcessing<>; + + // upgrades are applied last + UpgradeEntryMeta upgradesProcessing<>; + + // other misc information attached to the ledger close + SCPHistoryEntry scpInfo<>; + + // Size in bytes of live Soroban state, to support downstream + // systems calculating storage fees correctly. + uint64 totalByteSizeOfLiveSorobanState; + + // TTL and data/code keys that have been evicted at this ledger. + LedgerKey evictedKeys<>; }; union LedgerCloseMeta switch (int v) @@ -551,5 +672,7 @@ case 0: LedgerCloseMetaV0 v0; case 1: LedgerCloseMetaV1 v1; +case 2: + LedgerCloseMetaV2 v2; }; } diff --git a/xdr/next/Stellar-overlay.x b/xdr/next/Stellar-overlay.x index b398f883d..1eda1fc17 100644 --- a/xdr/next/Stellar-overlay.x +++ b/xdr/next/Stellar-overlay.x @@ -87,14 +87,14 @@ struct PeerAddress uint32 numFailures; }; -// Next ID: 21 +// Next ID: 25 enum MessageType { ERROR_MSG = 0, AUTH = 2, DONT_HAVE = 3, + // GET_PEERS (4) is deprecated - GET_PEERS = 4, // gets a list of peers this guy knows about PEERS = 5, GET_TX_SET = 6, // gets a particular txset by hash @@ -112,8 +112,8 @@ enum MessageType // new messages HELLO = 13, - SURVEY_REQUEST = 14, - SURVEY_RESPONSE = 15, + // SURVEY_REQUEST (14) removed and replaced by TIME_SLICED_SURVEY_REQUEST + // SURVEY_RESPONSE (15) removed and replaced by TIME_SLICED_SURVEY_RESPONSE SEND_MORE = 16, SEND_MORE_EXTENDED = 20, @@ -135,14 +135,11 @@ struct DontHave enum SurveyMessageCommandType { - SURVEY_TOPOLOGY = 0, TIME_SLICED_SURVEY_TOPOLOGY = 1 }; enum SurveyMessageResponseType { - SURVEY_TOPOLOGY_RESPONSE_V0 = 0, - SURVEY_TOPOLOGY_RESPONSE_V1 = 1, SURVEY_TOPOLOGY_RESPONSE_V2 = 2 }; @@ -189,12 +186,6 @@ struct TimeSlicedSurveyRequestMessage uint32 outboundPeersIndex; }; -struct SignedSurveyRequestMessage -{ - Signature requestSignature; - SurveyRequestMessage request; -}; - struct SignedTimeSlicedSurveyRequestMessage { Signature requestSignature; @@ -217,12 +208,6 @@ struct TimeSlicedSurveyResponseMessage uint32 nonce; }; -struct SignedSurveyResponseMessage -{ - Signature responseSignature; - SurveyResponseMessage response; -}; - struct SignedTimeSlicedSurveyResponseMessage { Signature responseSignature; @@ -250,8 +235,6 @@ struct PeerStats uint64 duplicateFetchMessageRecv; }; -typedef PeerStats PeerStatList<25>; - struct TimeSlicedNodeData { uint32 addedAuthenticatedPeers; @@ -280,27 +263,6 @@ struct TimeSlicedPeerData typedef TimeSlicedPeerData TimeSlicedPeerDataList<25>; -struct TopologyResponseBodyV0 -{ - PeerStatList inboundPeers; - PeerStatList outboundPeers; - - uint32 totalInboundPeerCount; - uint32 totalOutboundPeerCount; -}; - -struct TopologyResponseBodyV1 -{ - PeerStatList inboundPeers; - PeerStatList outboundPeers; - - uint32 totalInboundPeerCount; - uint32 totalOutboundPeerCount; - - uint32 maxInboundPeerCount; - uint32 maxOutboundPeerCount; -}; - struct TopologyResponseBodyV2 { TimeSlicedPeerDataList inboundPeers; @@ -310,10 +272,6 @@ struct TopologyResponseBodyV2 union SurveyResponseBody switch (SurveyMessageResponseType type) { -case SURVEY_TOPOLOGY_RESPONSE_V0: - TopologyResponseBodyV0 topologyResponseBodyV0; -case SURVEY_TOPOLOGY_RESPONSE_V1: - TopologyResponseBodyV1 topologyResponseBodyV1; case SURVEY_TOPOLOGY_RESPONSE_V2: TopologyResponseBodyV2 topologyResponseBodyV2; }; @@ -344,8 +302,6 @@ case AUTH: Auth auth; case DONT_HAVE: DontHave dontHave; -case GET_PEERS: - void; case PEERS: PeerAddress peers<100>; @@ -359,12 +315,6 @@ case GENERALIZED_TX_SET: case TRANSACTION: TransactionEnvelope transaction; -case SURVEY_REQUEST: - SignedSurveyRequestMessage signedSurveyRequestMessage; - -case SURVEY_RESPONSE: - SignedSurveyResponseMessage signedSurveyResponseMessage; - case TIME_SLICED_SURVEY_REQUEST: SignedTimeSlicedSurveyRequestMessage signedTimeSlicedSurveyRequestMessage; diff --git a/xdr/next/Stellar-transaction.x b/xdr/next/Stellar-transaction.x index f285506f2..9a14d6e4f 100644 --- a/xdr/next/Stellar-transaction.x +++ b/xdr/next/Stellar-transaction.x @@ -594,6 +594,8 @@ struct SorobanAuthorizationEntry SorobanAuthorizedInvocation rootInvocation; }; +typedef SorobanAuthorizationEntry SorobanAuthorizationEntries<>; + /* Upload Wasm, create, and invoke contracts in Soroban. Threshold: med @@ -823,56 +825,6 @@ struct LedgerFootprint LedgerKey readWrite<>; }; -enum ArchivalProofType -{ - EXISTENCE = 0, - NONEXISTENCE = 1 -}; - -struct ArchivalProofNode -{ - uint32 index; - Hash hash; -}; - -typedef ArchivalProofNode ProofLevel<>; - -struct NonexistenceProofBody -{ - ColdArchiveBucketEntry entriesToProve<>; - - // Vector of vectors, where proofLevels[level] - // contains all HashNodes that correspond with that level - ProofLevel proofLevels<>; -}; - -struct ExistenceProofBody -{ - LedgerKey keysToProve<>; - - // Bounds for each key being proved, where bound[n] - // corresponds to keysToProve[n] - ColdArchiveBucketEntry lowBoundEntries<>; - ColdArchiveBucketEntry highBoundEntries<>; - - // Vector of vectors, where proofLevels[level] - // contains all HashNodes that correspond with that level - ProofLevel proofLevels<>; -}; - -struct ArchivalProof -{ - uint32 epoch; // AST Subtree for this proof - - union switch (ArchivalProofType t) - { - case EXISTENCE: - NonexistenceProofBody nonexistenceProof; - case NONEXISTENCE: - ExistenceProofBody existenceProof; - } body; -}; - // Resource limits for a Soroban transaction. // The transaction will fail if it exceeds any of these limits. struct SorobanResources @@ -882,12 +834,20 @@ struct SorobanResources // The maximum number of instructions this transaction can use uint32 instructions; - // The maximum number of bytes this transaction can read from ledger - uint32 readBytes; + // The maximum number of bytes this transaction can read from disk backed entries + uint32 diskReadBytes; // The maximum number of bytes this transaction can write to ledger uint32 writeBytes; }; +struct SorobanResourcesExtV0 +{ + // Vector of indices representing what Soroban + // entries in the footprint are archived, based on the + // order of keys provided in the readWrite footprint. + uint32 archivedSorobanEntries<>; +}; + // The transaction extension for Soroban. struct SorobanTransactionData { @@ -896,7 +856,7 @@ struct SorobanTransactionData case 0: void; case 1: - ArchivalProof proofs<>; + SorobanResourcesExtV0 resourceExt; } ext; SorobanResources resources; // Amount of the transaction `fee` allocated to the Soroban resource fees. @@ -966,7 +926,6 @@ struct Transaction Operation operations; - // reserved for future use union switch (int v) { case 0: diff --git a/xdr/next/Stellar-types.x b/xdr/next/Stellar-types.x index 758c2954e..f383d2e41 100644 --- a/xdr/next/Stellar-types.x +++ b/xdr/next/Stellar-types.x @@ -84,6 +84,8 @@ typedef opaque SignatureHint[4]; typedef PublicKey NodeID; typedef PublicKey AccountID; +typedef Hash ContractID; + struct Curve25519Secret { opaque key[32]; @@ -134,4 +136,17 @@ struct SerializedBinaryFuseFilter // Array of uint8_t, uint16_t, or uint32_t depending on filter type opaque fingerprints<>; }; -} + +typedef Hash PoolID; // SHA256(LiquidityPoolParameters) + +enum ClaimableBalanceIDType +{ + CLAIMABLE_BALANCE_ID_TYPE_V0 = 0 +}; + +union ClaimableBalanceID switch (ClaimableBalanceIDType type) +{ +case CLAIMABLE_BALANCE_ID_TYPE_V0: + Hash v0; +}; +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 541aee95e..714bea429 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,10 +10,10 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@babel/cli@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.27.0.tgz#076603b25fc7dd88298ea94ab249c8237c7e71cc" - integrity sha512-bZfxn8DRxwiVzDO5CEeV+7IqXeCkzI4yYnrQbpwjT76CUyossQc6RYE7n+xfm0/2k40lPaCpW0FhxYs7EBAetw== +"@babel/cli@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.27.2.tgz#d54560567a73a269b31d3201bedb70692ace8684" + integrity sha512-cfd7DnGlhH6OIyuPSSj3vcfIdnbXukhAyKY8NaZrFadC7pXyL9mOL5WgjcptiEJLi5k3j8aYvLIVCzezrWTaiA== dependencies: "@jridgewell/trace-mapping" "^0.3.25" commander "^6.2.0" @@ -26,105 +26,105 @@ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.6.0" -"@babel/code-frame@^7.26.2": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" - integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== +"@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== dependencies: - "@babel/helper-validator-identifier" "^7.25.9" + "@babel/helper-validator-identifier" "^7.27.1" js-tokens "^4.0.0" - picocolors "^1.0.0" + picocolors "^1.1.1" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.8": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" - integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.27.2": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.5.tgz#7d0658ec1a8420fc866d1df1b03bea0e79934c82" + integrity sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg== -"@babel/core@^7.12.3", "@babel/core@^7.26.10", "@babel/core@^7.7.5": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9" - integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ== +"@babel/core@^7.12.3", "@babel/core@^7.27.4", "@babel/core@^7.7.5": + version "7.27.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce" + integrity sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.10" - "@babel/helper-compilation-targets" "^7.26.5" - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helpers" "^7.26.10" - "@babel/parser" "^7.26.10" - "@babel/template" "^7.26.9" - "@babel/traverse" "^7.26.10" - "@babel/types" "^7.26.10" + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.27.3" + "@babel/helpers" "^7.27.4" + "@babel/parser" "^7.27.4" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.27.4" + "@babel/types" "^7.27.3" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/eslint-parser@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.27.0.tgz#d55e52a5ef3b164139a799dc522c338faba3507c" - integrity sha512-dtnzmSjXfgL/HDgMcmsLSzyGbEosi4DrGWoCNfuI+W4IkVJw6izpTe7LtOdwAXnkDqw5yweboYCTkM2rQizCng== +"@babel/eslint-parser@^7.27.5": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.27.5.tgz#56577afa9d820e9936e986d3a3b79c422223dfc6" + integrity sha512-HLkYQfRICudzcOtjGwkPvGc5nF1b4ljLZh1IRDj50lRZ718NAKVgQpIAUX8bfg6u/yuSKY3L7E0YzIV+OxrB8Q== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/eslint-plugin@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/eslint-plugin/-/eslint-plugin-7.27.0.tgz#b8b7bf27e68d65df05b06048668d488047ea2fd1" - integrity sha512-b8YXz2RX72kf2mOsmvtRdk4GMmpp4bUsvaI0cLJrUsvltMXvELiJPYsy6ikoHqzx40kKdw/3DEBgA8wqCLzJxA== +"@babel/eslint-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/eslint-plugin/-/eslint-plugin-7.27.1.tgz#5e7cfeaa7a7b506d0ee74c62244e4e6b7a7043f6" + integrity sha512-vOG/EipZbIAcREK6XI4JRO3B3uZr70/KIhsrNLO9RXcgLMaW0sTsBpNeTpQUyelB0HsbWd45NIsuTgD3mqr/Og== dependencies: eslint-rule-composer "^0.3.0" -"@babel/generator@^7.26.10", "@babel/generator@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.0.tgz#764382b5392e5b9aff93cadb190d0745866cbc2c" - integrity sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw== +"@babel/generator@^7.27.3": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.5.tgz#3eb01866b345ba261b04911020cbe22dd4be8c8c" + integrity sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw== dependencies: - "@babel/parser" "^7.27.0" - "@babel/types" "^7.27.0" + "@babel/parser" "^7.27.5" + "@babel/types" "^7.27.3" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" - integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== +"@babel/helper-annotate-as-pure@^7.27.1": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== dependencies: - "@babel/types" "^7.25.9" + "@babel/types" "^7.27.3" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9", "@babel/helper-compilation-targets@^7.26.5": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz#de0c753b1cd1d9ab55d473c5a5cf7170f0a81880" - integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA== +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== dependencies: - "@babel/compat-data" "^7.26.8" - "@babel/helper-validator-option" "^7.25.9" + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.25.9": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz#518fad6a307c6a96f44af14912b2c20abe9bfc30" - integrity sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-member-expression-to-functions" "^7.25.9" - "@babel/helper-optimise-call-expression" "^7.25.9" - "@babel/helper-replace-supers" "^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/traverse" "^7.27.0" +"@babel/helper-create-class-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" + integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.27.1" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz#0e41f7d38c2ebe06ebd9cf0e02fb26019c77cd95" - integrity sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" + integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.1" regexpu-core "^6.2.0" semver "^6.3.1" @@ -139,165 +139,165 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-member-expression-to-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" - integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-module-imports@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" - integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" - integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== - dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" +"@babel/helper-member-expression-to-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" + integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz#db0bbcfba5802f9ef7870705a7ef8788508ede02" + integrity sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.3" -"@babel/helper-optimise-call-expression@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" - integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== +"@babel/helper-optimise-call-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" + integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== dependencies: - "@babel/types" "^7.25.9" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35" - integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== - -"@babel/helper-remap-async-to-generator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" - integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== + "@babel/types" "^7.27.1" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +"@babel/helper-remap-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" + integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-wrap-function" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-wrap-function" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/helper-replace-supers@^7.25.9", "@babel/helper-replace-supers@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz#6cb04e82ae291dae8e72335dfe438b0725f14c8d" - integrity sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg== +"@babel/helper-replace-supers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" + integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== dependencies: - "@babel/helper-member-expression-to-functions" "^7.25.9" - "@babel/helper-optimise-call-expression" "^7.25.9" - "@babel/traverse" "^7.26.5" + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/helper-skip-transparent-expression-wrappers@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" - integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== +"@babel/helper-skip-transparent-expression-wrappers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" + integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" -"@babel/helper-string-parser@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" - integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== -"@babel/helper-validator-option@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" - integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== -"@babel/helper-wrap-function@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" - integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== +"@babel/helper-wrap-function@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz#b88285009c31427af318d4fe37651cd62a142409" + integrity sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ== dependencies: - "@babel/template" "^7.25.9" - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/template" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" -"@babel/helpers@^7.26.10": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808" - integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg== +"@babel/helpers@^7.27.4": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c" + integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug== dependencies: - "@babel/template" "^7.27.0" - "@babel/types" "^7.27.0" + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.6" -"@babel/parser@^7.14.7", "@babel/parser@^7.20.15", "@babel/parser@^7.26.10", "@babel/parser@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec" - integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg== +"@babel/parser@^7.14.7", "@babel/parser@^7.20.15", "@babel/parser@^7.27.2", "@babel/parser@^7.27.4", "@babel/parser@^7.27.5": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826" + integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg== dependencies: - "@babel/types" "^7.27.0" - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" - integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== + "@babel/types" "^7.27.3" + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz#61dd8a8e61f7eb568268d1b5f129da3eee364bf9" + integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30" - integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" + integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" - integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" + integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" - integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" + integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/plugin-transform-optional-chaining" "^7.25.9" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" - integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz#bb1c25af34d75115ce229a1de7fa44bf8f955670" + integrity sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/plugin-syntax-import-assertions@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" - integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== +"@babel/plugin-syntax-import-assertions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" + integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-import-attributes@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" - integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== +"@babel/plugin-syntax-import-attributes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -307,461 +307,461 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" - integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== +"@babel/plugin-transform-arrow-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" + integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-async-generator-functions@^7.26.8": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz#5e3991135e3b9c6eaaf5eff56d1ae5a11df45ff8" - integrity sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg== +"@babel/plugin-transform-async-generator-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz#ca433df983d68e1375398e7ca71bf2a4f6fd89d7" + integrity sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-remap-async-to-generator" "^7.25.9" - "@babel/traverse" "^7.26.8" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-async-to-generator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" - integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== +"@babel/plugin-transform-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" + integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" -"@babel/plugin-transform-block-scoped-functions@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz#3dc4405d31ad1cbe45293aa57205a6e3b009d53e" - integrity sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ== +"@babel/plugin-transform-block-scoped-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" + integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-block-scoping@^7.25.9": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz#acc2c0d98a7439bbde4244588ddbd4904701d47f" - integrity sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ== +"@babel/plugin-transform-block-scoping@^7.27.1": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz#98c37485d815533623d992fd149af3e7b3140157" + integrity sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-class-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" - integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== +"@babel/plugin-transform-class-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" + integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-class-static-block@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" - integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== +"@babel/plugin-transform-class-static-block@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz#7e920d5625b25bbccd3061aefbcc05805ed56ce4" + integrity sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-classes@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" - integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== +"@babel/plugin-transform-classes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz#03bb04bea2c7b2f711f0db7304a8da46a85cced4" + integrity sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-replace-supers" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/traverse" "^7.27.1" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" - integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== +"@babel/plugin-transform-computed-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" + integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/template" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/template" "^7.27.1" -"@babel/plugin-transform-destructuring@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" - integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== +"@babel/plugin-transform-destructuring@^7.27.1", "@babel/plugin-transform-destructuring@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.3.tgz#3cc8299ed798d9a909f8d66ddeb40849ec32e3b0" + integrity sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-dotall-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" - integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== +"@babel/plugin-transform-dotall-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" + integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-keys@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" - integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== +"@babel/plugin-transform-duplicate-keys@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" + integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31" - integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" + integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-dynamic-import@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" - integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== +"@babel/plugin-transform-dynamic-import@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" + integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-exponentiation-operator@^7.26.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz#e29f01b6de302c7c2c794277a48f04a9ca7f03bc" - integrity sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ== +"@babel/plugin-transform-exponentiation-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" + integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-export-namespace-from@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" - integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== +"@babel/plugin-transform-export-namespace-from@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" + integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-for-of@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz#27231f79d5170ef33b5111f07fe5cafeb2c96a56" - integrity sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg== +"@babel/plugin-transform-for-of@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" + integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-function-name@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" - integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== +"@babel/plugin-transform-function-name@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" + integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== dependencies: - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-json-strings@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" - integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== +"@babel/plugin-transform-json-strings@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" + integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" - integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== +"@babel/plugin-transform-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" + integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-logical-assignment-operators@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" - integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== +"@babel/plugin-transform-logical-assignment-operators@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz#890cb20e0270e0e5bebe3f025b434841c32d5baa" + integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-member-expression-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" - integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== +"@babel/plugin-transform-member-expression-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" + integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-amd@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" - integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== +"@babel/plugin-transform-modules-amd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" + integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-commonjs@^7.26.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz#8f011d44b20d02c3de44d8850d971d8497f981fb" - integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ== +"@babel/plugin-transform-modules-commonjs@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" + integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== dependencies: - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-systemjs@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" - integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== +"@babel/plugin-transform-modules-systemjs@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" + integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-modules-umd@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" - integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== +"@babel/plugin-transform-modules-umd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" + integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" - integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" + integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-new-target@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" - integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== +"@babel/plugin-transform-new-target@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" + integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-nullish-coalescing-operator@^7.26.6": - version "7.26.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz#fbf6b3c92cb509e7b319ee46e3da89c5bedd31fe" - integrity sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw== +"@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" + integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-numeric-separator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" - integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== +"@babel/plugin-transform-numeric-separator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" + integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-object-rest-spread@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" - integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== +"@babel/plugin-transform-object-rest-spread@^7.27.2": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.3.tgz#ce130aa73fef828bc3e3e835f9bc6144be3eb1c0" + integrity sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q== dependencies: - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.27.3" + "@babel/plugin-transform-parameters" "^7.27.1" -"@babel/plugin-transform-object-super@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" - integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== +"@babel/plugin-transform-object-super@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" + integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" -"@babel/plugin-transform-optional-catch-binding@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" - integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== +"@babel/plugin-transform-optional-catch-binding@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" + integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-optional-chaining@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" - integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== +"@babel/plugin-transform-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" + integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-parameters@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" - integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== +"@babel/plugin-transform-parameters@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz#80334b54b9b1ac5244155a0c8304a187a618d5a7" + integrity sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-private-methods@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" - integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== +"@babel/plugin-transform-private-methods@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" + integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-private-property-in-object@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" - integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== +"@babel/plugin-transform-private-property-in-object@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" + integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-property-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" - integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== +"@babel/plugin-transform-property-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" + integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.25.9": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz#822feebef43d6a59a81f696b2512df5b1682db31" - integrity sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA== +"@babel/plugin-transform-regenerator@^7.27.1": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz#0c01f4e0e4cced15f68ee14b9c76dac9813850c7" + integrity sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" - regenerator-transform "^0.15.2" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regexp-modifiers@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz#2f5837a5b5cd3842a919d8147e9903cc7455b850" - integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw== +"@babel/plugin-transform-regexp-modifiers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" + integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-reserved-words@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" - integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== +"@babel/plugin-transform-reserved-words@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" + integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-shorthand-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" - integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== +"@babel/plugin-transform-shorthand-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" + integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-spread@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" - integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== +"@babel/plugin-transform-spread@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" + integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-sticky-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" - integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== +"@babel/plugin-transform-sticky-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" + integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-template-literals@^7.26.8": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz#966b15d153a991172a540a69ad5e1845ced990b5" - integrity sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q== +"@babel/plugin-transform-template-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" + integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-typeof-symbol@^7.26.7": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz#044a0890f3ca694207c7826d0c7a65e5ac008aae" - integrity sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w== +"@babel/plugin-transform-typeof-symbol@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" + integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-escapes@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" - integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== +"@babel/plugin-transform-unicode-escapes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" + integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-property-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" - integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== +"@babel/plugin-transform-unicode-property-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" + integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" - integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== +"@babel/plugin-transform-unicode-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" + integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-sets-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" - integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== +"@babel/plugin-transform-unicode-sets-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" + integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/preset-env@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.9.tgz#2ec64e903d0efe743699f77a10bdf7955c2123c3" - integrity sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ== +"@babel/preset-env@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.27.2.tgz#106e6bfad92b591b1f6f76fd4cf13b7725a7bf9a" + integrity sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ== dependencies: - "@babel/compat-data" "^7.26.8" - "@babel/helper-compilation-targets" "^7.26.5" - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-validator-option" "^7.25.9" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" + "@babel/compat-data" "^7.27.2" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.27.1" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.27.1" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.26.0" - "@babel/plugin-syntax-import-attributes" "^7.26.0" + "@babel/plugin-syntax-import-assertions" "^7.27.1" + "@babel/plugin-syntax-import-attributes" "^7.27.1" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.25.9" - "@babel/plugin-transform-async-generator-functions" "^7.26.8" - "@babel/plugin-transform-async-to-generator" "^7.25.9" - "@babel/plugin-transform-block-scoped-functions" "^7.26.5" - "@babel/plugin-transform-block-scoping" "^7.25.9" - "@babel/plugin-transform-class-properties" "^7.25.9" - "@babel/plugin-transform-class-static-block" "^7.26.0" - "@babel/plugin-transform-classes" "^7.25.9" - "@babel/plugin-transform-computed-properties" "^7.25.9" - "@babel/plugin-transform-destructuring" "^7.25.9" - "@babel/plugin-transform-dotall-regex" "^7.25.9" - "@babel/plugin-transform-duplicate-keys" "^7.25.9" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" - "@babel/plugin-transform-dynamic-import" "^7.25.9" - "@babel/plugin-transform-exponentiation-operator" "^7.26.3" - "@babel/plugin-transform-export-namespace-from" "^7.25.9" - "@babel/plugin-transform-for-of" "^7.26.9" - "@babel/plugin-transform-function-name" "^7.25.9" - "@babel/plugin-transform-json-strings" "^7.25.9" - "@babel/plugin-transform-literals" "^7.25.9" - "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" - "@babel/plugin-transform-member-expression-literals" "^7.25.9" - "@babel/plugin-transform-modules-amd" "^7.25.9" - "@babel/plugin-transform-modules-commonjs" "^7.26.3" - "@babel/plugin-transform-modules-systemjs" "^7.25.9" - "@babel/plugin-transform-modules-umd" "^7.25.9" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" - "@babel/plugin-transform-new-target" "^7.25.9" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.26.6" - "@babel/plugin-transform-numeric-separator" "^7.25.9" - "@babel/plugin-transform-object-rest-spread" "^7.25.9" - "@babel/plugin-transform-object-super" "^7.25.9" - "@babel/plugin-transform-optional-catch-binding" "^7.25.9" - "@babel/plugin-transform-optional-chaining" "^7.25.9" - "@babel/plugin-transform-parameters" "^7.25.9" - "@babel/plugin-transform-private-methods" "^7.25.9" - "@babel/plugin-transform-private-property-in-object" "^7.25.9" - "@babel/plugin-transform-property-literals" "^7.25.9" - "@babel/plugin-transform-regenerator" "^7.25.9" - "@babel/plugin-transform-regexp-modifiers" "^7.26.0" - "@babel/plugin-transform-reserved-words" "^7.25.9" - "@babel/plugin-transform-shorthand-properties" "^7.25.9" - "@babel/plugin-transform-spread" "^7.25.9" - "@babel/plugin-transform-sticky-regex" "^7.25.9" - "@babel/plugin-transform-template-literals" "^7.26.8" - "@babel/plugin-transform-typeof-symbol" "^7.26.7" - "@babel/plugin-transform-unicode-escapes" "^7.25.9" - "@babel/plugin-transform-unicode-property-regex" "^7.25.9" - "@babel/plugin-transform-unicode-regex" "^7.25.9" - "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" + "@babel/plugin-transform-arrow-functions" "^7.27.1" + "@babel/plugin-transform-async-generator-functions" "^7.27.1" + "@babel/plugin-transform-async-to-generator" "^7.27.1" + "@babel/plugin-transform-block-scoped-functions" "^7.27.1" + "@babel/plugin-transform-block-scoping" "^7.27.1" + "@babel/plugin-transform-class-properties" "^7.27.1" + "@babel/plugin-transform-class-static-block" "^7.27.1" + "@babel/plugin-transform-classes" "^7.27.1" + "@babel/plugin-transform-computed-properties" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.27.1" + "@babel/plugin-transform-dotall-regex" "^7.27.1" + "@babel/plugin-transform-duplicate-keys" "^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-dynamic-import" "^7.27.1" + "@babel/plugin-transform-exponentiation-operator" "^7.27.1" + "@babel/plugin-transform-export-namespace-from" "^7.27.1" + "@babel/plugin-transform-for-of" "^7.27.1" + "@babel/plugin-transform-function-name" "^7.27.1" + "@babel/plugin-transform-json-strings" "^7.27.1" + "@babel/plugin-transform-literals" "^7.27.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.27.1" + "@babel/plugin-transform-member-expression-literals" "^7.27.1" + "@babel/plugin-transform-modules-amd" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-modules-systemjs" "^7.27.1" + "@babel/plugin-transform-modules-umd" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-new-target" "^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" + "@babel/plugin-transform-numeric-separator" "^7.27.1" + "@babel/plugin-transform-object-rest-spread" "^7.27.2" + "@babel/plugin-transform-object-super" "^7.27.1" + "@babel/plugin-transform-optional-catch-binding" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + "@babel/plugin-transform-parameters" "^7.27.1" + "@babel/plugin-transform-private-methods" "^7.27.1" + "@babel/plugin-transform-private-property-in-object" "^7.27.1" + "@babel/plugin-transform-property-literals" "^7.27.1" + "@babel/plugin-transform-regenerator" "^7.27.1" + "@babel/plugin-transform-regexp-modifiers" "^7.27.1" + "@babel/plugin-transform-reserved-words" "^7.27.1" + "@babel/plugin-transform-shorthand-properties" "^7.27.1" + "@babel/plugin-transform-spread" "^7.27.1" + "@babel/plugin-transform-sticky-regex" "^7.27.1" + "@babel/plugin-transform-template-literals" "^7.27.1" + "@babel/plugin-transform-typeof-symbol" "^7.27.1" + "@babel/plugin-transform-unicode-escapes" "^7.27.1" + "@babel/plugin-transform-unicode-property-regex" "^7.27.1" + "@babel/plugin-transform-unicode-regex" "^7.27.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.11.0" @@ -778,10 +778,10 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/register@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.25.9.tgz#1c465acf7dc983d70ccc318eb5b887ecb04f021b" - integrity sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA== +"@babel/register@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.27.1.tgz#ea4d701649d788d7cb8a064b7540fd21083147f1" + integrity sha512-K13lQpoV54LATKkzBpBAEu1GGSIRzxR9f4IN4V8DCDgiUMo2UDGagEZr3lPeVNJPLkWUi5JE4hCHKneVTwQlYQ== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" @@ -789,42 +789,35 @@ pirates "^4.0.6" source-map-support "^0.5.16" -"@babel/runtime@^7.8.4": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.0.tgz#fbee7cf97c709518ecc1f590984481d5460d4762" - integrity sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.25.9", "@babel/template@^7.26.9", "@babel/template@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.0.tgz#b253e5406cc1df1c57dcd18f11760c2dbf40c0b4" - integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/parser" "^7.27.0" - "@babel/types" "^7.27.0" - -"@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.8", "@babel/traverse@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.0.tgz#11d7e644779e166c0442f9a07274d02cd91d4a70" - integrity sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.27.0" - "@babel/parser" "^7.27.0" - "@babel/template" "^7.27.0" - "@babel/types" "^7.27.0" +"@babel/template@^7.27.1", "@babel/template@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.4": + version "7.27.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea" + integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.3" + "@babel/parser" "^7.27.4" + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.3" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.4.4": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.0.tgz#ef9acb6b06c3173f6632d993ecb6d4ae470b4559" - integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg== +"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6", "@babel/types@^7.4.4": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.6.tgz#a434ca7add514d4e646c80f7375c0aa2befc5535" + integrity sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q== dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" "@colors/colors@1.5.0": version "1.5.0" @@ -905,9 +898,9 @@ integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@eslint-community/eslint-utils@^4.2.0": - version "4.5.1" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz#b0fc7e06d0c94f801537fd4237edc2706d3b8e4c" - integrity sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w== + version "4.7.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" + integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== dependencies: eslint-visitor-keys "^3.4.3" @@ -1062,6 +1055,18 @@ dependencies: eslint-scope "5.1.1" +"@noble/curves@^1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.2.tgz#73388356ce733922396214a933ff7c95afcef911" + integrity sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/hashes@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1083,10 +1088,10 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@pkgr/core@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.0.tgz#8dff61038cb5884789d8b323d9869e5363b976f7" - integrity sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ== +"@pkgr/core@^0.2.4": + version "0.2.7" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.7.tgz#eb5014dfd0b03e7f3ba2eeeff506eed89b028058" + integrity sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg== "@qiwi/npm-registry-client@^8.9.1": version "8.9.1" @@ -1183,9 +1188,9 @@ integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@types/cors@^2.8.12": - version "2.8.17" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" - integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== + version "2.8.19" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.19.tgz#d93ea2673fd8c9f697367f5eeefc2bbfa94f0342" + integrity sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg== dependencies: "@types/node" "*" @@ -1214,9 +1219,9 @@ "@types/json-schema" "*" "@types/estree@*", "@types/estree@^1.0.6": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" - integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.6" @@ -1237,7 +1242,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -1266,11 +1271,11 @@ integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg== "@types/node@*", "@types/node@>=10.0.0": - version "22.13.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.14.tgz#70d84ec91013dcd2ba2de35532a5a14c2b4cc912" - integrity sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w== + version "24.0.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.0.4.tgz#dbae889912bda33a7f57669fb8587c1a56bc0c1f" + integrity sha512-ulyqAkrhnuNq9pB76DRBTkcS6YsmDALy6Ua63V8OhrOBgbcYt6IOdzpw5P1+dyRIyMerzLkeYWBeOXPpA9GMAA== dependencies: - undici-types "~6.20.0" + undici-types "~7.8.0" "@types/node@^14.14.35": version "14.18.63" @@ -1278,11 +1283,11 @@ integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== "@types/node@^20.14.11": - version "20.17.28" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.17.28.tgz#c10436f3a3c996f535919a9b082e2c47f19c40a1" - integrity sha512-DHlH/fNL6Mho38jTy7/JT7sn2wnXI+wULR6PV4gy4VHLVvnrV/d3pHAMQHhc4gjdLmK2ZiPoMxzp6B3yRajLSQ== + version "20.19.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.19.1.tgz#cef8bc04aaae86824b5bbe2570769358592bcc59" + integrity sha512-jJD50LtlD2dodAEO653i3YF04NWak6jN3ky+Ri3Em3mGR39/glWiboM/IePaRbgwSfqM1TpGXfAg8ohn/4dTgA== dependencies: - undici-types "~6.19.2" + undici-types "~6.21.0" "@types/parsimmon@^1.10.1": version "1.10.9" @@ -1614,10 +1619,10 @@ acorn-walk@^8.1.1: dependencies: acorn "^8.11.0" -acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.14.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" - integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== +acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.9.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== aggregate-error@^3.0.0: version "3.1.0" @@ -1770,24 +1775,26 @@ array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: call-bound "^1.0.3" is-array-buffer "^3.0.5" -array-includes@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" - integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== +array-includes@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a" + integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - is-string "^1.0.7" + es-abstract "^1.24.0" + es-object-atoms "^1.1.1" + get-intrinsic "^1.3.0" + is-string "^1.1.1" + math-intrinsics "^1.1.0" array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.findlastindex@^1.2.5: +array.prototype.findlastindex@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564" integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== @@ -1800,7 +1807,7 @@ array.prototype.findlastindex@^1.2.5: es-object-atoms "^1.1.1" es-shim-unscopables "^1.1.0" -array.prototype.flat@^1.3.2: +array.prototype.flat@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== @@ -1810,7 +1817,7 @@ array.prototype.flat@^1.3.2: es-abstract "^1.23.5" es-shim-unscopables "^1.0.2" -array.prototype.flatmap@^1.3.2: +array.prototype.flatmap@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b" integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== @@ -1954,45 +1961,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -bare-addon-resolve@^1.3.0: - version "1.9.4" - resolved "https://registry.yarnpkg.com/bare-addon-resolve/-/bare-addon-resolve-1.9.4.tgz#50ad7b26de493f978f09bbbbe987219c4ecbfd28" - integrity sha512-unn6Vy/Yke6F99vg/7tcrvM2KUvIhTNniaSqDbam4AWkd4NhvDVSrQiRYVlNzUV2P7SPobkCK7JFVxrJk9btCg== - dependencies: - bare-module-resolve "^1.10.0" - bare-semver "^1.0.0" - -bare-module-resolve@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/bare-module-resolve/-/bare-module-resolve-1.10.2.tgz#c394a13ba1c9c06f7d59804fb62ab9550d3b0c0a" - integrity sha512-C9COe/GhWfVXKytW3DElTkiBU+Gb2OXeaVkdGdRB/lp26TVLESHkTGS876iceAGdvtPgohfp9nX8vXHGvN3++Q== - dependencies: - bare-semver "^1.0.0" - -bare-os@^3.0.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/bare-os/-/bare-os-3.6.1.tgz#9921f6f59edbe81afa9f56910658422c0f4858d4" - integrity sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g== - -bare-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bare-path/-/bare-path-3.0.0.tgz#b59d18130ba52a6af9276db3e96a2e3d3ea52178" - integrity sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw== - dependencies: - bare-os "^3.0.1" - -bare-semver@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bare-semver/-/bare-semver-1.0.1.tgz#4737d660785f07cb723cefa6b022089e59120a61" - integrity sha512-UtggzHLiTrmFOC/ogQ+Hy7VfoKoIwrP1UFcYtTxoCUdLtsIErT8+SWtOC2DH/snT9h+xDrcBEPcwKei1mzemgg== - -bare-url@^2.1.0: - version "2.1.4" - resolved "https://registry.yarnpkg.com/bare-url/-/bare-url-2.1.4.tgz#a51c6dcf1c10e7ec9287efaf04cb679e00add898" - integrity sha512-eKwiYS8m5utvqWFFDDAwvG53KE2fFlxmit1O1I1GLmRtMZr01ZQOw+GZ+Q1QVd0vZ/tKBulVPlV/cDw1tpahRw== - dependencies: - bare-path "^3.0.0" - base32.js@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/base32.js/-/base32.js-0.1.0.tgz#b582dec693c2f11e893cf064ee6ac5b6131a2202" @@ -2015,10 +1983,10 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bignumber.js@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== +bignumber.js@^9.3.0: + version "9.3.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.0.tgz#bdba7e2a4c1a2eba08290e8dcad4f36393c92acd" + integrity sha512-EM7aMFTXbptt/wZdMlBv2t8IViwQL+h6SLHosp8Yf0dqJMTnY6iL32opnAB6kAdL0SZPuvcAzFr31o0c/R3/RA== binary-extensions@^2.0.0: version "2.3.0" @@ -2040,14 +2008,14 @@ bluebird@^3.7.2: integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.1.tgz#215741fe3c9dba2d7e12c001d0cfdbae43975ba7" - integrity sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg== + version "4.12.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.2.tgz#3d8fed6796c24e177737f7cc5172ee04ef39ec99" + integrity sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw== bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + version "5.2.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" + integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== body-parser@^1.19.0: version "1.20.3" @@ -2068,17 +2036,17 @@ body-parser@^1.19.0: unpipe "1.0.0" brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== dependencies: balanced-match "^1.0.0" @@ -2162,15 +2130,15 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.24.0, browserslist@^4.24.4: - version "4.24.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" - integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== +browserslist@^4.24.0, browserslist@^4.25.0: + version "4.25.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.0.tgz#986aa9c6d87916885da2b50d8eb577ac8d133b2c" + integrity sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA== dependencies: - caniuse-lite "^1.0.30001688" - electron-to-chromium "^1.5.73" + caniuse-lite "^1.0.30001718" + electron-to-chromium "^1.5.160" node-releases "^2.0.19" - update-browserslist-db "^1.1.1" + update-browserslist-db "^1.1.3" buffer-from@^1.0.0: version "1.1.2" @@ -2269,10 +2237,10 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001688: - version "1.0.30001707" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz#c5e104d199e6f4355a898fcd995a066c7eb9bf41" - integrity sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw== +caniuse-lite@^1.0.30001718: + version "1.0.30001724" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001724.tgz#312e163553dd70d2c0fb603d74810c85d8ed94a0" + integrity sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA== caseless@~0.12.0: version "0.12.0" @@ -2597,11 +2565,11 @@ cookie@~0.7.2: integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== core-js-compat@^3.40.0: - version "3.41.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.41.0.tgz#4cdfce95f39a8f27759b667cf693d96e5dda3d17" - integrity sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A== + version "3.43.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.43.0.tgz#055587369c458795ef316f65e0aabb808fb15840" + integrity sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA== dependencies: - browserslist "^4.24.4" + browserslist "^4.25.0" core-util-is@1.0.2: version "1.0.2" @@ -2629,7 +2597,7 @@ create-ecdh@^4.0.4: bn.js "^4.1.0" elliptic "^6.5.3" -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: +create-hash@^1.1.0, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -2640,7 +2608,17 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.4, create-hmac@^1.1.7: +create-hash@~1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + integrity sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -2750,9 +2728,9 @@ debug@^3.2.7: ms "^2.1.1" debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: ms "^2.1.3" @@ -2925,10 +2903,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.5.73: - version "1.5.128" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz#8ea537b369c32527b3cc47df7973bffe5d3c2980" - integrity sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ== +electron-to-chromium@^1.5.160: + version "1.5.173" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.173.tgz#1aeba57204fe19425921a29946ef543653f5e896" + integrity sha512-2bFhXP2zqSfQHugjqJIDFVwa+qIxyNApenmXTp9EjaKtdPrES5Qcn9/aSFy/NaP2E+fWG/zxKu/LBvY36p5VNQ== elliptic@^6.5.3, elliptic@^6.5.5: version "6.6.1" @@ -2959,9 +2937,9 @@ encodeurl@~1.0.2: integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + version "1.4.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== dependencies: once "^1.4.0" @@ -2986,9 +2964,9 @@ engine.io@~6.6.0: ws "~8.17.1" enhanced-resolve@^5.17.1: - version "5.18.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" - integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== + version "5.18.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz#7903c5b32ffd4b2143eeb4b92472bd68effd5464" + integrity sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -3018,27 +2996,27 @@ environment@^1.0.0: resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1" integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q== -es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9: - version "1.23.9" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.9.tgz#5b45994b7de78dada5c1bebf1379646b32b9d606" - integrity sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA== +es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9, es-abstract@^1.24.0: + version "1.24.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328" + integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== dependencies: array-buffer-byte-length "^1.0.2" arraybuffer.prototype.slice "^1.0.4" available-typed-arrays "^1.0.7" call-bind "^1.0.8" - call-bound "^1.0.3" + call-bound "^1.0.4" data-view-buffer "^1.0.2" data-view-byte-length "^1.0.2" data-view-byte-offset "^1.0.1" es-define-property "^1.0.1" es-errors "^1.3.0" - es-object-atoms "^1.0.0" + es-object-atoms "^1.1.1" es-set-tostringtag "^2.1.0" es-to-primitive "^1.3.0" function.prototype.name "^1.1.8" - get-intrinsic "^1.2.7" - get-proto "^1.0.0" + get-intrinsic "^1.3.0" + get-proto "^1.0.1" get-symbol-description "^1.1.0" globalthis "^1.0.4" gopd "^1.2.0" @@ -3050,21 +3028,24 @@ es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9: is-array-buffer "^3.0.5" is-callable "^1.2.7" is-data-view "^1.0.2" + is-negative-zero "^2.0.3" is-regex "^1.2.1" + is-set "^2.0.3" is-shared-array-buffer "^1.0.4" is-string "^1.1.1" is-typed-array "^1.1.15" - is-weakref "^1.1.0" + is-weakref "^1.1.1" math-intrinsics "^1.1.0" - object-inspect "^1.13.3" + object-inspect "^1.13.4" object-keys "^1.1.1" object.assign "^4.1.7" own-keys "^1.0.1" - regexp.prototype.flags "^1.5.3" + regexp.prototype.flags "^1.5.4" safe-array-concat "^1.1.3" safe-push-apply "^1.0.0" safe-regex-test "^1.1.0" set-proto "^1.0.0" + stop-iteration-iterator "^1.1.0" string.prototype.trim "^1.2.10" string.prototype.trimend "^1.0.9" string.prototype.trimstart "^1.0.8" @@ -3073,7 +3054,7 @@ es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9: typed-array-byte-offset "^1.0.4" typed-array-length "^1.0.7" unbox-primitive "^1.1.0" - which-typed-array "^1.1.18" + which-typed-array "^1.1.19" es-define-property@^1.0.0, es-define-property@^1.0.1: version "1.0.1" @@ -3086,9 +3067,9 @@ es-errors@^1.3.0: integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-module-lexer@^1.2.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21" - integrity sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ== + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" + integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.1" @@ -3177,10 +3158,10 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-module-utils@^2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" - integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== +eslint-module-utils@^2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff" + integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== dependencies: debug "^3.2.7" @@ -3193,28 +3174,28 @@ eslint-plugin-es@^3.0.0: regexpp "^3.0.0" eslint-plugin-import@^2.31.0: - version "2.31.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" - integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== + version "2.32.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980" + integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== dependencies: "@rtsao/scc" "^1.1.0" - array-includes "^3.1.8" - array.prototype.findlastindex "^1.2.5" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" + array-includes "^3.1.9" + array.prototype.findlastindex "^1.2.6" + array.prototype.flat "^1.3.3" + array.prototype.flatmap "^1.3.3" debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.12.0" + eslint-module-utils "^2.12.1" hasown "^2.0.2" - is-core-module "^2.15.1" + is-core-module "^2.16.1" is-glob "^4.0.3" minimatch "^3.1.2" object.fromentries "^2.0.8" object.groupby "^1.0.3" - object.values "^1.2.0" + object.values "^1.2.1" semver "^6.3.1" - string.prototype.trimend "^1.0.8" + string.prototype.trimend "^1.0.9" tsconfig-paths "^3.15.0" eslint-plugin-node@^11.1.0: @@ -3234,13 +3215,13 @@ eslint-plugin-prefer-import@^0.0.1: resolved "https://registry.yarnpkg.com/eslint-plugin-prefer-import/-/eslint-plugin-prefer-import-0.0.1.tgz#0df4e117da29109ef561d355ec19f41df0ada6f6" integrity sha512-2OKD3Bjgqkn0BvEGRwpEDhjXPSXvT3CXmWIrIavwafOkQE8FLTvFybEBT9dm7P0kHnjlNGv1AfNsL/i/GNDNHA== -eslint-plugin-prettier@^5.2.5: - version "5.2.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.5.tgz#0ff00b16f4c80ccdafd6a24a263effba1700087e" - integrity sha512-IKKP8R87pJyMl7WWamLgPkloB16dagPIdd2FjBDbyRYPKo93wS/NbCOPh6gH+ieNLC+XZrhJt/kWj0PS/DFdmg== +eslint-plugin-prettier@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.0.tgz#cf763962f90bad035db03ca008ffb0c9b359fb16" + integrity sha512-8qsOYwkkGrahrgoUv76NZi23koqXOGiiEzXMrT8Q7VcYaUISR+5MorIUxfWqYXN0fN/31WbSrxCxFkVQ43wwrA== dependencies: prettier-linter-helpers "^1.0.0" - synckit "^0.10.2" + synckit "^0.11.7" eslint-rule-composer@^0.3.0: version "0.3.0" @@ -3972,6 +3953,13 @@ has-unicode@^2.0.0: resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + integrity sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw== + dependencies: + inherits "^2.0.1" + hash-base@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" @@ -4207,7 +4195,7 @@ is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.16.0, is-core-module@^2.5.0: +is-core-module@^2.13.0, is-core-module@^2.16.0, is-core-module@^2.16.1, is-core-module@^2.5.0: version "2.16.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== @@ -4302,6 +4290,11 @@ is-nan@^1.3.2: call-bind "^1.0.0" define-properties "^1.1.3" +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + is-number-object@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" @@ -4364,7 +4357,7 @@ is-stream@^3.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== -is-string@^1.0.7, is-string@^1.1.1: +is-string@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== @@ -4403,7 +4396,7 @@ is-weakmap@^2.0.2: resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== -is-weakref@^1.0.2, is-weakref@^1.1.0: +is-weakref@^1.0.2, is-weakref@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== @@ -4661,12 +4654,12 @@ json-stable-stringify-without-jsonify@^1.0.1: integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stable-stringify@^1.0.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.2.1.tgz#addb683c2b78014d0b78d704c2fcbdf0695a60e2" - integrity sha512-Lp6HbbBgosLmJbjx0pBLbgvx68FaFU1sdkmBuckmhhJ88kL13OA51CDtR2yJB50eCNMH9wRqtQNNiAqQH4YXnA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz#8903cfac42ea1a0f97f35d63a4ce0518f0cc6a70" + integrity sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg== dependencies: call-bind "^1.0.8" - call-bound "^1.0.3" + call-bound "^1.0.4" isarray "^2.0.5" jsonify "^0.0.1" object-keys "^1.1.1" @@ -4833,9 +4826,9 @@ linkify-it@^5.0.0: uc.micro "^2.0.0" lint-staged@^15.5.0: - version "15.5.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.5.0.tgz#fa6464cfb06e0faf5bb167f83186e952ff6e569e" - integrity sha512-WyCzSbfYGhK7cU+UuDDkzUiytbfbi0ZdPy2orwtM75P3WTtQBzmG40cCxIa8Ii2+XjfxzLH6Be46tUfWS85Xfg== + version "15.5.2" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.5.2.tgz#beff028fd0681f7db26ffbb67050a21ed4d059a3" + integrity sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w== dependencies: chalk "^5.4.1" commander "^13.1.0" @@ -4849,9 +4842,9 @@ lint-staged@^15.5.0: yaml "^2.7.0" listr2@^8.2.5: - version "8.2.5" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.5.tgz#5c9db996e1afeb05db0448196d3d5f64fec2593d" - integrity sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ== + version "8.3.3" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.3.3.tgz#815fc8f738260ff220981bf9e866b3e11e8121bf" + integrity sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ== dependencies: cli-truncate "^4.0.0" colorette "^2.0.20" @@ -5396,7 +5389,7 @@ object-assign@^4, object-assign@^4.1.0: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.13.3: +object-inspect@^1.13.3, object-inspect@^1.13.4: version "1.13.4" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== @@ -5455,7 +5448,7 @@ object.groupby@^1.0.3: define-properties "^1.2.1" es-abstract "^1.23.2" -object.values@^1.2.0: +object.values@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== @@ -5697,22 +5690,23 @@ pathval@^1.1.1: integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== pbkdf2@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + version "3.1.3" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.3.tgz#8be674d591d65658113424592a95d1517318dd4b" + integrity sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA== dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" + create-hash "~1.1.3" + create-hmac "^1.1.7" + ripemd160 "=2.0.1" + safe-buffer "^5.2.1" + sha.js "^2.4.11" + to-buffer "^1.2.0" performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== -picocolors@^1.0.0, picocolors@^1.1.1: +picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -5776,9 +5770,9 @@ prettier-linter-helpers@^1.0.0: fast-diff "^1.1.2" prettier@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" - integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== + version "3.6.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.0.tgz#18ec98d62cb0757a5d4eab40253ff3e6d0fc8dea" + integrity sha512-ujSB9uXHJKzM/2GBuE0hBOUgC77CN3Bnpqa+g80bkv3T3A93wL/xlzDATHhnhkzifz/UE2SNOvmbTz5hSkDlHw== process-nextick-args@~2.0.0: version "2.0.1" @@ -5968,19 +5962,7 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regexp.prototype.flags@^1.5.3: +regexp.prototype.flags@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== @@ -6054,14 +6036,6 @@ request@^2.88.2: tunnel-agent "^0.6.0" uuid "^3.3.2" -require-addon@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/require-addon/-/require-addon-1.1.0.tgz#0a1ef0ba98b186a3aa304a1abda5208902e63e17" - integrity sha512-KbXAD5q2+v1GJnkzd8zzbOxchTkStSyJZ9QwoCq3QwEXAaIlG3wDYRZGzVD357jmwaGY7hr5VaoEAL0BkF0Kvg== - dependencies: - bare-addon-resolve "^1.3.0" - bare-url "^2.1.0" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -6152,6 +6126,14 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +ripemd160@=2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + integrity sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w== + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -6210,10 +6192,10 @@ safe-regex-test@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -schema-utils@^4.0.0, schema-utils@^4.2.0, schema-utils@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.0.tgz#3b669f04f71ff2dfb5aba7ce2d5a9d79b35622c0" - integrity sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g== +schema-utils@^4.0.0, schema-utils@^4.2.0, schema-utils@^4.3.0, schema-utils@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.2.tgz#0c10878bf4a73fd2b1dfd14b9462b26788c806ae" + integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ== dependencies: "@types/json-schema" "^7.0.9" ajv "^8.9.0" @@ -6221,9 +6203,9 @@ schema-utils@^4.0.0, schema-utils@^4.2.0, schema-utils@^4.3.0: ajv-keywords "^5.1.0" "semver@2 >=2.2.1 || 3.x || 4 || 5 || 7", semver@^7.3.4, semver@^7.3.7, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: - version "7.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" - integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== + version "7.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== semver@^5.3.0, semver@^5.6.0: version "5.7.2" @@ -6288,7 +6270,7 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.3.6, sha.js@^2.4.0, sha.js@^2.4.8: +sha.js@^2.3.6, sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== @@ -6442,13 +6424,6 @@ socket.io@^4.7.2: socket.io-adapter "~2.5.2" socket.io-parser "~4.2.4" -sodium-native@^4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/sodium-native/-/sodium-native-4.3.3.tgz#fae4866b52366f5e6cc1b7ae8c8a71673d50c7df" - integrity sha512-OnxSlN3uyY8D0EsLHpmm2HOFmKddQVvEMmsakCrXUzSd8kjjbzL413t4ZNF3n0UxSwNgwTyUvkmZHTfuCeiYSw== - dependencies: - require-addon "^1.1.0" - source-map-support@^0.5.16, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -6547,6 +6522,14 @@ statuses@~1.5.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +stop-iteration-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" + integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== + dependencies: + es-errors "^1.3.0" + internal-slot "^1.1.0" + stream-browserify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" @@ -6619,7 +6602,7 @@ string.prototype.trim@^1.2.10: es-object-atoms "^1.0.0" has-property-descriptors "^1.0.2" -string.prototype.trimend@^1.0.8, string.prototype.trimend@^1.0.9: +string.prototype.trimend@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== @@ -6729,13 +6712,12 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -synckit@^0.10.2: - version "0.10.3" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.10.3.tgz#940aea2c7b6d141a4f74dbdebc81e0958c331a4b" - integrity sha512-R1urvuyiTaWfeCggqEvpDJwAlDVdsT9NM+IP//Tk2x7qHCkSvBk/fwFgw/TLAHzZlrAnnazMcRw0ZD8HlYFTEQ== +synckit@^0.11.7: + version "0.11.8" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.8.tgz#b2aaae998a4ef47ded60773ad06e7cb821f55457" + integrity sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A== dependencies: - "@pkgr/core" "^0.2.0" - tslib "^2.8.1" + "@pkgr/core" "^0.2.4" taffydb@^2.7.3: version "2.7.3" @@ -6743,9 +6725,9 @@ taffydb@^2.7.3: integrity sha512-GQ3gtYFSOAxSMN/apGtDKKkbJf+8izz5YfbGqIsUc7AMiQOapARZ76dhilRY2h39cynYxBFdafQo5HUL5vgkrg== tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + version "2.2.2" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872" + integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg== tar-stream@^2.1.4: version "2.2.0" @@ -6782,12 +6764,12 @@ terser-webpack-plugin@^5.3.11, terser-webpack-plugin@^5.3.14: terser "^5.31.1" terser@^5.31.1: - version "5.39.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.39.0.tgz#0e82033ed57b3ddf1f96708d123cca717d86ca3a" - integrity sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw== + version "5.43.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.43.1.tgz#88387f4f9794ff1a29e7ad61fb2932e25b4fdb6d" + integrity sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg== dependencies: "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" + acorn "^8.14.0" commander "^2.20.0" source-map-support "~0.5.20" @@ -6817,6 +6799,15 @@ tmp@^0.2.1: resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== +to-buffer@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.1.tgz#2ce650cdb262e9112a18e65dc29dcb513c8155e0" + integrity sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ== + dependencies: + isarray "^2.0.5" + safe-buffer "^5.2.1" + typed-array-buffer "^1.0.3" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -6876,11 +6867,6 @@ tslib@^1.8.0, tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - tslint@5.14.0: version "5.14.0" resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.14.0.tgz#be62637135ac244fc9b37ed6ea5252c9eba1616e" @@ -6931,11 +6917,6 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== -tweetnacl@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -6964,9 +6945,9 @@ type-fest@^0.8.0: integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== type-fest@^4.4.0: - version "4.38.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.38.0.tgz#659fa14d1a71c2811400aa3b5272627e0c1e6b96" - integrity sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg== + version "4.41.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== type-is@~1.6.18: version "1.6.18" @@ -7063,15 +7044,15 @@ underscore@~1.13.2: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.7.tgz#970e33963af9a7dda228f17ebe8399e5fbe63a10" integrity sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g== -undici-types@~6.19.2: - version "6.19.8" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" - integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== +undici-types@~7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294" + integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.1" @@ -7106,7 +7087,7 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-browserslist-db@^1.1.1: +update-browserslist-db@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== @@ -7205,9 +7186,9 @@ void-elements@^2.0.0: integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== watchpack@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" - integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== + version "2.4.4" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.4.tgz#473bda72f0850453da6425081ea46fc0d7602947" + integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -7248,17 +7229,18 @@ webpack-merge@^5.7.3: wildcard "^2.0.0" webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + version "3.3.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.3.tgz#d4bf7f9909675d7a070ff14d0ef2a4f3c982c723" + integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== -webpack@^5.98.0: - version "5.98.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.98.0.tgz#44ae19a8f2ba97537978246072fb89d10d1fbd17" - integrity sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA== +webpack@^5.99.9: + version "5.99.9" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.99.9.tgz#d7de799ec17d0cce3c83b70744b4aedb537d8247" + integrity sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg== dependencies: "@types/eslint-scope" "^3.7.7" "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" "@webassemblyjs/ast" "^1.14.1" "@webassemblyjs/wasm-edit" "^1.14.1" "@webassemblyjs/wasm-parser" "^1.14.1" @@ -7275,7 +7257,7 @@ webpack@^5.98.0: loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^4.3.0" + schema-utils "^4.3.2" tapable "^2.1.1" terser-webpack-plugin "^5.3.11" watchpack "^2.4.1" @@ -7326,7 +7308,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.16, which-typed-array@^1.1.18, which-typed-array@^1.1.2: +which-typed-array@^1.1.16, which-typed-array@^1.1.19, which-typed-array@^1.1.2: version "1.1.19" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== @@ -7460,9 +7442,9 @@ yallist@^4.0.0: integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" - integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== + version "2.8.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6" + integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ== yargs-parser@^18.1.2: version "18.1.3"