diff --git a/.github/workflows/jest.yml b/.github/workflows/jest.yml deleted file mode 100644 index 5504883..0000000 --- a/.github/workflows/jest.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Typescript Generator Tests -run-name: ${{ github.actor }} is testing out tlbgenerator for typescript -on: [push] -jobs: - Explore-GitHub-Actions: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '20' - - run: npm install - - run: npm install -g ts-node - - run: sed -i 's/"+", "Type"/"#", "Type"/g' "node_modules/@igorivaniuk/tlb-parser/dist/ast/nodes.d.ts" - - run: ts-node generate_all.ts - - run: npm run test diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 0182f89..0000000 --- a/.gitignore +++ /dev/null @@ -1,67 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# TypeScript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env - -# next.js build output -.next - - -## Custom -## ====== - -dist/ diff --git a/generate_all.ts b/generate_all.ts deleted file mode 100644 index 55bcc41..0000000 --- a/generate_all.ts +++ /dev/null @@ -1,24 +0,0 @@ -import fs from 'fs' -import path from 'path' -import util from 'util' - -import { parse, ast } from '@igorivaniuk/tlb-parser' -import { generate } from './src/main' - - -const fixturesDir = path.resolve(__dirname, 'test') - -function generateCode(filename: string) { - const input = fs.readFileSync( - path.resolve(fixturesDir, 'tlb', filename + '.tlb'), - 'utf-8', - ) - const parsed = parse(input) - - const tree = ast(input) - - fs.writeFile('test/generated_files/generated_' + filename + '.ts', generate(tree, input), () => { }); -} - -generateCode('block') -generateCode('test') diff --git a/index.ts b/index.ts deleted file mode 100644 index 955ef64..0000000 --- a/index.ts +++ /dev/null @@ -1 +0,0 @@ -console.log("Hi") diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index b413e10..0000000 --- a/jest.config.js +++ /dev/null @@ -1,5 +0,0 @@ -/** @type {import('ts-jest').JestConfigWithTsJest} */ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', -}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index cdd8c61..0000000 --- a/package-lock.json +++ /dev/null @@ -1,3774 +0,0 @@ -{ - "name": "amy", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "amy", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "@igorivaniuk/tlb-parser": "^0.1.0", - "@types/jest": "^29.5.11", - "crc-32": "^1.2.2", - "ton": "^13.9.0", - "ts-jest": "^29.1.1" - }, - "devDependencies": { - "@jest/globals": "^29.7.0", - "jest": "^29.7.0", - "ts-node": "^10.9.2", - "typescript": "^5.3.3" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", - "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.7", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.7.tgz", - "integrity": "sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", - "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "devOptional": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@igorivaniuk/tlb-parser": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@igorivaniuk/tlb-parser/-/tlb-parser-0.1.0.tgz", - "integrity": "sha512-U7tNvwK3SL5BXujg5t3HZ0/aHnUkfT/acLG7E8J1R3CL6O/q6mfPcQnDfbIHPrnb6He+UMKhSsFjTbd4kKSvnw==", - "dependencies": { - "ohm-js": "^16.6.0" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "devOptional": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "devOptional": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "devOptional": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "devOptional": true - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.11", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", - "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/node": { - "version": "20.10.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.6.tgz", - "integrity": "sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" - }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "devOptional": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", - "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", - "devOptional": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "devOptional": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/axios": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", - "dependencies": { - "follow-redirects": "^1.14.7" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001572", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001572.tgz", - "integrity": "sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "engines": { - "node": ">=10" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==" - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "devOptional": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/dataloader": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.2.tgz", - "integrity": "sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "devOptional": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.616", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz", - "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-snapshot/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jssha": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.2.0.tgz", - "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==", - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ohm-js": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/ohm-js/-/ohm-js-16.6.0.tgz", - "integrity": "sha512-X9P4koSGa7swgVQ0gt71UCYtkAQGOjciJPJAz74kDxWt8nXbH5HrDOQG6qBDH7SR40ktNv4x61BwpTDE9q4lRA==", - "engines": { - "node": ">=0.12.1" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol.inspect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol.inspect/-/symbol.inspect-1.0.1.tgz", - "integrity": "sha512-YQSL4duoHmLhsTD1Pw8RW6TZ5MaTX5rXJnqacJottr2P2LZBF/Yvrc3ku4NUpMOm8aM0KOCqM+UAkMA5HWQCzQ==" - }, - "node_modules/teslabot": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/teslabot/-/teslabot-1.5.0.tgz", - "integrity": "sha512-e2MmELhCgrgZEGo7PQu/6bmYG36IDH+YrBI1iGm6jovXkeDIGa3pZ2WSqRjzkuw2vt1EqfkZoV5GpXgqL8QJVg==" - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ton": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/ton/-/ton-13.9.0.tgz", - "integrity": "sha512-IjZa4vFsyYHzQFY3kMSK/vw8T9b4zSJlSkZOgD8qeP4AFVxcD6pZ7TxfATwLJnA/4MCbaM9DY0V076oMjluDQg==", - "dependencies": { - "axios": "^0.25.0", - "dataloader": "^2.0.0", - "symbol.inspect": "1.0.1", - "teslabot": "^1.3.0", - "zod": "^3.21.4" - }, - "peerDependencies": { - "ton-core": ">=0.53.0", - "ton-crypto": ">=3.2.0" - } - }, - "node_modules/ton-core": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/ton-core/-/ton-core-0.53.0.tgz", - "integrity": "sha512-uO/U1oVLdEliWWbwfNQQK+61C+KM0ehcTdHQ6cN0WSEH2UzGfdVFpC4Wb0ph+wUYe/5njl7TA0uL9nif9Q6qwA==", - "peer": true, - "dependencies": { - "symbol.inspect": "1.0.1" - }, - "peerDependencies": { - "ton-crypto": ">=3.2.0" - } - }, - "node_modules/ton-crypto": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ton-crypto/-/ton-crypto-3.2.0.tgz", - "integrity": "sha512-fltdBNQ45gARMuGMEOjPZWPJ5eSql8p3CA0Dj7tPv5lhU5ziT8SxXLAzDraR9HJ8YpjBHLVvYyhMLRiEwxgtMQ==", - "peer": true, - "dependencies": { - "jssha": "3.2.0", - "ton-crypto-primitives": "2.0.0", - "tweetnacl": "1.0.3" - } - }, - "node_modules/ton-crypto-primitives": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ton-crypto-primitives/-/ton-crypto-primitives-2.0.0.tgz", - "integrity": "sha512-K+qKjpS0h9sPW6oExcpxnzuQ7nEgHEiDKwIqE/jWD25o8iFGe3FWj1gKxFNbKE9wwYKc5IV8FwrU+raF0KO5nQ==", - "peer": true, - "dependencies": { - "jssha": "3.2.0" - } - }, - "node_modules/ts-jest": { - "version": "29.1.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", - "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "^7.5.3", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-jest/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "devOptional": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "peer": true - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "devOptional": true - }, - "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "devOptional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "3.22.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", - "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index c9aebc9..0000000 --- a/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "amy", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "jest" - }, - "keywords": [], - "author": "", - "license": "ISC", - "devDependencies": { - "@jest/globals": "^29.7.0", - "jest": "^29.7.0", - "ts-node": "^10.9.2", - "typescript": "^5.3.3" - }, - "dependencies": { - "@igorivaniuk/tlb-parser": "^0.1.0", - "@types/jest": "^29.5.11", - "crc-32": "^1.2.2", - "ton": "^13.9.0", - "ts-jest": "^29.1.1" - } -} diff --git a/src/ast.ts b/src/ast.ts deleted file mode 100644 index d0fbede..0000000 --- a/src/ast.ts +++ /dev/null @@ -1,179 +0,0 @@ -export class TLBBinaryOp { - constructor( - readonly left: TLBMathExpr, - readonly right: TLBMathExpr, - readonly operation: string, - readonly variables: Set = new Set([ - ...left.variables, - ...right.variables, - ]), - readonly hasNeg: boolean = left.hasNeg || right.hasNeg - ) {} -} - -export class TLBNumberExpr { - constructor( - readonly n: number, - readonly variables: Set = new Set(), - readonly hasNeg: boolean = false - ) {} -} - -export class TLBUnaryOp { - constructor( - readonly value: TLBMathExpr, - readonly operation: string, - readonly variables: Set = value.variables, - readonly hasNeg: boolean = value.hasNeg - ) {} -} - -export class TLBVarExpr { - constructor( - readonly x: string, - readonly variables: Set = new Set(), - readonly hasNeg: boolean = false - ) { - if (variables.size == 0) { - variables.add(x); - } - } -} - -export type TLBMathExpr = TLBBinaryOp | TLBNumberExpr | TLBVarExpr | TLBUnaryOp; - -export type TLBVariableType = "Type" | "#"; - -export class TLBVariable { - constructor( - readonly isConst: boolean, - readonly negated: boolean, - readonly type: TLBVariableType, - readonly name: string, - readonly isField: boolean, - readonly deriveExpr?: TLBMathExpr, - readonly initialExpr?: TLBMathExpr - ) {} -} - -export type TLBBitsType = { - kind: "TLBBitsType"; - bits: TLBMathExpr; -}; - -export type TLBNamedType = { - kind: "TLBNamedType"; - name: string; - arguments: TLBFieldType[]; -}; - -export type TLBMathExprType = { - kind: "TLBExprMathType"; - expr: TLBMathExpr; -}; - -export type TLBBoolType = { - kind: "TLBBoolType"; -}; - -export type TLBAddressType = { - kind: "TLBAddressType"; -}; - -export type TLBCellType = { - kind: "TLBCellType"; -}; - -export type TLBNumberType = { - kind: "TLBNumberType"; - bits: TLBMathExpr; - signed: boolean; - storeBits: TLBMathExpr; - maxBits: number | undefined; -}; - -export type TLBNegatedType = { - kind: "TLBNegatedType"; - variableName: string; -}; - -export type TLBCellInsideType = { - kind: "TLBCellInsideType"; - value: TLBFieldType; -}; - -export type TLBMultipleType = { - kind: "TLBMultipleType"; - value: TLBFieldType; - times: TLBMathExpr; -}; - -export type TLBCondType = { - kind: "TLBCondType"; - value: TLBFieldType; - condition: TLBMathExpr; -}; - -export type TLBExoticType = { - kind: "TLBExoticType"; -}; - -export type TLBFieldType = - | TLBNumberType - | TLBBitsType - | TLBNamedType - | TLBBoolType - | TLBAddressType - | TLBCellType - | TLBMathExprType - | TLBNegatedType - | TLBCellInsideType - | TLBMultipleType - | TLBCondType - | TLBExoticType; - -export type TLBField = { - name: string; - anonymous: boolean; - fieldType: TLBFieldType; - subFields: TLBField[]; -}; - -export class TLBParameter { - constructor( - readonly variable: TLBVariable, - readonly paramExpr: TLBMathExpr, - readonly argName?: string - ) {} -} - -export type TLBConstructorTag = { - bitLen: number; - binary: string; -}; - -export class TLBConstructor { - constructor( - readonly parameters: Array, - readonly variables: Array, - readonly variablesMap: Map, - readonly parametersMap: Map, - readonly name: string, - readonly fields: Array, - readonly tag: TLBConstructorTag, - readonly constraints: Array, - readonly declaration: string, - readonly tlbType: string - ) {} -} - -export class TLBType { - constructor( - readonly name: string, - readonly constructors: Array - ) {} -} - -export class TLBCode { - constructor(readonly types: Map) {} -} diff --git a/src/astbuilder/fill_constructors.ts b/src/astbuilder/fill_constructors.ts deleted file mode 100644 index b4fd67e..0000000 --- a/src/astbuilder/fill_constructors.ts +++ /dev/null @@ -1,578 +0,0 @@ -import { - CompareExpr, - Declaration, - FieldBuiltinDef, - FieldCurlyExprDef, - FieldNamedDef, - MathExpr, - NameExpr, - NegateExpr, - NumberExpr, -} from "@igorivaniuk/tlb-parser/dist/ast/nodes"; -import * as crc32 from "crc-32"; -import { - TLBBinaryOp, - TLBCode, - TLBConstructor, - TLBConstructorTag, - TLBField, - TLBMathExpr, - TLBNumberExpr, - TLBParameter, - TLBType, - TLBVarExpr, - TLBVariable, -} from "../ast"; -import { findNotReservedName } from "../utils"; -import { fillFields } from "./handle_field"; -import { - TLBCodeBuild, - TLBConstructorBuild, - TLBParameterBuild, - TLBTypeBuild, - TLBVariableBuild, - calculateVariable, - convertToMathExpr, - deriveMathExpression, - getNegatedVariable, - opCodeSetsEqual, - reorganizeExpression, -} from "./utils"; - -export function fillConstructors( - declarations: Declaration[], - tlbCode: TLBCodeBuild, - input: string[] -) { - let typeDeclarations = new Map< - String, - { declaration: Declaration; constructor: TLBConstructorBuild }[] - >(); - declarations.forEach((declaration) => { - let tlbType: TLBTypeBuild | undefined = tlbCode.types.get( - declaration.combinator.name - ); - if (tlbType == undefined) { - tlbType = { name: declaration.combinator.name, constructors: [] }; - } - let constructor = { - parameters: [], - parametersMap: new Map(), - name: declaration.constructorDef.name, - variables: new Array(), - variablesMap: new Map(), - tag: getConstructorTag(declaration, input), - constraints: [], - fields: [], - declaration: "", - tlbType: tlbType.name, - }; - tlbType.constructors.push(constructor); - tlbCode.types.set(tlbType.name, tlbType); - - let currentDecls = typeDeclarations.get(tlbType.name); - if (!currentDecls) { - currentDecls = []; - } - currentDecls.push({ declaration: declaration, constructor: constructor }); - typeDeclarations.set(tlbType.name, currentDecls); - }); - - tlbCode.types.forEach((tlbType: TLBTypeBuild) => { - typeDeclarations.get(tlbType.name)?.forEach((typeItem) => { - let declaration = typeItem.declaration; - let constructor = typeItem.constructor; - - declaration.fields.forEach((field) => { - if (field instanceof FieldBuiltinDef) { - constructor.variables.push({ - name: field.name, - isConst: false, - negated: false, - type: field.type, - calculated: false, - isField: false, - }); - } - if (field instanceof FieldNamedDef) { - constructor.variables.push({ - name: field.name, - isConst: false, - negated: false, - type: "#", - calculated: false, - isField: true, - }); - } - }); - constructor.variables.forEach((variable) => { - if (variable.name) { - constructor.variablesMap.set(variable.name, variable); - } - }); - let argumentIndex = -1; - declaration.combinator.args.forEach((element) => { - argumentIndex++; - let parameter: TLBParameterBuild | undefined = undefined; - if (element instanceof NameExpr) { - let variable = constructor.variablesMap.get(element.name); - if (variable) { - if (variable.type == "#") { - variable.deriveExpr = new TLBVarExpr(element.name); - variable.initialExpr = variable.deriveExpr; - } - parameter = { - variable: variable, - paramExpr: new TLBVarExpr(element.name), - }; - } else { - throw new Error( - "Field not known before using (should be tagged as implicit): " + - element - ); - } - } else if (element instanceof MathExpr) { - let derivedExpr = deriveMathExpression(element); - if (!derivedExpr.name) { - throw new Error(`Expression should contain variable ${element}`); - } - let variable = constructor.variablesMap.get(derivedExpr.name); - if (variable && variable.name) { - parameter = { variable: variable, paramExpr: derivedExpr.derived }; - parameter.argName = "arg" + argumentIndex; - parameter.variable.deriveExpr = reorganizeWithArg( - convertToMathExpr(element), - parameter.argName, - variable.name - ); - parameter.variable.initialExpr = new TLBVarExpr(variable.name); - } else { - throw new Error(`Variable should have name ${variable}`); - } - } else if ( - element instanceof NegateExpr && - (element.expr instanceof MathExpr || - element.expr instanceof NumberExpr || - element.expr instanceof NameExpr) - ) { - let derivedExpr = deriveMathExpression(element.expr); - let toBeConst = false; - if (element.expr instanceof NumberExpr) { - toBeConst = true; - } - - if (derivedExpr.name == undefined) { - if (toBeConst) { - parameter = { - variable: { - negated: true, - isConst: toBeConst, - type: "#", - name: undefined, - deriveExpr: derivedExpr.derived, - initialExpr: derivedExpr.derived, - calculated: false, - isField: false, - }, - paramExpr: derivedExpr.derived, - }; - } else { - throw new Error("Cannot identify combinator arg " + element); - } - } else { - let variable = constructor.variablesMap.get(derivedExpr.name); - if (variable) { - variable.negated = true; - variable.isConst = toBeConst; - variable.initialExpr = derivedExpr.derived; - parameter = { - variable: variable, - paramExpr: derivedExpr.derived, - }; - } else { - throw new Error("Cannot identify combinator arg " + element); - } - } - } else if (element instanceof NumberExpr) { - parameter = { - variable: { - negated: false, - isConst: true, - type: "#", - name: undefined, - deriveExpr: new TLBNumberExpr(element.num), - initialExpr: new TLBNumberExpr(element.num), - calculated: false, - isField: false, - }, - paramExpr: new TLBNumberExpr(element.num), - }; - } else { - throw new Error("Cannot identify combinator arg: " + element); - } - constructor.parameters.push(parameter); - if (parameter.variable.name != undefined) { - constructor.parametersMap.set(parameter.variable.name, parameter); - } - }); - constructor.declaration = getStringDeclaration(declaration, input); - fillConstraintsAndNegationVars(constructor, declaration); - fillFields(typeItem, tlbType); - calculateVariables(constructor); - }); - fillParameterNames(tlbType); - fillArgNames(tlbType); - findConstructorsNaming(tlbType); - tlbType.constructors.sort(compareConstructors); - }); - checkAndRemovePrimitives(tlbCode, input, typeDeclarations); - findAvailableVarNamesForCode(tlbCode); -} -function fillConstraintsAndNegationVars( - constructor: TLBConstructorBuild, - declaration: Declaration -) { - declaration.fields.forEach((field) => { - if ( - field instanceof FieldCurlyExprDef && - field.expr instanceof CompareExpr - ) { - if (field.expr.op == "=") { - let myMathExpr = convertToMathExpr(field.expr); - let negatedVariable = getNegatedVariable(myMathExpr); - if (negatedVariable) { - myMathExpr = reorganizeExpression(myMathExpr, negatedVariable); - if (myMathExpr instanceof TLBBinaryOp) { - myMathExpr = myMathExpr.right; - } - let variable = constructor.variablesMap.get(negatedVariable); - if (variable) { - variable.negated = true; - variable.deriveExpr = myMathExpr; - } else { - throw new Error(`Variable ${negatedVariable} not defined`); - } - } else { - constructor.constraints.push(myMathExpr); - } - } else { - constructor.constraints.push(convertToMathExpr(field.expr)); - } - } - }); -} -function fillParameterNames(tlbType: TLBTypeBuild) { - let parameterNames: (string | undefined)[] = []; - tlbType.constructors[0]?.parameters.forEach((element) => { - parameterNames.push(element.variable.name); - }); - tlbType.constructors.forEach((constructor) => { - for (let i = 0; i < constructor.parameters.length; i++) { - if (parameterNames[i] == undefined) { - let parameterName = constructor.parameters[i]?.variable.name; - if (parameterName != undefined) { - parameterNames[i] = parameterName; - } - } - } - }); - for (let i = 0; i < parameterNames.length; i++) { - if (parameterNames[i] == undefined) { - parameterNames[i] = "arg" + i; - } - } - tlbType.constructors.forEach((constructor) => { - for (let i = 0; i < constructor.parameters.length; i++) { - let parameterName = parameterNames[i]; - if ( - parameterName != undefined && - constructor.parameters[i]?.variable.name == undefined - ) { - constructor.parameters[i]!.variable.name = parameterName; - } - } - }); -} -function fillArgNames(tlbType: TLBTypeBuild) { - let argNames: (string | undefined)[] = []; - tlbType.constructors[0]?.parameters.forEach((element) => { - argNames.push(undefined); - }); - - tlbType.constructors.forEach((constructor) => { - for (let i = 0; i < constructor.parameters.length; i++) { - let argName = constructor.parameters[i]?.argName; - if (argName) { - argNames[i] = argName; - } - } - }); - tlbType.constructors.forEach((constructor) => { - for (let i = 0; i < constructor.parameters.length; i++) { - let argName = argNames[i]; - let parameter = constructor.parameters[i]; - if (argName != undefined && parameter != undefined) { - parameter.argName = argName; - if (parameter.paramExpr instanceof TLBVarExpr) { - parameter.variable.deriveExpr = new TLBVarExpr(parameter.argName); - parameter.paramExpr = parameter.variable.deriveExpr; - } - } - } - }); -} -function compareConstructors( - a: TLBConstructorBuild, - b: TLBConstructorBuild -): number { - let aPriority = constructorPriority(a); - let bPriority = constructorPriority(b); - if (aPriority < bPriority) { - return 1; - } - if (aPriority > bPriority) { - return -1; - } - return 0; -} -function constructorPriority(c: TLBConstructorBuild): number { - let result = 0; - if (c.tag.bitLen > 0) { - result++; - } - c.parameters.forEach((parameter) => { - if (parameter.variable.isConst) { - result++; - } - }); - return result; -} -function reorganizeWithArg( - mathExpr: TLBMathExpr, - argName: string, - varName: string -): TLBMathExpr { - let reorganized = reorganizeExpression( - new TLBBinaryOp( - new TLBVarExpr(argName), - mathExpr, - "=", - new Set(), - false - ), - varName - ); - if (reorganized instanceof TLBBinaryOp) { - return reorganized.right; - } - throw new Error(`Couldn't reorganize expression ${mathExpr}`); -} -function getConstructorTag( - declaration: Declaration, - input: string[] -): TLBConstructorTag { - let tag = declaration.constructorDef.tag; - if ( - (tag == null && declaration.constructorDef.name == "_") || - (tag && tag.length > 1 && tag[1] == "_") - ) { - return { - bitLen: 0, - binary: "", - }; - } - if (tag == null) { - let opCode = calculateOpcode(declaration, input); - return { - bitLen: 32, - binary: "0x" + opCode, - }; - } - if (tag[0] == "$") { - return { - bitLen: tag?.length - 1, - binary: "0b" + tag.slice(1), - }; - } - if (tag[0] == "#") { - return { - bitLen: (tag?.length - 1) * 4, - binary: "0x" + tag.slice(1), - }; - } - throw new Error("Unknown tag " + tag); -} -function findConstructorsNaming(tlbType: TLBTypeBuild) { - let constructorNames: Set = new Set(); - let constructorIndex = 0; - tlbType.constructors.forEach((current) => { - while (constructorNames.has(current.name)) { - current.name += constructorIndex.toString(); - } - constructorNames.add(current.name); - constructorIndex++; - }); -} -function checkAndRemovePrimitives( - tlbCode: TLBCodeBuild, - input: string[], - typeDeclarations: Map< - String, - { declaration: Declaration; constructor: TLBConstructorBuild }[] - > -) { - let toDelete: string[] = []; - - let typesToDelete = new Map(); - typesToDelete.set("Bool", ["4702fd23", "f0e8d7f"]); - typesToDelete.set("MsgAddressInt", ["d7b672a", "6d593e8a"]); - - typesToDelete.forEach((opCodesExpected: string[], typeName: string) => { - let typeItems = typeDeclarations.get(typeName); - if (typeItems) { - let opCodesActual: string[] = []; - typeItems.forEach((typeItem) => { - opCodesActual.push(calculateOpcode(typeItem.declaration, input)); - }); - if (!opCodeSetsEqual(opCodesExpected, opCodesActual)) { - throw new Error("Bool primitive type is not correct in scheme"); - } - toDelete.push(typeName); - } - }); - - toDelete.forEach((name: string) => { - tlbCode.types.delete(name); - }); -} -function findAvailableVarNamesForCode(tlbCode: TLBCodeBuild) { - tlbCode.types.forEach((tlbType) => { - tlbType.constructors.forEach((constructor) => { - let variablesSet = new Set(); - findAvailableFieldsNames(constructor.fields, variablesSet); - }); - }); -} -function findAvailableFieldsNames( - fields: TLBField[], - variablesSet: Set -) { - fields.forEach((field) => { - if (field.subFields.length == 0) { - findAvailableFieldName(field, variablesSet); - } - findAvailableFieldsNames(field.subFields, variablesSet); - }); -} -function findAvailableFieldName(field: TLBField, variablesSet: Set) { - let index = 0; - field.name = findNotReservedName(field.name); - while (variablesSet.has(field.name)) { - field.name = findNotReservedName(field.name + "_" + index); - index++; - } - variablesSet.add(field.name); -} -export function convertCodeToReadonly(tlbCode: TLBCodeBuild): TLBCode { - let newTypes = new Map(); - tlbCode.types.forEach((value, key) => { - let newConstructors = new Array(); - value.constructors.forEach((value) => { - let newVariablesMap = new Map(); - value.variablesMap.forEach((value, key) => { - newVariablesMap.set(key, convertVariableToReadonly(value)); - }); - let newParametersMap = new Map(); - value.parametersMap.forEach((value, key) => { - newParametersMap.set(key, convertParameterToReadonly(value)); - }); - let newConstructor = new TLBConstructor( - value.parameters.map(convertParameterToReadonly), - value.variables.map(convertVariableToReadonly), - newVariablesMap, - newParametersMap, - value.name, - value.fields, - value.tag, - value.constraints, - value.declaration, - value.tlbType - ); - newConstructors.push(newConstructor); - }); - let newType = new TLBType(value.name, newConstructors); - newTypes.set(key, newType); - }); - return new TLBCode(newTypes); -} -function convertParameterToReadonly( - tlbParameter: TLBParameterBuild -): TLBParameter { - return new TLBParameter( - convertVariableToReadonly(tlbParameter.variable), - tlbParameter.paramExpr, - tlbParameter.argName - ); -} -function convertVariableToReadonly(tlbVariable: TLBVariableBuild): TLBVariable { - if (tlbVariable.name == undefined) { - throw new Error("Variable is undefined"); - } - return new TLBVariable( - tlbVariable.isConst, - tlbVariable.negated, - tlbVariable.type, - tlbVariable.name, - tlbVariable.isField, - tlbVariable.deriveExpr, - tlbVariable.initialExpr - ); -} -function calculateOpcode(declaration: Declaration, input: string[]): string { - let scheme = getStringDeclaration(declaration, input); - let constructor = scheme.substring(0, scheme.indexOf(" ")); - const rest = scheme.substring(scheme.indexOf(" ")); - if (constructor.includes("#")) { - constructor = constructor.substring(0, constructor.indexOf("#")); - } - scheme = - constructor + - " " + - rest - .replace(/\(/g, "") - .replace(/\)/g, "") - .replace(/\s+/g, " ") - .replace(/;/g, "") - .trim(); - return (BigInt(crc32.str(scheme)) & BigInt(2147483647)).toString(16); -} -function getStringDeclaration( - declaration: Declaration, - input: string[] -): string { - let result = ""; - let splittedInput = input; - let currentLine = declaration.locations.line - 1; - let currentColumn = 0; - while (!splittedInput[currentLine]?.includes(";")) { - result += splittedInput[currentLine]?.substring(currentColumn) + "\n"; - currentLine++; - currentColumn = 0; - } - let currentInput = splittedInput[currentLine]; - if (currentInput) { - result += currentInput.substring( - currentColumn, - currentInput.indexOf(";") + 1 - ); - } - return result; -} -function calculateVariables(constructor: TLBConstructorBuild) { - constructor.variables.forEach((variable) => { - calculateVariable(variable, constructor); - }); - constructor.parameters.forEach((parameter) => { - calculateVariable(parameter.variable, constructor); - }); -} diff --git a/src/astbuilder/handle_field.ts b/src/astbuilder/handle_field.ts deleted file mode 100644 index 0ac9119..0000000 --- a/src/astbuilder/handle_field.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { - BuiltinOneArgExpr, - BuiltinZeroArgs, - CellRefExpr, - CombinatorExpr, - CondExpr, - Declaration, - FieldAnonymousDef, - FieldDefinition, - FieldExprDef, - FieldNamedDef, - MathExpr, - NameExpr, -} from "@igorivaniuk/tlb-parser/dist/ast/nodes"; -import { TLBField } from "../ast"; -import { getType } from "./handle_type"; -import { TLBConstructorBuild, TLBTypeBuild } from "./utils"; - -function getField( - field: FieldDefinition, - constructor: TLBConstructorBuild, - fieldIndex: string -): TLBField | undefined { - if (field instanceof FieldAnonymousDef) { - let result: TLBField = { - name: "", - anonymous: true, - fieldType: { kind: "TLBBoolType" }, - subFields: [], - }; - let currentFieldIndex = 0; - field.fields.forEach((field) => { - let subField = getField( - field, - constructor, - fieldIndex + "_" + currentFieldIndex.toString() - ); - if (subField) { - result.subFields.push(subField); - } - currentFieldIndex++; - }); - return result; - } - - if (field instanceof FieldNamedDef || field instanceof FieldExprDef) { - let fieldName: string; - if (field instanceof FieldNamedDef) { - fieldName = field.name; - } else { - fieldName = "anon" + fieldIndex; - } - if ( - field instanceof FieldExprDef && - field.expr instanceof NameExpr && - field.expr.name == "_" - ) { - return undefined; - } - - if (field.expr instanceof CellRefExpr) { - if ( - field.expr.expr instanceof CombinatorExpr && - (field.expr.expr.name == "MERKLE_UPDATE" || - field.expr.expr.name == "MERKLE_ROOT") - ) { - return { - name: fieldName, - anonymous: true, - fieldType: { kind: "TLBExoticType" }, - subFields: [], - }; - } else { - let subField = getField( - new FieldNamedDef(fieldName, field.expr.expr), - constructor, - fieldIndex + "_" + "0" - ); - if (subField) { - let result: TLBField = { - name: fieldName, - anonymous: true, - fieldType: { kind: "TLBBoolType" }, - subFields: [subField], - }; - return result; - } - return subField; - } - } - - if ( - field.expr instanceof CombinatorExpr || - field.expr instanceof NameExpr || - field.expr instanceof BuiltinZeroArgs || - field.expr instanceof BuiltinOneArgExpr || - field.expr instanceof MathExpr || - field.expr instanceof CondExpr - ) { - let fieldTypeName: string; - if (field.expr instanceof MathExpr || field.expr instanceof CondExpr) { - fieldTypeName = ""; - } else { - fieldTypeName = field.expr.name; - } - let fieldInfo = getType(field.expr, constructor, fieldTypeName); - return { - name: fieldName, - anonymous: !(field instanceof FieldNamedDef), - fieldType: fieldInfo, - subFields: [], - }; - } - } - return undefined; -} - -export function fillFields( - typeItem: { declaration: Declaration; constructor: TLBConstructorBuild }, - tlbType: TLBTypeBuild -) { - let constructor = typeItem.constructor; - let declaration = typeItem.declaration; - - let fieldIndex = -1; - - declaration.fields.forEach((fieldDecl) => { - fieldIndex++; - let field = getField(fieldDecl, constructor, fieldIndex.toString()); - if (field != undefined) { - constructor.fields.push(field); - } - }); -} diff --git a/src/astbuilder/handle_type.ts b/src/astbuilder/handle_type.ts deleted file mode 100644 index 0cb4415..0000000 --- a/src/astbuilder/handle_type.ts +++ /dev/null @@ -1,284 +0,0 @@ -import { - BuiltinOneArgExpr, - BuiltinZeroArgs, - CellRefExpr, - CombinatorExpr, - CondExpr, - MathExpr, - NameExpr, - NegateExpr, - NumberExpr, - Expression as ParserExpression, -} from "@igorivaniuk/tlb-parser/dist/ast/nodes"; -import { - TLBBinaryOp, - TLBFieldType, - TLBMathExpr, - TLBNumberExpr, - TLBUnaryOp, - TLBVarExpr, -} from "../ast"; -import { - TLBConstructorBuild, - convertToMathExpr, - getCalculatedExpression, - splitForTypeValue, -} from "./utils"; - -export function getType( - expr: ParserExpression, - constructor: TLBConstructorBuild, - fieldTypeName: string -): TLBFieldType { - if (expr instanceof BuiltinZeroArgs) { - if (expr.name == "#") { - return { - kind: "TLBNumberType", - bits: new TLBNumberExpr(32), - storeBits: new TLBNumberExpr(32), - signed: false, - maxBits: 32, - }; - } else { - throw new Error("Expression not supported" + expr); - } - } else if (expr instanceof BuiltinOneArgExpr) { - if (expr.name.toString() == "##" || expr.name.toString() == "(##)") { - if (expr.arg instanceof NumberExpr) { - return { - kind: "TLBNumberType", - bits: new TLBNumberExpr(expr.arg.num), - storeBits: new TLBNumberExpr(expr.arg.num), - signed: false, - maxBits: expr.arg.num, - }; - } - if (expr.arg instanceof NameExpr) { - let parameter = constructor.parametersMap.get(expr.arg.name); - if ( - !parameter || - !parameter.variable.deriveExpr || - !parameter.variable.initialExpr - ) { - throw new Error(`Couldn't handle expression ${expr}`); - } - return { - kind: "TLBNumberType", - bits: getCalculatedExpression( - parameter.variable.deriveExpr, - constructor - ), - storeBits: parameter.variable.initialExpr, - signed: false, - maxBits: undefined, - }; - } else { - throw new Error(`Couldn't handle expression ${expr}`); - } - } else if (expr.name == "#<") { - if (expr.arg instanceof NumberExpr || expr.arg instanceof NameExpr) { - let bits = new TLBUnaryOp( - new TLBBinaryOp( - getCalculatedExpression(convertToMathExpr(expr.arg), constructor), - new TLBNumberExpr(1), - "-" - ), - "." - ); - return { - kind: "TLBNumberType", - bits: bits, - storeBits: bits, - signed: false, - maxBits: 32, - }; - } else { - throw new Error(`Couldn't handle expression ${expr}`); - } - } else if (expr.name == "#<=") { - if (expr.arg instanceof NumberExpr || expr.arg instanceof NameExpr) { - let bits = new TLBUnaryOp( - getCalculatedExpression(convertToMathExpr(expr.arg), constructor), - "." - ); - return { - kind: "TLBNumberType", - bits: bits, - storeBits: bits, - signed: false, - maxBits: 32, - }; - } else { - throw new Error(`Couldn't handle expression ${expr}`); - } - } - } else if (expr instanceof CombinatorExpr) { - if ( - expr.name == "int" && - expr.args.length == 1 && - (expr.args[0] instanceof MathExpr || - expr.args[0] instanceof NumberExpr || - expr.args[0] instanceof NameExpr) - ) { - return { - kind: "TLBNumberType", - bits: getCalculatedExpression( - convertToMathExpr(expr.args[0]), - constructor - ), - storeBits: convertToMathExpr(expr.args[0]), - signed: true, - maxBits: undefined, - }; - } else if ( - expr.name == "uint" && - expr.args.length == 1 && - (expr.args[0] instanceof MathExpr || - expr.args[0] instanceof NumberExpr || - expr.args[0] instanceof NameExpr) - ) { - return { - kind: "TLBNumberType", - bits: getCalculatedExpression( - convertToMathExpr(expr.args[0]), - constructor - ), - storeBits: convertToMathExpr(expr.args[0]), - signed: false, - maxBits: undefined, - }; - } else if ( - expr.name == "bits" && - expr.args.length == 1 && - (expr.args[0] instanceof MathExpr || - expr.args[0] instanceof NumberExpr || - expr.args[0] instanceof NameExpr) - ) { - return { - kind: "TLBBitsType", - bits: getCalculatedExpression( - convertToMathExpr(expr.args[0]), - constructor - ), - }; - } else { - let argumentTypes: TLBFieldType[] = []; - expr.args.forEach((arg) => { - let thefield = getType(arg, constructor, fieldTypeName); - argumentTypes.push(thefield); - }); - return { - kind: "TLBNamedType", - name: expr.name, - arguments: argumentTypes, - }; - } - } else if (expr instanceof NameExpr) { - let theNum; - if (expr.name == "Int") { - return { - kind: "TLBNumberType", - bits: new TLBNumberExpr(257), - storeBits: new TLBNumberExpr(257), - signed: true, - maxBits: 257, - }; - } else if (expr.name == "Bits") { - return { kind: "TLBBitsType", bits: new TLBNumberExpr(1023) }; - } else if (expr.name == "Bit") { - return { kind: "TLBBitsType", bits: new TLBNumberExpr(1) }; - } else if (expr.name == "Uint") { - return { - kind: "TLBNumberType", - bits: new TLBNumberExpr(257), - storeBits: new TLBNumberExpr(257), - signed: false, - maxBits: 257, - }; - } else if (expr.name == "Any" || expr.name == "Cell") { - return { kind: "TLBCellType" }; - } else if ((theNum = splitForTypeValue(expr.name, "int")) != undefined) { - return { - kind: "TLBNumberType", - bits: new TLBNumberExpr(theNum), - storeBits: new TLBNumberExpr(theNum), - signed: true, - maxBits: theNum, - }; - } else if ((theNum = splitForTypeValue(expr.name, "uint")) != undefined) { - return { - kind: "TLBNumberType", - bits: new TLBNumberExpr(theNum), - storeBits: new TLBNumberExpr(theNum), - signed: false, - maxBits: theNum, - }; - } else if ((theNum = splitForTypeValue(expr.name, "bits")) != undefined) { - return { kind: "TLBBitsType", bits: new TLBNumberExpr(theNum) }; - } else if (expr.name == "Bool") { - return { kind: "TLBBoolType" }; - } else if (expr.name == "MsgAddressInt") { - return { kind: "TLBAddressType" }; - } else { - if (constructor.variablesMap.get(expr.name)?.type == "#") { - return { - kind: "TLBExprMathType", - expr: getCalculatedExpression(new TLBVarExpr(expr.name), constructor), - }; - } else { - return { kind: "TLBNamedType", name: expr.name, arguments: [] }; - } - } - } else if (expr instanceof NumberExpr) { - return { kind: "TLBExprMathType", expr: new TLBNumberExpr(expr.num) }; - } else if (expr instanceof NegateExpr && expr.expr instanceof NameExpr) { - return { kind: "TLBNegatedType", variableName: expr.expr.name }; - } else if (expr instanceof CellRefExpr) { - let subExprInfo = getType(expr.expr, constructor, fieldTypeName); - return { kind: "TLBCellInsideType", value: subExprInfo }; - } else if (expr instanceof MathExpr) { - if (fieldTypeName == "") { - if (expr.op == "*") { - let subExprInfo = getType(expr.right, constructor, fieldTypeName); - return { - kind: "TLBMultipleType", - times: getCalculatedExpression( - convertToMathExpr(expr.left), - constructor - ), - value: subExprInfo, - }; - } else { - throw new Error(`Couldn't handle expression ${expr}`); - } - } else { - return { - kind: "TLBExprMathType", - expr: getCalculatedExpression(convertToMathExpr(expr), constructor), - }; - } - } else if (expr instanceof CondExpr) { - let subExprInfo = getType(expr.condExpr, constructor, fieldTypeName); - if (expr.left instanceof NameExpr) { - let condition: TLBMathExpr = getCalculatedExpression( - convertToMathExpr(expr.left), - constructor - ); - if (expr.dotExpr != null) { - condition = new TLBBinaryOp( - condition, - new TLBBinaryOp( - new TLBNumberExpr(1), - new TLBNumberExpr(expr.dotExpr), - "<<" - ), - "&" - ); - } - return { kind: "TLBCondType", value: subExprInfo, condition: condition }; - } - } else { - throw new Error(`Couldn't handle expression ${expr}`); - } - throw new Error(`Couldn't handle expression ${expr}`); -} diff --git a/src/astbuilder/utils.ts b/src/astbuilder/utils.ts deleted file mode 100644 index 097e22d..0000000 --- a/src/astbuilder/utils.ts +++ /dev/null @@ -1,264 +0,0 @@ -import { - CompareExpr, - MathExpr, - NameExpr, - NegateExpr, - NumberExpr, - SimpleExpr, -} from "@igorivaniuk/tlb-parser/dist/ast/nodes"; -import { - TLBBinaryOp, - TLBConstructorTag, - TLBField, - TLBMathExpr, - TLBNumberExpr, - TLBVarExpr, - TLBVariableType, -} from "../ast"; - - -export type TLBVariableBuild = { - isConst: boolean; - negated: boolean; - type: TLBVariableType; - name: string | undefined; - deriveExpr?: TLBMathExpr; - initialExpr?: TLBMathExpr; - isField: boolean; - - calculated: boolean; -}; -export type TLBParameterBuild = { - variable: TLBVariableBuild; - paramExpr: TLBMathExpr; - argName?: string; -}; -export type TLBConstructorBuild = { - parameters: Array; - variables: Array; - variablesMap: Map; - parametersMap: Map; - name: string; - fields: Array; - tag: TLBConstructorTag; - constraints: Array; - declaration: string; - tlbType: string; -}; -export type TLBCodeBuild = { - types: Map; -}; -export type TLBTypeBuild = { - name: string; - constructors: Array; -}; -export function opCodeSetsEqual(a: string[], b: string[]) { - if (a === b) return true; - if (a == null || b == null) return false; - if (a.length !== b.length) return false; - - a = a.sort(); - b = b.sort(); - - for (var i = 0; i < a.length; ++i) { - if (a[i] !== b[i]) return false; - } - return true; -} -export function calculateVariable( - variable: TLBVariableBuild, - constructor: TLBConstructorBuild -) { - if (variable.calculated) { - return; - } - if (!variable.deriveExpr) { - return; - } - variable.calculated = true; - variable.deriveExpr = getCalculatedExpression( - variable.deriveExpr, - constructor - ); -} -export function getCalculatedExpression( - expr: TLBMathExpr, - constructor: TLBConstructorBuild -): TLBMathExpr { - if (expr instanceof TLBVarExpr) { - let variable = constructor.variablesMap.get(expr.x); - if (variable) { - calculateVariable(variable, constructor); - if (variable.deriveExpr) { - return variable.deriveExpr; - } - } - } - if (expr instanceof TLBBinaryOp) { - let left = getCalculatedExpression(expr.left, constructor); - let right = getCalculatedExpression(expr.right, constructor); - return new TLBBinaryOp( - left, - right, - expr.operation, - expr.variables, - expr.hasNeg - ); - } - return expr; -} -export function splitForTypeValue(name: string, typeName: string) { - if (!name.startsWith(typeName)) { - return undefined; - } - let num = parseInt(name.slice(typeName.length)); - if (num == undefined) { - return undefined; - } - if (name != typeName + num.toString()) { - return undefined; - } - return num; -} -export function deriveMathExpression( - mathExpr: MathExpr | NameExpr | NumberExpr | CompareExpr -) { - let myMathExpr = convertToMathExpr(mathExpr); - return { - name: getVariableName(myMathExpr), - derived: myMathExpr, - }; -} -export function getVariableName(myMathExpr: TLBMathExpr): string | undefined { - if (myMathExpr instanceof TLBVarExpr) { - return myMathExpr.x; - } - if (myMathExpr instanceof TLBBinaryOp) { - if (myMathExpr.left.variables.size) { - return getVariableName(myMathExpr.left); - } else { - return getVariableName(myMathExpr.right); - } - } - return undefined; -} -export function reorganizeExpression( - mathExpr: TLBMathExpr, - variable: string -): TLBMathExpr { - if (mathExpr instanceof TLBBinaryOp && mathExpr.operation == "=") { - if (mathExpr.left.variables.has(variable)) { - mathExpr = new TLBBinaryOp( - mathExpr.right, - mathExpr.left, - "=", - mathExpr.variables, - mathExpr.hasNeg - ); - } - if (mathExpr.right instanceof TLBVarExpr) { - return new TLBBinaryOp( - mathExpr.right, - mathExpr.left, - "=", - mathExpr.variables, - mathExpr.hasNeg - ); - } - let rightSide = mathExpr.right; - if (rightSide instanceof TLBBinaryOp) { - let op = ""; - if (rightSide.operation == "*") { - op = "/"; - } else if (rightSide.operation == "+") { - op = "-"; - } else { - throw new Error("invalid operation"); - } - let withVariable = undefined; - let other = undefined; - if (rightSide.left.variables.has(variable)) { - withVariable = rightSide.left; - other = rightSide.right; - } else { - other = rightSide.left; - withVariable = rightSide.right; - } - let leftSide = new TLBBinaryOp(mathExpr.left, other, op); - mathExpr = new TLBBinaryOp( - leftSide, - withVariable, - "=", - new Set([...leftSide.variables, ...withVariable.variables]), - leftSide.hasNeg || rightSide.hasNeg - ); - return reorganizeExpression(mathExpr, variable); - } - } - throw new Error(`Couldn't reogranize expression: ${mathExpr}`); -} -export function getNegatedVariable(mathExpr: TLBMathExpr): string | undefined { - if (mathExpr.hasNeg) { - if (mathExpr instanceof TLBBinaryOp) { - if (mathExpr.left.hasNeg) { - return getNegatedVariable(mathExpr.left); - } - if (mathExpr.right.hasNeg) { - return getNegatedVariable(mathExpr.right); - } - } - if (mathExpr instanceof TLBVarExpr) { - return mathExpr.x; - } - } - return undefined; -} -export function convertToMathExpr( - mathExpr: SimpleExpr | NameExpr | NumberExpr | CompareExpr, - negated: boolean = false -): TLBMathExpr { - if (mathExpr instanceof NameExpr) { - let variables = new Set(); - variables.add(mathExpr.name); - return new TLBVarExpr(mathExpr.name, variables, negated); - } - if (mathExpr instanceof NumberExpr) { - return new TLBNumberExpr(mathExpr.num, new Set(), false); - } - if (mathExpr instanceof MathExpr) { - let left = convertToMathExpr(mathExpr.left, negated); - let right = convertToMathExpr(mathExpr.right, negated); - return new TLBBinaryOp(left, right, mathExpr.op); - } - if (mathExpr instanceof CompareExpr) { - let left = convertToMathExpr(mathExpr.left, negated); - let right = convertToMathExpr(mathExpr.right, negated); - let operation: string = mathExpr.op; - return new TLBBinaryOp(left, right, operation); - } - if (mathExpr instanceof NegateExpr) { - if ( - mathExpr.expr instanceof MathExpr || - mathExpr.expr instanceof NameExpr || - mathExpr.expr instanceof NumberExpr - ) { - let expression = convertToMathExpr(mathExpr.expr, true); - if (expression instanceof TLBBinaryOp) { - return new TLBBinaryOp( - expression.left, - expression.right, - expression.operation, - expression.variables, - true - ); - } - if (expression instanceof TLBVarExpr) { - return new TLBVarExpr(expression.x, expression.variables, true); - } - if (expression instanceof TLBNumberExpr) { - return new TLBNumberExpr(expression.n, expression.variables, true); - } - } - } - throw new Error(`Could not convert expression: ${mathExpr}`); -} diff --git a/src/generators/CodeBuilder.ts b/src/generators/CodeBuilder.ts deleted file mode 100644 index c52ff16..0000000 --- a/src/generators/CodeBuilder.ts +++ /dev/null @@ -1,64 +0,0 @@ -/** - * Copyright (c) Whales Corp. - * All Rights Reserved. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -export class CodeBuilder { - tabLevel = 0 - code = '' - - tab() { - this.tabLevel++ - } - - unTab() { - this.tabLevel-- - } - - inTab(callback: () => void) { - this.tab(); - callback() - this.unTab(); - } - - add(text?: string, moveLine = true) { - if (!text) { - this.code += '\n' - return - } - - let tab = ' '.repeat(this.tabLevel * 4) - this.code += tab + text + (moveLine ? '\n' : '') - } - - addMultiline(text: string, inline = false) { - let lines = text.split('\n') - let i = 0 - for (let line of lines) { - if (line === '\n' && lines.indexOf(line) === lines.length - 1) { - continue - } - if (inline && i === 0) { - this.code += line + '\n' - } else { - this.add(line) - } - i++ - } - } - - append(code: CodeBuilder) { - this.addMultiline(code.render()) - } - - appendInline(code: CodeBuilder) { - this.addMultiline(code.render(), true) - } - - render() { - return this.code - } -} \ No newline at end of file diff --git a/src/generators/generator.ts b/src/generators/generator.ts deleted file mode 100644 index c9e29af..0000000 --- a/src/generators/generator.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { TLBCode, TLBType } from "../ast" -import { CodeBuilder } from "./CodeBuilder" -import { GenDeclaration as TSGenDeclaration, TheNode } from "./typescript/tsgen" - -export interface CodeGenerator { - jsCodeDeclarations: CommonGenDeclaration[] - jsCodeConstructorDeclarations: CommonGenDeclaration[] - jsCodeFunctionsDeclarations: CommonGenDeclaration[] - tlbCode: TLBCode - - addTonCoreClassUsage(name: string): void - addBitLenFunction(): void - addTlbType(tlbType: TLBType): void - toCode(node: TheNode, code: CodeBuilder): CodeBuilder -} - -export type CommonGenDeclaration = TSGenDeclaration; \ No newline at end of file diff --git a/src/generators/typescript/complex_expr.ts b/src/generators/typescript/complex_expr.ts deleted file mode 100644 index 7d6a08f..0000000 --- a/src/generators/typescript/complex_expr.ts +++ /dev/null @@ -1,332 +0,0 @@ -import { TLBCode, TLBConstructorTag, TLBField } from "../../ast"; -import { findNotReservedName, firstLower, getCurrentSlice } from "../../utils"; -import { ConstructorContext } from "./generator"; -import { BinaryExpression, Expression, GenDeclaration, Identifier, Statement, TypeExpression, TypeParametersExpression, TypedIdentifier, id, tArrowFunctionExpression, tArrowFunctionType, tBinaryExpression, tDeclareVariable, tExpressionStatement, tForCycle, tFunctionCall, tFunctionDeclaration, tIfStatement, tMemberExpression, tMultiStatement, tNumericLiteral, tReturnStatement, tStringLiteral, tTypeParametersExpression, tTypeWithParameters, tTypedIdentifier, tUnaryOpExpression, toCode } from "./tsgen"; -import { ExprForParam, getNegationDerivationFunctionBody } from "./utils"; - -export function tEqualExpression(left: Expression, right: Expression) { - return tBinaryExpression(left, '==', right) -} -export function storeTagExpression(tag: TLBConstructorTag): Statement { - return tExpressionStatement( - tFunctionCall(tMemberExpression(id("builder"), id("storeUint")), [ - id(tag.binary), - tNumericLiteral(tag.bitLen), - ]) - ); -}export function storeFunctionStmt(statements: Statement[]): Statement { - return tReturnStatement( - tArrowFunctionExpression( - [tTypedIdentifier(id("builder"), id("Builder"))], - statements - ) - ); -} -export function checkKindStmt(variableCombinatorName: string, constructorTypeName: string, storeStatement: Statement): Statement { - return tIfStatement( - tEqualExpression( - tMemberExpression(id(variableCombinatorName), id("kind")), - tStringLiteral(constructorTypeName) - ), - [storeStatement] - ); -} -export function bitlenFunctionDecl(): GenDeclaration { - return tFunctionDeclaration( - id("bitLen"), - tTypeParametersExpression([]), - null, - [tTypedIdentifier(id("n"), id("number"))], - [tExpressionStatement(id("return n.toString(2).length;"))] - ); -} -export function typedSlice() { - return [tTypedIdentifier(id("slice"), id("Slice"))]; -} -export function sliceLoad(slicePrefix: number[], currentSlice: string) { - return tExpressionStatement( - tDeclareVariable( - id(getCurrentSlice(slicePrefix, "slice")), - tFunctionCall( - tMemberExpression( - tFunctionCall(tMemberExpression(id(currentSlice), id("loadRef")), []), - id("beginParse") - ), - [] - ) - ) - ); -} -export function simpleCycle(varName: string, finish: Expression): Statement { - return tForCycle( - tDeclareVariable(id(varName), tNumericLiteral(0)), - tBinaryExpression(id(varName), "<", finish), - tNumericLiteral(5), - [] - ); -} -export function storeFunctionParam(varName: string): TypedIdentifier { - return tTypedIdentifier( - id("store" + varName), - tArrowFunctionType( - [ - tTypedIdentifier( - id(firstLower(varName)), - id(varName) - ), - ], - tArrowFunctionType( - [tTypedIdentifier(id("builder"), id("Builder"))], - id("void") - ) - ) - ); -} -export function loadFunctionParam(varName: string): TypedIdentifier { - return tTypedIdentifier( - id("load" + varName), - tArrowFunctionType(typedSlice(), id(varName)) - ); -} -export function skipTagStmt(bitLen: number): Statement { - return tExpressionStatement( - tFunctionCall(tMemberExpression(id("slice"), id("loadUint")), [ - tNumericLiteral(bitLen), - ]) - ); -} -export function checkTagExpr(tag: TLBConstructorTag): BinaryExpression { - return tEqualExpression( - tFunctionCall(tMemberExpression(id("slice"), id("preloadUint")), [ - tNumericLiteral(tag.bitLen), - ]), - id(tag.binary) - ); -} -export function checkHasBitsForTag(bitLen: number): BinaryExpression { - return tBinaryExpression( - tMemberExpression(id("slice"), id("remainingBits")), - ">=", - tNumericLiteral(bitLen) - ); -} -export function storeFunctionExpr(typeParamExpr: TypeExpression, storeExpr2: Statement): Expression | undefined { - return tArrowFunctionExpression( - [tTypedIdentifier(id("arg"), typeParamExpr)], - [ - tReturnStatement( - tArrowFunctionExpression( - [tTypedIdentifier(id("builder"), id("Builder"))], - [storeExpr2] - ) - ), - ] - ); -} -export function coverFuncCall(loadExpr: Expression): Expression { - return loadExpr.type == "FunctionCall" ? tArrowFunctionExpression(typedSlice(), [ - tReturnStatement(loadExpr), - ]) : loadExpr; -} -export function storeExprForParam(theCell: string, exprForParam: ExprForParam, insideStoreParameters: Expression[]): Statement { - return tExpressionStatement( - tFunctionCall( - tMemberExpression( - id(theCell), - id("store" + exprForParam.fieldStoreSuffix) - ), - insideStoreParameters - ) - ); -} -export function returnSliceFunc(): Expression { - return tArrowFunctionExpression(typedSlice(), [ - tReturnStatement(id("slice")), - ]); -} -export function loadExprForParam(currentSlice: string, exprForParam: ExprForParam): Expression { - return tFunctionCall( - tMemberExpression( - id(currentSlice), - id("load" + exprForParam.fieldLoadSuffix) - ), - exprForParam.argLoadExpr ? [exprForParam.argLoadExpr] : [] - ); -} -export function storeCombinator( - typeName: string, - insideStoreParameters: Expression[], - storeFunctionsArray: Expression[], - currentTypeParameters: TypeParametersExpression, - theCell: string -): Statement { - return tExpressionStatement( - tFunctionCall( - tFunctionCall( - id("store" + typeName), - insideStoreParameters.concat(storeFunctionsArray), - currentTypeParameters - ), - [id(theCell)] - ) - ); -} -export function storeInNewCell(currentCell: string, storeExpr: Statement): Statement { - return tMultiStatement([ - tExpressionStatement( - tDeclareVariable(id(currentCell), tFunctionCall(id("beginCell"), [])) - ), - storeExpr, - tExpressionStatement( - tFunctionCall(tMemberExpression(id("builder"), id("storeRef")), [ - id(currentCell), - ]) - ), - ]); -} -export function loadFromNewSlice(loadExpr: Expression): Expression { - return tArrowFunctionExpression(typedSlice(), [ - sliceLoad([1, 0], "slice"), - tReturnStatement(loadExpr), - ]); -} -export function arrayedType(typeParamExpr: TypeExpression): TypeExpression { - return tTypeWithParameters( - id("Array"), - tTypeParametersExpression([typeParamExpr]) - ); -} -export function storeTupleStmt( - currentParam: Expression, - storeExpr: Statement, - typeParamExpr: TypeExpression -): Statement { - return tExpressionStatement( - tFunctionCall(tMemberExpression(currentParam, id("forEach")), [ - tArrowFunctionExpression( - [tTypedIdentifier(id("arg"), typeParamExpr)], - [storeExpr] - ), - ]) - ); -} -export function loadTupleExpr( - arrayLength: Expression, - loadExpr: Expression -): Expression { - return tFunctionCall( - tMemberExpression( - tFunctionCall(tMemberExpression(id("Array"), id("from")), [ - tFunctionCall( - tMemberExpression( - tFunctionCall(id("Array"), [arrayLength]), - id("keys") - ), - [] - ), - ]), - id("map") - ), - [ - tArrowFunctionExpression( - [tTypedIdentifier(id("arg"), id("number"))], - [tReturnStatement(loadExpr)] - ), - ] - ); -} -export function storeExprCond( - currentParam: Expression, - storeExpr: Statement -): Statement { - return tIfStatement(tBinaryExpression(currentParam, "!=", id("undefined")), [ - storeExpr, - ]); -} -export function storeExpressionNamedType( - typeName: string, - insideStoreParameters: Expression[], - currentCell: string -): Statement { - return tExpressionStatement( - tFunctionCall( - tFunctionCall(id("store" + typeName), insideStoreParameters), - [id(currentCell)] - ) - ); -} -export function storeRefObjectStmt( - currentCell: string, - ctx: ConstructorContext, - field: TLBField -): Statement { - return tExpressionStatement( - tFunctionCall(tMemberExpression(id(currentCell), id("storeRef")), [ - tMemberExpression(id(ctx.typeName), id(field.name)), - ]) - ); -} -export function loadRefStmt(slicePrefix: number[], currentSlice: string): Statement { - return tExpressionStatement( - tDeclareVariable( - id(getCurrentSlice(slicePrefix, "cell")), - tFunctionCall(tMemberExpression(id(currentSlice), id("loadRef")), []) - ) - ); -} -export function storeRefStmt(slicePrefix: number[], currentCell: string): Statement { - return tExpressionStatement( - tFunctionCall(tMemberExpression(id(currentCell), id("storeRef")), [ - id(getCurrentSlice(slicePrefix, "cell")), - ]) - ); -} -export function newCellStmt(slicePrefix: number[]): Statement { - return tExpressionStatement( - tDeclareVariable( - id(getCurrentSlice(slicePrefix, "cell")), - tFunctionCall(id("beginCell"), []) - ) - ); -} -export function checkConstraintStmt( - constraintAST: Expression, - exceptionCommentLastPart: string -): Statement { - return tIfStatement(tUnaryOpExpression("!", constraintAST), [ - tExpressionStatement( - id( - "throw new Error('Condition " + - toCode(constraintAST).code + - exceptionCommentLastPart + - "')" - ) - ), - ]); -} -export function inSeparateRef(slicePrefix: Array, callback: any) { - slicePrefix[slicePrefix.length - 1]++; - slicePrefix.push(0); - callback(); - slicePrefix.pop(); -} -export function negationDerivationFuncDecl( - tlbCode: TLBCode, - getParameterFunctionId: Identifier, - fieldName: string, - fieldTypeName: string, - argIndex: number -): GenDeclaration { - return tFunctionDeclaration( - getParameterFunctionId, - tTypeParametersExpression([]), - id("number"), - [tTypedIdentifier(id(findNotReservedName(fieldName)), id(fieldTypeName))], - getNegationDerivationFunctionBody( - tlbCode, - fieldTypeName, - argIndex, - fieldName - ) - ); -} diff --git a/src/generators/typescript/generator.ts b/src/generators/typescript/generator.ts deleted file mode 100644 index b8d0581..0000000 --- a/src/generators/typescript/generator.ts +++ /dev/null @@ -1,969 +0,0 @@ -import { - TLBCode, - TLBConstructor, - TLBField, - TLBFieldType, - TLBMathExpr, - TLBType, - TLBVariable, -} from "../../ast"; -import { - findNotReservedName, - firstLower, - getCurrentSlice, - getSubStructName, -} from "../../utils"; -import { CodeBuilder } from "../CodeBuilder"; -import { CodeGenerator } from "../generator"; -import { - arrayedType, - bitlenFunctionDecl, - checkConstraintStmt, - checkHasBitsForTag, - checkKindStmt, - checkTagExpr, - coverFuncCall, - inSeparateRef, - loadExprForParam, - loadFromNewSlice, - loadFunctionParam, - loadRefStmt, - loadTupleExpr, - negationDerivationFuncDecl, - newCellStmt, - returnSliceFunc, - skipTagStmt, - sliceLoad, - storeCombinator, - storeExprCond, - storeExprForParam, - storeExpressionNamedType, - storeFunctionExpr, - storeFunctionParam, - storeFunctionStmt, - storeInNewCell, - storeRefObjectStmt, - storeRefStmt, - storeTagExpression, - storeTupleStmt, - tEqualExpression, - typedSlice, -} from "./complex_expr"; -import { - BinaryExpression, - Expression, - GenDeclaration, - ObjectProperty, - Statement, - StructDeclaration, - TheNode, - TypeExpression, - TypeParametersExpression, - TypedIdentifier, - id, - tComment, - tExpressionStatement, - tFunctionCall, - tFunctionDeclaration, - tIfStatement, - tImportDeclaration, - tMemberExpression, - tObjectExpression, - tObjectProperty, - tReturnStatement, - tStringLiteral, - tStructDeclaration, - tTernaryExpression, - tTypeParametersExpression, - tTypeWithParameters, - tTypedIdentifier, - tUnionTypeDeclaration, - tUnionTypeExpression, - toCode, -} from "./tsgen"; -import { - ExprForParam, - FieldInfoType, - addLoadProperty, - convertToAST, - getCondition, - getParamVarExpr, - getTypeParametersExpression, - isBigInt, -} from "./utils"; - -/* - -Example for variables location in generated code: - -// bool_false$0 a:# b:(## 7) c:# = TwoConstructors; - -// bool_true$1 b:# = TwoConstructors; - - - -//---------------------------------------------------- - -//----------------------------------------- -export type TwoConstructors ------ = TwoConstructors_bool_false ------ | TwoConstructors_bool_true ------; - -//---------------------------- - -export interface TwoConstructors_bool_false ------ { - //--------------------------------------------------- - readonly kind: 'TwoConstructors_bool_false'; - readonly a: number; - readonly b: number; - readonly c: number; - //-------------------------------------------------- -} - -export interface TwoConstructors_bool_true ------ { - //--------------------------------------------------- - readonly kind: 'TwoConstructors_bool_true'; - readonly b: number; - //-------------------------------------------------- -} -//--------------------------- -//---------------------------------------- - -//------------------------------------------- -export function loadTwoConstructors(slice: Slice): TwoConstructors { - //---------------------------------- - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - //------------------------------------------- - slice.loadUint(1); - let a: number = slice.loadUint(32); - let b: number = slice.loadUint(7); - let c: number = slice.loadUint(32); - return { - //--------------------------------------- - kind: 'TwoConstructors_bool_false', - a: a, - b: b, - c: c, - //-------------------------------------- - } - //------------------------------------------ - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - //------------------------------------------- - slice.loadUint(1); - let b: number = slice.loadUint(32); - return { - //--------------------------------------- - kind: 'TwoConstructors_bool_true', - b: b, - //-------------------------------------- - - } - //------------------------------------------ - - - } - throw new Error('Expected one of "TwoConstructors_bool_false", "TwoConstructors_bool_true" in loading "TwoConstructors", but data does not satisfy any constructor'); - //--------------------------------- -} - - -export function storeTwoConstructors(twoConstructors: TwoConstructors): (builder: Builder) => void { - //--------------------------------- - if ((twoConstructors.kind == 'TwoConstructors_bool_false')) { - return ((builder: Builder) => { - //-------------------------------------- - builder.storeUint(0b0, 1); - builder.storeUint(twoConstructors.a, 32); - builder.storeUint(twoConstructors.b, 7); - builder.storeUint(twoConstructors.c, 32); - //------------------------------------- - }) - - } - if ((twoConstructors.kind == 'TwoConstructors_bool_true')) { - return ((builder: Builder) => { - //-------------------------------------- - builder.storeUint(0b1, 1); - builder.storeUint(twoConstructors.b, 32); - //------------------------------------- - }) - - } - throw new Error('Expected one of "TwoConstructors_bool_false", "TwoConstructors_bool_true" in loading "TwoConstructors", but data does not satisfy any constructor'); - //-------------------------------- -} - -//------------------------------------------ - -//--------------------------------------------------- - - -*/ - - - -export type ConstructorContext = { - constructor: TLBConstructor; - loadStatements: Statement[]; - storeStatements: Statement[]; - properties: TypedIdentifier[]; - loadProperties: ObjectProperty[]; - typeName: string; - name: string; -}; - -export class TypescriptGenerator implements CodeGenerator { - jsCodeDeclarations: GenDeclaration[] = []; - jsCodeConstructorDeclarations: GenDeclaration[] = []; - jsCodeFunctionsDeclarations: GenDeclaration[] = []; - tlbCode: TLBCode; - - constructor(tlbCode: TLBCode) { - this.tlbCode = tlbCode; - } - - addTonCoreClassUsage(name: string) { - this.jsCodeDeclarations.push( - tImportDeclaration(id(name), tStringLiteral("ton")) - ); - } - addBitLenFunction() { - this.jsCodeDeclarations.push(bitlenFunctionDecl()); - } - addTlbType(tlbType: TLBType): void { - let typeName = findNotReservedName( - firstLower(tlbType.name), - "0" - ); - let typeUnion: TypeExpression[] = []; - let constructorsDeclarations: StructDeclaration[] = []; - - let loadStatements: Statement[] = []; - let storeStatements: Statement[] = []; - - let structTypeParametersExpr: TypeParametersExpression = - tTypeParametersExpression([]); - - tlbType.constructors.forEach((constructor) => { - let constructorTypeName: string = getSubStructName(tlbType, constructor); - - let ctx: ConstructorContext = { - constructor: constructor, - name: findNotReservedName( - firstLower(constructorTypeName), - "_" + constructor.name - ), - typeName: typeName, - loadStatements: [], - loadProperties: [ - tObjectProperty(id("kind"), tStringLiteral(constructorTypeName)), - ], - properties: [ - tTypedIdentifier(id("kind"), tStringLiteral(constructorTypeName)), - ], - storeStatements: [], - }; - - structTypeParametersExpr = getTypeParametersExpression( - constructor.parameters - ); - - let slicePrefix: number[] = [0]; - - constructor.variables.forEach((variable) => { - this.addVarToConstructorLoadProperty(variable, ctx, constructor); - }); - - constructor.fields.forEach((field) => { - this.handleField(field, slicePrefix, ctx); - }); - - typeUnion.push( - tTypeWithParameters(id(constructorTypeName), structTypeParametersExpr) - ); - - let structX = tStructDeclaration( - id(constructorTypeName), - ctx.properties, - structTypeParametersExpr - ); - - constructor.constraints.forEach((constraint) => { - this.genCodeForConstraint( - constraint, - typeName, - tlbType, - ctx - ); - }); - - ctx.loadStatements.push( - tReturnStatement(tObjectExpression(ctx.loadProperties)) - ); - loadStatements = this.constructorStmtsToTypeStmts( - constructor, - tlbType, - ctx, - loadStatements - ); - - if (constructor.tag.bitLen != 0) { - ctx.storeStatements.splice( - 0, - 0, - storeTagExpression(constructor.tag) - ); - } - - let storeStatement: Statement = storeFunctionStmt( - ctx.storeStatements - ); - - if (tlbType.constructors.length > 1) { - storeStatement = checkKindStmt( - typeName, - constructorTypeName, - storeStatement - ); - } - storeStatements.push(storeStatement); - - constructorsDeclarations.push(structX); - - this.jsCodeFunctionsDeclarations.push(tComment(constructor.declaration)); - }); - - this.addExceptionStmts(tlbType, loadStatements, storeStatements); - - let loadFunctionParameters = typedSlice(); - const currentType = tTypeWithParameters( - id(tlbType.name), - structTypeParametersExpr - ); - let storeFunctionParameters = [ - tTypedIdentifier(id(typeName), currentType), - ]; - - this.addFunctionParameters( - tlbType, - loadFunctionParameters, - storeFunctionParameters - ); - - let loadFunction = tFunctionDeclaration( - id("load" + tlbType.name), - structTypeParametersExpr, - currentType, - loadFunctionParameters, - loadStatements - ); - - let storeFunction = tFunctionDeclaration( - id("store" + tlbType.name), - structTypeParametersExpr, - id("(builder: Builder) => void"), - storeFunctionParameters, - storeStatements - ); - - if (tlbType.constructors.length > 1) { - this.jsCodeConstructorDeclarations.push( - tUnionTypeDeclaration(currentType, tUnionTypeExpression(typeUnion)) - ); - } - constructorsDeclarations.forEach((element) => { - this.jsCodeConstructorDeclarations.push(element); - }); - - this.jsCodeFunctionsDeclarations.push(loadFunction); - this.jsCodeFunctionsDeclarations.push(storeFunction); - } - - private addFunctionParameters( - tlbType: TLBType, - loadFunctionParameters: TypedIdentifier[], - storeFunctionParameters: TypedIdentifier[] - ) { - let anyConstructor = tlbType.constructors[0]; - if (anyConstructor) { - anyConstructor.parameters.forEach((element) => { - if (element.variable.type == "Type") { - loadFunctionParameters.push(loadFunctionParam(element.variable.name)); - - storeFunctionParameters.push( - storeFunctionParam(element.variable.name) - ); - } - if (element.variable.type == "#" && !element.variable.negated) { - if (element.argName) { - loadFunctionParameters.push( - tTypedIdentifier(id(element.argName), id("number")) - ); - } else { - loadFunctionParameters.push( - tTypedIdentifier(id(element.variable.name), id("number")) - ); - } - } - }); - } else { - throw new Error( - `Type ${tlbType.name} should have at least one constructor` - ); - } - } - - private addExceptionStmts( - tlbType: TLBType, - loadStatements: Statement[], - storeStatements: Statement[] - ) { - let exceptionTypesComment = tlbType.constructors - .map((constructor) => { - return `"${getSubStructName(tlbType, constructor)}"`; - }) - .join(", "); - let exceptionComment = tExpressionStatement( - id( - "throw new Error('" + - `Expected one of ${exceptionTypesComment} in loading "${tlbType.name}", but data does not satisfy any constructor` + - "')" - ) - ); - if ( - tlbType.constructors.length > 1 || - tlbType.constructors.at(0)?.tag.bitLen != 0 - ) { - loadStatements.push(exceptionComment); - } - if (tlbType.constructors.length > 1) { - storeStatements.push(exceptionComment); - } - } - - private constructorStmtsToTypeStmts( - constructor: TLBConstructor, - tlbType: TLBType, - ctx: ConstructorContext, - loadStatements: Statement[] - ) { - if (constructor.tag.bitLen != 0 || tlbType.constructors.length > 1) { - let conditions: Array = []; - if (constructor.tag.bitLen != 0) { - conditions.push(checkHasBitsForTag(constructor.tag.bitLen)); - conditions.push(checkTagExpr(constructor.tag)); - let loadBitsStatement: Statement[] = [ - skipTagStmt(constructor.tag.bitLen), - ]; - ctx.loadStatements = loadBitsStatement.concat( - ctx.loadStatements - ); - } - constructor.parameters.forEach((param) => { - if (param.variable.isConst && !param.variable.negated) { - let argName = param.variable.name; - if (param.argName) { - argName = param.argName; - } - conditions.push( - tEqualExpression(id(argName), getParamVarExpr(param, constructor)) - ); - } - }); - loadStatements.push( - tIfStatement(getCondition(conditions), ctx.loadStatements) - ); - } else { - loadStatements = loadStatements.concat(ctx.loadStatements); - } - return loadStatements; - } - - private genCodeForConstraint( - constraint: TLBMathExpr, - variableCombinatorName: string, - tlbType: TLBType, - ctx: ConstructorContext - ) { - let loadConstraintAST = convertToAST(constraint, ctx.constructor); - let storeConstraintAST = convertToAST( - constraint, - ctx.constructor, - id(variableCombinatorName) - ); - let exceptionCommentLastPart = ` is not satisfied while loading "${getSubStructName( - tlbType, - ctx.constructor - )}" for type "${tlbType.name}"`; - ctx.loadStatements.push( - checkConstraintStmt(loadConstraintAST, exceptionCommentLastPart) - ); - ctx.storeStatements.push( - checkConstraintStmt(storeConstraintAST, exceptionCommentLastPart) - ); - } - - private addVarToConstructorLoadProperty( - variable: TLBVariable, - ctx: ConstructorContext, - constructor: TLBConstructor - ) { - let varExpr = undefined; - - if (variable.negated) { - if (variable.deriveExpr) { - varExpr = convertToAST(variable.deriveExpr, constructor); - } - } - - if (variable.type == "#" && !variable.isField) { - ctx.properties.push( - tTypedIdentifier(id(variable.name), id("number")) - ); - let parameter = constructor.parametersMap.get(variable.name); - if ( - parameter && - !parameter.variable.isConst && - !parameter.variable.negated - ) { - varExpr = getParamVarExpr(parameter, constructor); - } - } - - if (varExpr) { - ctx.loadProperties.push( - tObjectProperty(id(variable.name), varExpr) - ); - } - } - - toCode(node: TheNode, code: CodeBuilder = new CodeBuilder()): CodeBuilder { - return toCode(node, code); - } - - handleField( - field: TLBField, - slicePrefix: Array, - ctx: ConstructorContext - ) { - let currentSlice = getCurrentSlice(slicePrefix, "slice"); - let currentCell = getCurrentSlice(slicePrefix, "cell"); - - if (field.subFields.length > 0) { - inSeparateRef(slicePrefix, () => { - ctx.loadStatements.push( - sliceLoad(slicePrefix, currentSlice) - ); - ctx.storeStatements.push(newCellStmt(slicePrefix)); - - field.subFields.forEach((fieldDef) => { - this.handleField(fieldDef, slicePrefix, ctx); - }); - - ctx.storeStatements.push( - storeRefStmt(slicePrefix, currentCell) - ); - }); - } - - if (field.fieldType.kind == "TLBExoticType") { - inSeparateRef(slicePrefix, () => { - ctx.loadStatements.push( - loadRefStmt(slicePrefix, currentSlice) - ); - addLoadProperty( - field.name, - id(getCurrentSlice(slicePrefix, "cell")), - undefined, - ctx - ); - ctx.properties.push( - tTypedIdentifier(id(field.name), id("Cell")) - ); - ctx.storeStatements.push( - storeRefObjectStmt(currentCell, ctx, field) - ); - }); - } else if (field.subFields.length == 0) { - if (field == undefined) { - throw new Error(""); - } - let fieldInfo = this.handleType( - field, - field.fieldType, - true, - ctx, - slicePrefix, - 0 - ); - if (fieldInfo.loadExpr) { - addLoadProperty( - field.name, - fieldInfo.loadExpr, - fieldInfo.typeParamExpr, - ctx - ); - } - if (fieldInfo.typeParamExpr) { - ctx.properties.push( - tTypedIdentifier(id(field.name), fieldInfo.typeParamExpr) - ); - } - if (fieldInfo.storeStmtOutside) { - ctx.storeStatements.push(fieldInfo.storeStmtOutside); - } - fieldInfo.negatedVariablesLoads.forEach((element) => { - addLoadProperty(element.name, element.expression, undefined, ctx); - }); - } - } - - handleType( - field: TLBField, - fieldType: TLBFieldType, - isField: boolean, - ctx: ConstructorContext, - slicePrefix: Array, - argIndex: number - ): FieldInfoType { - let currentSlice = getCurrentSlice(slicePrefix, "slice"); - let currentCell = getCurrentSlice(slicePrefix, "cell"); - - let fieldName = field.name; - let theSlice = "slice"; - let theCell = "builder"; - if (isField) { - theSlice = currentSlice; - theCell = currentCell; - } - let result: FieldInfoType = { - typeParamExpr: undefined, - loadExpr: undefined, - loadFunctionExpr: undefined, - storeStmtOutside: undefined, - storeStmtInside: undefined, - storeFunctionExpr: undefined, - negatedVariablesLoads: [], - }; - - let exprForParam: ExprForParam | undefined; - - let storeParametersOutside: Expression[]; - - storeParametersOutside = [ - tMemberExpression(id(ctx.typeName), id(fieldName)), - ]; // TODO: use only field - let storeParametersInside: Expression[] = [id("arg")]; - - if (fieldType.kind == "TLBNumberType") { - exprForParam = { - argLoadExpr: convertToAST(fieldType.bits, ctx.constructor), - argStoreExpr: convertToAST( - fieldType.storeBits, - ctx.constructor, - id(ctx.typeName) - ), - paramType: "number", - fieldLoadSuffix: fieldType.signed ? "Int" : "Uint", - fieldStoreSuffix: fieldType.signed ? "Int" : "Uint", - }; - if (isBigInt(fieldType)) { - exprForParam.fieldLoadSuffix += "Big"; - exprForParam.paramType = "bigint"; - } - } else if (fieldType.kind == "TLBBitsType") { - exprForParam = { - argLoadExpr: convertToAST(fieldType.bits, ctx.constructor), - argStoreExpr: convertToAST( - fieldType.bits, - ctx.constructor, - id(ctx.name) - ), - paramType: "BitString", - fieldLoadSuffix: "Bits", - fieldStoreSuffix: "Bits", - }; - } else if (fieldType.kind == "TLBCellType") { - exprForParam = { - argLoadExpr: id(theSlice), - argStoreExpr: id(theSlice), - paramType: "Slice", - fieldLoadSuffix: "Slice", - fieldStoreSuffix: "Slice", - }; - } else if (fieldType.kind == "TLBBoolType") { - exprForParam = { - argLoadExpr: undefined, - argStoreExpr: undefined, - paramType: "boolean", - fieldLoadSuffix: "Boolean", - fieldStoreSuffix: "Bit", - }; - } else if (fieldType.kind == "TLBAddressType") { - exprForParam = { - argLoadExpr: undefined, - argStoreExpr: undefined, - paramType: "Address", - fieldLoadSuffix: "Address", - fieldStoreSuffix: "Address", - }; - } else if (fieldType.kind == "TLBExprMathType") { - result.loadExpr = convertToAST(fieldType.expr, ctx.constructor); - result.storeStmtOutside = tExpressionStatement(result.loadExpr); - } else if (fieldType.kind == "TLBNegatedType") { - let getParameterFunctionId = id( - ctx.name + "_get_" + fieldType.variableName - ); - if (field.fieldType.kind == "TLBNamedType") { - let fieldTypeName = field.fieldType.name; - this.jsCodeFunctionsDeclarations.push( - negationDerivationFuncDecl( - this.tlbCode, - getParameterFunctionId, - fieldName, - fieldTypeName, - argIndex - ) - ); - } - result.negatedVariablesLoads.push({ - name: fieldType.variableName, - expression: tFunctionCall(getParameterFunctionId, [id(fieldName)]), - }); - } else if ( - fieldType.kind == "TLBNamedType" && - fieldType.arguments.length == 0 - ) { - let typeName = fieldType.name; - result.typeParamExpr = id(typeName); - if (isField) { - result.loadExpr = tFunctionCall(id("load" + typeName), [id(theSlice)]); - result.storeStmtOutside = storeExpressionNamedType( - typeName, - storeParametersOutside, - currentCell - ); - result.storeStmtInside = storeExpressionNamedType( - typeName, - storeParametersInside, - currentCell - ); - } else { - result.loadExpr = id("load" + typeName); - result.storeStmtOutside = tExpressionStatement(id("store" + typeName)); - } - } else if (fieldType.kind == "TLBCondType") { - let subExprInfo: FieldInfoType; - let conditionExpr: Expression; - subExprInfo = this.handleType( - field, - fieldType.value, - true, - ctx, - slicePrefix, - argIndex - ); - conditionExpr = convertToAST(fieldType.condition, ctx.constructor); - if (subExprInfo.typeParamExpr) { - result.typeParamExpr = tUnionTypeExpression([ - subExprInfo.typeParamExpr, - id("undefined"), - ]); - } - if (subExprInfo.loadExpr) { - result.loadExpr = tTernaryExpression( - conditionExpr, - subExprInfo.loadExpr, - id("undefined") - ); - } - let currentParamOutside = storeParametersOutside[0]; - let currentParamInside = storeParametersInside[0]; - if (currentParamOutside && currentParamInside && subExprInfo.storeStmtOutside) { - result.storeStmtOutside = storeExprCond(currentParamOutside, subExprInfo.storeStmtOutside); - result.storeStmtInside = storeExprCond(currentParamInside, subExprInfo.storeStmtOutside); - } - } else if (fieldType.kind == "TLBMultipleType") { - let arrayLength: Expression; - let subExprInfo: FieldInfoType; - arrayLength = convertToAST(fieldType.times, ctx.constructor); - subExprInfo = this.handleType( - field, - fieldType.value, - false, - ctx, - slicePrefix, - argIndex - ); - let currentParamOutside = storeParametersOutside[0]; - let currentParamInside = storeParametersInside[0]; - if (subExprInfo.loadExpr) { - result.loadExpr = loadTupleExpr(arrayLength, subExprInfo.loadExpr); - } - if ( - currentParamOutside && - currentParamInside && - subExprInfo.typeParamExpr && - subExprInfo.storeStmtOutside - ) { - if (subExprInfo.storeFunctionExpr && subExprInfo.storeStmtInside) { - result.storeStmtOutside = storeTupleStmt( - currentParamOutside, - subExprInfo.storeStmtInside, - subExprInfo.typeParamExpr - ); - result.storeStmtInside = storeTupleStmt( - currentParamInside, - subExprInfo.storeStmtInside, - subExprInfo.typeParamExpr - ); - } - } - if (subExprInfo.typeParamExpr) { - result.typeParamExpr = arrayedType(subExprInfo.typeParamExpr); - } - } else if (fieldType.kind == "TLBCellInsideType") { - let currentCell = getCurrentSlice([1, 0], "cell"); - - let subExprInfo: FieldInfoType = this.handleType( - field, - fieldType.value, - true, - ctx, - [1, 0], - argIndex - ); - if (subExprInfo.loadExpr) { - result.typeParamExpr = subExprInfo.typeParamExpr; - result.storeStmtOutside = subExprInfo.storeStmtOutside; - result.negatedVariablesLoads = subExprInfo.negatedVariablesLoads; - result.loadFunctionExpr = loadFromNewSlice(subExprInfo.loadExpr); - result.loadExpr = tFunctionCall(result.loadFunctionExpr, [ - id(theSlice), - ]); - } - if (subExprInfo.storeStmtOutside) { - result.storeStmtOutside = storeInNewCell(currentCell, subExprInfo.storeStmtOutside); - } - if (subExprInfo.storeStmtInside) { - result.storeStmtInside = storeInNewCell(currentCell, subExprInfo.storeStmtInside); - } - } else if (fieldType.kind == "TLBNamedType" && fieldType.arguments.length) { - let typeName = fieldType.name; - - let typeExpression: TypeParametersExpression = tTypeParametersExpression( - [] - ); - let loadFunctionsArray: Array = []; - let storeFunctionsArray: Array = []; - let argIndex = -1; - fieldType.arguments.forEach((arg) => { - argIndex++; - let subExprInfo = this.handleType( - field, - arg, - false, - ctx, - slicePrefix, - argIndex - ); - if (subExprInfo.typeParamExpr) { - typeExpression.typeParameters.push(subExprInfo.typeParamExpr); - } - if (subExprInfo.loadFunctionExpr) { - loadFunctionsArray.push(subExprInfo.loadFunctionExpr); - } - if (subExprInfo.storeFunctionExpr) { - storeFunctionsArray.push(subExprInfo.storeFunctionExpr); - } - result.negatedVariablesLoads = result.negatedVariablesLoads.concat( - subExprInfo.negatedVariablesLoads - ); - }); - result.typeParamExpr = tTypeWithParameters(id(typeName), typeExpression); - - let currentTypeParameters = typeExpression; - - let insideLoadParameters: Array = [id(theSlice)]; - - result.loadExpr = tFunctionCall( - id("load" + typeName), - insideLoadParameters.concat(loadFunctionsArray), - currentTypeParameters - ); - result.storeStmtOutside = storeCombinator( - typeName, - storeParametersOutside, - storeFunctionsArray, - currentTypeParameters, - theCell - ); - result.storeStmtInside = storeCombinator( - typeName, - storeParametersInside, - storeFunctionsArray, - currentTypeParameters, - theCell - ); - if (exprForParam) { - result.typeParamExpr = id(exprForParam.paramType); - } - } - - if (exprForParam) { - if ( - exprForParam.paramType != "BitString" && - exprForParam.paramType != "Slice" - ) { - if (exprForParam.argStoreExpr) { - storeParametersOutside.push(exprForParam.argStoreExpr); - storeParametersInside.push(exprForParam.argStoreExpr); - } - } - result.loadExpr = loadExprForParam(currentSlice, exprForParam); - if (exprForParam.paramType == "Slice") { - result.loadExpr = id(currentSlice); - result.loadFunctionExpr = returnSliceFunc(); - } - result.typeParamExpr = id(exprForParam.paramType); - result.storeStmtOutside = storeExprForParam( - theCell, - exprForParam, - storeParametersOutside - ); - result.storeStmtInside = storeExprForParam( - theCell, - exprForParam, - storeParametersInside - ); - } - - if (result.loadExpr && !result.loadFunctionExpr) { - result.loadFunctionExpr = coverFuncCall(result.loadExpr); - } - if (result.storeStmtOutside && !result.storeFunctionExpr) { - if (!result.storeStmtInside) { - result.storeStmtInside = result.storeStmtOutside; - } - if (result.typeParamExpr) { - if ( - (result.storeStmtOutside.type == "ExpressionStatement" && - result.storeStmtOutside.expression.type == "FunctionCall") || - result.storeStmtOutside.type == "MultiStatement" - ) { - result.storeFunctionExpr = storeFunctionExpr( - result.typeParamExpr, - result.storeStmtInside - ); - } else { - if (result.storeStmtOutside.type == "ExpressionStatement") { - result.storeFunctionExpr = result.storeStmtOutside.expression; - } - } - } - } - - result.storeStmtInside = result.storeStmtInside; - return result; - } -} diff --git a/src/generators/typescript/tsgen.ts b/src/generators/typescript/tsgen.ts deleted file mode 100644 index dd45e5c..0000000 --- a/src/generators/typescript/tsgen.ts +++ /dev/null @@ -1,711 +0,0 @@ -import { CodeBuilder } from "../CodeBuilder"; - -export interface ASTNode { - type: TheNode["type"]; -} - -export interface Identifier extends ASTNode { - type: "Identifier"; - name: string; -} - -export interface TypeWithParameters extends ASTNode { - type: "TypeWithParameters"; - name: Identifier; - typeParameters: TypeParametersExpression; -} - -export interface NumericLiteral extends ASTNode { - type: "NumericLiteral"; - value: number; -} - -export interface BinaryNumericLiteral extends ASTNode { - type: "BinaryNumericLiteral"; - value: number; -} - -export interface StringLiteral extends ASTNode { - type: "StringLiteral"; - value: string; -} - -export interface ImportDeclaration extends ASTNode { - type: "ImportDeclaration"; - importValue: Identifier; - from: StringLiteral; -} - -export interface FunctionDeclaration extends ASTNode { - type: "FunctionDeclaration"; - name: Identifier; - typeParameters: TypeParametersExpression; - returnType: TypeExpression | null; - parameters: Array; - body: Array; -} - -export interface TypedIdentifier extends ASTNode { - type: "TypedIdentifier"; - name: Identifier; - typeId: TypeExpression | Literal; -} - -export interface TypeParametersExpression extends ASTNode { - type: "TypeParametersExpression"; - typeParameters: Array; -} - -export interface StructDeclaration extends ASTNode { - type: "StructDeclaration"; - name: Identifier; - fields: Array; - typeParametersExpression: TypeParametersExpression; -} - -export interface UnionTypeExpression extends ASTNode { - type: "UnionTypeExpression"; - unionMembers: Array; -} - -export interface UnionTypeDeclaration extends ASTNode { - type: "UnionTypeDeclaration"; - name: TypeExpression; - union: UnionTypeExpression; -} - -export interface ObjectProperty extends ASTNode { - type: "ObjectProperty"; - key: Expression; - value: Expression; -} - -export interface ObjectExpression extends ASTNode { - type: "ObjectExpression"; - objectValues: Array; -} - -export interface FunctionCall extends ASTNode { - type: "FunctionCall"; - functionId: Expression; - parameters: Array; - typeParameters: TypeParametersExpression | undefined; -} - -export interface MemberExpression extends ASTNode { - type: "MemberExpression"; - thisObject: Expression; - memberName: Identifier; -} - -export interface ArrowFunctionType extends ASTNode { - type: "ArrowFunctionType"; - parameters: Array; - returnType: TypeExpression | null; -} - -export interface ArrowFunctionExpression extends ASTNode { - type: "ArrowFunctionExpression"; - parameters: Array; - body: Array; -} - -export interface ReturnStatement extends ASTNode { - type: "ReturnStatement"; - returnValue: Expression; -} - -export interface ExpressionStatement extends ASTNode { - type: "ExpressionStatement"; - expression: Expression; -} - -export interface IfStatement extends ASTNode { - type: "IfStatement"; - condition: Expression; - body: Array; - elseBody: Array | undefined; -} - -export interface ForCycle extends ASTNode { - type: "ForCycle"; - init: Expression; - cond: Expression; - inc: Expression; - body: Array; -} - -export interface DeclareVariable extends ASTNode { - type: "DeclareVariable"; - name: Identifier; - init: Expression | undefined; - typeName: TypeExpression | undefined; -} - -export interface UnaryOpExpression extends ASTNode { - type: "UnaryOpExpression"; - unaryOperator: string; - expr: Expression; -} - -export interface BinaryExpression extends ASTNode { - type: "BinaryExpression"; - binarySign: string; - left: Expression; - right: Expression; -} - -export interface TernaryExpression extends ASTNode { - type: "TernaryExpression"; - condition: Expression; - body: Expression; - elseBody: Expression; -} - -export interface Comment extends ASTNode { - type: "Comment"; - value: string; -} - -export interface MultiStatement extends ASTNode { - type: "MultiStatement"; - statements: Array; -} - -export type TypeExpression = - | Identifier - | TypeWithParameters - | ArrowFunctionType - | UnionTypeExpression; -export type Statement = - | ReturnStatement - | ExpressionStatement - | IfStatement - | MultiStatement - | ForCycle; -export type Literal = NumericLiteral | BinaryNumericLiteral | StringLiteral; -export type Expression = - | Identifier - | TypeExpression - | Literal - | ObjectExpression - | FunctionCall - | MemberExpression - | ArrowFunctionExpression - | BinaryExpression - | ArrowFunctionType - | TypeParametersExpression - | DeclareVariable - | TernaryExpression - | UnaryOpExpression; -export type GenDeclaration = - | ImportDeclaration - | StructDeclaration - | UnionTypeDeclaration - | FunctionDeclaration - | Comment; - -export type TheNode = - | Identifier - | GenDeclaration - | TypedIdentifier - | Expression - | ObjectProperty - | Statement; - -export function tIdentifier(name: string): Identifier { - return { type: "Identifier", name: name }; -} - -export function tStringLiteral(value: string): StringLiteral { - return { type: "StringLiteral", value: value }; -} - -export function tImportDeclaration( - importValue: Identifier, - from: StringLiteral -): ImportDeclaration { - return { type: "ImportDeclaration", importValue: importValue, from: from }; -} - -export function tFunctionDeclaration( - name: Identifier, - typeParameters: TypeParametersExpression, - returnType: TypeExpression | null, - parameters: Array, - body: Array -): FunctionDeclaration { - return { - type: "FunctionDeclaration", - name: name, - typeParameters: typeParameters, - returnType: returnType, - parameters: parameters, - body: body, - }; -} - -export function tTypedIdentifier( - name: Identifier, - typeId: TypeExpression | StringLiteral -): TypedIdentifier { - return { type: "TypedIdentifier", name: name, typeId: typeId }; -} - -export function tTypeWithParameters( - name: Identifier, - typeParameters: TypeParametersExpression -): TypeWithParameters { - return { - type: "TypeWithParameters", - name: name, - typeParameters: typeParameters, - }; -} - -export function tStructDeclaration( - name: Identifier, - fields: Array, - typeParameters: TypeParametersExpression -): StructDeclaration { - return { - type: "StructDeclaration", - name: name, - fields: fields, - typeParametersExpression: typeParameters, - }; -} - -export function tObjectProperty( - key: Expression, - value: Expression -): ObjectProperty { - return { type: "ObjectProperty", key: key, value: value }; -} - -export function tForCycle( - init: Expression, - cond: Expression, - inc: Expression, - body: Array -): ForCycle { - return { type: "ForCycle", init: init, cond: cond, inc: inc, body: body }; -} - -export function tObjectExpression( - objectValues: Array -): ObjectExpression { - return { type: "ObjectExpression", objectValues: objectValues }; -} - -export function tReturnStatement(returnValue: Expression): ReturnStatement { - return { type: "ReturnStatement", returnValue: returnValue }; -} - -export function tFunctionCall( - functionId: Expression, - parameters: Array, - typeParameters?: TypeParametersExpression -): FunctionCall { - return { - type: "FunctionCall", - functionId: functionId, - parameters: parameters, - typeParameters: typeParameters, - }; -} - -export function tMemberExpression( - thisObject: Expression, - memberName: Identifier -): MemberExpression { - return { - type: "MemberExpression", - thisObject: thisObject, - memberName: memberName, - }; -} - -export function tNumericLiteral(value: number): NumericLiteral { - return { type: "NumericLiteral", value: value }; -} - -export function tBinaryNumericLiteral(value: number): BinaryNumericLiteral { - return { type: "BinaryNumericLiteral", value: value }; -} - -export function tTypeParametersExpression( - typeParameters: Array -): TypeParametersExpression { - return { type: "TypeParametersExpression", typeParameters: typeParameters }; -} - -export function tUnionTypeExpression( - unionMembers: Array -): UnionTypeExpression { - return { type: "UnionTypeExpression", unionMembers: unionMembers }; -} - -export function tArrowFunctionExpression( - parameters: Array, - body: Array -): ArrowFunctionExpression { - return { - type: "ArrowFunctionExpression", - parameters: parameters, - body: body, - }; -} - -export function tUnionTypeDeclaration( - name: TypeExpression, - union: UnionTypeExpression -): UnionTypeDeclaration { - return { type: "UnionTypeDeclaration", name: name, union: union }; -} - -export function tExpressionStatement( - expression: Expression -): ExpressionStatement { - return { type: "ExpressionStatement", expression: expression }; -} - -export function tIfStatement( - condition: Expression, - body: Array, - elseBody?: Array -): IfStatement { - return { - type: "IfStatement", - condition: condition, - body: body, - elseBody: elseBody, - }; -} - -export function tUnaryOpExpression( - unaryOperator: string, - expr: Expression -): UnaryOpExpression { - return { - type: "UnaryOpExpression", - unaryOperator: unaryOperator, - expr: expr, - }; -} - -export function tBinaryExpression( - left: Expression, - binarySign: string, - right: Expression -): BinaryExpression { - return { - type: "BinaryExpression", - binarySign: binarySign, - left: left, - right: right, - }; -} - -export function tArrowFunctionType( - parameters: Array, - returnType: TypeExpression -): ArrowFunctionType { - return { - type: "ArrowFunctionType", - parameters: parameters, - returnType: returnType, - }; -} - -export function tDeclareVariable( - name: Identifier, - init?: Expression, - typeName?: TypeExpression -): DeclareVariable { - return { - type: "DeclareVariable", - name: name, - init: init, - typeName: typeName, - }; -} - -export function tMultiStatement(statements: Array): MultiStatement { - return { type: "MultiStatement", statements: statements }; -} - -export function tComment(value: string): Comment { - return { type: "Comment", value: value }; -} - -export function tTernaryExpression( - condition: Expression, - body: Expression, - elseBody: Expression -): TernaryExpression { - return { - type: "TernaryExpression", - condition: condition, - body: body, - elseBody: elseBody, - }; -} - -function toCodeArray( - nodeArray: Array, - code: CodeBuilder, - delimeter: string -) { - for (let i = 0; i < nodeArray.length; i++) { - let currentParam = nodeArray[i]; - if (currentParam != undefined) { - toCode(currentParam, code); - } - if (i + 1 < nodeArray.length) { - code.add(delimeter, false); - } - } - return code; -} - -export function toCode( - node: TheNode, - code: CodeBuilder = new CodeBuilder() -): CodeBuilder { - if (node.type == "Identifier") { - code.add(node.name, false); - } - - if (node.type == "NumericLiteral") { - code.add(node.value.toString(), false); - } - - if (node.type == "ImportDeclaration") { - code.add( - `import { ${toCode(node.importValue).render()} } from ${toCode( - node.from - ).render()}`, - false - ); - } - - if (node.type == "FunctionDeclaration") { - code.add( - `export function ${toCode(node.name).render()}${toCode( - node.typeParameters - ).render()}(`, - false - ); - toCodeArray(node.parameters, code, ", "); - code.add( - `)${node.returnType ? ": " + toCode(node.returnType).render() : ""} {` - ); - code.inTab(() => { - node.body.forEach((statement) => { - code.append(toCode(statement)); - }); - }); - code.add("}"); - } - - if (node.type == "ArrowFunctionExpression") { - code.add(`((`, false); - toCodeArray(node.parameters, code, ", "); - code.add(`) => {`); - code.inTab(() => { - node.body.forEach((statement) => { - code.append(toCode(statement)); - }); - }); - code.add(`})`, false); - } - - if (node.type == "ArrowFunctionType") { - code.add( - `(${toCodeArray(node.parameters, new CodeBuilder(), ", ").render()}) => ${ - node.returnType ? toCode(node.returnType).render() : "" - }`, - false - ); - } - - if (node.type == "TypeWithParameters") { - code.add( - `${toCode(node.name).render()}${toCode(node.typeParameters).render()}`, - false - ); - } - - if (node.type == "TypedIdentifier") { - code.add( - toCode(node.name).render() + ": " + toCode(node.typeId).render(), - false - ); - } - - if (node.type == "ObjectProperty") { - code.add( - toCode(node.key).render() + ": " + toCode(node.value).render(), - false - ); - } - - if (node.type == "DeclareVariable") { - code.add( - `let ${toCode(node.name).render()}${ - node.typeName ? ": " + toCode(node.typeName).render() : "" - }`, - false - ); - if (node.init) { - code.add(" = ", false); - toCode(node.init, code); - } - } - - if (node.type == "ObjectExpression") { - code.add("{"); - code.inTab(() => { - node.objectValues.forEach((objectValue) => { - code.add(toCode(objectValue).render() + ","); - }); - }); - code.add("}", false); - } - - if (node.type == "MultiStatement") { - node.statements.forEach((statement) => { - code.append(toCode(statement)); - }); - } - - if (node.type == "ReturnStatement") { - code.add(`return `, false); - code.appendInline(toCode(node.returnValue)); - } - - if (node.type == "ExpressionStatement") { - code.add(toCode(node.expression).render() + ";", false); - } - - if (node.type == "TypeParametersExpression") { - if (node.typeParameters.length > 0) { - code.add("<", false); - toCodeArray(node.typeParameters, code, ", "); - code.add(">", false); - } - } - - if (node.type == "StructDeclaration") { - code.add( - `export interface ${toCode(node.name).render()}${toCode( - node.typeParametersExpression - ).render()} {` - ); - code.inTab(() => { - node.fields.forEach((field) => { - code.add(`readonly ${toCode(field).render()};`); - }); - }); - code.add("}"); - } - - if (node.type == "UnionTypeDeclaration") { - code.add( - `export type ${toCode(node.name).render()} = ${toCode( - node.union - ).render()};` - ); - } - - if (node.type == "UnionTypeExpression") { - toCodeArray(node.unionMembers, code, " | "); - } - - if (node.type == "FunctionCall") { - code.add( - `${toCode(node.functionId).render()}${ - node.typeParameters ? toCode(node.typeParameters).render() : "" - }(`, - false - ); - toCodeArray(node.parameters, code, ", "); - code.add(`)`, false); - } - - if (node.type == "StringLiteral") { - code.add(`'${node.value}'`, false); - } - - if (node.type == "MemberExpression") { - code.add( - toCode(node.thisObject).render() + "." + toCode(node.memberName).render(), - false - ); - } - - if (node.type == "IfStatement") { - code.add(`if (${toCode(node.condition).render()}) {`); - code.inTab(() => { - node.body.forEach((statement) => { - code.append(toCode(statement)); - }); - }); - code.add("}", false); - } - - if (node.type == "ForCycle") { - code.add( - `for (${toCode(node.init).render()};${toCode( - node.cond - ).render()};${toCode(node.inc).render()}) {` - ); - code.inTab(() => { - node.body.forEach((statement) => { - code.append(toCode(statement)); - }); - }); - code.add(`}`, false); - } - - if (node.type == "UnaryOpExpression") { - code.add(`(${node.unaryOperator}${toCode(node.expr).render()})`, false); - } - - if (node.type == "BinaryExpression") { - code.add( - `(${toCode(node.left).render()} ${node.binarySign} ${toCode( - node.right - ).render()})`, - false - ); - } - - if (node.type == "TernaryExpression") { - code.add( - `(${toCode(node.condition).render()} ? ${toCode( - node.body - ).render()} : ${toCode(node.elseBody).render()})`, - false - ); - } - - if (node.type == "Comment") { - let splittedComment = node.value.split("\n"); - if (splittedComment.length == 1) { - code.add(`// ${splittedComment[0]}`); - } else { - code.add(`/*`); - splittedComment.forEach((line) => { - code.add(line); - }); - code.add(`*/`); - } - } - - return code; -} - -export let id = tIdentifier; - diff --git a/src/generators/typescript/utils.ts b/src/generators/typescript/utils.ts deleted file mode 100644 index 16dfda8..0000000 --- a/src/generators/typescript/utils.ts +++ /dev/null @@ -1,228 +0,0 @@ -import { - TLBBinaryOp, - TLBCode, - TLBConstructor, - TLBMathExpr, - TLBNumberExpr, - TLBNumberType, - TLBParameter, - TLBType, - TLBUnaryOp, - TLBVarExpr, -} from "../../ast"; -import { getSubStructName } from "../../utils"; -import { tEqualExpression } from "./complex_expr"; -import { ConstructorContext } from "./generator"; -import { - BinaryExpression, - Expression, - Identifier, - ObjectProperty, - Statement, - TypeExpression, - tBinaryExpression, - tDeclareVariable, - tExpressionStatement, - tFunctionCall, - id, - tIfStatement, - tMemberExpression, - tNumericLiteral, - tObjectProperty, - tReturnStatement, - tStringLiteral, - tTypeParametersExpression, - tUnaryOpExpression, -} from "./tsgen"; - -export type FieldInfoType = { - typeParamExpr: TypeExpression | undefined; - loadExpr: Expression | undefined; - loadFunctionExpr: Expression | undefined; - storeStmtOutside: Statement | undefined; - storeStmtInside: Statement | undefined; - storeFunctionExpr: Expression | undefined; - negatedVariablesLoads: Array<{ name: string; expression: Expression }>; -}; -export type ExprForParam = { - argLoadExpr: Expression | undefined; - argStoreExpr: Expression | undefined; - paramType: string; - fieldLoadSuffix: string; - fieldStoreSuffix: string; -}; - -export function getParamVarExpr( - param: TLBParameter, - constructor: TLBConstructor -): Expression { - if (param.variable.deriveExpr) { - return convertToAST(param.variable.deriveExpr, constructor); - } else { - throw new Error( - `Could not get expression for param ${param.variable.name} for constructor ${constructor.name} of type ${constructor.tlbType}` - ); - } -} - -export function getVarExprByName( - name: string, - constructor: TLBConstructor -): Expression { - let variable = constructor.variablesMap.get(name); - if (variable?.deriveExpr) { - return convertToAST(variable.deriveExpr, constructor); - } - return id(name); -} - -export function getNegationDerivationFunctionBody( - tlbCode: TLBCode, - typeName: string, - parameterIndex: number, - parameterName: string -): Statement[] { - let result: Statement[] = []; - let tlbType: TLBType | undefined = tlbCode.types.get(typeName); - if (!tlbType) { - throw new Error(`Can not find type ${typeName}`); - } - tlbType.constructors.forEach((constructor) => { - let parameter = constructor.parameters[parameterIndex]; - if (parameter) { - let getExpression: Expression; - getExpression = convertToAST(parameter.paramExpr, constructor); - let statements = []; - if (!parameter.variable.isConst) { - statements.push( - tExpressionStatement( - tDeclareVariable( - id(parameter.variable.name), - tMemberExpression(id(parameterName), id(parameter.variable.name)) - ) - ) - ); - } - statements.push(tReturnStatement(getExpression)); - if (tlbType) { - result.push( - tIfStatement( - tEqualExpression( - tMemberExpression(id(parameterName), id("kind")), - tStringLiteral(getSubStructName(tlbType, constructor)) - ), - statements - ) - ); - } - } - }); - - let exceptionTypesComment = tlbType.constructors - .map((constructor) => { - return `"${tlbType ? getSubStructName(tlbType, constructor) : ""}"`; - }) - .join(", "); - let exceptionComment = tExpressionStatement( - id( - "throw new Error('" + - `Expected one of ${exceptionTypesComment} for type "${tlbType.name}" while getting "${parameterName}", but data does not satisfy any constructor` + - "')" - ) - ); - result.push(exceptionComment); - - return result; -} - -export function addLoadProperty( - name: string, - loadExpr: Expression, - typeExpr: TypeExpression | undefined, - ctx: ConstructorContext -) { - let nameId = id(name); - ctx.loadStatements.push( - tExpressionStatement(tDeclareVariable(nameId, loadExpr, typeExpr)) - ); - ctx.loadProperties.push(tObjectProperty(nameId, nameId)); -} - -export function convertToAST( - mathExpr: TLBMathExpr, - constructor: TLBConstructor, - objectId?: Identifier -): Expression { - if (mathExpr instanceof TLBVarExpr) { - let varName = mathExpr.x; - if (objectId != undefined) { - return tMemberExpression(objectId, id(varName)); - } - return id(varName); - } - if (mathExpr instanceof TLBNumberExpr) { - return tNumericLiteral(mathExpr.n); - } - if (mathExpr instanceof TLBBinaryOp) { - let operation: string = mathExpr.operation; - if (operation == "=") { - operation = "=="; - } - return tBinaryExpression( - convertToAST(mathExpr.left, constructor, objectId), - operation, - convertToAST(mathExpr.right, constructor, objectId) - ); - } - if (mathExpr instanceof TLBUnaryOp) { - if (mathExpr.operation == ".") { - return tFunctionCall(id("bitLen"), [ - convertToAST(mathExpr.value, constructor, objectId), - ]); - } - return tUnaryOpExpression( - mathExpr.operation, - convertToAST(mathExpr.value, constructor, objectId) - ); - } - throw new Error( - `Type ${constructor.tlbType}, constructor ${constructor.name}: couldn't convert to math expression: ${mathExpr}` - ); -} - -export function getTypeParametersExpression(parameters: Array) { - let structTypeParameters: Array = []; - parameters.forEach((element) => { - if (element.variable.type == "Type") { - structTypeParameters.push(id(element.variable.name)); - } - }); - let structTypeParametersExpr = - tTypeParametersExpression(structTypeParameters); - return structTypeParametersExpr; -} - -export function getCondition(conditions: Array): Expression { - let cnd = conditions[0]; - if (cnd) { - if (conditions.length > 1) { - return tBinaryExpression(cnd, "&&", getCondition(conditions.slice(1))); - } else { - return cnd; - } - } else { - return id("true"); - } -} - -export function isBigInt(fieldType: TLBNumberType) { - if (fieldType.bits instanceof TLBNumberExpr) { - if (fieldType.bits.n <= 64) { - return false; - } - } - if (fieldType.maxBits && fieldType.maxBits <= 64) { - return false; - } - return true; -} diff --git a/src/main.ts b/src/main.ts deleted file mode 100644 index 7360cfe..0000000 --- a/src/main.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { Program } from "@igorivaniuk/tlb-parser/dist/ast/nodes"; -import { TLBCode, TLBType } from "./ast"; -import { - TLBCodeBuild, - TLBTypeBuild, -} from "./astbuilder/utils"; -import { convertCodeToReadonly } from "./astbuilder/fill_constructors"; -import { fillConstructors } from "./astbuilder/fill_constructors"; -import { CodeBuilder } from "./generators/CodeBuilder"; -import { CodeGenerator, CommonGenDeclaration } from "./generators/generator"; -import { TypescriptGenerator } from "./generators/typescript/generator"; - -export function generate(tree: Program, input: string) { - let oldTlbCode: TLBCodeBuild = { types: new Map() }; - - let splittedInput = input.split("\n"); - - fillConstructors(tree.declarations, oldTlbCode, splittedInput); - let tlbCode: TLBCode = convertCodeToReadonly(oldTlbCode); - - let codeGenerator: CodeGenerator = new TypescriptGenerator(tlbCode); - - codeGenerator.addTonCoreClassUsage("Builder"); - codeGenerator.addTonCoreClassUsage("Slice"); - codeGenerator.addTonCoreClassUsage("beginCell"); - codeGenerator.addTonCoreClassUsage("BitString"); - codeGenerator.addTonCoreClassUsage("Cell"); - codeGenerator.addTonCoreClassUsage("Address"); - - codeGenerator.addBitLenFunction(); - - let jsCodeDeclarations: CommonGenDeclaration[] = []; - codeGenerator.jsCodeDeclarations.forEach((declaration) => { - jsCodeDeclarations.push(declaration); - }); - - tlbCode.types.forEach((tlbType: TLBType) => { - codeGenerator.addTlbType(tlbType); - }); - - let generatedCode = ""; - - codeGenerator.jsCodeConstructorDeclarations.forEach((element) => { - jsCodeDeclarations.push(element); - }); - - codeGenerator.jsCodeFunctionsDeclarations.forEach((element) => { - jsCodeDeclarations.push(element); - }); - - jsCodeDeclarations.forEach((element) => { - generatedCode += - codeGenerator.toCode(element, new CodeBuilder()).render() + "\n"; - }); - - return generatedCode; -} diff --git a/src/utils.ts b/src/utils.ts deleted file mode 100644 index 2c94ba4..0000000 --- a/src/utils.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { TLBConstructor, TLBType } from "./ast"; -import { TLBConstructorBuild, TLBTypeBuild } from "./astbuilder/utils"; - -export function firstLower(structName: String) { - return structName.charAt(0).toLowerCase() + structName.slice(1); -} - -export function getCurrentSlice(slicePrefix: number[], name: string): string { - let result = name; - slicePrefix = slicePrefix.slice(0, slicePrefix.length - 1); - slicePrefix.forEach((element) => { - result += element.toString(); - }); - if (result == "cell") { - return "builder"; - } - return result; -} - -export function bitLen(n: number) { - return n.toString(2).length; -} - -export function isNameReserved(name: string): boolean { - let tsReserved = [ - "abstract", - "arguments", - "await", - "boolean", - "break", - "byte", - "case", - "catch", - "char", - "class", - "const", - "continue", - "debugger", - "default", - "delete", - "do", - "double", - "else", - "enum", - "eval", - "export", - "extends", - "false", - "final", - "finally", - "float", - "for", - "function", - "goto", - "if", - "implements", - "import", - "in", - "instanceof", - "int", - "interface", - "let", - "long", - "native", - "new", - "null", - "package", - "private", - "protected", - "public", - "return", - "short", - "static", - "super", - "switch", - "synchronized", - "this", - "throw", - "throws", - "transient", - "true", - "try", - "typeof", - "var", - "void", - "volatile", - "while", - "with", - "yield", - ]; - if (tsReserved.includes(name)) { - return true; - } - if (name.startsWith("slice")) { - return true; - } - if (name.startsWith("cell")) { - return true; - } - if (name == "builder") { - return true; - } - return false; -} -export function findNotReservedName( - name: string, - possibleSuffix: string = "0" -): string { - if (name.startsWith("slice") || name.startsWith("cell")) { - name = "_" + name; - } - while (isNameReserved(name)) { - name += possibleSuffix; - } - return name; -} -export function getSubStructName( - tlbType: TLBType | TLBTypeBuild, - constructor: TLBConstructorBuild | TLBConstructor -): string { - if (tlbType.constructors.length > 1) { - return tlbType.name + "_" + constructor.name; - } else { - return tlbType.name; - } -} diff --git a/test/generated_files/generated_block.ts b/test/generated_files/generated_block.ts deleted file mode 100644 index 5575016..0000000 --- a/test/generated_files/generated_block.ts +++ /dev/null @@ -1,13300 +0,0 @@ -import { Builder } from 'ton' -import { Slice } from 'ton' -import { beginCell } from 'ton' -import { BitString } from 'ton' -import { Cell } from 'ton' -import { Address } from 'ton' -export function bitLen(n: number) { - return n.toString(2).length;; -} - -export interface Unit { - readonly kind: 'Unit'; -} - -export interface True { - readonly kind: 'True'; -} - -export interface BoolFalse { - readonly kind: 'BoolFalse'; -} - -export interface BoolTrue { - readonly kind: 'BoolTrue'; -} - -export type Maybe = Maybe_nothing | Maybe_just; - -export interface Maybe_nothing { - readonly kind: 'Maybe_nothing'; -} - -export interface Maybe_just { - readonly kind: 'Maybe_just'; - readonly value: X; -} - -export type Either = Either_left | Either_right; - -export interface Either_left { - readonly kind: 'Either_left'; - readonly value: X; -} - -export interface Either_right { - readonly kind: 'Either_right'; - readonly value: Y; -} - -export interface Both { - readonly kind: 'Both'; - readonly first: X; - readonly second: Y; -} - -export interface Bit { - readonly kind: 'Bit'; - readonly anon0: number; -} - -export interface Hashmap { - readonly kind: 'Hashmap'; - readonly n: number; - readonly l: number; - readonly m: number; - readonly label: HmLabel; - readonly node: HashmapNode; -} - -export type HashmapNode = HashmapNode_hmn_leaf | HashmapNode_hmn_fork; - -export interface HashmapNode_hmn_leaf { - readonly kind: 'HashmapNode_hmn_leaf'; - readonly value: X; -} - -export interface HashmapNode_hmn_fork { - readonly kind: 'HashmapNode_hmn_fork'; - readonly n: number; - readonly left: Hashmap; - readonly right: Hashmap; -} - -export type HmLabel = HmLabel_hml_short | HmLabel_hml_long | HmLabel_hml_same; - -export interface HmLabel_hml_short { - readonly kind: 'HmLabel_hml_short'; - readonly m: number; - readonly n: number; - readonly len: Unary; - readonly s: Array; -} - -export interface HmLabel_hml_long { - readonly kind: 'HmLabel_hml_long'; - readonly m: number; - readonly n: number; - readonly s: Array; -} - -export interface HmLabel_hml_same { - readonly kind: 'HmLabel_hml_same'; - readonly m: number; - readonly v: BitString; - readonly n: number; -} - -export type Unary = Unary_unary_zero | Unary_unary_succ; - -export interface Unary_unary_zero { - readonly kind: 'Unary_unary_zero'; -} - -export interface Unary_unary_succ { - readonly kind: 'Unary_unary_succ'; - readonly n: number; - readonly x: Unary; -} - -export type HashmapE = HashmapE_hme_empty | HashmapE_hme_root; - -export interface HashmapE_hme_empty { - readonly kind: 'HashmapE_hme_empty'; - readonly n: number; -} - -export interface HashmapE_hme_root { - readonly kind: 'HashmapE_hme_root'; - readonly n: number; - readonly root: Hashmap; -} - -export interface BitstringSet { - readonly kind: 'BitstringSet'; - readonly n: number; - readonly _: Hashmap; -} - -export interface HashmapAug { - readonly kind: 'HashmapAug'; - readonly n: number; - readonly l: number; - readonly m: number; - readonly label: HmLabel; - readonly node: HashmapAugNode; -} - -export type HashmapAugNode = HashmapAugNode_ahmn_leaf | HashmapAugNode_ahmn_fork; - -export interface HashmapAugNode_ahmn_leaf { - readonly kind: 'HashmapAugNode_ahmn_leaf'; - readonly extra: Y; - readonly value: X; -} - -export interface HashmapAugNode_ahmn_fork { - readonly kind: 'HashmapAugNode_ahmn_fork'; - readonly n: number; - readonly left: HashmapAug; - readonly right: HashmapAug; - readonly extra: Y; -} - -export type HashmapAugE = HashmapAugE_ahme_empty | HashmapAugE_ahme_root; - -export interface HashmapAugE_ahme_empty { - readonly kind: 'HashmapAugE_ahme_empty'; - readonly n: number; - readonly extra: Y; -} - -export interface HashmapAugE_ahme_root { - readonly kind: 'HashmapAugE_ahme_root'; - readonly n: number; - readonly root: HashmapAug; - readonly extra: Y; -} - -export interface VarHashmap { - readonly kind: 'VarHashmap'; - readonly n: number; - readonly l: number; - readonly m: number; - readonly label: HmLabel; - readonly node: VarHashmapNode; -} - -export type VarHashmapNode = VarHashmapNode_vhmn_leaf | VarHashmapNode_vhmn_fork | VarHashmapNode_vhmn_cont; - -export interface VarHashmapNode_vhmn_leaf { - readonly kind: 'VarHashmapNode_vhmn_leaf'; - readonly n: number; - readonly value: X; -} - -export interface VarHashmapNode_vhmn_fork { - readonly kind: 'VarHashmapNode_vhmn_fork'; - readonly n: number; - readonly left: VarHashmap; - readonly right: VarHashmap; - readonly value: Maybe; -} - -export interface VarHashmapNode_vhmn_cont { - readonly kind: 'VarHashmapNode_vhmn_cont'; - readonly n: number; - readonly branch: BitString; - readonly child: VarHashmap; - readonly value: X; -} - -export type VarHashmapE = VarHashmapE_vhme_empty | VarHashmapE_vhme_root; - -export interface VarHashmapE_vhme_empty { - readonly kind: 'VarHashmapE_vhme_empty'; - readonly n: number; -} - -export interface VarHashmapE_vhme_root { - readonly kind: 'VarHashmapE_vhme_root'; - readonly n: number; - readonly root: VarHashmap; -} - -export interface PfxHashmap { - readonly kind: 'PfxHashmap'; - readonly n: number; - readonly l: number; - readonly m: number; - readonly label: HmLabel; - readonly node: PfxHashmapNode; -} - -export type PfxHashmapNode = PfxHashmapNode_phmn_leaf | PfxHashmapNode_phmn_fork; - -export interface PfxHashmapNode_phmn_leaf { - readonly kind: 'PfxHashmapNode_phmn_leaf'; - readonly n: number; - readonly value: X; -} - -export interface PfxHashmapNode_phmn_fork { - readonly kind: 'PfxHashmapNode_phmn_fork'; - readonly n: number; - readonly left: PfxHashmap; - readonly right: PfxHashmap; -} - -export type PfxHashmapE = PfxHashmapE_phme_empty | PfxHashmapE_phme_root; - -export interface PfxHashmapE_phme_empty { - readonly kind: 'PfxHashmapE_phme_empty'; - readonly n: number; -} - -export interface PfxHashmapE_phme_root { - readonly kind: 'PfxHashmapE_phme_root'; - readonly n: number; - readonly root: PfxHashmap; -} - -export type MsgAddressExt = MsgAddressExt_addr_none | MsgAddressExt_addr_extern; - -export interface MsgAddressExt_addr_none { - readonly kind: 'MsgAddressExt_addr_none'; -} - -export interface MsgAddressExt_addr_extern { - readonly kind: 'MsgAddressExt_addr_extern'; - readonly len: number; - readonly external_address: BitString; -} - -export interface Anycast { - readonly kind: 'Anycast'; - readonly depth: number; - readonly rewrite_pfx: BitString; -} - -export type MsgAddress = MsgAddress__ | MsgAddress__1; - -export interface MsgAddress__ { - readonly kind: 'MsgAddress__'; - readonly _: Address; -} - -export interface MsgAddress__1 { - readonly kind: 'MsgAddress__1'; - readonly _: MsgAddressExt; -} - -export interface VarUInteger { - readonly kind: 'VarUInteger'; - readonly n: number; - readonly len: number; - readonly value: bigint; -} - -export interface VarInteger { - readonly kind: 'VarInteger'; - readonly n: number; - readonly len: number; - readonly value: bigint; -} - -export interface Grams { - readonly kind: 'Grams'; - readonly amount: VarUInteger; -} - -export interface Coins { - readonly kind: 'Coins'; - readonly grams: Grams; -} - -export interface ExtraCurrencyCollection { - readonly kind: 'ExtraCurrencyCollection'; - readonly dict: HashmapE; -} - -export interface CurrencyCollection { - readonly kind: 'CurrencyCollection'; - readonly grams: Grams; - readonly other: ExtraCurrencyCollection; -} - -export type CommonMsgInfo = CommonMsgInfo_int_msg_info | CommonMsgInfo_ext_in_msg_info | CommonMsgInfo_ext_out_msg_info; - -export interface CommonMsgInfo_int_msg_info { - readonly kind: 'CommonMsgInfo_int_msg_info'; - readonly ihr_disabled: boolean; - readonly bounce: boolean; - readonly bounced: boolean; - readonly src: Address; - readonly dest: Address; - readonly value: CurrencyCollection; - readonly ihr_fee: Grams; - readonly fwd_fee: Grams; - readonly created_lt: number; - readonly created_at: number; -} - -export interface CommonMsgInfo_ext_in_msg_info { - readonly kind: 'CommonMsgInfo_ext_in_msg_info'; - readonly src: MsgAddressExt; - readonly dest: Address; - readonly import_fee: Grams; -} - -export interface CommonMsgInfo_ext_out_msg_info { - readonly kind: 'CommonMsgInfo_ext_out_msg_info'; - readonly src: Address; - readonly dest: MsgAddressExt; - readonly created_lt: number; - readonly created_at: number; -} - -export type CommonMsgInfoRelaxed = CommonMsgInfoRelaxed_int_msg_info | CommonMsgInfoRelaxed_ext_out_msg_info; - -export interface CommonMsgInfoRelaxed_int_msg_info { - readonly kind: 'CommonMsgInfoRelaxed_int_msg_info'; - readonly ihr_disabled: boolean; - readonly bounce: boolean; - readonly bounced: boolean; - readonly src: MsgAddress; - readonly dest: Address; - readonly value: CurrencyCollection; - readonly ihr_fee: Grams; - readonly fwd_fee: Grams; - readonly created_lt: number; - readonly created_at: number; -} - -export interface CommonMsgInfoRelaxed_ext_out_msg_info { - readonly kind: 'CommonMsgInfoRelaxed_ext_out_msg_info'; - readonly src: MsgAddress; - readonly dest: MsgAddressExt; - readonly created_lt: number; - readonly created_at: number; -} - -export interface TickTock { - readonly kind: 'TickTock'; - readonly tick: boolean; - readonly tock: boolean; -} - -export interface StateInit { - readonly kind: 'StateInit'; - readonly split_depth: Maybe; - readonly special: Maybe; - readonly code: Maybe; - readonly data: Maybe; - readonly library: Maybe; -} - -export interface StateInitWithLibs { - readonly kind: 'StateInitWithLibs'; - readonly split_depth: Maybe; - readonly special: Maybe; - readonly code: Maybe; - readonly data: Maybe; - readonly library: HashmapE; -} - -export interface SimpleLib { - readonly kind: 'SimpleLib'; - readonly public0: boolean; - readonly root: Slice; -} - -export interface Message { - readonly kind: 'Message'; - readonly info: CommonMsgInfo; - readonly init: Maybe>; - readonly body: Either; -} - -export interface MessageRelaxed { - readonly kind: 'MessageRelaxed'; - readonly info: CommonMsgInfoRelaxed; - readonly init: Maybe>; - readonly body: Either; -} - -export interface MessageAny { - readonly kind: 'MessageAny'; - readonly anon0: Message; -} - -export type IntermediateAddress = IntermediateAddress_interm_addr_regular | IntermediateAddress_interm_addr_simple | IntermediateAddress_interm_addr_ext; - -export interface IntermediateAddress_interm_addr_regular { - readonly kind: 'IntermediateAddress_interm_addr_regular'; - readonly use_dest_bits: number; -} - -export interface IntermediateAddress_interm_addr_simple { - readonly kind: 'IntermediateAddress_interm_addr_simple'; - readonly workchain_id: number; - readonly addr_pfx: number; -} - -export interface IntermediateAddress_interm_addr_ext { - readonly kind: 'IntermediateAddress_interm_addr_ext'; - readonly workchain_id: number; - readonly addr_pfx: number; -} - -export interface MsgEnvelope { - readonly kind: 'MsgEnvelope'; - readonly cur_addr: IntermediateAddress; - readonly next_addr: IntermediateAddress; - readonly fwd_fee_remaining: Grams; - readonly msg: Message; -} - -export type InMsg = InMsg_msg_import_ext | InMsg_msg_import_ihr | InMsg_msg_import_imm | InMsg_msg_import_fin | InMsg_msg_import_tr | InMsg_msg_discard_fin | InMsg_msg_discard_tr; - -export interface InMsg_msg_import_ext { - readonly kind: 'InMsg_msg_import_ext'; - readonly msg: Message; - readonly transaction: Transaction; -} - -export interface InMsg_msg_import_ihr { - readonly kind: 'InMsg_msg_import_ihr'; - readonly msg: Message; - readonly transaction: Transaction; - readonly ihr_fee: Grams; - readonly proof_created: Slice; -} - -export interface InMsg_msg_import_imm { - readonly kind: 'InMsg_msg_import_imm'; - readonly in_msg: MsgEnvelope; - readonly transaction: Transaction; - readonly fwd_fee: Grams; -} - -export interface InMsg_msg_import_fin { - readonly kind: 'InMsg_msg_import_fin'; - readonly in_msg: MsgEnvelope; - readonly transaction: Transaction; - readonly fwd_fee: Grams; -} - -export interface InMsg_msg_import_tr { - readonly kind: 'InMsg_msg_import_tr'; - readonly in_msg: MsgEnvelope; - readonly out_msg: MsgEnvelope; - readonly transit_fee: Grams; -} - -export interface InMsg_msg_discard_fin { - readonly kind: 'InMsg_msg_discard_fin'; - readonly in_msg: MsgEnvelope; - readonly transaction_id: number; - readonly fwd_fee: Grams; -} - -export interface InMsg_msg_discard_tr { - readonly kind: 'InMsg_msg_discard_tr'; - readonly in_msg: MsgEnvelope; - readonly transaction_id: number; - readonly fwd_fee: Grams; - readonly proof_delivered: Slice; -} - -export interface ImportFees { - readonly kind: 'ImportFees'; - readonly fees_collected: Grams; - readonly value_imported: CurrencyCollection; -} - -export interface InMsgDescr { - readonly kind: 'InMsgDescr'; - readonly anon0: HashmapAugE; -} - -export type OutMsg = OutMsg_msg_export_ext | OutMsg_msg_export_imm | OutMsg_msg_export_new | OutMsg_msg_export_tr | OutMsg_msg_export_deq | OutMsg_msg_export_deq_short | OutMsg_msg_export_tr_req | OutMsg_msg_export_deq_imm; - -export interface OutMsg_msg_export_ext { - readonly kind: 'OutMsg_msg_export_ext'; - readonly msg: Message; - readonly transaction: Transaction; -} - -export interface OutMsg_msg_export_imm { - readonly kind: 'OutMsg_msg_export_imm'; - readonly out_msg: MsgEnvelope; - readonly transaction: Transaction; - readonly reimport: InMsg; -} - -export interface OutMsg_msg_export_new { - readonly kind: 'OutMsg_msg_export_new'; - readonly out_msg: MsgEnvelope; - readonly transaction: Transaction; -} - -export interface OutMsg_msg_export_tr { - readonly kind: 'OutMsg_msg_export_tr'; - readonly out_msg: MsgEnvelope; - readonly imported: InMsg; -} - -export interface OutMsg_msg_export_deq { - readonly kind: 'OutMsg_msg_export_deq'; - readonly out_msg: MsgEnvelope; - readonly import_block_lt: number; -} - -export interface OutMsg_msg_export_deq_short { - readonly kind: 'OutMsg_msg_export_deq_short'; - readonly msg_env_hash: BitString; - readonly next_workchain: number; - readonly next_addr_pfx: number; - readonly import_block_lt: number; -} - -export interface OutMsg_msg_export_tr_req { - readonly kind: 'OutMsg_msg_export_tr_req'; - readonly out_msg: MsgEnvelope; - readonly imported: InMsg; -} - -export interface OutMsg_msg_export_deq_imm { - readonly kind: 'OutMsg_msg_export_deq_imm'; - readonly out_msg: MsgEnvelope; - readonly reimport: InMsg; -} - -export interface EnqueuedMsg { - readonly kind: 'EnqueuedMsg'; - readonly enqueued_lt: number; - readonly out_msg: MsgEnvelope; -} - -export interface OutMsgDescr { - readonly kind: 'OutMsgDescr'; - readonly anon0: HashmapAugE; -} - -export interface OutMsgQueue { - readonly kind: 'OutMsgQueue'; - readonly anon0: HashmapAugE; -} - -export interface ProcessedUpto { - readonly kind: 'ProcessedUpto'; - readonly last_msg_lt: number; - readonly last_msg_hash: BitString; -} - -export interface ProcessedInfo { - readonly kind: 'ProcessedInfo'; - readonly anon0: HashmapE; -} - -export interface IhrPendingSince { - readonly kind: 'IhrPendingSince'; - readonly import_lt: number; -} - -export interface IhrPendingInfo { - readonly kind: 'IhrPendingInfo'; - readonly anon0: HashmapE; -} - -export interface OutMsgQueueInfo { - readonly kind: 'OutMsgQueueInfo'; - readonly out_queue: OutMsgQueue; - readonly proc_info: ProcessedInfo; - readonly ihr_pending: IhrPendingInfo; -} - -export interface StorageUsed { - readonly kind: 'StorageUsed'; - readonly _cells: VarUInteger; - readonly bits: VarUInteger; - readonly public_cells: VarUInteger; -} - -export interface StorageUsedShort { - readonly kind: 'StorageUsedShort'; - readonly _cells: VarUInteger; - readonly bits: VarUInteger; -} - -export interface StorageInfo { - readonly kind: 'StorageInfo'; - readonly used: StorageUsed; - readonly last_paid: number; - readonly due_payment: Maybe; -} - -export type Account = Account_account_none | Account_account; - -export interface Account_account_none { - readonly kind: 'Account_account_none'; -} - -export interface Account_account { - readonly kind: 'Account_account'; - readonly addr: Address; - readonly storage_stat: StorageInfo; - readonly storage: AccountStorage; -} - -export interface AccountStorage { - readonly kind: 'AccountStorage'; - readonly last_trans_lt: number; - readonly balance: CurrencyCollection; - readonly state: AccountState; -} - -export type AccountState = AccountState_account_uninit | AccountState_account_active | AccountState_account_frozen; - -export interface AccountState_account_uninit { - readonly kind: 'AccountState_account_uninit'; -} - -export interface AccountState_account_active { - readonly kind: 'AccountState_account_active'; - readonly _: StateInit; -} - -export interface AccountState_account_frozen { - readonly kind: 'AccountState_account_frozen'; - readonly state_hash: BitString; -} - -export type AccountStatus = AccountStatus_acc_state_uninit | AccountStatus_acc_state_frozen | AccountStatus_acc_state_active | AccountStatus_acc_state_nonexist; - -export interface AccountStatus_acc_state_uninit { - readonly kind: 'AccountStatus_acc_state_uninit'; -} - -export interface AccountStatus_acc_state_frozen { - readonly kind: 'AccountStatus_acc_state_frozen'; -} - -export interface AccountStatus_acc_state_active { - readonly kind: 'AccountStatus_acc_state_active'; -} - -export interface AccountStatus_acc_state_nonexist { - readonly kind: 'AccountStatus_acc_state_nonexist'; -} - -export interface ShardAccount { - readonly kind: 'ShardAccount'; - readonly account: Account; - readonly last_trans_hash: BitString; - readonly last_trans_lt: number; -} - -export interface DepthBalanceInfo { - readonly kind: 'DepthBalanceInfo'; - readonly split_depth: number; - readonly balance: CurrencyCollection; -} - -export interface ShardAccounts { - readonly kind: 'ShardAccounts'; - readonly anon0: HashmapAugE; -} - -export interface Transaction { - readonly kind: 'Transaction'; - readonly account_addr: BitString; - readonly lt: number; - readonly prev_trans_hash: BitString; - readonly prev_trans_lt: number; - readonly now: number; - readonly outmsg_cnt: number; - readonly orig_status: AccountStatus; - readonly end_status: AccountStatus; - readonly in_msg: Maybe>; - readonly out_msgs: HashmapE>; - readonly total_fees: CurrencyCollection; - readonly state_update: HASH_UPDATE; - readonly description: TransactionDescr; -} - -export interface MERKLE_UPDATE { - readonly kind: 'MERKLE_UPDATE'; - readonly old_hash: BitString; - readonly new_hash: BitString; - readonly old: X; - readonly new0: X; -} - -export interface HASH_UPDATE { - readonly kind: 'HASH_UPDATE'; - readonly old_hash: BitString; - readonly new_hash: BitString; -} - -export interface MERKLE_PROOF { - readonly kind: 'MERKLE_PROOF'; - readonly virtual_hash: BitString; - readonly depth: number; - readonly virtual_root: X; -} - -export interface AccountBlock { - readonly kind: 'AccountBlock'; - readonly account_addr: BitString; - readonly transactions: HashmapAug; - readonly state_update: HASH_UPDATE; -} - -export interface ShardAccountBlocks { - readonly kind: 'ShardAccountBlocks'; - readonly anon0: HashmapAugE; -} - -export interface TrStoragePhase { - readonly kind: 'TrStoragePhase'; - readonly storage_fees_collected: Grams; - readonly storage_fees_due: Maybe; - readonly status_change: AccStatusChange; -} - -export type AccStatusChange = AccStatusChange_acst_unchanged | AccStatusChange_acst_frozen | AccStatusChange_acst_deleted; - -export interface AccStatusChange_acst_unchanged { - readonly kind: 'AccStatusChange_acst_unchanged'; -} - -export interface AccStatusChange_acst_frozen { - readonly kind: 'AccStatusChange_acst_frozen'; -} - -export interface AccStatusChange_acst_deleted { - readonly kind: 'AccStatusChange_acst_deleted'; -} - -export interface TrCreditPhase { - readonly kind: 'TrCreditPhase'; - readonly due_fees_collected: Maybe; - readonly credit: CurrencyCollection; -} - -export type TrComputePhase = TrComputePhase_tr_phase_compute_skipped | TrComputePhase_tr_phase_compute_vm; - -export interface TrComputePhase_tr_phase_compute_skipped { - readonly kind: 'TrComputePhase_tr_phase_compute_skipped'; - readonly reason: ComputeSkipReason; -} - -export interface TrComputePhase_tr_phase_compute_vm { - readonly kind: 'TrComputePhase_tr_phase_compute_vm'; - readonly success: boolean; - readonly msg_state_used: boolean; - readonly account_activated: boolean; - readonly gas_fees: Grams; - readonly gas_used: VarUInteger; - readonly gas_limit: VarUInteger; - readonly gas_credit: Maybe; - readonly mode: number; - readonly exit_code: number; - readonly exit_arg: Maybe; - readonly vm_steps: number; - readonly vm_init_state_hash: BitString; - readonly vm_final_state_hash: BitString; -} - -export type ComputeSkipReason = ComputeSkipReason_cskip_no_state | ComputeSkipReason_cskip_bad_state | ComputeSkipReason_cskip_no_gas | ComputeSkipReason_cskip_suspended; - -export interface ComputeSkipReason_cskip_no_state { - readonly kind: 'ComputeSkipReason_cskip_no_state'; -} - -export interface ComputeSkipReason_cskip_bad_state { - readonly kind: 'ComputeSkipReason_cskip_bad_state'; -} - -export interface ComputeSkipReason_cskip_no_gas { - readonly kind: 'ComputeSkipReason_cskip_no_gas'; -} - -export interface ComputeSkipReason_cskip_suspended { - readonly kind: 'ComputeSkipReason_cskip_suspended'; -} - -export interface TrActionPhase { - readonly kind: 'TrActionPhase'; - readonly success: boolean; - readonly valid: boolean; - readonly no_funds: boolean; - readonly status_change: AccStatusChange; - readonly total_fwd_fees: Maybe; - readonly total_action_fees: Maybe; - readonly result_code: number; - readonly result_arg: Maybe; - readonly tot_actions: number; - readonly spec_actions: number; - readonly skipped_actions: number; - readonly msgs_created: number; - readonly action_list_hash: BitString; - readonly tot_msg_size: StorageUsedShort; -} - -export type TrBouncePhase = TrBouncePhase_tr_phase_bounce_negfunds | TrBouncePhase_tr_phase_bounce_nofunds | TrBouncePhase_tr_phase_bounce_ok; - -export interface TrBouncePhase_tr_phase_bounce_negfunds { - readonly kind: 'TrBouncePhase_tr_phase_bounce_negfunds'; -} - -export interface TrBouncePhase_tr_phase_bounce_nofunds { - readonly kind: 'TrBouncePhase_tr_phase_bounce_nofunds'; - readonly msg_size: StorageUsedShort; - readonly req_fwd_fees: Grams; -} - -export interface TrBouncePhase_tr_phase_bounce_ok { - readonly kind: 'TrBouncePhase_tr_phase_bounce_ok'; - readonly msg_size: StorageUsedShort; - readonly msg_fees: Grams; - readonly fwd_fees: Grams; -} - -export type TransactionDescr = TransactionDescr_trans_ord | TransactionDescr_trans_storage | TransactionDescr_trans_tick_tock | TransactionDescr_trans_split_prepare | TransactionDescr_trans_split_install | TransactionDescr_trans_merge_prepare | TransactionDescr_trans_merge_install; - -export interface TransactionDescr_trans_ord { - readonly kind: 'TransactionDescr_trans_ord'; - readonly credit_first: boolean; - readonly storage_ph: Maybe; - readonly credit_ph: Maybe; - readonly compute_ph: TrComputePhase; - readonly action: Maybe; - readonly aborted: boolean; - readonly bounce: Maybe; - readonly destroyed: boolean; -} - -export interface TransactionDescr_trans_storage { - readonly kind: 'TransactionDescr_trans_storage'; - readonly storage_ph: TrStoragePhase; -} - -export interface TransactionDescr_trans_tick_tock { - readonly kind: 'TransactionDescr_trans_tick_tock'; - readonly is_tock: boolean; - readonly storage_ph: TrStoragePhase; - readonly compute_ph: TrComputePhase; - readonly action: Maybe; - readonly aborted: boolean; - readonly destroyed: boolean; -} - -export interface TransactionDescr_trans_split_prepare { - readonly kind: 'TransactionDescr_trans_split_prepare'; - readonly split_info: SplitMergeInfo; - readonly storage_ph: Maybe; - readonly compute_ph: TrComputePhase; - readonly action: Maybe; - readonly aborted: boolean; - readonly destroyed: boolean; -} - -export interface TransactionDescr_trans_split_install { - readonly kind: 'TransactionDescr_trans_split_install'; - readonly split_info: SplitMergeInfo; - readonly prepare_transaction: Transaction; - readonly installed: boolean; -} - -export interface TransactionDescr_trans_merge_prepare { - readonly kind: 'TransactionDescr_trans_merge_prepare'; - readonly split_info: SplitMergeInfo; - readonly storage_ph: TrStoragePhase; - readonly aborted: boolean; -} - -export interface TransactionDescr_trans_merge_install { - readonly kind: 'TransactionDescr_trans_merge_install'; - readonly split_info: SplitMergeInfo; - readonly prepare_transaction: Transaction; - readonly storage_ph: Maybe; - readonly credit_ph: Maybe; - readonly compute_ph: TrComputePhase; - readonly action: Maybe; - readonly aborted: boolean; - readonly destroyed: boolean; -} - -export interface SplitMergeInfo { - readonly kind: 'SplitMergeInfo'; - readonly cur_shard_pfx_len: number; - readonly acc_split_depth: number; - readonly this_addr: BitString; - readonly sibling_addr: BitString; -} - -export interface SmartContractInfo { - readonly kind: 'SmartContractInfo'; - readonly actions: number; - readonly msgs_sent: number; - readonly unixtime: number; - readonly block_lt: number; - readonly trans_lt: number; - readonly rand_seed: BitString; - readonly balance_remaining: CurrencyCollection; - readonly myself: Address; - readonly global_config: Maybe; -} - -export type OutList = OutList_out_list_empty | OutList_out_list; - -export interface OutList_out_list_empty { - readonly kind: 'OutList_out_list_empty'; -} - -export interface OutList_out_list { - readonly kind: 'OutList_out_list'; - readonly n: number; - readonly prev: OutList; - readonly action: OutAction; -} - -export type OutAction = OutAction_action_send_msg | OutAction_action_set_code | OutAction_action_reserve_currency | OutAction_action_change_library; - -export interface OutAction_action_send_msg { - readonly kind: 'OutAction_action_send_msg'; - readonly mode: number; - readonly out_msg: MessageRelaxed; -} - -export interface OutAction_action_set_code { - readonly kind: 'OutAction_action_set_code'; - readonly new_code: Slice; -} - -export interface OutAction_action_reserve_currency { - readonly kind: 'OutAction_action_reserve_currency'; - readonly mode: number; - readonly currency: CurrencyCollection; -} - -export interface OutAction_action_change_library { - readonly kind: 'OutAction_action_change_library'; - readonly mode: number; - readonly libref: LibRef; -} - -export type LibRef = LibRef_libref_hash | LibRef_libref_ref; - -export interface LibRef_libref_hash { - readonly kind: 'LibRef_libref_hash'; - readonly lib_hash: BitString; -} - -export interface LibRef_libref_ref { - readonly kind: 'LibRef_libref_ref'; - readonly library: Slice; -} - -export interface OutListNode { - readonly kind: 'OutListNode'; - readonly prev: Slice; - readonly action: OutAction; -} - -export interface ShardIdent { - readonly kind: 'ShardIdent'; - readonly shard_pfx_bits: number; - readonly workchain_id: number; - readonly shard_prefix: number; -} - -export interface ExtBlkRef { - readonly kind: 'ExtBlkRef'; - readonly end_lt: number; - readonly seq_no: number; - readonly root_hash: BitString; - readonly file_hash: BitString; -} - -export interface BlockIdExt { - readonly kind: 'BlockIdExt'; - readonly shard_id: ShardIdent; - readonly seq_no: number; - readonly root_hash: BitString; - readonly file_hash: BitString; -} - -export interface BlkMasterInfo { - readonly kind: 'BlkMasterInfo'; - readonly master: ExtBlkRef; -} - -export interface ShardStateUnsplit { - readonly kind: 'ShardStateUnsplit'; - readonly global_id: number; - readonly shard_id: ShardIdent; - readonly seq_no: number; - readonly vert_seq_no: number; - readonly gen_utime: number; - readonly gen_lt: number; - readonly min_ref_mc_seqno: number; - readonly out_msg_queue_info: OutMsgQueueInfo; - readonly before_split: number; - readonly accounts: ShardAccounts; - readonly overload_history: number; - readonly underload_history: number; - readonly total_balance: CurrencyCollection; - readonly total_validator_fees: CurrencyCollection; - readonly libraries: HashmapE; - readonly master_ref: Maybe; - readonly custom: Maybe; -} - -export type ShardState = ShardState_split_state | ShardState__; - -export interface ShardState_split_state { - readonly kind: 'ShardState_split_state'; - readonly left: ShardStateUnsplit; - readonly right: ShardStateUnsplit; -} - -export interface ShardState__ { - readonly kind: 'ShardState__'; - readonly anon0: ShardStateUnsplit; -} - -export interface LibDescr { - readonly kind: 'LibDescr'; - readonly lib: Slice; - readonly publishers: Hashmap; -} - -export interface BlockInfo { - readonly kind: 'BlockInfo'; - readonly prev_seq_no: number; - readonly version: number; - readonly not_master: number; - readonly after_merge: number; - readonly before_split: number; - readonly after_split: number; - readonly want_split: boolean; - readonly want_merge: boolean; - readonly key_block: boolean; - readonly vert_seqno_incr: number; - readonly flags: number; - readonly seq_no: number; - readonly vert_seq_no: number; - readonly shard: ShardIdent; - readonly gen_utime: number; - readonly start_lt: number; - readonly end_lt: number; - readonly gen_validator_list_hash_short: number; - readonly gen_catchain_seqno: number; - readonly min_ref_mc_seqno: number; - readonly prev_key_block_seqno: number; - readonly gen_software: GlobalVersion | undefined; - readonly master_ref: BlkMasterInfo | undefined; - readonly prev_ref: BlkPrevInfo; - readonly prev_vert_ref: BlkPrevInfo | undefined; -} - -export type BlkPrevInfo = BlkPrevInfo_prev_blk_info | BlkPrevInfo_prev_blks_info; - -export interface BlkPrevInfo_prev_blk_info { - readonly kind: 'BlkPrevInfo_prev_blk_info'; - readonly prev: ExtBlkRef; -} - -export interface BlkPrevInfo_prev_blks_info { - readonly kind: 'BlkPrevInfo_prev_blks_info'; - readonly prev1: ExtBlkRef; - readonly prev2: ExtBlkRef; -} - -export interface Block { - readonly kind: 'Block'; - readonly global_id: number; - readonly info: BlockInfo; - readonly value_flow: ValueFlow; - readonly state_update: Cell; - readonly extra: BlockExtra; -} - -export interface BlockExtra { - readonly kind: 'BlockExtra'; - readonly in_msg_descr: InMsgDescr; - readonly out_msg_descr: OutMsgDescr; - readonly account_blocks: ShardAccountBlocks; - readonly rand_seed: BitString; - readonly created_by: BitString; - readonly custom: Maybe; -} - -export type ValueFlow = ValueFlow_value_flow | ValueFlow_value_flow_v2; - -export interface ValueFlow_value_flow { - readonly kind: 'ValueFlow_value_flow'; - readonly from_prev_blk: CurrencyCollection; - readonly to_next_blk: CurrencyCollection; - readonly imported: CurrencyCollection; - readonly exported: CurrencyCollection; - readonly fees_collected: CurrencyCollection; - readonly fees_imported: CurrencyCollection; - readonly recovered: CurrencyCollection; - readonly created: CurrencyCollection; - readonly minted: CurrencyCollection; -} - -export interface ValueFlow_value_flow_v2 { - readonly kind: 'ValueFlow_value_flow_v2'; - readonly from_prev_blk: CurrencyCollection; - readonly to_next_blk: CurrencyCollection; - readonly imported: CurrencyCollection; - readonly exported: CurrencyCollection; - readonly fees_collected: CurrencyCollection; - readonly burned: CurrencyCollection; - readonly fees_imported: CurrencyCollection; - readonly recovered: CurrencyCollection; - readonly created: CurrencyCollection; - readonly minted: CurrencyCollection; -} - -export type BinTree = BinTree_bt_leaf | BinTree_bt_fork; - -export interface BinTree_bt_leaf { - readonly kind: 'BinTree_bt_leaf'; - readonly leaf: X; -} - -export interface BinTree_bt_fork { - readonly kind: 'BinTree_bt_fork'; - readonly left: BinTree; - readonly right: BinTree; -} - -export type FutureSplitMerge = FutureSplitMerge_fsm_none | FutureSplitMerge_fsm_split | FutureSplitMerge_fsm_merge; - -export interface FutureSplitMerge_fsm_none { - readonly kind: 'FutureSplitMerge_fsm_none'; -} - -export interface FutureSplitMerge_fsm_split { - readonly kind: 'FutureSplitMerge_fsm_split'; - readonly split_utime: number; - readonly interval: number; -} - -export interface FutureSplitMerge_fsm_merge { - readonly kind: 'FutureSplitMerge_fsm_merge'; - readonly merge_utime: number; - readonly interval: number; -} - -export type ShardDescr = ShardDescr_shard_descr | ShardDescr_shard_descr_new; - -export interface ShardDescr_shard_descr { - readonly kind: 'ShardDescr_shard_descr'; - readonly seq_no: number; - readonly reg_mc_seqno: number; - readonly start_lt: number; - readonly end_lt: number; - readonly root_hash: BitString; - readonly file_hash: BitString; - readonly before_split: boolean; - readonly before_merge: boolean; - readonly want_split: boolean; - readonly want_merge: boolean; - readonly nx_cc_updated: boolean; - readonly flags: number; - readonly next_catchain_seqno: number; - readonly next_validator_shard: number; - readonly min_ref_mc_seqno: number; - readonly gen_utime: number; - readonly split_merge_at: FutureSplitMerge; - readonly fees_collected: CurrencyCollection; - readonly funds_created: CurrencyCollection; -} - -export interface ShardDescr_shard_descr_new { - readonly kind: 'ShardDescr_shard_descr_new'; - readonly seq_no: number; - readonly reg_mc_seqno: number; - readonly start_lt: number; - readonly end_lt: number; - readonly root_hash: BitString; - readonly file_hash: BitString; - readonly before_split: boolean; - readonly before_merge: boolean; - readonly want_split: boolean; - readonly want_merge: boolean; - readonly nx_cc_updated: boolean; - readonly flags: number; - readonly next_catchain_seqno: number; - readonly next_validator_shard: number; - readonly min_ref_mc_seqno: number; - readonly gen_utime: number; - readonly split_merge_at: FutureSplitMerge; - readonly fees_collected: CurrencyCollection; - readonly funds_created: CurrencyCollection; -} - -export interface ShardHashes { - readonly kind: 'ShardHashes'; - readonly anon0: HashmapE>; -} - -export type BinTreeAug = BinTreeAug_bta_leaf | BinTreeAug_bta_fork; - -export interface BinTreeAug_bta_leaf { - readonly kind: 'BinTreeAug_bta_leaf'; - readonly extra: Y; - readonly leaf: X; -} - -export interface BinTreeAug_bta_fork { - readonly kind: 'BinTreeAug_bta_fork'; - readonly left: BinTreeAug; - readonly right: BinTreeAug; - readonly extra: Y; -} - -export interface ShardFeeCreated { - readonly kind: 'ShardFeeCreated'; - readonly fees: CurrencyCollection; - readonly create: CurrencyCollection; -} - -export interface ShardFees { - readonly kind: 'ShardFees'; - readonly anon0: HashmapAugE; -} - -export interface ConfigParams { - readonly kind: 'ConfigParams'; - readonly config_addr: BitString; - readonly config: Hashmap; -} - -export interface ValidatorInfo { - readonly kind: 'ValidatorInfo'; - readonly validator_list_hash_short: number; - readonly catchain_seqno: number; - readonly nx_cc_updated: boolean; -} - -export interface ValidatorBaseInfo { - readonly kind: 'ValidatorBaseInfo'; - readonly validator_list_hash_short: number; - readonly catchain_seqno: number; -} - -export interface KeyMaxLt { - readonly kind: 'KeyMaxLt'; - readonly key: boolean; - readonly max_end_lt: number; -} - -export interface KeyExtBlkRef { - readonly kind: 'KeyExtBlkRef'; - readonly key: boolean; - readonly blk_ref: ExtBlkRef; -} - -export interface OldMcBlocksInfo { - readonly kind: 'OldMcBlocksInfo'; - readonly anon0: HashmapAugE; -} - -export interface Counters { - readonly kind: 'Counters'; - readonly last_updated: number; - readonly total: number; - readonly cnt2048: number; - readonly cnt65536: number; -} - -export interface CreatorStats { - readonly kind: 'CreatorStats'; - readonly mc_blocks: Counters; - readonly shard_blocks: Counters; -} - -export type BlockCreateStats = BlockCreateStats_block_create_stats | BlockCreateStats_block_create_stats_ext; - -export interface BlockCreateStats_block_create_stats { - readonly kind: 'BlockCreateStats_block_create_stats'; - readonly counters: HashmapE; -} - -export interface BlockCreateStats_block_create_stats_ext { - readonly kind: 'BlockCreateStats_block_create_stats_ext'; - readonly counters: HashmapAugE; -} - -export interface McStateExtra { - readonly kind: 'McStateExtra'; - readonly shard_hashes: ShardHashes; - readonly config: ConfigParams; - readonly flags: number; - readonly validator_info: ValidatorInfo; - readonly prev_blocks: OldMcBlocksInfo; - readonly after_key_block: boolean; - readonly last_key_block: Maybe; - readonly block_create_stats: BlockCreateStats | undefined; - readonly global_balance: CurrencyCollection; -} - -export interface SigPubKey { - readonly kind: 'SigPubKey'; - readonly pubkey: BitString; -} - -export interface CryptoSignatureSimple { - readonly kind: 'CryptoSignatureSimple'; - readonly R: BitString; - readonly s: BitString; -} - -export type CryptoSignature = CryptoSignature_chained_signature | CryptoSignature__; - -export interface CryptoSignature_chained_signature { - readonly kind: 'CryptoSignature_chained_signature'; - readonly signed_cert: SignedCertificate; - readonly temp_key_signature: CryptoSignatureSimple; -} - -export interface CryptoSignature__ { - readonly kind: 'CryptoSignature__'; - readonly anon0: CryptoSignatureSimple; -} - -export interface CryptoSignaturePair { - readonly kind: 'CryptoSignaturePair'; - readonly node_id_short: BitString; - readonly sign: CryptoSignature; -} - -export interface Certificate { - readonly kind: 'Certificate'; - readonly temp_key: SigPubKey; - readonly valid_since: number; - readonly valid_until: number; -} - -export interface CertificateEnv { - readonly kind: 'CertificateEnv'; - readonly certificate: Certificate; -} - -export interface SignedCertificate { - readonly kind: 'SignedCertificate'; - readonly certificate: Certificate; - readonly certificate_signature: CryptoSignature; -} - -export interface McBlockExtra { - readonly kind: 'McBlockExtra'; - readonly key_block: number; - readonly shard_hashes: ShardHashes; - readonly shard_fees: ShardFees; - readonly prev_blk_signatures: HashmapE; - readonly recover_create_msg: Maybe; - readonly mint_msg: Maybe; - readonly config: ConfigParams | undefined; -} - -export type ValidatorDescr = ValidatorDescr_validator | ValidatorDescr_validator_addr; - -export interface ValidatorDescr_validator { - readonly kind: 'ValidatorDescr_validator'; - readonly public_key: SigPubKey; - readonly weight: number; -} - -export interface ValidatorDescr_validator_addr { - readonly kind: 'ValidatorDescr_validator_addr'; - readonly public_key: SigPubKey; - readonly weight: number; - readonly adnl_addr: BitString; -} - -export type ValidatorSet = ValidatorSet_validators | ValidatorSet_validators_ext; - -export interface ValidatorSet_validators { - readonly kind: 'ValidatorSet_validators'; - readonly utime_since: number; - readonly utime_until: number; - readonly total: number; - readonly main: number; - readonly list: Hashmap; -} - -export interface ValidatorSet_validators_ext { - readonly kind: 'ValidatorSet_validators_ext'; - readonly utime_since: number; - readonly utime_until: number; - readonly total: number; - readonly main: number; - readonly total_weight: number; - readonly list: HashmapE; -} - -export type ConfigParam = ConfigParam__ | ConfigParam__1 | ConfigParam__2 | ConfigParam__3 | ConfigParam__4 | ConfigParam__5 | ConfigParam__6 | ConfigParam__7 | ConfigParam__8 | ConfigParam__9 | ConfigParam__10 | ConfigParam__11 | ConfigParam__12 | ConfigParam__13 | ConfigParam__14 | ConfigParam__15 | ConfigParam__16 | ConfigParam__17 | ConfigParam__18 | ConfigParam__19 | ConfigParam_config_mc_gas_prices | ConfigParam_config_gas_prices | ConfigParam_config_mc_block_limits | ConfigParam_config_block_limits | ConfigParam_config_mc_fwd_prices | ConfigParam_config_fwd_prices | ConfigParam__26 | ConfigParam__27 | ConfigParam__28 | ConfigParam__29 | ConfigParam__30 | ConfigParam__31 | ConfigParam__32 | ConfigParam__33 | ConfigParam__34 | ConfigParam__35 | ConfigParam__36 | ConfigParam__37 | ConfigParam__38 | ConfigParam__39 | ConfigParam__40 | ConfigParam__41 | ConfigParam__42 | ConfigParam__43 | ConfigParam__44; - -export interface ConfigParam__ { - readonly kind: 'ConfigParam__'; - readonly config_addr: BitString; -} - -export interface ConfigParam__1 { - readonly kind: 'ConfigParam__1'; - readonly elector_addr: BitString; -} - -export interface ConfigParam__2 { - readonly kind: 'ConfigParam__2'; - readonly minter_addr: BitString; -} - -export interface ConfigParam__3 { - readonly kind: 'ConfigParam__3'; - readonly fee_collector_addr: BitString; -} - -export interface ConfigParam__4 { - readonly kind: 'ConfigParam__4'; - readonly dns_root_addr: BitString; -} - -export interface ConfigParam__5 { - readonly kind: 'ConfigParam__5'; - readonly anon0: BurningConfig; -} - -export interface ConfigParam__6 { - readonly kind: 'ConfigParam__6'; - readonly mint_new_price: Grams; - readonly mint_add_price: Grams; -} - -export interface ConfigParam__7 { - readonly kind: 'ConfigParam__7'; - readonly to_mint: ExtraCurrencyCollection; -} - -export interface ConfigParam__8 { - readonly kind: 'ConfigParam__8'; - readonly anon0: GlobalVersion; -} - -export interface ConfigParam__9 { - readonly kind: 'ConfigParam__9'; - readonly mandatory_params: Hashmap; -} - -export interface ConfigParam__10 { - readonly kind: 'ConfigParam__10'; - readonly critical_params: Hashmap; -} - -export interface ConfigParam__11 { - readonly kind: 'ConfigParam__11'; - readonly anon0: ConfigVotingSetup; -} - -export interface ConfigParam__12 { - readonly kind: 'ConfigParam__12'; - readonly workchains: HashmapE; -} - -export interface ConfigParam__13 { - readonly kind: 'ConfigParam__13'; - readonly anon0: ComplaintPricing; -} - -export interface ConfigParam__14 { - readonly kind: 'ConfigParam__14'; - readonly anon0: BlockCreateFees; -} - -export interface ConfigParam__15 { - readonly kind: 'ConfigParam__15'; - readonly validators_elected_for: number; - readonly elections_start_before: number; - readonly elections_end_before: number; - readonly stake_held_for: number; -} - -export interface ConfigParam__16 { - readonly kind: 'ConfigParam__16'; - readonly max_validators: number; - readonly max_main_validators: number; - readonly min_validators: number; -} - -export interface ConfigParam__17 { - readonly kind: 'ConfigParam__17'; - readonly min_stake: Grams; - readonly max_stake: Grams; - readonly min_total_stake: Grams; - readonly max_stake_factor: number; -} - -export interface ConfigParam__18 { - readonly kind: 'ConfigParam__18'; - readonly anon0: Hashmap; -} - -export interface ConfigParam__19 { - readonly kind: 'ConfigParam__19'; - readonly global_id: number; -} - -export interface ConfigParam_config_mc_gas_prices { - readonly kind: 'ConfigParam_config_mc_gas_prices'; - readonly anon0: GasLimitsPrices; -} - -export interface ConfigParam_config_gas_prices { - readonly kind: 'ConfigParam_config_gas_prices'; - readonly anon0: GasLimitsPrices; -} - -export interface ConfigParam_config_mc_block_limits { - readonly kind: 'ConfigParam_config_mc_block_limits'; - readonly anon0: BlockLimits; -} - -export interface ConfigParam_config_block_limits { - readonly kind: 'ConfigParam_config_block_limits'; - readonly anon0: BlockLimits; -} - -export interface ConfigParam_config_mc_fwd_prices { - readonly kind: 'ConfigParam_config_mc_fwd_prices'; - readonly anon0: MsgForwardPrices; -} - -export interface ConfigParam_config_fwd_prices { - readonly kind: 'ConfigParam_config_fwd_prices'; - readonly anon0: MsgForwardPrices; -} - -export interface ConfigParam__26 { - readonly kind: 'ConfigParam__26'; - readonly anon0: CatchainConfig; -} - -export interface ConfigParam__27 { - readonly kind: 'ConfigParam__27'; - readonly anon0: ConsensusConfig; -} - -export interface ConfigParam__28 { - readonly kind: 'ConfigParam__28'; - readonly fundamental_smc_addr: HashmapE; -} - -export interface ConfigParam__29 { - readonly kind: 'ConfigParam__29'; - readonly prev_validators: ValidatorSet; -} - -export interface ConfigParam__30 { - readonly kind: 'ConfigParam__30'; - readonly prev_temp_validators: ValidatorSet; -} - -export interface ConfigParam__31 { - readonly kind: 'ConfigParam__31'; - readonly cur_validators: ValidatorSet; -} - -export interface ConfigParam__32 { - readonly kind: 'ConfigParam__32'; - readonly cur_temp_validators: ValidatorSet; -} - -export interface ConfigParam__33 { - readonly kind: 'ConfigParam__33'; - readonly next_validators: ValidatorSet; -} - -export interface ConfigParam__34 { - readonly kind: 'ConfigParam__34'; - readonly next_temp_validators: ValidatorSet; -} - -export interface ConfigParam__35 { - readonly kind: 'ConfigParam__35'; - readonly anon0: HashmapE; -} - -export interface ConfigParam__36 { - readonly kind: 'ConfigParam__36'; - readonly anon0: MisbehaviourPunishmentConfig; -} - -export interface ConfigParam__37 { - readonly kind: 'ConfigParam__37'; - readonly anon0: SizeLimitsConfig; -} - -export interface ConfigParam__38 { - readonly kind: 'ConfigParam__38'; - readonly anon0: SuspendedAddressList; -} - -export interface ConfigParam__39 { - readonly kind: 'ConfigParam__39'; - readonly anon0: OracleBridgeParams; -} - -export interface ConfigParam__40 { - readonly kind: 'ConfigParam__40'; - readonly anon0: OracleBridgeParams; -} - -export interface ConfigParam__41 { - readonly kind: 'ConfigParam__41'; - readonly anon0: OracleBridgeParams; -} - -export interface ConfigParam__42 { - readonly kind: 'ConfigParam__42'; - readonly anon0: JettonBridgeParams; -} - -export interface ConfigParam__43 { - readonly kind: 'ConfigParam__43'; - readonly anon0: JettonBridgeParams; -} - -export interface ConfigParam__44 { - readonly kind: 'ConfigParam__44'; - readonly anon0: JettonBridgeParams; -} - -export interface BurningConfig { - readonly kind: 'BurningConfig'; - readonly blackhole_addr: Maybe; - readonly fee_burn_num: number; - readonly fee_burn_denom: number; -} - -export interface GlobalVersion { - readonly kind: 'GlobalVersion'; - readonly version: number; - readonly capabilities: number; -} - -export interface ConfigProposalSetup { - readonly kind: 'ConfigProposalSetup'; - readonly min_tot_rounds: number; - readonly max_tot_rounds: number; - readonly min_wins: number; - readonly max_losses: number; - readonly min_store_sec: number; - readonly max_store_sec: number; - readonly bit_price: number; - readonly _cell_price: number; -} - -export interface ConfigVotingSetup { - readonly kind: 'ConfigVotingSetup'; - readonly normal_params: ConfigProposalSetup; - readonly critical_params: ConfigProposalSetup; -} - -export interface ConfigProposal { - readonly kind: 'ConfigProposal'; - readonly param_id: number; - readonly param_value: Maybe; - readonly if_hash_equal: Maybe; -} - -export interface ConfigProposalStatus { - readonly kind: 'ConfigProposalStatus'; - readonly expires: number; - readonly proposal: ConfigProposal; - readonly is_critical: boolean; - readonly voters: HashmapE; - readonly remaining_weight: number; - readonly validator_set_id: bigint; - readonly rounds_remaining: number; - readonly wins: number; - readonly losses: number; -} - -export type WorkchainFormat = WorkchainFormat_wfmt_basic | WorkchainFormat_wfmt_ext; - -export interface WorkchainFormat_wfmt_basic { - readonly kind: 'WorkchainFormat_wfmt_basic'; - readonly vm_version: number; - readonly vm_mode: number; -} - -export interface WorkchainFormat_wfmt_ext { - readonly kind: 'WorkchainFormat_wfmt_ext'; - readonly min_addr_len: number; - readonly max_addr_len: number; - readonly addr_len_step: number; - readonly workchain_type_id: number; -} - -export interface WcSplitMergeTimings { - readonly kind: 'WcSplitMergeTimings'; - readonly split_merge_delay: number; - readonly split_merge_interval: number; - readonly min_split_merge_interval: number; - readonly max_split_merge_delay: number; -} - -export type WorkchainDescr = WorkchainDescr_workchain | WorkchainDescr_workchain_v2; - -export interface WorkchainDescr_workchain { - readonly kind: 'WorkchainDescr_workchain'; - readonly enabled_since: number; - readonly actual_min_split: number; - readonly min_split: number; - readonly max_split: number; - readonly basic: number; - readonly active: boolean; - readonly accept_msgs: boolean; - readonly flags: number; - readonly zerostate_root_hash: BitString; - readonly zerostate_file_hash: BitString; - readonly version: number; - readonly format: WorkchainFormat; -} - -export interface WorkchainDescr_workchain_v2 { - readonly kind: 'WorkchainDescr_workchain_v2'; - readonly enabled_since: number; - readonly actual_min_split: number; - readonly min_split: number; - readonly max_split: number; - readonly basic: number; - readonly active: boolean; - readonly accept_msgs: boolean; - readonly flags: number; - readonly zerostate_root_hash: BitString; - readonly zerostate_file_hash: BitString; - readonly version: number; - readonly format: WorkchainFormat; - readonly split_merge_timings: WcSplitMergeTimings; -} - -export interface ComplaintPricing { - readonly kind: 'ComplaintPricing'; - readonly deposit: Grams; - readonly bit_price: Grams; - readonly _cell_price: Grams; -} - -export interface BlockCreateFees { - readonly kind: 'BlockCreateFees'; - readonly masterchain_block_fee: Grams; - readonly basechain_block_fee: Grams; -} - -export interface StoragePrices { - readonly kind: 'StoragePrices'; - readonly utime_since: number; - readonly bit_price_ps: number; - readonly _cell_price_ps: number; - readonly mc_bit_price_ps: number; - readonly mc_cell_price_ps: number; -} - -export type GasLimitsPrices = GasLimitsPrices_gas_prices | GasLimitsPrices_gas_prices_ext | GasLimitsPrices_gas_flat_pfx; - -export interface GasLimitsPrices_gas_prices { - readonly kind: 'GasLimitsPrices_gas_prices'; - readonly gas_price: number; - readonly gas_limit: number; - readonly gas_credit: number; - readonly block_gas_limit: number; - readonly freeze_due_limit: number; - readonly delete_due_limit: number; -} - -export interface GasLimitsPrices_gas_prices_ext { - readonly kind: 'GasLimitsPrices_gas_prices_ext'; - readonly gas_price: number; - readonly gas_limit: number; - readonly special_gas_limit: number; - readonly gas_credit: number; - readonly block_gas_limit: number; - readonly freeze_due_limit: number; - readonly delete_due_limit: number; -} - -export interface GasLimitsPrices_gas_flat_pfx { - readonly kind: 'GasLimitsPrices_gas_flat_pfx'; - readonly flat_gas_limit: number; - readonly flat_gas_price: number; - readonly other: GasLimitsPrices; -} - -export interface ParamLimits { - readonly kind: 'ParamLimits'; - readonly underload: number; - readonly soft_limit: number; - readonly hard_limit: number; -} - -export interface BlockLimits { - readonly kind: 'BlockLimits'; - readonly bytes: ParamLimits; - readonly gas: ParamLimits; - readonly lt_delta: ParamLimits; -} - -export interface MsgForwardPrices { - readonly kind: 'MsgForwardPrices'; - readonly lump_price: number; - readonly bit_price: number; - readonly _cell_price: number; - readonly ihr_price_factor: number; - readonly first_frac: number; - readonly next_frac: number; -} - -export type CatchainConfig = CatchainConfig_catchain_config | CatchainConfig_catchain_config_new; - -export interface CatchainConfig_catchain_config { - readonly kind: 'CatchainConfig_catchain_config'; - readonly mc_catchain_lifetime: number; - readonly shard_catchain_lifetime: number; - readonly shard_validators_lifetime: number; - readonly shard_validators_num: number; -} - -export interface CatchainConfig_catchain_config_new { - readonly kind: 'CatchainConfig_catchain_config_new'; - readonly flags: number; - readonly shuffle_mc_validators: boolean; - readonly mc_catchain_lifetime: number; - readonly shard_catchain_lifetime: number; - readonly shard_validators_lifetime: number; - readonly shard_validators_num: number; -} - -export type ConsensusConfig = ConsensusConfig_consensus_config | ConsensusConfig_consensus_config_new | ConsensusConfig_consensus_config_v3 | ConsensusConfig_consensus_config_v4; - -export interface ConsensusConfig_consensus_config { - readonly kind: 'ConsensusConfig_consensus_config'; - readonly round_candidates: number; - readonly next_candidate_delay_ms: number; - readonly consensus_timeout_ms: number; - readonly fast_attempts: number; - readonly attempt_duration: number; - readonly catchain_max_deps: number; - readonly max_block_bytes: number; - readonly max_collated_bytes: number; -} - -export interface ConsensusConfig_consensus_config_new { - readonly kind: 'ConsensusConfig_consensus_config_new'; - readonly flags: number; - readonly new_catchain_ids: boolean; - readonly round_candidates: number; - readonly next_candidate_delay_ms: number; - readonly consensus_timeout_ms: number; - readonly fast_attempts: number; - readonly attempt_duration: number; - readonly catchain_max_deps: number; - readonly max_block_bytes: number; - readonly max_collated_bytes: number; -} - -export interface ConsensusConfig_consensus_config_v3 { - readonly kind: 'ConsensusConfig_consensus_config_v3'; - readonly flags: number; - readonly new_catchain_ids: boolean; - readonly round_candidates: number; - readonly next_candidate_delay_ms: number; - readonly consensus_timeout_ms: number; - readonly fast_attempts: number; - readonly attempt_duration: number; - readonly catchain_max_deps: number; - readonly max_block_bytes: number; - readonly max_collated_bytes: number; - readonly proto_version: number; -} - -export interface ConsensusConfig_consensus_config_v4 { - readonly kind: 'ConsensusConfig_consensus_config_v4'; - readonly flags: number; - readonly new_catchain_ids: boolean; - readonly round_candidates: number; - readonly next_candidate_delay_ms: number; - readonly consensus_timeout_ms: number; - readonly fast_attempts: number; - readonly attempt_duration: number; - readonly catchain_max_deps: number; - readonly max_block_bytes: number; - readonly max_collated_bytes: number; - readonly proto_version: number; - readonly catchain_max_blocks_coeff: number; -} - -export interface ValidatorTempKey { - readonly kind: 'ValidatorTempKey'; - readonly adnl_addr: BitString; - readonly temp_public_key: SigPubKey; - readonly seqno: number; - readonly valid_until: number; -} - -export interface ValidatorSignedTempKey { - readonly kind: 'ValidatorSignedTempKey'; - readonly key: ValidatorTempKey; - readonly signature: CryptoSignature; -} - -export interface MisbehaviourPunishmentConfig { - readonly kind: 'MisbehaviourPunishmentConfig'; - readonly default_flat_fine: Grams; - readonly default_proportional_fine: number; - readonly severity_flat_mult: number; - readonly severity_proportional_mult: number; - readonly unpunishable_interval: number; - readonly long_interval: number; - readonly long_flat_mult: number; - readonly long_proportional_mult: number; - readonly medium_interval: number; - readonly medium_flat_mult: number; - readonly medium_proportional_mult: number; -} - -export type SizeLimitsConfig = SizeLimitsConfig_size_limits_config | SizeLimitsConfig_size_limits_config_v2; - -export interface SizeLimitsConfig_size_limits_config { - readonly kind: 'SizeLimitsConfig_size_limits_config'; - readonly max_msg_bits: number; - readonly max_msg_cells: number; - readonly max_library_cells: number; - readonly max_vm_data_depth: number; - readonly max_ext_msg_size: number; - readonly max_ext_msg_depth: number; -} - -export interface SizeLimitsConfig_size_limits_config_v2 { - readonly kind: 'SizeLimitsConfig_size_limits_config_v2'; - readonly max_msg_bits: number; - readonly max_msg_cells: number; - readonly max_library_cells: number; - readonly max_vm_data_depth: number; - readonly max_ext_msg_size: number; - readonly max_ext_msg_depth: number; - readonly max_acc_state_cells: number; - readonly max_acc_state_bits: number; - readonly max_acc_public_libraries: number; -} - -export interface SuspendedAddressList { - readonly kind: 'SuspendedAddressList'; - readonly addresses: HashmapE; - readonly suspended_until: number; -} - -export interface OracleBridgeParams { - readonly kind: 'OracleBridgeParams'; - readonly bridge_address: BitString; - readonly oracle_mutlisig_address: BitString; - readonly oracles: HashmapE; - readonly external_chain_address: BitString; -} - -export interface JettonBridgePrices { - readonly kind: 'JettonBridgePrices'; - readonly bridge_burn_fee: Coins; - readonly bridge_mint_fee: Coins; - readonly wallet_min_tons_for_storage: Coins; - readonly wallet_gas_consumption: Coins; - readonly minter_min_tons_for_storage: Coins; - readonly discover_gas_consumption: Coins; -} - -export type JettonBridgeParams = JettonBridgeParams_jetton_bridge_params_v0 | JettonBridgeParams_jetton_bridge_params_v1; - -export interface JettonBridgeParams_jetton_bridge_params_v0 { - readonly kind: 'JettonBridgeParams_jetton_bridge_params_v0'; - readonly bridge_address: BitString; - readonly oracles_address: BitString; - readonly oracles: HashmapE; - readonly state_flags: number; - readonly burn_bridge_fee: Coins; -} - -export interface JettonBridgeParams_jetton_bridge_params_v1 { - readonly kind: 'JettonBridgeParams_jetton_bridge_params_v1'; - readonly bridge_address: BitString; - readonly oracles_address: BitString; - readonly oracles: HashmapE; - readonly state_flags: number; - readonly prices: JettonBridgePrices; - readonly external_chain_address: BitString; -} - -export interface BlockSignaturesPure { - readonly kind: 'BlockSignaturesPure'; - readonly sig_count: number; - readonly sig_weight: number; - readonly signatures: HashmapE; -} - -export interface BlockSignatures { - readonly kind: 'BlockSignatures'; - readonly validator_info: ValidatorBaseInfo; - readonly pure_signatures: BlockSignaturesPure; -} - -export interface BlockProof { - readonly kind: 'BlockProof'; - readonly proof_for: BlockIdExt; - readonly root: Slice; - readonly signatures: Maybe; -} - -export type ProofChain = ProofChain_chain_empty | ProofChain_chain_link; - -export interface ProofChain_chain_empty { - readonly kind: 'ProofChain_chain_empty'; -} - -export interface ProofChain_chain_link { - readonly kind: 'ProofChain_chain_link'; - readonly n: number; - readonly root: Slice; - readonly prev: ProofChain | undefined; -} - -export interface TopBlockDescr { - readonly kind: 'TopBlockDescr'; - readonly proof_for: BlockIdExt; - readonly signatures: Maybe; - readonly len: number; - readonly chain: ProofChain; -} - -export interface TopBlockDescrSet { - readonly kind: 'TopBlockDescrSet'; - readonly collection: HashmapE; -} - -export interface ProducerInfo { - readonly kind: 'ProducerInfo'; - readonly utime: number; - readonly mc_blk_ref: ExtBlkRef; - readonly state_proof: MERKLE_PROOF; - readonly prod_proof: MERKLE_PROOF; -} - -export type ComplaintDescr = ComplaintDescr_no_blk_gen | ComplaintDescr_no_blk_gen_diff; - -export interface ComplaintDescr_no_blk_gen { - readonly kind: 'ComplaintDescr_no_blk_gen'; - readonly from_utime: number; - readonly prod_info: ProducerInfo; -} - -export interface ComplaintDescr_no_blk_gen_diff { - readonly kind: 'ComplaintDescr_no_blk_gen_diff'; - readonly prod_info_old: ProducerInfo; - readonly prod_info_new: ProducerInfo; -} - -export interface ValidatorComplaint { - readonly kind: 'ValidatorComplaint'; - readonly validator_pubkey: BitString; - readonly description: ComplaintDescr; - readonly created_at: number; - readonly severity: number; - readonly reward_addr: bigint; - readonly paid: Grams; - readonly suggested_fine: Grams; - readonly suggested_fine_part: number; -} - -export interface ValidatorComplaintStatus { - readonly kind: 'ValidatorComplaintStatus'; - readonly complaint: ValidatorComplaint; - readonly voters: HashmapE; - readonly vset_id: bigint; - readonly weight_remaining: number; -} - -export type VmStackValue = VmStackValue_vm_stk_null | VmStackValue_vm_stk_tinyint | VmStackValue_vm_stk_int | VmStackValue_vm_stk_nan | VmStackValue_vm_stk_cell | VmStackValue_vm_stk_slice | VmStackValue_vm_stk_builder | VmStackValue_vm_stk_cont | VmStackValue_vm_stk_tuple; - -export interface VmStackValue_vm_stk_null { - readonly kind: 'VmStackValue_vm_stk_null'; -} - -export interface VmStackValue_vm_stk_tinyint { - readonly kind: 'VmStackValue_vm_stk_tinyint'; - readonly value: number; -} - -export interface VmStackValue_vm_stk_int { - readonly kind: 'VmStackValue_vm_stk_int'; - readonly value: bigint; -} - -export interface VmStackValue_vm_stk_nan { - readonly kind: 'VmStackValue_vm_stk_nan'; -} - -export interface VmStackValue_vm_stk_cell { - readonly kind: 'VmStackValue_vm_stk_cell'; - readonly _cell: Slice; -} - -export interface VmStackValue_vm_stk_slice { - readonly kind: 'VmStackValue_vm_stk_slice'; - readonly _: VmCellSlice; -} - -export interface VmStackValue_vm_stk_builder { - readonly kind: 'VmStackValue_vm_stk_builder'; - readonly _cell: Slice; -} - -export interface VmStackValue_vm_stk_cont { - readonly kind: 'VmStackValue_vm_stk_cont'; - readonly cont: VmCont; -} - -export interface VmStackValue_vm_stk_tuple { - readonly kind: 'VmStackValue_vm_stk_tuple'; - readonly len: number; - readonly data: VmTuple; -} - -export interface VmCellSlice { - readonly kind: 'VmCellSlice'; - readonly _cell: Slice; - readonly st_bits: number; - readonly end_bits: number; - readonly st_ref: number; - readonly end_ref: number; -} - -export type VmTupleRef = VmTupleRef_vm_tupref_nil | VmTupleRef_vm_tupref_single | VmTupleRef_vm_tupref_any; - -export interface VmTupleRef_vm_tupref_nil { - readonly kind: 'VmTupleRef_vm_tupref_nil'; -} - -export interface VmTupleRef_vm_tupref_single { - readonly kind: 'VmTupleRef_vm_tupref_single'; - readonly entry: VmStackValue; -} - -export interface VmTupleRef_vm_tupref_any { - readonly kind: 'VmTupleRef_vm_tupref_any'; - readonly n: number; - readonly ref: VmTuple; -} - -export type VmTuple = VmTuple_vm_tuple_nil | VmTuple_vm_tuple_tcons; - -export interface VmTuple_vm_tuple_nil { - readonly kind: 'VmTuple_vm_tuple_nil'; -} - -export interface VmTuple_vm_tuple_tcons { - readonly kind: 'VmTuple_vm_tuple_tcons'; - readonly n: number; - readonly head: VmTupleRef; - readonly tail: VmStackValue; -} - -export interface VmStack { - readonly kind: 'VmStack'; - readonly depth: number; - readonly stack: VmStackList; -} - -export type VmStackList = VmStackList_vm_stk_nil | VmStackList_vm_stk_cons; - -export interface VmStackList_vm_stk_nil { - readonly kind: 'VmStackList_vm_stk_nil'; -} - -export interface VmStackList_vm_stk_cons { - readonly kind: 'VmStackList_vm_stk_cons'; - readonly n: number; - readonly rest: VmStackList; - readonly tos: VmStackValue; -} - -export interface VmSaveList { - readonly kind: 'VmSaveList'; - readonly cregs: HashmapE; -} - -export interface VmGasLimits { - readonly kind: 'VmGasLimits'; - readonly remaining: number; - readonly max_limit: number; - readonly cur_limit: number; - readonly credit: number; -} - -export interface VmLibraries { - readonly kind: 'VmLibraries'; - readonly libraries: HashmapE; -} - -export interface VmControlData { - readonly kind: 'VmControlData'; - readonly nargs: Maybe; - readonly stack: Maybe; - readonly save: VmSaveList; - readonly cp: Maybe; -} - -export type VmCont = VmCont_vmc_std | VmCont_vmc_envelope | VmCont_vmc_quit | VmCont_vmc_quit_exc | VmCont_vmc_repeat | VmCont_vmc_until | VmCont_vmc_again | VmCont_vmc_while_cond | VmCont_vmc_while_body | VmCont_vmc_pushint; - -export interface VmCont_vmc_std { - readonly kind: 'VmCont_vmc_std'; - readonly cdata: VmControlData; - readonly code: VmCellSlice; -} - -export interface VmCont_vmc_envelope { - readonly kind: 'VmCont_vmc_envelope'; - readonly cdata: VmControlData; - readonly next: VmCont; -} - -export interface VmCont_vmc_quit { - readonly kind: 'VmCont_vmc_quit'; - readonly exit_code: number; -} - -export interface VmCont_vmc_quit_exc { - readonly kind: 'VmCont_vmc_quit_exc'; -} - -export interface VmCont_vmc_repeat { - readonly kind: 'VmCont_vmc_repeat'; - readonly count: number; - readonly body: VmCont; - readonly after: VmCont; -} - -export interface VmCont_vmc_until { - readonly kind: 'VmCont_vmc_until'; - readonly body: VmCont; - readonly after: VmCont; -} - -export interface VmCont_vmc_again { - readonly kind: 'VmCont_vmc_again'; - readonly body: VmCont; -} - -export interface VmCont_vmc_while_cond { - readonly kind: 'VmCont_vmc_while_cond'; - readonly cond: VmCont; - readonly body: VmCont; - readonly after: VmCont; -} - -export interface VmCont_vmc_while_body { - readonly kind: 'VmCont_vmc_while_body'; - readonly cond: VmCont; - readonly body: VmCont; - readonly after: VmCont; -} - -export interface VmCont_vmc_pushint { - readonly kind: 'VmCont_vmc_pushint'; - readonly value: number; - readonly next: VmCont; -} - -export interface DNS_RecordSet { - readonly kind: 'DNS_RecordSet'; - readonly anon0: HashmapE; -} - -export type TextChunkRef = TextChunkRef_chunk_ref_empty | TextChunkRef_chunk_ref; - -export interface TextChunkRef_chunk_ref_empty { - readonly kind: 'TextChunkRef_chunk_ref_empty'; -} - -export interface TextChunkRef_chunk_ref { - readonly kind: 'TextChunkRef_chunk_ref'; - readonly n: number; - readonly ref: TextChunks; -} - -export type TextChunks = TextChunks_text_chunk_empty | TextChunks_text_chunk; - -export interface TextChunks_text_chunk_empty { - readonly kind: 'TextChunks_text_chunk_empty'; -} - -export interface TextChunks_text_chunk { - readonly kind: 'TextChunks_text_chunk'; - readonly n: number; - readonly len: number; - readonly data: BitString; - readonly next: TextChunkRef; -} - -export interface Text { - readonly kind: 'Text'; - readonly chunks: number; - readonly rest: TextChunks; -} - -export type DNSRecord = DNSRecord_dns_text | DNSRecord_dns_next_resolver | DNSRecord_dns_adnl_address | DNSRecord_dns_smc_address | DNSRecord_dns_storage_address; - -export interface DNSRecord_dns_text { - readonly kind: 'DNSRecord_dns_text'; - readonly _: Text; -} - -export interface DNSRecord_dns_next_resolver { - readonly kind: 'DNSRecord_dns_next_resolver'; - readonly resolver: Address; -} - -export interface DNSRecord_dns_adnl_address { - readonly kind: 'DNSRecord_dns_adnl_address'; - readonly adnl_addr: BitString; - readonly flags: number; - readonly proto_list: ProtoList | undefined; -} - -export interface DNSRecord_dns_smc_address { - readonly kind: 'DNSRecord_dns_smc_address'; - readonly smc_addr: Address; - readonly flags: number; - readonly cap_list: SmcCapList | undefined; -} - -export interface DNSRecord_dns_storage_address { - readonly kind: 'DNSRecord_dns_storage_address'; - readonly bag_id: BitString; -} - -export type ProtoList = ProtoList_proto_list_nil | ProtoList_proto_list_next; - -export interface ProtoList_proto_list_nil { - readonly kind: 'ProtoList_proto_list_nil'; -} - -export interface ProtoList_proto_list_next { - readonly kind: 'ProtoList_proto_list_next'; - readonly head: Protocol; - readonly tail: ProtoList; -} - -export interface Protocol { - readonly kind: 'Protocol'; -} - -export type SmcCapList = SmcCapList_cap_list_nil | SmcCapList_cap_list_next; - -export interface SmcCapList_cap_list_nil { - readonly kind: 'SmcCapList_cap_list_nil'; -} - -export interface SmcCapList_cap_list_next { - readonly kind: 'SmcCapList_cap_list_next'; - readonly head: SmcCapability; - readonly tail: SmcCapList; -} - -export type SmcCapability = SmcCapability_cap_method_seqno | SmcCapability_cap_method_pubkey | SmcCapability_cap_is_wallet | SmcCapability_cap_name; - -export interface SmcCapability_cap_method_seqno { - readonly kind: 'SmcCapability_cap_method_seqno'; -} - -export interface SmcCapability_cap_method_pubkey { - readonly kind: 'SmcCapability_cap_method_pubkey'; -} - -export interface SmcCapability_cap_is_wallet { - readonly kind: 'SmcCapability_cap_is_wallet'; -} - -export interface SmcCapability_cap_name { - readonly kind: 'SmcCapability_cap_name'; - readonly name: Text; -} - -export interface ChanConfig { - readonly kind: 'ChanConfig'; - readonly init_timeout: number; - readonly close_timeout: number; - readonly a_key: BitString; - readonly b_key: BitString; - readonly a_addr: Address; - readonly b_addr: Address; - readonly channel_id: number; - readonly min_A_extra: Grams; -} - -export type ChanState = ChanState_chan_state_init | ChanState_chan_state_close | ChanState_chan_state_payout; - -export interface ChanState_chan_state_init { - readonly kind: 'ChanState_chan_state_init'; - readonly signed_A: boolean; - readonly signed_B: boolean; - readonly min_A: Grams; - readonly min_B: Grams; - readonly expire_at: number; - readonly A: Grams; - readonly B: Grams; -} - -export interface ChanState_chan_state_close { - readonly kind: 'ChanState_chan_state_close'; - readonly signed_A: boolean; - readonly signed_B: boolean; - readonly promise_A: Grams; - readonly promise_B: Grams; - readonly expire_at: number; - readonly A: Grams; - readonly B: Grams; -} - -export interface ChanState_chan_state_payout { - readonly kind: 'ChanState_chan_state_payout'; - readonly A: Grams; - readonly B: Grams; -} - -export interface ChanPromise { - readonly kind: 'ChanPromise'; - readonly channel_id: number; - readonly promise_A: Grams; - readonly promise_B: Grams; -} - -export interface ChanSignedPromise { - readonly kind: 'ChanSignedPromise'; - readonly sig: Maybe; - readonly promise: ChanPromise; -} - -export type ChanMsg = ChanMsg_chan_msg_init | ChanMsg_chan_msg_close | ChanMsg_chan_msg_timeout | ChanMsg_chan_msg_payout; - -export interface ChanMsg_chan_msg_init { - readonly kind: 'ChanMsg_chan_msg_init'; - readonly inc_A: Grams; - readonly inc_B: Grams; - readonly min_A: Grams; - readonly min_B: Grams; - readonly channel_id: number; -} - -export interface ChanMsg_chan_msg_close { - readonly kind: 'ChanMsg_chan_msg_close'; - readonly extra_A: Grams; - readonly extra_B: Grams; - readonly promise: ChanSignedPromise; -} - -export interface ChanMsg_chan_msg_timeout { - readonly kind: 'ChanMsg_chan_msg_timeout'; -} - -export interface ChanMsg_chan_msg_payout { - readonly kind: 'ChanMsg_chan_msg_payout'; -} - -export interface ChanSignedMsg { - readonly kind: 'ChanSignedMsg'; - readonly sig_A: Maybe; - readonly sig_B: Maybe; - readonly msg: ChanMsg; -} - -export interface ChanOp { - readonly kind: 'ChanOp'; - readonly msg: ChanSignedMsg; -} - -export interface ChanData { - readonly kind: 'ChanData'; - readonly config: ChanConfig; - readonly state: ChanState; -} - -// unit$_ = Unit; - -export function loadUnit(slice: Slice): Unit { - return { - kind: 'Unit', - } - -} - -export function storeUnit(unit: Unit): (builder: Builder) => void { - return ((builder: Builder) => { - }) - -} - -// true$_ = True; - -export function loadTrue(slice: Slice): True { - return { - kind: 'True', - } - -} - -export function storeTrue(true0: True): (builder: Builder) => void { - return ((builder: Builder) => { - }) - -} - -// bool_false$0 = BoolFalse; - -export function loadBoolFalse(slice: Slice): BoolFalse { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'BoolFalse', - } - - } - throw new Error('Expected one of "BoolFalse" in loading "BoolFalse", but data does not satisfy any constructor'); -} - -export function storeBoolFalse(boolFalse: BoolFalse): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - -} - -// bool_true$1 = BoolTrue; - -export function loadBoolTrue(slice: Slice): BoolTrue { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - return { - kind: 'BoolTrue', - } - - } - throw new Error('Expected one of "BoolTrue" in loading "BoolTrue", but data does not satisfy any constructor'); -} - -export function storeBoolTrue(boolTrue: BoolTrue): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - }) - -} - -// nothing$0 {X:Type} = Maybe X; - -// just$1 {X:Type} value:X = Maybe X; - -export function loadMaybe(slice: Slice, loadX: (slice: Slice) => X): Maybe { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'Maybe_nothing', - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let value: X = loadX(slice); - return { - kind: 'Maybe_just', - value: value, - } - - } - throw new Error('Expected one of "Maybe_nothing", "Maybe_just" in loading "Maybe", but data does not satisfy any constructor'); -} - -export function storeMaybe(maybe: Maybe, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - if ((maybe.kind == 'Maybe_nothing')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((maybe.kind == 'Maybe_just')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - storeX(maybe.value)(builder); - }) - - } - throw new Error('Expected one of "Maybe_nothing", "Maybe_just" in loading "Maybe", but data does not satisfy any constructor'); -} - -// left$0 {X:Type} {Y:Type} value:X = Either X Y; - -// right$1 {X:Type} {Y:Type} value:Y = Either X Y; - -export function loadEither(slice: Slice, loadX: (slice: Slice) => X, loadY: (slice: Slice) => Y): Either { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let value: X = loadX(slice); - return { - kind: 'Either_left', - value: value, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let value: Y = loadY(slice); - return { - kind: 'Either_right', - value: value, - } - - } - throw new Error('Expected one of "Either_left", "Either_right" in loading "Either", but data does not satisfy any constructor'); -} - -export function storeEither(either: Either, storeX: (x: X) => (builder: Builder) => void, storeY: (y: Y) => (builder: Builder) => void): (builder: Builder) => void { - if ((either.kind == 'Either_left')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - storeX(either.value)(builder); - }) - - } - if ((either.kind == 'Either_right')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - storeY(either.value)(builder); - }) - - } - throw new Error('Expected one of "Either_left", "Either_right" in loading "Either", but data does not satisfy any constructor'); -} - -// pair$_ {X:Type} {Y:Type} first:X second:Y = Both X Y; - -export function loadBoth(slice: Slice, loadX: (slice: Slice) => X, loadY: (slice: Slice) => Y): Both { - let first: X = loadX(slice); - let second: Y = loadY(slice); - return { - kind: 'Both', - first: first, - second: second, - } - -} - -export function storeBoth(both: Both, storeX: (x: X) => (builder: Builder) => void, storeY: (y: Y) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - storeX(both.first)(builder); - storeY(both.second)(builder); - }) - -} - -// bit$_ (## 1) = Bit; - -export function loadBit(slice: Slice): Bit { - let anon0: number = slice.loadUint(1); - return { - kind: 'Bit', - anon0: anon0, - } - -} - -export function storeBit(bit: Bit): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(bit.anon0, 1); - }) - -} - -export function hashmap_get_l(label: HmLabel): number { - if ((label.kind == 'HmLabel_hml_short')) { - let n = label.n; - return n - - } - if ((label.kind == 'HmLabel_hml_long')) { - let n = label.n; - return n - - } - if ((label.kind == 'HmLabel_hml_same')) { - let n = label.n; - return n - - } - throw new Error('Expected one of "HmLabel_hml_short", "HmLabel_hml_long", "HmLabel_hml_same" for type "HmLabel" while getting "label", but data does not satisfy any constructor'); -} - -/* -hm_edge#_ {n:#} {X:Type} {l:#} {m:#} label:(HmLabel ~l n) - {n = (~m) + l} node:(HashmapNode m X) = Hashmap n X; -*/ - -export function loadHashmap(slice: Slice, n: number, loadX: (slice: Slice) => X): Hashmap { - let label: HmLabel = loadHmLabel(slice, n); - let l = hashmap_get_l(label); - let node: HashmapNode = loadHashmapNode(slice, (n - l), loadX); - return { - kind: 'Hashmap', - n: n, - m: (n - l), - label: label, - l: l, - node: node, - } - -} - -export function storeHashmap(hashmap: Hashmap, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - storeHmLabel(hashmap.label)(builder); - storeHashmapNode(hashmap.node, storeX)(builder); - }) - -} - -// hmn_leaf#_ {X:Type} value:X = HashmapNode 0 X; - -/* -hmn_fork#_ {n:#} {X:Type} left:^(Hashmap n X) - right:^(Hashmap n X) = HashmapNode (n + 1) X; -*/ - -export function loadHashmapNode(slice: Slice, arg0: number, loadX: (slice: Slice) => X): HashmapNode { - if ((arg0 == 0)) { - let value: X = loadX(slice); - return { - kind: 'HashmapNode_hmn_leaf', - value: value, - } - - } - if (true) { - let slice1 = slice.loadRef().beginParse(); - let left: Hashmap = loadHashmap(slice1, (arg0 - 1), loadX); - let slice2 = slice.loadRef().beginParse(); - let right: Hashmap = loadHashmap(slice2, (arg0 - 1), loadX); - return { - kind: 'HashmapNode_hmn_fork', - n: (arg0 - 1), - left: left, - right: right, - } - - } - throw new Error('Expected one of "HashmapNode_hmn_leaf", "HashmapNode_hmn_fork" in loading "HashmapNode", but data does not satisfy any constructor'); -} - -export function storeHashmapNode(hashmapNode: HashmapNode, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - if ((hashmapNode.kind == 'HashmapNode_hmn_leaf')) { - return ((builder: Builder) => { - storeX(hashmapNode.value)(builder); - }) - - } - if ((hashmapNode.kind == 'HashmapNode_hmn_fork')) { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeHashmap(hashmapNode.left, storeX)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeHashmap(hashmapNode.right, storeX)(cell2); - builder.storeRef(cell2); - }) - - } - throw new Error('Expected one of "HashmapNode_hmn_leaf", "HashmapNode_hmn_fork" in loading "HashmapNode", but data does not satisfy any constructor'); -} - -export function hmLabel_hml_short_get_n(len: Unary): number { - if ((len.kind == 'Unary_unary_zero')) { - return 0 - - } - if ((len.kind == 'Unary_unary_succ')) { - let n = len.n; - return (n + 1) - - } - throw new Error('Expected one of "Unary_unary_zero", "Unary_unary_succ" for type "Unary" while getting "len", but data does not satisfy any constructor'); -} - -// hml_short$0 {m:#} {n:#} len:(Unary ~n) {n <= m} s:(n * Bit) = HmLabel ~n m; - -// hml_long$10 {m:#} n:(#<= m) s:(n * Bit) = HmLabel ~n m; - -// hml_same$11 {m:#} v:Bit n:(#<= m) = HmLabel ~n m; - -export function loadHmLabel(slice: Slice, m: number): HmLabel { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let len: Unary = loadUnary(slice); - let n = hmLabel_hml_short_get_n(len); - let s: Array = Array.from(Array(n).keys()).map(((arg: number) => { - return slice.loadBits(1) - - })); - if ((!(n <= m))) { - throw new Error('Condition (n <= m) is not satisfied while loading "HmLabel_hml_short" for type "HmLabel"'); - } - return { - kind: 'HmLabel_hml_short', - m: m, - len: len, - n: n, - s: s, - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b10))) { - slice.loadUint(2); - let n: number = slice.loadUint(bitLen(m)); - let s: Array = Array.from(Array(n).keys()).map(((arg: number) => { - return slice.loadBits(1) - - })); - return { - kind: 'HmLabel_hml_long', - m: m, - n: n, - s: s, - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b11))) { - slice.loadUint(2); - let v: BitString = slice.loadBits(1); - let n: number = slice.loadUint(bitLen(m)); - return { - kind: 'HmLabel_hml_same', - m: m, - v: v, - n: n, - } - - } - throw new Error('Expected one of "HmLabel_hml_short", "HmLabel_hml_long", "HmLabel_hml_same" in loading "HmLabel", but data does not satisfy any constructor'); -} - -export function storeHmLabel(hmLabel: HmLabel): (builder: Builder) => void { - if ((hmLabel.kind == 'HmLabel_hml_short')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - storeUnary(hmLabel.len)(builder); - hmLabel.s.forEach(((arg: BitString) => { - builder.storeBits(arg); - })); - if ((!(hmLabel.n <= hmLabel.m))) { - throw new Error('Condition (hmLabel.n <= hmLabel.m) is not satisfied while loading "HmLabel_hml_short" for type "HmLabel"'); - } - }) - - } - if ((hmLabel.kind == 'HmLabel_hml_long')) { - return ((builder: Builder) => { - builder.storeUint(0b10, 2); - builder.storeUint(hmLabel.n, bitLen(hmLabel.m)); - hmLabel.s.forEach(((arg: BitString) => { - builder.storeBits(arg); - })); - }) - - } - if ((hmLabel.kind == 'HmLabel_hml_same')) { - return ((builder: Builder) => { - builder.storeUint(0b11, 2); - builder.storeBits(hmLabel.v); - builder.storeUint(hmLabel.n, bitLen(hmLabel.m)); - }) - - } - throw new Error('Expected one of "HmLabel_hml_short", "HmLabel_hml_long", "HmLabel_hml_same" in loading "HmLabel", but data does not satisfy any constructor'); -} - -// unary_zero$0 = Unary ~0; - -export function unary_unary_succ_get_n(x: Unary): number { - if ((x.kind == 'Unary_unary_zero')) { - return 0 - - } - if ((x.kind == 'Unary_unary_succ')) { - let n = x.n; - return (n + 1) - - } - throw new Error('Expected one of "Unary_unary_zero", "Unary_unary_succ" for type "Unary" while getting "x", but data does not satisfy any constructor'); -} - -// unary_succ$1 {n:#} x:(Unary ~n) = Unary ~(n + 1); - -export function loadUnary(slice: Slice): Unary { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'Unary_unary_zero', - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let x: Unary = loadUnary(slice); - let n = unary_unary_succ_get_n(x); - return { - kind: 'Unary_unary_succ', - x: x, - n: n, - } - - } - throw new Error('Expected one of "Unary_unary_zero", "Unary_unary_succ" in loading "Unary", but data does not satisfy any constructor'); -} - -export function storeUnary(unary: Unary): (builder: Builder) => void { - if ((unary.kind == 'Unary_unary_zero')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((unary.kind == 'Unary_unary_succ')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - storeUnary(unary.x)(builder); - }) - - } - throw new Error('Expected one of "Unary_unary_zero", "Unary_unary_succ" in loading "Unary", but data does not satisfy any constructor'); -} - -// hme_empty$0 {n:#} {X:Type} = HashmapE n X; - -// hme_root$1 {n:#} {X:Type} root:^(Hashmap n X) = HashmapE n X; - -export function loadHashmapE(slice: Slice, n: number, loadX: (slice: Slice) => X): HashmapE { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'HashmapE_hme_empty', - n: n, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let slice1 = slice.loadRef().beginParse(); - let root: Hashmap = loadHashmap(slice1, n, loadX); - return { - kind: 'HashmapE_hme_root', - n: n, - root: root, - } - - } - throw new Error('Expected one of "HashmapE_hme_empty", "HashmapE_hme_root" in loading "HashmapE", but data does not satisfy any constructor'); -} - -export function storeHashmapE(hashmapE: HashmapE, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - if ((hashmapE.kind == 'HashmapE_hme_empty')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((hashmapE.kind == 'HashmapE_hme_root')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - let cell1 = beginCell(); - storeHashmap(hashmapE.root, storeX)(cell1); - builder.storeRef(cell1); - }) - - } - throw new Error('Expected one of "HashmapE_hme_empty", "HashmapE_hme_root" in loading "HashmapE", but data does not satisfy any constructor'); -} - -// _ {n:#} _:(Hashmap n True) = BitstringSet n; - -export function loadBitstringSet(slice: Slice, n: number): BitstringSet { - let _: Hashmap = loadHashmap(slice, n, loadTrue); - return { - kind: 'BitstringSet', - n: n, - _: _, - } - -} - -export function storeBitstringSet(bitstringSet: BitstringSet): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmap(bitstringSet._, storeTrue)(builder); - }) - -} - -export function hashmapAug_get_l(label: HmLabel): number { - if ((label.kind == 'HmLabel_hml_short')) { - let n = label.n; - return n - - } - if ((label.kind == 'HmLabel_hml_long')) { - let n = label.n; - return n - - } - if ((label.kind == 'HmLabel_hml_same')) { - let n = label.n; - return n - - } - throw new Error('Expected one of "HmLabel_hml_short", "HmLabel_hml_long", "HmLabel_hml_same" for type "HmLabel" while getting "label", but data does not satisfy any constructor'); -} - -/* -ahm_edge#_ {n:#} {X:Type} {Y:Type} {l:#} {m:#} - label:(HmLabel ~l n) {n = (~m) + l} - node:(HashmapAugNode m X Y) = HashmapAug n X Y; -*/ - -export function loadHashmapAug(slice: Slice, n: number, loadX: (slice: Slice) => X, loadY: (slice: Slice) => Y): HashmapAug { - let label: HmLabel = loadHmLabel(slice, n); - let l = hashmapAug_get_l(label); - let node: HashmapAugNode = loadHashmapAugNode(slice, (n - l), loadX, loadY); - return { - kind: 'HashmapAug', - n: n, - m: (n - l), - label: label, - l: l, - node: node, - } - -} - -export function storeHashmapAug(hashmapAug: HashmapAug, storeX: (x: X) => (builder: Builder) => void, storeY: (y: Y) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - storeHmLabel(hashmapAug.label)(builder); - storeHashmapAugNode(hashmapAug.node, storeX, storeY)(builder); - }) - -} - -// ahmn_leaf#_ {X:Type} {Y:Type} extra:Y value:X = HashmapAugNode 0 X Y; - -/* -ahmn_fork#_ {n:#} {X:Type} {Y:Type} left:^(HashmapAug n X Y) - right:^(HashmapAug n X Y) extra:Y = HashmapAugNode (n + 1) X Y; -*/ - -export function loadHashmapAugNode(slice: Slice, arg0: number, loadX: (slice: Slice) => X, loadY: (slice: Slice) => Y): HashmapAugNode { - if ((arg0 == 0)) { - let extra: Y = loadY(slice); - let value: X = loadX(slice); - return { - kind: 'HashmapAugNode_ahmn_leaf', - extra: extra, - value: value, - } - - } - if (true) { - let slice1 = slice.loadRef().beginParse(); - let left: HashmapAug = loadHashmapAug(slice1, (arg0 - 1), loadX, loadY); - let slice2 = slice.loadRef().beginParse(); - let right: HashmapAug = loadHashmapAug(slice2, (arg0 - 1), loadX, loadY); - let extra: Y = loadY(slice); - return { - kind: 'HashmapAugNode_ahmn_fork', - n: (arg0 - 1), - left: left, - right: right, - extra: extra, - } - - } - throw new Error('Expected one of "HashmapAugNode_ahmn_leaf", "HashmapAugNode_ahmn_fork" in loading "HashmapAugNode", but data does not satisfy any constructor'); -} - -export function storeHashmapAugNode(hashmapAugNode: HashmapAugNode, storeX: (x: X) => (builder: Builder) => void, storeY: (y: Y) => (builder: Builder) => void): (builder: Builder) => void { - if ((hashmapAugNode.kind == 'HashmapAugNode_ahmn_leaf')) { - return ((builder: Builder) => { - storeY(hashmapAugNode.extra)(builder); - storeX(hashmapAugNode.value)(builder); - }) - - } - if ((hashmapAugNode.kind == 'HashmapAugNode_ahmn_fork')) { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeHashmapAug(hashmapAugNode.left, storeX, storeY)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeHashmapAug(hashmapAugNode.right, storeX, storeY)(cell2); - builder.storeRef(cell2); - storeY(hashmapAugNode.extra)(builder); - }) - - } - throw new Error('Expected one of "HashmapAugNode_ahmn_leaf", "HashmapAugNode_ahmn_fork" in loading "HashmapAugNode", but data does not satisfy any constructor'); -} - -/* -ahme_empty$0 {n:#} {X:Type} {Y:Type} extra:Y - = HashmapAugE n X Y; -*/ - -/* -ahme_root$1 {n:#} {X:Type} {Y:Type} root:^(HashmapAug n X Y) - extra:Y = HashmapAugE n X Y; -*/ - -export function loadHashmapAugE(slice: Slice, n: number, loadX: (slice: Slice) => X, loadY: (slice: Slice) => Y): HashmapAugE { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let extra: Y = loadY(slice); - return { - kind: 'HashmapAugE_ahme_empty', - n: n, - extra: extra, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let slice1 = slice.loadRef().beginParse(); - let root: HashmapAug = loadHashmapAug(slice1, n, loadX, loadY); - let extra: Y = loadY(slice); - return { - kind: 'HashmapAugE_ahme_root', - n: n, - root: root, - extra: extra, - } - - } - throw new Error('Expected one of "HashmapAugE_ahme_empty", "HashmapAugE_ahme_root" in loading "HashmapAugE", but data does not satisfy any constructor'); -} - -export function storeHashmapAugE(hashmapAugE: HashmapAugE, storeX: (x: X) => (builder: Builder) => void, storeY: (y: Y) => (builder: Builder) => void): (builder: Builder) => void { - if ((hashmapAugE.kind == 'HashmapAugE_ahme_empty')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - storeY(hashmapAugE.extra)(builder); - }) - - } - if ((hashmapAugE.kind == 'HashmapAugE_ahme_root')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - let cell1 = beginCell(); - storeHashmapAug(hashmapAugE.root, storeX, storeY)(cell1); - builder.storeRef(cell1); - storeY(hashmapAugE.extra)(builder); - }) - - } - throw new Error('Expected one of "HashmapAugE_ahme_empty", "HashmapAugE_ahme_root" in loading "HashmapAugE", but data does not satisfy any constructor'); -} - -export function varHashmap_get_l(label: HmLabel): number { - if ((label.kind == 'HmLabel_hml_short')) { - let n = label.n; - return n - - } - if ((label.kind == 'HmLabel_hml_long')) { - let n = label.n; - return n - - } - if ((label.kind == 'HmLabel_hml_same')) { - let n = label.n; - return n - - } - throw new Error('Expected one of "HmLabel_hml_short", "HmLabel_hml_long", "HmLabel_hml_same" for type "HmLabel" while getting "label", but data does not satisfy any constructor'); -} - -/* -vhm_edge#_ {n:#} {X:Type} {l:#} {m:#} label:(HmLabel ~l n) - {n = (~m) + l} node:(VarHashmapNode m X) - = VarHashmap n X; -*/ - -export function loadVarHashmap(slice: Slice, n: number, loadX: (slice: Slice) => X): VarHashmap { - let label: HmLabel = loadHmLabel(slice, n); - let l = varHashmap_get_l(label); - let node: VarHashmapNode = loadVarHashmapNode(slice, (n - l), loadX); - return { - kind: 'VarHashmap', - n: n, - m: (n - l), - label: label, - l: l, - node: node, - } - -} - -export function storeVarHashmap(varHashmap: VarHashmap, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - storeHmLabel(varHashmap.label)(builder); - storeVarHashmapNode(varHashmap.node, storeX)(builder); - }) - -} - -// vhmn_leaf$00 {n:#} {X:Type} value:X = VarHashmapNode n X; - -/* -vhmn_fork$01 {n:#} {X:Type} left:^(VarHashmap n X) - right:^(VarHashmap n X) value:(Maybe X) - = VarHashmapNode (n + 1) X; -*/ - -/* -vhmn_cont$1 {n:#} {X:Type} branch:Bit child:^(VarHashmap n X) - value:X = VarHashmapNode (n + 1) X; -*/ - -export function loadVarHashmapNode(slice: Slice, arg0: number, loadX: (slice: Slice) => X): VarHashmapNode { - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b00))) { - slice.loadUint(2); - let value: X = loadX(slice); - return { - kind: 'VarHashmapNode_vhmn_leaf', - n: arg0, - value: value, - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b01))) { - slice.loadUint(2); - let slice1 = slice.loadRef().beginParse(); - let left: VarHashmap = loadVarHashmap(slice1, (arg0 - 1), loadX); - let slice2 = slice.loadRef().beginParse(); - let right: VarHashmap = loadVarHashmap(slice2, (arg0 - 1), loadX); - let value: Maybe = loadMaybe(slice, loadX); - return { - kind: 'VarHashmapNode_vhmn_fork', - n: (arg0 - 1), - left: left, - right: right, - value: value, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let branch: BitString = slice.loadBits(1); - let slice1 = slice.loadRef().beginParse(); - let child: VarHashmap = loadVarHashmap(slice1, (arg0 - 1), loadX); - let value: X = loadX(slice); - return { - kind: 'VarHashmapNode_vhmn_cont', - n: (arg0 - 1), - branch: branch, - child: child, - value: value, - } - - } - throw new Error('Expected one of "VarHashmapNode_vhmn_leaf", "VarHashmapNode_vhmn_fork", "VarHashmapNode_vhmn_cont" in loading "VarHashmapNode", but data does not satisfy any constructor'); -} - -export function storeVarHashmapNode(varHashmapNode: VarHashmapNode, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - if ((varHashmapNode.kind == 'VarHashmapNode_vhmn_leaf')) { - return ((builder: Builder) => { - builder.storeUint(0b00, 2); - storeX(varHashmapNode.value)(builder); - }) - - } - if ((varHashmapNode.kind == 'VarHashmapNode_vhmn_fork')) { - return ((builder: Builder) => { - builder.storeUint(0b01, 2); - let cell1 = beginCell(); - storeVarHashmap(varHashmapNode.left, storeX)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeVarHashmap(varHashmapNode.right, storeX)(cell2); - builder.storeRef(cell2); - storeMaybe(varHashmapNode.value, storeX)(builder); - }) - - } - if ((varHashmapNode.kind == 'VarHashmapNode_vhmn_cont')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - builder.storeBits(varHashmapNode.branch); - let cell1 = beginCell(); - storeVarHashmap(varHashmapNode.child, storeX)(cell1); - builder.storeRef(cell1); - storeX(varHashmapNode.value)(builder); - }) - - } - throw new Error('Expected one of "VarHashmapNode_vhmn_leaf", "VarHashmapNode_vhmn_fork", "VarHashmapNode_vhmn_cont" in loading "VarHashmapNode", but data does not satisfy any constructor'); -} - -// vhme_empty$0 {n:#} {X:Type} = VarHashmapE n X; - -/* -vhme_root$1 {n:#} {X:Type} root:^(VarHashmap n X) - = VarHashmapE n X; -*/ - -export function loadVarHashmapE(slice: Slice, n: number, loadX: (slice: Slice) => X): VarHashmapE { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'VarHashmapE_vhme_empty', - n: n, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let slice1 = slice.loadRef().beginParse(); - let root: VarHashmap = loadVarHashmap(slice1, n, loadX); - return { - kind: 'VarHashmapE_vhme_root', - n: n, - root: root, - } - - } - throw new Error('Expected one of "VarHashmapE_vhme_empty", "VarHashmapE_vhme_root" in loading "VarHashmapE", but data does not satisfy any constructor'); -} - -export function storeVarHashmapE(varHashmapE: VarHashmapE, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - if ((varHashmapE.kind == 'VarHashmapE_vhme_empty')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((varHashmapE.kind == 'VarHashmapE_vhme_root')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - let cell1 = beginCell(); - storeVarHashmap(varHashmapE.root, storeX)(cell1); - builder.storeRef(cell1); - }) - - } - throw new Error('Expected one of "VarHashmapE_vhme_empty", "VarHashmapE_vhme_root" in loading "VarHashmapE", but data does not satisfy any constructor'); -} - -export function pfxHashmap_get_l(label: HmLabel): number { - if ((label.kind == 'HmLabel_hml_short')) { - let n = label.n; - return n - - } - if ((label.kind == 'HmLabel_hml_long')) { - let n = label.n; - return n - - } - if ((label.kind == 'HmLabel_hml_same')) { - let n = label.n; - return n - - } - throw new Error('Expected one of "HmLabel_hml_short", "HmLabel_hml_long", "HmLabel_hml_same" for type "HmLabel" while getting "label", but data does not satisfy any constructor'); -} - -/* -phm_edge#_ {n:#} {X:Type} {l:#} {m:#} label:(HmLabel ~l n) - {n = (~m) + l} node:(PfxHashmapNode m X) - = PfxHashmap n X; -*/ - -export function loadPfxHashmap(slice: Slice, n: number, loadX: (slice: Slice) => X): PfxHashmap { - let label: HmLabel = loadHmLabel(slice, n); - let l = pfxHashmap_get_l(label); - let node: PfxHashmapNode = loadPfxHashmapNode(slice, (n - l), loadX); - return { - kind: 'PfxHashmap', - n: n, - m: (n - l), - label: label, - l: l, - node: node, - } - -} - -export function storePfxHashmap(pfxHashmap: PfxHashmap, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - storeHmLabel(pfxHashmap.label)(builder); - storePfxHashmapNode(pfxHashmap.node, storeX)(builder); - }) - -} - -// phmn_leaf$0 {n:#} {X:Type} value:X = PfxHashmapNode n X; - -/* -phmn_fork$1 {n:#} {X:Type} left:^(PfxHashmap n X) - right:^(PfxHashmap n X) = PfxHashmapNode (n + 1) X; -*/ - -export function loadPfxHashmapNode(slice: Slice, arg0: number, loadX: (slice: Slice) => X): PfxHashmapNode { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let value: X = loadX(slice); - return { - kind: 'PfxHashmapNode_phmn_leaf', - n: arg0, - value: value, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let slice1 = slice.loadRef().beginParse(); - let left: PfxHashmap = loadPfxHashmap(slice1, (arg0 - 1), loadX); - let slice2 = slice.loadRef().beginParse(); - let right: PfxHashmap = loadPfxHashmap(slice2, (arg0 - 1), loadX); - return { - kind: 'PfxHashmapNode_phmn_fork', - n: (arg0 - 1), - left: left, - right: right, - } - - } - throw new Error('Expected one of "PfxHashmapNode_phmn_leaf", "PfxHashmapNode_phmn_fork" in loading "PfxHashmapNode", but data does not satisfy any constructor'); -} - -export function storePfxHashmapNode(pfxHashmapNode: PfxHashmapNode, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - if ((pfxHashmapNode.kind == 'PfxHashmapNode_phmn_leaf')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - storeX(pfxHashmapNode.value)(builder); - }) - - } - if ((pfxHashmapNode.kind == 'PfxHashmapNode_phmn_fork')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - let cell1 = beginCell(); - storePfxHashmap(pfxHashmapNode.left, storeX)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storePfxHashmap(pfxHashmapNode.right, storeX)(cell2); - builder.storeRef(cell2); - }) - - } - throw new Error('Expected one of "PfxHashmapNode_phmn_leaf", "PfxHashmapNode_phmn_fork" in loading "PfxHashmapNode", but data does not satisfy any constructor'); -} - -// phme_empty$0 {n:#} {X:Type} = PfxHashmapE n X; - -/* -phme_root$1 {n:#} {X:Type} root:^(PfxHashmap n X) - = PfxHashmapE n X; -*/ - -export function loadPfxHashmapE(slice: Slice, n: number, loadX: (slice: Slice) => X): PfxHashmapE { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'PfxHashmapE_phme_empty', - n: n, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let slice1 = slice.loadRef().beginParse(); - let root: PfxHashmap = loadPfxHashmap(slice1, n, loadX); - return { - kind: 'PfxHashmapE_phme_root', - n: n, - root: root, - } - - } - throw new Error('Expected one of "PfxHashmapE_phme_empty", "PfxHashmapE_phme_root" in loading "PfxHashmapE", but data does not satisfy any constructor'); -} - -export function storePfxHashmapE(pfxHashmapE: PfxHashmapE, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - if ((pfxHashmapE.kind == 'PfxHashmapE_phme_empty')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((pfxHashmapE.kind == 'PfxHashmapE_phme_root')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - let cell1 = beginCell(); - storePfxHashmap(pfxHashmapE.root, storeX)(cell1); - builder.storeRef(cell1); - }) - - } - throw new Error('Expected one of "PfxHashmapE_phme_empty", "PfxHashmapE_phme_root" in loading "PfxHashmapE", but data does not satisfy any constructor'); -} - -// addr_none$00 = MsgAddressExt; - -/* -addr_extern$01 len:(## 9) external_address:(bits len) - = MsgAddressExt; -*/ - -export function loadMsgAddressExt(slice: Slice): MsgAddressExt { - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b00))) { - slice.loadUint(2); - return { - kind: 'MsgAddressExt_addr_none', - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b01))) { - slice.loadUint(2); - let len: number = slice.loadUint(9); - let external_address: BitString = slice.loadBits(len); - return { - kind: 'MsgAddressExt_addr_extern', - len: len, - external_address: external_address, - } - - } - throw new Error('Expected one of "MsgAddressExt_addr_none", "MsgAddressExt_addr_extern" in loading "MsgAddressExt", but data does not satisfy any constructor'); -} - -export function storeMsgAddressExt(msgAddressExt: MsgAddressExt): (builder: Builder) => void { - if ((msgAddressExt.kind == 'MsgAddressExt_addr_none')) { - return ((builder: Builder) => { - builder.storeUint(0b00, 2); - }) - - } - if ((msgAddressExt.kind == 'MsgAddressExt_addr_extern')) { - return ((builder: Builder) => { - builder.storeUint(0b01, 2); - builder.storeUint(msgAddressExt.len, 9); - builder.storeBits(msgAddressExt.external_address); - }) - - } - throw new Error('Expected one of "MsgAddressExt_addr_none", "MsgAddressExt_addr_extern" in loading "MsgAddressExt", but data does not satisfy any constructor'); -} - -/* -anycast_info$_ depth:(#<= 30) { depth >= 1 } - rewrite_pfx:(bits depth) = Anycast; -*/ - -export function loadAnycast(slice: Slice): Anycast { - let depth: number = slice.loadUint(bitLen(30)); - let rewrite_pfx: BitString = slice.loadBits(depth); - if ((!(depth >= 1))) { - throw new Error('Condition (depth >= 1) is not satisfied while loading "Anycast" for type "Anycast"'); - } - return { - kind: 'Anycast', - depth: depth, - rewrite_pfx: rewrite_pfx, - } - -} - -export function storeAnycast(anycast: Anycast): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(anycast.depth, bitLen(30)); - builder.storeBits(anycast.rewrite_pfx); - if ((!(anycast.depth >= 1))) { - throw new Error('Condition (anycast.depth >= 1) is not satisfied while loading "Anycast" for type "Anycast"'); - } - }) - -} - -// _ _:MsgAddressInt = MsgAddress; - -// _ _:MsgAddressExt = MsgAddress; - -export function loadMsgAddress(slice: Slice): MsgAddress { - if (true) { - let _: Address = slice.loadAddress(); - return { - kind: 'MsgAddress__', - _: _, - } - - } - if (true) { - let _: MsgAddressExt = loadMsgAddressExt(slice); - return { - kind: 'MsgAddress__1', - _: _, - } - - } - throw new Error('Expected one of "MsgAddress__", "MsgAddress__1" in loading "MsgAddress", but data does not satisfy any constructor'); -} - -export function storeMsgAddress(msgAddress: MsgAddress): (builder: Builder) => void { - if ((msgAddress.kind == 'MsgAddress__')) { - return ((builder: Builder) => { - builder.storeAddress(msgAddress._); - }) - - } - if ((msgAddress.kind == 'MsgAddress__1')) { - return ((builder: Builder) => { - storeMsgAddressExt(msgAddress._)(builder); - }) - - } - throw new Error('Expected one of "MsgAddress__", "MsgAddress__1" in loading "MsgAddress", but data does not satisfy any constructor'); -} - -/* -var_uint$_ {n:#} len:(#< n) value:(uint (len * 8)) - = VarUInteger n; -*/ - -export function loadVarUInteger(slice: Slice, n: number): VarUInteger { - let len: number = slice.loadUint(bitLen((n - 1))); - let value: bigint = slice.loadUintBig((len * 8)); - return { - kind: 'VarUInteger', - n: n, - len: len, - value: value, - } - -} - -export function storeVarUInteger(varUInteger: VarUInteger): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(varUInteger.len, bitLen((varUInteger.n - 1))); - builder.storeUint(varUInteger.value, (varUInteger.len * 8)); - }) - -} - -/* -var_int$_ {n:#} len:(#< n) value:(int (len * 8)) - = VarInteger n; -*/ - -export function loadVarInteger(slice: Slice, n: number): VarInteger { - let len: number = slice.loadUint(bitLen((n - 1))); - let value: bigint = slice.loadIntBig((len * 8)); - return { - kind: 'VarInteger', - n: n, - len: len, - value: value, - } - -} - -export function storeVarInteger(varInteger: VarInteger): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(varInteger.len, bitLen((varInteger.n - 1))); - builder.storeInt(varInteger.value, (varInteger.len * 8)); - }) - -} - -// nanograms$_ amount:(VarUInteger 16) = Grams; - -export function loadGrams(slice: Slice): Grams { - let amount: VarUInteger = loadVarUInteger(slice, 16); - return { - kind: 'Grams', - amount: amount, - } - -} - -export function storeGrams(grams: Grams): (builder: Builder) => void { - return ((builder: Builder) => { - storeVarUInteger(grams.amount)(builder); - }) - -} - -// _ grams:Grams = Coins; - -export function loadCoins(slice: Slice): Coins { - let grams: Grams = loadGrams(slice); - return { - kind: 'Coins', - grams: grams, - } - -} - -export function storeCoins(coins: Coins): (builder: Builder) => void { - return ((builder: Builder) => { - storeGrams(coins.grams)(builder); - }) - -} - -/* -extra_currencies$_ dict:(HashmapE 32 (VarUInteger 32)) - = ExtraCurrencyCollection; -*/ - -export function loadExtraCurrencyCollection(slice: Slice): ExtraCurrencyCollection { - let dict: HashmapE = loadHashmapE(slice, 32, ((slice: Slice) => { - return loadVarUInteger(slice, 32) - - })); - return { - kind: 'ExtraCurrencyCollection', - dict: dict, - } - -} - -export function storeExtraCurrencyCollection(extraCurrencyCollection: ExtraCurrencyCollection): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapE(extraCurrencyCollection.dict, ((arg: VarUInteger) => { - return ((builder: Builder) => { - storeVarUInteger(arg)(builder); - }) - - }))(builder); - }) - -} - -/* -currencies$_ grams:Grams other:ExtraCurrencyCollection - = CurrencyCollection; -*/ - -export function loadCurrencyCollection(slice: Slice): CurrencyCollection { - let grams: Grams = loadGrams(slice); - let other: ExtraCurrencyCollection = loadExtraCurrencyCollection(slice); - return { - kind: 'CurrencyCollection', - grams: grams, - other: other, - } - -} - -export function storeCurrencyCollection(currencyCollection: CurrencyCollection): (builder: Builder) => void { - return ((builder: Builder) => { - storeGrams(currencyCollection.grams)(builder); - storeExtraCurrencyCollection(currencyCollection.other)(builder); - }) - -} - -/* -int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool - src:MsgAddressInt dest:MsgAddressInt - value:CurrencyCollection ihr_fee:Grams fwd_fee:Grams - created_lt:uint64 created_at:uint32 = CommonMsgInfo; -*/ - -/* -ext_in_msg_info$10 src:MsgAddressExt dest:MsgAddressInt - import_fee:Grams = CommonMsgInfo; -*/ - -/* -ext_out_msg_info$11 src:MsgAddressInt dest:MsgAddressExt - created_lt:uint64 created_at:uint32 = CommonMsgInfo; -*/ - -export function loadCommonMsgInfo(slice: Slice): CommonMsgInfo { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let ihr_disabled: boolean = slice.loadBoolean(); - let bounce: boolean = slice.loadBoolean(); - let bounced: boolean = slice.loadBoolean(); - let src: Address = slice.loadAddress(); - let dest: Address = slice.loadAddress(); - let value: CurrencyCollection = loadCurrencyCollection(slice); - let ihr_fee: Grams = loadGrams(slice); - let fwd_fee: Grams = loadGrams(slice); - let created_lt: number = slice.loadUint(64); - let created_at: number = slice.loadUint(32); - return { - kind: 'CommonMsgInfo_int_msg_info', - ihr_disabled: ihr_disabled, - bounce: bounce, - bounced: bounced, - src: src, - dest: dest, - value: value, - ihr_fee: ihr_fee, - fwd_fee: fwd_fee, - created_lt: created_lt, - created_at: created_at, - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b10))) { - slice.loadUint(2); - let src: MsgAddressExt = loadMsgAddressExt(slice); - let dest: Address = slice.loadAddress(); - let import_fee: Grams = loadGrams(slice); - return { - kind: 'CommonMsgInfo_ext_in_msg_info', - src: src, - dest: dest, - import_fee: import_fee, - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b11))) { - slice.loadUint(2); - let src: Address = slice.loadAddress(); - let dest: MsgAddressExt = loadMsgAddressExt(slice); - let created_lt: number = slice.loadUint(64); - let created_at: number = slice.loadUint(32); - return { - kind: 'CommonMsgInfo_ext_out_msg_info', - src: src, - dest: dest, - created_lt: created_lt, - created_at: created_at, - } - - } - throw new Error('Expected one of "CommonMsgInfo_int_msg_info", "CommonMsgInfo_ext_in_msg_info", "CommonMsgInfo_ext_out_msg_info" in loading "CommonMsgInfo", but data does not satisfy any constructor'); -} - -export function storeCommonMsgInfo(commonMsgInfo: CommonMsgInfo): (builder: Builder) => void { - if ((commonMsgInfo.kind == 'CommonMsgInfo_int_msg_info')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - builder.storeBit(commonMsgInfo.ihr_disabled); - builder.storeBit(commonMsgInfo.bounce); - builder.storeBit(commonMsgInfo.bounced); - builder.storeAddress(commonMsgInfo.src); - builder.storeAddress(commonMsgInfo.dest); - storeCurrencyCollection(commonMsgInfo.value)(builder); - storeGrams(commonMsgInfo.ihr_fee)(builder); - storeGrams(commonMsgInfo.fwd_fee)(builder); - builder.storeUint(commonMsgInfo.created_lt, 64); - builder.storeUint(commonMsgInfo.created_at, 32); - }) - - } - if ((commonMsgInfo.kind == 'CommonMsgInfo_ext_in_msg_info')) { - return ((builder: Builder) => { - builder.storeUint(0b10, 2); - storeMsgAddressExt(commonMsgInfo.src)(builder); - builder.storeAddress(commonMsgInfo.dest); - storeGrams(commonMsgInfo.import_fee)(builder); - }) - - } - if ((commonMsgInfo.kind == 'CommonMsgInfo_ext_out_msg_info')) { - return ((builder: Builder) => { - builder.storeUint(0b11, 2); - builder.storeAddress(commonMsgInfo.src); - storeMsgAddressExt(commonMsgInfo.dest)(builder); - builder.storeUint(commonMsgInfo.created_lt, 64); - builder.storeUint(commonMsgInfo.created_at, 32); - }) - - } - throw new Error('Expected one of "CommonMsgInfo_int_msg_info", "CommonMsgInfo_ext_in_msg_info", "CommonMsgInfo_ext_out_msg_info" in loading "CommonMsgInfo", but data does not satisfy any constructor'); -} - -/* -int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool - src:MsgAddress dest:MsgAddressInt - value:CurrencyCollection ihr_fee:Grams fwd_fee:Grams - created_lt:uint64 created_at:uint32 = CommonMsgInfoRelaxed; -*/ - -/* -ext_out_msg_info$11 src:MsgAddress dest:MsgAddressExt - created_lt:uint64 created_at:uint32 = CommonMsgInfoRelaxed; -*/ - -export function loadCommonMsgInfoRelaxed(slice: Slice): CommonMsgInfoRelaxed { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let ihr_disabled: boolean = slice.loadBoolean(); - let bounce: boolean = slice.loadBoolean(); - let bounced: boolean = slice.loadBoolean(); - let src: MsgAddress = loadMsgAddress(slice); - let dest: Address = slice.loadAddress(); - let value: CurrencyCollection = loadCurrencyCollection(slice); - let ihr_fee: Grams = loadGrams(slice); - let fwd_fee: Grams = loadGrams(slice); - let created_lt: number = slice.loadUint(64); - let created_at: number = slice.loadUint(32); - return { - kind: 'CommonMsgInfoRelaxed_int_msg_info', - ihr_disabled: ihr_disabled, - bounce: bounce, - bounced: bounced, - src: src, - dest: dest, - value: value, - ihr_fee: ihr_fee, - fwd_fee: fwd_fee, - created_lt: created_lt, - created_at: created_at, - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b11))) { - slice.loadUint(2); - let src: MsgAddress = loadMsgAddress(slice); - let dest: MsgAddressExt = loadMsgAddressExt(slice); - let created_lt: number = slice.loadUint(64); - let created_at: number = slice.loadUint(32); - return { - kind: 'CommonMsgInfoRelaxed_ext_out_msg_info', - src: src, - dest: dest, - created_lt: created_lt, - created_at: created_at, - } - - } - throw new Error('Expected one of "CommonMsgInfoRelaxed_int_msg_info", "CommonMsgInfoRelaxed_ext_out_msg_info" in loading "CommonMsgInfoRelaxed", but data does not satisfy any constructor'); -} - -export function storeCommonMsgInfoRelaxed(commonMsgInfoRelaxed: CommonMsgInfoRelaxed): (builder: Builder) => void { - if ((commonMsgInfoRelaxed.kind == 'CommonMsgInfoRelaxed_int_msg_info')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - builder.storeBit(commonMsgInfoRelaxed.ihr_disabled); - builder.storeBit(commonMsgInfoRelaxed.bounce); - builder.storeBit(commonMsgInfoRelaxed.bounced); - storeMsgAddress(commonMsgInfoRelaxed.src)(builder); - builder.storeAddress(commonMsgInfoRelaxed.dest); - storeCurrencyCollection(commonMsgInfoRelaxed.value)(builder); - storeGrams(commonMsgInfoRelaxed.ihr_fee)(builder); - storeGrams(commonMsgInfoRelaxed.fwd_fee)(builder); - builder.storeUint(commonMsgInfoRelaxed.created_lt, 64); - builder.storeUint(commonMsgInfoRelaxed.created_at, 32); - }) - - } - if ((commonMsgInfoRelaxed.kind == 'CommonMsgInfoRelaxed_ext_out_msg_info')) { - return ((builder: Builder) => { - builder.storeUint(0b11, 2); - storeMsgAddress(commonMsgInfoRelaxed.src)(builder); - storeMsgAddressExt(commonMsgInfoRelaxed.dest)(builder); - builder.storeUint(commonMsgInfoRelaxed.created_lt, 64); - builder.storeUint(commonMsgInfoRelaxed.created_at, 32); - }) - - } - throw new Error('Expected one of "CommonMsgInfoRelaxed_int_msg_info", "CommonMsgInfoRelaxed_ext_out_msg_info" in loading "CommonMsgInfoRelaxed", but data does not satisfy any constructor'); -} - -// tick_tock$_ tick:Bool tock:Bool = TickTock; - -export function loadTickTock(slice: Slice): TickTock { - let tick: boolean = slice.loadBoolean(); - let tock: boolean = slice.loadBoolean(); - return { - kind: 'TickTock', - tick: tick, - tock: tock, - } - -} - -export function storeTickTock(tickTock: TickTock): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeBit(tickTock.tick); - builder.storeBit(tickTock.tock); - }) - -} - -/* -_ split_depth:(Maybe (## 5)) special:(Maybe TickTock) - code:(Maybe ^Cell) data:(Maybe ^Cell) - library:(Maybe ^Cell) = StateInit; -*/ - -export function loadStateInit(slice: Slice): StateInit { - let split_depth: Maybe = loadMaybe(slice, ((slice: Slice) => { - return slice.loadUint(5) - - })); - let special: Maybe = loadMaybe(slice, loadTickTock); - let code: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return slice1 - - })); - let data: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return slice1 - - })); - let library: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return slice1 - - })); - return { - kind: 'StateInit', - split_depth: split_depth, - special: special, - code: code, - data: data, - library: library, - } - -} - -export function storeStateInit(stateInit: StateInit): (builder: Builder) => void { - return ((builder: Builder) => { - storeMaybe(stateInit.split_depth, ((arg: number) => { - return ((builder: Builder) => { - builder.storeUint(arg, 5); - }) - - }))(builder); - storeMaybe(stateInit.special, storeTickTock)(builder); - storeMaybe(stateInit.code, ((arg: Slice) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeSlice(arg); - builder.storeRef(cell1); - - }) - - }))(builder); - storeMaybe(stateInit.data, ((arg: Slice) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeSlice(arg); - builder.storeRef(cell1); - - }) - - }))(builder); - storeMaybe(stateInit.library, ((arg: Slice) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeSlice(arg); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - -} - -/* -_ split_depth:(Maybe (## 5)) special:(Maybe TickTock) - code:(Maybe ^Cell) data:(Maybe ^Cell) - library:(HashmapE 256 SimpleLib) = StateInitWithLibs; -*/ - -export function loadStateInitWithLibs(slice: Slice): StateInitWithLibs { - let split_depth: Maybe = loadMaybe(slice, ((slice: Slice) => { - return slice.loadUint(5) - - })); - let special: Maybe = loadMaybe(slice, loadTickTock); - let code: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return slice1 - - })); - let data: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return slice1 - - })); - let library: HashmapE = loadHashmapE(slice, 256, loadSimpleLib); - return { - kind: 'StateInitWithLibs', - split_depth: split_depth, - special: special, - code: code, - data: data, - library: library, - } - -} - -export function storeStateInitWithLibs(stateInitWithLibs: StateInitWithLibs): (builder: Builder) => void { - return ((builder: Builder) => { - storeMaybe(stateInitWithLibs.split_depth, ((arg: number) => { - return ((builder: Builder) => { - builder.storeUint(arg, 5); - }) - - }))(builder); - storeMaybe(stateInitWithLibs.special, storeTickTock)(builder); - storeMaybe(stateInitWithLibs.code, ((arg: Slice) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeSlice(arg); - builder.storeRef(cell1); - - }) - - }))(builder); - storeMaybe(stateInitWithLibs.data, ((arg: Slice) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeSlice(arg); - builder.storeRef(cell1); - - }) - - }))(builder); - storeHashmapE(stateInitWithLibs.library, storeSimpleLib)(builder); - }) - -} - -// simple_lib$_ public:Bool root:^Cell = SimpleLib; - -export function loadSimpleLib(slice: Slice): SimpleLib { - let public0: boolean = slice.loadBoolean(); - let slice1 = slice.loadRef().beginParse(); - let root: Slice = slice1; - return { - kind: 'SimpleLib', - public0: public0, - root: root, - } - -} - -export function storeSimpleLib(simpleLib: SimpleLib): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeBit(simpleLib.public0); - let cell1 = beginCell(); - cell1.storeSlice(simpleLib.root); - builder.storeRef(cell1); - }) - -} - -/* -message$_ {X:Type} info:CommonMsgInfo - init:(Maybe (Either StateInit ^StateInit)) - body:(Either X ^X) = Message X; -*/ - -export function loadMessage(slice: Slice, loadX: (slice: Slice) => X): Message { - let info: CommonMsgInfo = loadCommonMsgInfo(slice); - let init: Maybe> = loadMaybe>(slice, ((slice: Slice) => { - return loadEither(slice, loadStateInit, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadStateInit(slice1) - - })) - - })); - let body: Either = loadEither(slice, loadX, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadX(slice1) - - })); - return { - kind: 'Message', - info: info, - init: init, - body: body, - } - -} - -export function storeMessage(message: Message, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - storeCommonMsgInfo(message.info)(builder); - storeMaybe>(message.init, ((arg: Either) => { - return ((builder: Builder) => { - storeEither(arg, storeStateInit, ((arg: StateInit) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeStateInit(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - - }))(builder); - storeEither(message.body, storeX, ((arg: X) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeX(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - -} - -/* -message$_ {X:Type} info:CommonMsgInfoRelaxed - init:(Maybe (Either StateInit ^StateInit)) - body:(Either X ^X) = MessageRelaxed X; -*/ - -export function loadMessageRelaxed(slice: Slice, loadX: (slice: Slice) => X): MessageRelaxed { - let info: CommonMsgInfoRelaxed = loadCommonMsgInfoRelaxed(slice); - let init: Maybe> = loadMaybe>(slice, ((slice: Slice) => { - return loadEither(slice, loadStateInit, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadStateInit(slice1) - - })) - - })); - let body: Either = loadEither(slice, loadX, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadX(slice1) - - })); - return { - kind: 'MessageRelaxed', - info: info, - init: init, - body: body, - } - -} - -export function storeMessageRelaxed(messageRelaxed: MessageRelaxed, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - storeCommonMsgInfoRelaxed(messageRelaxed.info)(builder); - storeMaybe>(messageRelaxed.init, ((arg: Either) => { - return ((builder: Builder) => { - storeEither(arg, storeStateInit, ((arg: StateInit) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeStateInit(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - - }))(builder); - storeEither(messageRelaxed.body, storeX, ((arg: X) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeX(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - -} - -// _ (Message Any) = MessageAny; - -export function loadMessageAny(slice: Slice): MessageAny { - let anon0: Message = loadMessage(slice, ((slice: Slice) => { - return slice - - })); - return { - kind: 'MessageAny', - anon0: anon0, - } - -} - -export function storeMessageAny(messageAny: MessageAny): (builder: Builder) => void { - return ((builder: Builder) => { - storeMessage(messageAny.anon0, ((arg: Slice) => { - return ((builder: Builder) => { - builder.storeSlice(arg); - }) - - }))(builder); - }) - -} - -/* -interm_addr_regular$0 use_dest_bits:(#<= 96) - = IntermediateAddress; -*/ - -/* -interm_addr_simple$10 workchain_id:int8 addr_pfx:uint64 - = IntermediateAddress; -*/ - -/* -interm_addr_ext$11 workchain_id:int32 addr_pfx:uint64 - = IntermediateAddress; -*/ - -export function loadIntermediateAddress(slice: Slice): IntermediateAddress { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let use_dest_bits: number = slice.loadUint(bitLen(96)); - return { - kind: 'IntermediateAddress_interm_addr_regular', - use_dest_bits: use_dest_bits, - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b10))) { - slice.loadUint(2); - let workchain_id: number = slice.loadInt(8); - let addr_pfx: number = slice.loadUint(64); - return { - kind: 'IntermediateAddress_interm_addr_simple', - workchain_id: workchain_id, - addr_pfx: addr_pfx, - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b11))) { - slice.loadUint(2); - let workchain_id: number = slice.loadInt(32); - let addr_pfx: number = slice.loadUint(64); - return { - kind: 'IntermediateAddress_interm_addr_ext', - workchain_id: workchain_id, - addr_pfx: addr_pfx, - } - - } - throw new Error('Expected one of "IntermediateAddress_interm_addr_regular", "IntermediateAddress_interm_addr_simple", "IntermediateAddress_interm_addr_ext" in loading "IntermediateAddress", but data does not satisfy any constructor'); -} - -export function storeIntermediateAddress(intermediateAddress: IntermediateAddress): (builder: Builder) => void { - if ((intermediateAddress.kind == 'IntermediateAddress_interm_addr_regular')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - builder.storeUint(intermediateAddress.use_dest_bits, bitLen(96)); - }) - - } - if ((intermediateAddress.kind == 'IntermediateAddress_interm_addr_simple')) { - return ((builder: Builder) => { - builder.storeUint(0b10, 2); - builder.storeInt(intermediateAddress.workchain_id, 8); - builder.storeUint(intermediateAddress.addr_pfx, 64); - }) - - } - if ((intermediateAddress.kind == 'IntermediateAddress_interm_addr_ext')) { - return ((builder: Builder) => { - builder.storeUint(0b11, 2); - builder.storeInt(intermediateAddress.workchain_id, 32); - builder.storeUint(intermediateAddress.addr_pfx, 64); - }) - - } - throw new Error('Expected one of "IntermediateAddress_interm_addr_regular", "IntermediateAddress_interm_addr_simple", "IntermediateAddress_interm_addr_ext" in loading "IntermediateAddress", but data does not satisfy any constructor'); -} - -/* -msg_envelope#4 cur_addr:IntermediateAddress - next_addr:IntermediateAddress fwd_fee_remaining:Grams - msg:^(Message Any) = MsgEnvelope; -*/ - -export function loadMsgEnvelope(slice: Slice): MsgEnvelope { - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0x4))) { - slice.loadUint(4); - let cur_addr: IntermediateAddress = loadIntermediateAddress(slice); - let next_addr: IntermediateAddress = loadIntermediateAddress(slice); - let fwd_fee_remaining: Grams = loadGrams(slice); - let slice1 = slice.loadRef().beginParse(); - let msg: Message = loadMessage(slice1, ((slice: Slice) => { - return slice - - })); - return { - kind: 'MsgEnvelope', - cur_addr: cur_addr, - next_addr: next_addr, - fwd_fee_remaining: fwd_fee_remaining, - msg: msg, - } - - } - throw new Error('Expected one of "MsgEnvelope" in loading "MsgEnvelope", but data does not satisfy any constructor'); -} - -export function storeMsgEnvelope(msgEnvelope: MsgEnvelope): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x4, 4); - storeIntermediateAddress(msgEnvelope.cur_addr)(builder); - storeIntermediateAddress(msgEnvelope.next_addr)(builder); - storeGrams(msgEnvelope.fwd_fee_remaining)(builder); - let cell1 = beginCell(); - storeMessage(msgEnvelope.msg, ((arg: Slice) => { - return ((builder: Builder) => { - builder.storeSlice(arg); - }) - - }))(cell1); - builder.storeRef(cell1); - }) - -} - -/* -msg_import_ext$000 msg:^(Message Any) transaction:^Transaction - = InMsg; -*/ - -/* -msg_import_ihr$010 msg:^(Message Any) transaction:^Transaction - ihr_fee:Grams proof_created:^Cell = InMsg; -*/ - -/* -msg_import_imm$011 in_msg:^MsgEnvelope - transaction:^Transaction fwd_fee:Grams = InMsg; -*/ - -/* -msg_import_fin$100 in_msg:^MsgEnvelope - transaction:^Transaction fwd_fee:Grams = InMsg; -*/ - -/* -msg_import_tr$101 in_msg:^MsgEnvelope out_msg:^MsgEnvelope - transit_fee:Grams = InMsg; -*/ - -/* -msg_discard_fin$110 in_msg:^MsgEnvelope transaction_id:uint64 - fwd_fee:Grams = InMsg; -*/ - -/* -msg_discard_tr$111 in_msg:^MsgEnvelope transaction_id:uint64 - fwd_fee:Grams proof_delivered:^Cell = InMsg; -*/ - -export function loadInMsg(slice: Slice): InMsg { - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b000))) { - slice.loadUint(3); - let slice1 = slice.loadRef().beginParse(); - let msg: Message = loadMessage(slice1, ((slice: Slice) => { - return slice - - })); - let slice2 = slice.loadRef().beginParse(); - let transaction: Transaction = loadTransaction(slice2); - return { - kind: 'InMsg_msg_import_ext', - msg: msg, - transaction: transaction, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b010))) { - slice.loadUint(3); - let slice1 = slice.loadRef().beginParse(); - let msg: Message = loadMessage(slice1, ((slice: Slice) => { - return slice - - })); - let slice2 = slice.loadRef().beginParse(); - let transaction: Transaction = loadTransaction(slice2); - let ihr_fee: Grams = loadGrams(slice); - let slice3 = slice.loadRef().beginParse(); - let proof_created: Slice = slice3; - return { - kind: 'InMsg_msg_import_ihr', - msg: msg, - transaction: transaction, - ihr_fee: ihr_fee, - proof_created: proof_created, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b011))) { - slice.loadUint(3); - let slice1 = slice.loadRef().beginParse(); - let in_msg: MsgEnvelope = loadMsgEnvelope(slice1); - let slice2 = slice.loadRef().beginParse(); - let transaction: Transaction = loadTransaction(slice2); - let fwd_fee: Grams = loadGrams(slice); - return { - kind: 'InMsg_msg_import_imm', - in_msg: in_msg, - transaction: transaction, - fwd_fee: fwd_fee, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b100))) { - slice.loadUint(3); - let slice1 = slice.loadRef().beginParse(); - let in_msg: MsgEnvelope = loadMsgEnvelope(slice1); - let slice2 = slice.loadRef().beginParse(); - let transaction: Transaction = loadTransaction(slice2); - let fwd_fee: Grams = loadGrams(slice); - return { - kind: 'InMsg_msg_import_fin', - in_msg: in_msg, - transaction: transaction, - fwd_fee: fwd_fee, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b101))) { - slice.loadUint(3); - let slice1 = slice.loadRef().beginParse(); - let in_msg: MsgEnvelope = loadMsgEnvelope(slice1); - let slice2 = slice.loadRef().beginParse(); - let out_msg: MsgEnvelope = loadMsgEnvelope(slice2); - let transit_fee: Grams = loadGrams(slice); - return { - kind: 'InMsg_msg_import_tr', - in_msg: in_msg, - out_msg: out_msg, - transit_fee: transit_fee, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b110))) { - slice.loadUint(3); - let slice1 = slice.loadRef().beginParse(); - let in_msg: MsgEnvelope = loadMsgEnvelope(slice1); - let transaction_id: number = slice.loadUint(64); - let fwd_fee: Grams = loadGrams(slice); - return { - kind: 'InMsg_msg_discard_fin', - in_msg: in_msg, - transaction_id: transaction_id, - fwd_fee: fwd_fee, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b111))) { - slice.loadUint(3); - let slice1 = slice.loadRef().beginParse(); - let in_msg: MsgEnvelope = loadMsgEnvelope(slice1); - let transaction_id: number = slice.loadUint(64); - let fwd_fee: Grams = loadGrams(slice); - let slice2 = slice.loadRef().beginParse(); - let proof_delivered: Slice = slice2; - return { - kind: 'InMsg_msg_discard_tr', - in_msg: in_msg, - transaction_id: transaction_id, - fwd_fee: fwd_fee, - proof_delivered: proof_delivered, - } - - } - throw new Error('Expected one of "InMsg_msg_import_ext", "InMsg_msg_import_ihr", "InMsg_msg_import_imm", "InMsg_msg_import_fin", "InMsg_msg_import_tr", "InMsg_msg_discard_fin", "InMsg_msg_discard_tr" in loading "InMsg", but data does not satisfy any constructor'); -} - -export function storeInMsg(inMsg: InMsg): (builder: Builder) => void { - if ((inMsg.kind == 'InMsg_msg_import_ext')) { - return ((builder: Builder) => { - builder.storeUint(0b000, 3); - let cell1 = beginCell(); - storeMessage(inMsg.msg, ((arg: Slice) => { - return ((builder: Builder) => { - builder.storeSlice(arg); - }) - - }))(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeTransaction(inMsg.transaction)(cell2); - builder.storeRef(cell2); - }) - - } - if ((inMsg.kind == 'InMsg_msg_import_ihr')) { - return ((builder: Builder) => { - builder.storeUint(0b010, 3); - let cell1 = beginCell(); - storeMessage(inMsg.msg, ((arg: Slice) => { - return ((builder: Builder) => { - builder.storeSlice(arg); - }) - - }))(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeTransaction(inMsg.transaction)(cell2); - builder.storeRef(cell2); - storeGrams(inMsg.ihr_fee)(builder); - let cell3 = beginCell(); - cell3.storeSlice(inMsg.proof_created); - builder.storeRef(cell3); - }) - - } - if ((inMsg.kind == 'InMsg_msg_import_imm')) { - return ((builder: Builder) => { - builder.storeUint(0b011, 3); - let cell1 = beginCell(); - storeMsgEnvelope(inMsg.in_msg)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeTransaction(inMsg.transaction)(cell2); - builder.storeRef(cell2); - storeGrams(inMsg.fwd_fee)(builder); - }) - - } - if ((inMsg.kind == 'InMsg_msg_import_fin')) { - return ((builder: Builder) => { - builder.storeUint(0b100, 3); - let cell1 = beginCell(); - storeMsgEnvelope(inMsg.in_msg)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeTransaction(inMsg.transaction)(cell2); - builder.storeRef(cell2); - storeGrams(inMsg.fwd_fee)(builder); - }) - - } - if ((inMsg.kind == 'InMsg_msg_import_tr')) { - return ((builder: Builder) => { - builder.storeUint(0b101, 3); - let cell1 = beginCell(); - storeMsgEnvelope(inMsg.in_msg)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeMsgEnvelope(inMsg.out_msg)(cell2); - builder.storeRef(cell2); - storeGrams(inMsg.transit_fee)(builder); - }) - - } - if ((inMsg.kind == 'InMsg_msg_discard_fin')) { - return ((builder: Builder) => { - builder.storeUint(0b110, 3); - let cell1 = beginCell(); - storeMsgEnvelope(inMsg.in_msg)(cell1); - builder.storeRef(cell1); - builder.storeUint(inMsg.transaction_id, 64); - storeGrams(inMsg.fwd_fee)(builder); - }) - - } - if ((inMsg.kind == 'InMsg_msg_discard_tr')) { - return ((builder: Builder) => { - builder.storeUint(0b111, 3); - let cell1 = beginCell(); - storeMsgEnvelope(inMsg.in_msg)(cell1); - builder.storeRef(cell1); - builder.storeUint(inMsg.transaction_id, 64); - storeGrams(inMsg.fwd_fee)(builder); - let cell2 = beginCell(); - cell2.storeSlice(inMsg.proof_delivered); - builder.storeRef(cell2); - }) - - } - throw new Error('Expected one of "InMsg_msg_import_ext", "InMsg_msg_import_ihr", "InMsg_msg_import_imm", "InMsg_msg_import_fin", "InMsg_msg_import_tr", "InMsg_msg_discard_fin", "InMsg_msg_discard_tr" in loading "InMsg", but data does not satisfy any constructor'); -} - -/* -import_fees$_ fees_collected:Grams - value_imported:CurrencyCollection = ImportFees; -*/ - -export function loadImportFees(slice: Slice): ImportFees { - let fees_collected: Grams = loadGrams(slice); - let value_imported: CurrencyCollection = loadCurrencyCollection(slice); - return { - kind: 'ImportFees', - fees_collected: fees_collected, - value_imported: value_imported, - } - -} - -export function storeImportFees(importFees: ImportFees): (builder: Builder) => void { - return ((builder: Builder) => { - storeGrams(importFees.fees_collected)(builder); - storeCurrencyCollection(importFees.value_imported)(builder); - }) - -} - -// _ (HashmapAugE 256 InMsg ImportFees) = InMsgDescr; - -export function loadInMsgDescr(slice: Slice): InMsgDescr { - let anon0: HashmapAugE = loadHashmapAugE(slice, 256, loadInMsg, loadImportFees); - return { - kind: 'InMsgDescr', - anon0: anon0, - } - -} - -export function storeInMsgDescr(inMsgDescr: InMsgDescr): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapAugE(inMsgDescr.anon0, storeInMsg, storeImportFees)(builder); - }) - -} - -/* -msg_export_ext$000 msg:^(Message Any) - transaction:^Transaction = OutMsg; -*/ - -/* -msg_export_imm$010 out_msg:^MsgEnvelope - transaction:^Transaction reimport:^InMsg = OutMsg; -*/ - -/* -msg_export_new$001 out_msg:^MsgEnvelope - transaction:^Transaction = OutMsg; -*/ - -/* -msg_export_tr$011 out_msg:^MsgEnvelope - imported:^InMsg = OutMsg; -*/ - -/* -msg_export_deq$1100 out_msg:^MsgEnvelope - import_block_lt:uint63 = OutMsg; -*/ - -/* -msg_export_deq_short$1101 msg_env_hash:bits256 - next_workchain:int32 next_addr_pfx:uint64 - import_block_lt:uint64 = OutMsg; -*/ - -/* -msg_export_tr_req$111 out_msg:^MsgEnvelope - imported:^InMsg = OutMsg; -*/ - -/* -msg_export_deq_imm$100 out_msg:^MsgEnvelope - reimport:^InMsg = OutMsg; -*/ - -export function loadOutMsg(slice: Slice): OutMsg { - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b000))) { - slice.loadUint(3); - let slice1 = slice.loadRef().beginParse(); - let msg: Message = loadMessage(slice1, ((slice: Slice) => { - return slice - - })); - let slice2 = slice.loadRef().beginParse(); - let transaction: Transaction = loadTransaction(slice2); - return { - kind: 'OutMsg_msg_export_ext', - msg: msg, - transaction: transaction, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b010))) { - slice.loadUint(3); - let slice1 = slice.loadRef().beginParse(); - let out_msg: MsgEnvelope = loadMsgEnvelope(slice1); - let slice2 = slice.loadRef().beginParse(); - let transaction: Transaction = loadTransaction(slice2); - let slice3 = slice.loadRef().beginParse(); - let reimport: InMsg = loadInMsg(slice3); - return { - kind: 'OutMsg_msg_export_imm', - out_msg: out_msg, - transaction: transaction, - reimport: reimport, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b001))) { - slice.loadUint(3); - let slice1 = slice.loadRef().beginParse(); - let out_msg: MsgEnvelope = loadMsgEnvelope(slice1); - let slice2 = slice.loadRef().beginParse(); - let transaction: Transaction = loadTransaction(slice2); - return { - kind: 'OutMsg_msg_export_new', - out_msg: out_msg, - transaction: transaction, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b011))) { - slice.loadUint(3); - let slice1 = slice.loadRef().beginParse(); - let out_msg: MsgEnvelope = loadMsgEnvelope(slice1); - let slice2 = slice.loadRef().beginParse(); - let imported: InMsg = loadInMsg(slice2); - return { - kind: 'OutMsg_msg_export_tr', - out_msg: out_msg, - imported: imported, - } - - } - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0b1100))) { - slice.loadUint(4); - let slice1 = slice.loadRef().beginParse(); - let out_msg: MsgEnvelope = loadMsgEnvelope(slice1); - let import_block_lt: number = slice.loadUint(63); - return { - kind: 'OutMsg_msg_export_deq', - out_msg: out_msg, - import_block_lt: import_block_lt, - } - - } - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0b1101))) { - slice.loadUint(4); - let msg_env_hash: BitString = slice.loadBits(256); - let next_workchain: number = slice.loadInt(32); - let next_addr_pfx: number = slice.loadUint(64); - let import_block_lt: number = slice.loadUint(64); - return { - kind: 'OutMsg_msg_export_deq_short', - msg_env_hash: msg_env_hash, - next_workchain: next_workchain, - next_addr_pfx: next_addr_pfx, - import_block_lt: import_block_lt, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b111))) { - slice.loadUint(3); - let slice1 = slice.loadRef().beginParse(); - let out_msg: MsgEnvelope = loadMsgEnvelope(slice1); - let slice2 = slice.loadRef().beginParse(); - let imported: InMsg = loadInMsg(slice2); - return { - kind: 'OutMsg_msg_export_tr_req', - out_msg: out_msg, - imported: imported, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b100))) { - slice.loadUint(3); - let slice1 = slice.loadRef().beginParse(); - let out_msg: MsgEnvelope = loadMsgEnvelope(slice1); - let slice2 = slice.loadRef().beginParse(); - let reimport: InMsg = loadInMsg(slice2); - return { - kind: 'OutMsg_msg_export_deq_imm', - out_msg: out_msg, - reimport: reimport, - } - - } - throw new Error('Expected one of "OutMsg_msg_export_ext", "OutMsg_msg_export_imm", "OutMsg_msg_export_new", "OutMsg_msg_export_tr", "OutMsg_msg_export_deq", "OutMsg_msg_export_deq_short", "OutMsg_msg_export_tr_req", "OutMsg_msg_export_deq_imm" in loading "OutMsg", but data does not satisfy any constructor'); -} - -export function storeOutMsg(outMsg: OutMsg): (builder: Builder) => void { - if ((outMsg.kind == 'OutMsg_msg_export_ext')) { - return ((builder: Builder) => { - builder.storeUint(0b000, 3); - let cell1 = beginCell(); - storeMessage(outMsg.msg, ((arg: Slice) => { - return ((builder: Builder) => { - builder.storeSlice(arg); - }) - - }))(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeTransaction(outMsg.transaction)(cell2); - builder.storeRef(cell2); - }) - - } - if ((outMsg.kind == 'OutMsg_msg_export_imm')) { - return ((builder: Builder) => { - builder.storeUint(0b010, 3); - let cell1 = beginCell(); - storeMsgEnvelope(outMsg.out_msg)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeTransaction(outMsg.transaction)(cell2); - builder.storeRef(cell2); - let cell3 = beginCell(); - storeInMsg(outMsg.reimport)(cell3); - builder.storeRef(cell3); - }) - - } - if ((outMsg.kind == 'OutMsg_msg_export_new')) { - return ((builder: Builder) => { - builder.storeUint(0b001, 3); - let cell1 = beginCell(); - storeMsgEnvelope(outMsg.out_msg)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeTransaction(outMsg.transaction)(cell2); - builder.storeRef(cell2); - }) - - } - if ((outMsg.kind == 'OutMsg_msg_export_tr')) { - return ((builder: Builder) => { - builder.storeUint(0b011, 3); - let cell1 = beginCell(); - storeMsgEnvelope(outMsg.out_msg)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeInMsg(outMsg.imported)(cell2); - builder.storeRef(cell2); - }) - - } - if ((outMsg.kind == 'OutMsg_msg_export_deq')) { - return ((builder: Builder) => { - builder.storeUint(0b1100, 4); - let cell1 = beginCell(); - storeMsgEnvelope(outMsg.out_msg)(cell1); - builder.storeRef(cell1); - builder.storeUint(outMsg.import_block_lt, 63); - }) - - } - if ((outMsg.kind == 'OutMsg_msg_export_deq_short')) { - return ((builder: Builder) => { - builder.storeUint(0b1101, 4); - builder.storeBits(outMsg.msg_env_hash); - builder.storeInt(outMsg.next_workchain, 32); - builder.storeUint(outMsg.next_addr_pfx, 64); - builder.storeUint(outMsg.import_block_lt, 64); - }) - - } - if ((outMsg.kind == 'OutMsg_msg_export_tr_req')) { - return ((builder: Builder) => { - builder.storeUint(0b111, 3); - let cell1 = beginCell(); - storeMsgEnvelope(outMsg.out_msg)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeInMsg(outMsg.imported)(cell2); - builder.storeRef(cell2); - }) - - } - if ((outMsg.kind == 'OutMsg_msg_export_deq_imm')) { - return ((builder: Builder) => { - builder.storeUint(0b100, 3); - let cell1 = beginCell(); - storeMsgEnvelope(outMsg.out_msg)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeInMsg(outMsg.reimport)(cell2); - builder.storeRef(cell2); - }) - - } - throw new Error('Expected one of "OutMsg_msg_export_ext", "OutMsg_msg_export_imm", "OutMsg_msg_export_new", "OutMsg_msg_export_tr", "OutMsg_msg_export_deq", "OutMsg_msg_export_deq_short", "OutMsg_msg_export_tr_req", "OutMsg_msg_export_deq_imm" in loading "OutMsg", but data does not satisfy any constructor'); -} - -// _ enqueued_lt:uint64 out_msg:^MsgEnvelope = EnqueuedMsg; - -export function loadEnqueuedMsg(slice: Slice): EnqueuedMsg { - let enqueued_lt: number = slice.loadUint(64); - let slice1 = slice.loadRef().beginParse(); - let out_msg: MsgEnvelope = loadMsgEnvelope(slice1); - return { - kind: 'EnqueuedMsg', - enqueued_lt: enqueued_lt, - out_msg: out_msg, - } - -} - -export function storeEnqueuedMsg(enqueuedMsg: EnqueuedMsg): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(enqueuedMsg.enqueued_lt, 64); - let cell1 = beginCell(); - storeMsgEnvelope(enqueuedMsg.out_msg)(cell1); - builder.storeRef(cell1); - }) - -} - -// _ (HashmapAugE 256 OutMsg CurrencyCollection) = OutMsgDescr; - -export function loadOutMsgDescr(slice: Slice): OutMsgDescr { - let anon0: HashmapAugE = loadHashmapAugE(slice, 256, loadOutMsg, loadCurrencyCollection); - return { - kind: 'OutMsgDescr', - anon0: anon0, - } - -} - -export function storeOutMsgDescr(outMsgDescr: OutMsgDescr): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapAugE(outMsgDescr.anon0, storeOutMsg, storeCurrencyCollection)(builder); - }) - -} - -// _ (HashmapAugE 352 EnqueuedMsg uint64) = OutMsgQueue; - -export function loadOutMsgQueue(slice: Slice): OutMsgQueue { - let anon0: HashmapAugE = loadHashmapAugE(slice, 352, loadEnqueuedMsg, ((slice: Slice) => { - return slice.loadUint(64) - - })); - return { - kind: 'OutMsgQueue', - anon0: anon0, - } - -} - -export function storeOutMsgQueue(outMsgQueue: OutMsgQueue): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapAugE(outMsgQueue.anon0, storeEnqueuedMsg, ((arg: number) => { - return ((builder: Builder) => { - builder.storeUint(arg, 64); - }) - - }))(builder); - }) - -} - -// processed_upto$_ last_msg_lt:uint64 last_msg_hash:bits256 = ProcessedUpto; - -export function loadProcessedUpto(slice: Slice): ProcessedUpto { - let last_msg_lt: number = slice.loadUint(64); - let last_msg_hash: BitString = slice.loadBits(256); - return { - kind: 'ProcessedUpto', - last_msg_lt: last_msg_lt, - last_msg_hash: last_msg_hash, - } - -} - -export function storeProcessedUpto(processedUpto: ProcessedUpto): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(processedUpto.last_msg_lt, 64); - builder.storeBits(processedUpto.last_msg_hash); - }) - -} - -// _ (HashmapE 96 ProcessedUpto) = ProcessedInfo; - -export function loadProcessedInfo(slice: Slice): ProcessedInfo { - let anon0: HashmapE = loadHashmapE(slice, 96, loadProcessedUpto); - return { - kind: 'ProcessedInfo', - anon0: anon0, - } - -} - -export function storeProcessedInfo(processedInfo: ProcessedInfo): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapE(processedInfo.anon0, storeProcessedUpto)(builder); - }) - -} - -// ihr_pending$_ import_lt:uint64 = IhrPendingSince; - -export function loadIhrPendingSince(slice: Slice): IhrPendingSince { - let import_lt: number = slice.loadUint(64); - return { - kind: 'IhrPendingSince', - import_lt: import_lt, - } - -} - -export function storeIhrPendingSince(ihrPendingSince: IhrPendingSince): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(ihrPendingSince.import_lt, 64); - }) - -} - -// _ (HashmapE 320 IhrPendingSince) = IhrPendingInfo; - -export function loadIhrPendingInfo(slice: Slice): IhrPendingInfo { - let anon0: HashmapE = loadHashmapE(slice, 320, loadIhrPendingSince); - return { - kind: 'IhrPendingInfo', - anon0: anon0, - } - -} - -export function storeIhrPendingInfo(ihrPendingInfo: IhrPendingInfo): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapE(ihrPendingInfo.anon0, storeIhrPendingSince)(builder); - }) - -} - -/* -_ out_queue:OutMsgQueue proc_info:ProcessedInfo - ihr_pending:IhrPendingInfo = OutMsgQueueInfo; -*/ - -export function loadOutMsgQueueInfo(slice: Slice): OutMsgQueueInfo { - let out_queue: OutMsgQueue = loadOutMsgQueue(slice); - let proc_info: ProcessedInfo = loadProcessedInfo(slice); - let ihr_pending: IhrPendingInfo = loadIhrPendingInfo(slice); - return { - kind: 'OutMsgQueueInfo', - out_queue: out_queue, - proc_info: proc_info, - ihr_pending: ihr_pending, - } - -} - -export function storeOutMsgQueueInfo(outMsgQueueInfo: OutMsgQueueInfo): (builder: Builder) => void { - return ((builder: Builder) => { - storeOutMsgQueue(outMsgQueueInfo.out_queue)(builder); - storeProcessedInfo(outMsgQueueInfo.proc_info)(builder); - storeIhrPendingInfo(outMsgQueueInfo.ihr_pending)(builder); - }) - -} - -/* -storage_used$_ cells:(VarUInteger 7) bits:(VarUInteger 7) - public_cells:(VarUInteger 7) = StorageUsed; -*/ - -export function loadStorageUsed(slice: Slice): StorageUsed { - let _cells: VarUInteger = loadVarUInteger(slice, 7); - let bits: VarUInteger = loadVarUInteger(slice, 7); - let public_cells: VarUInteger = loadVarUInteger(slice, 7); - return { - kind: 'StorageUsed', - _cells: _cells, - bits: bits, - public_cells: public_cells, - } - -} - -export function storeStorageUsed(storageUsed: StorageUsed): (builder: Builder) => void { - return ((builder: Builder) => { - storeVarUInteger(storageUsed._cells)(builder); - storeVarUInteger(storageUsed.bits)(builder); - storeVarUInteger(storageUsed.public_cells)(builder); - }) - -} - -/* -storage_used_short$_ cells:(VarUInteger 7) - bits:(VarUInteger 7) = StorageUsedShort; -*/ - -export function loadStorageUsedShort(slice: Slice): StorageUsedShort { - let _cells: VarUInteger = loadVarUInteger(slice, 7); - let bits: VarUInteger = loadVarUInteger(slice, 7); - return { - kind: 'StorageUsedShort', - _cells: _cells, - bits: bits, - } - -} - -export function storeStorageUsedShort(storageUsedShort: StorageUsedShort): (builder: Builder) => void { - return ((builder: Builder) => { - storeVarUInteger(storageUsedShort._cells)(builder); - storeVarUInteger(storageUsedShort.bits)(builder); - }) - -} - -/* -storage_info$_ used:StorageUsed last_paid:uint32 - due_payment:(Maybe Grams) = StorageInfo; -*/ - -export function loadStorageInfo(slice: Slice): StorageInfo { - let used: StorageUsed = loadStorageUsed(slice); - let last_paid: number = slice.loadUint(32); - let due_payment: Maybe = loadMaybe(slice, loadGrams); - return { - kind: 'StorageInfo', - used: used, - last_paid: last_paid, - due_payment: due_payment, - } - -} - -export function storeStorageInfo(storageInfo: StorageInfo): (builder: Builder) => void { - return ((builder: Builder) => { - storeStorageUsed(storageInfo.used)(builder); - builder.storeUint(storageInfo.last_paid, 32); - storeMaybe(storageInfo.due_payment, storeGrams)(builder); - }) - -} - -// account_none$0 = Account; - -/* -account$1 addr:MsgAddressInt storage_stat:StorageInfo - storage:AccountStorage = Account; -*/ - -export function loadAccount(slice: Slice): Account { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'Account_account_none', - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let addr: Address = slice.loadAddress(); - let storage_stat: StorageInfo = loadStorageInfo(slice); - let storage: AccountStorage = loadAccountStorage(slice); - return { - kind: 'Account_account', - addr: addr, - storage_stat: storage_stat, - storage: storage, - } - - } - throw new Error('Expected one of "Account_account_none", "Account_account" in loading "Account", but data does not satisfy any constructor'); -} - -export function storeAccount(account: Account): (builder: Builder) => void { - if ((account.kind == 'Account_account_none')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((account.kind == 'Account_account')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - builder.storeAddress(account.addr); - storeStorageInfo(account.storage_stat)(builder); - storeAccountStorage(account.storage)(builder); - }) - - } - throw new Error('Expected one of "Account_account_none", "Account_account" in loading "Account", but data does not satisfy any constructor'); -} - -/* -account_storage$_ last_trans_lt:uint64 - balance:CurrencyCollection state:AccountState - = AccountStorage; -*/ - -export function loadAccountStorage(slice: Slice): AccountStorage { - let last_trans_lt: number = slice.loadUint(64); - let balance: CurrencyCollection = loadCurrencyCollection(slice); - let state: AccountState = loadAccountState(slice); - return { - kind: 'AccountStorage', - last_trans_lt: last_trans_lt, - balance: balance, - state: state, - } - -} - -export function storeAccountStorage(accountStorage: AccountStorage): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(accountStorage.last_trans_lt, 64); - storeCurrencyCollection(accountStorage.balance)(builder); - storeAccountState(accountStorage.state)(builder); - }) - -} - -// account_uninit$00 = AccountState; - -// account_active$1 _:StateInit = AccountState; - -// account_frozen$01 state_hash:bits256 = AccountState; - -export function loadAccountState(slice: Slice): AccountState { - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b00))) { - slice.loadUint(2); - return { - kind: 'AccountState_account_uninit', - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let _: StateInit = loadStateInit(slice); - return { - kind: 'AccountState_account_active', - _: _, - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b01))) { - slice.loadUint(2); - let state_hash: BitString = slice.loadBits(256); - return { - kind: 'AccountState_account_frozen', - state_hash: state_hash, - } - - } - throw new Error('Expected one of "AccountState_account_uninit", "AccountState_account_active", "AccountState_account_frozen" in loading "AccountState", but data does not satisfy any constructor'); -} - -export function storeAccountState(accountState: AccountState): (builder: Builder) => void { - if ((accountState.kind == 'AccountState_account_uninit')) { - return ((builder: Builder) => { - builder.storeUint(0b00, 2); - }) - - } - if ((accountState.kind == 'AccountState_account_active')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - storeStateInit(accountState._)(builder); - }) - - } - if ((accountState.kind == 'AccountState_account_frozen')) { - return ((builder: Builder) => { - builder.storeUint(0b01, 2); - builder.storeBits(accountState.state_hash); - }) - - } - throw new Error('Expected one of "AccountState_account_uninit", "AccountState_account_active", "AccountState_account_frozen" in loading "AccountState", but data does not satisfy any constructor'); -} - -// acc_state_uninit$00 = AccountStatus; - -// acc_state_frozen$01 = AccountStatus; - -// acc_state_active$10 = AccountStatus; - -// acc_state_nonexist$11 = AccountStatus; - -export function loadAccountStatus(slice: Slice): AccountStatus { - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b00))) { - slice.loadUint(2); - return { - kind: 'AccountStatus_acc_state_uninit', - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b01))) { - slice.loadUint(2); - return { - kind: 'AccountStatus_acc_state_frozen', - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b10))) { - slice.loadUint(2); - return { - kind: 'AccountStatus_acc_state_active', - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b11))) { - slice.loadUint(2); - return { - kind: 'AccountStatus_acc_state_nonexist', - } - - } - throw new Error('Expected one of "AccountStatus_acc_state_uninit", "AccountStatus_acc_state_frozen", "AccountStatus_acc_state_active", "AccountStatus_acc_state_nonexist" in loading "AccountStatus", but data does not satisfy any constructor'); -} - -export function storeAccountStatus(accountStatus: AccountStatus): (builder: Builder) => void { - if ((accountStatus.kind == 'AccountStatus_acc_state_uninit')) { - return ((builder: Builder) => { - builder.storeUint(0b00, 2); - }) - - } - if ((accountStatus.kind == 'AccountStatus_acc_state_frozen')) { - return ((builder: Builder) => { - builder.storeUint(0b01, 2); - }) - - } - if ((accountStatus.kind == 'AccountStatus_acc_state_active')) { - return ((builder: Builder) => { - builder.storeUint(0b10, 2); - }) - - } - if ((accountStatus.kind == 'AccountStatus_acc_state_nonexist')) { - return ((builder: Builder) => { - builder.storeUint(0b11, 2); - }) - - } - throw new Error('Expected one of "AccountStatus_acc_state_uninit", "AccountStatus_acc_state_frozen", "AccountStatus_acc_state_active", "AccountStatus_acc_state_nonexist" in loading "AccountStatus", but data does not satisfy any constructor'); -} - -/* -account_descr$_ account:^Account last_trans_hash:bits256 - last_trans_lt:uint64 = ShardAccount; -*/ - -export function loadShardAccount(slice: Slice): ShardAccount { - let slice1 = slice.loadRef().beginParse(); - let account: Account = loadAccount(slice1); - let last_trans_hash: BitString = slice.loadBits(256); - let last_trans_lt: number = slice.loadUint(64); - return { - kind: 'ShardAccount', - account: account, - last_trans_hash: last_trans_hash, - last_trans_lt: last_trans_lt, - } - -} - -export function storeShardAccount(shardAccount: ShardAccount): (builder: Builder) => void { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeAccount(shardAccount.account)(cell1); - builder.storeRef(cell1); - builder.storeBits(shardAccount.last_trans_hash); - builder.storeUint(shardAccount.last_trans_lt, 64); - }) - -} - -// depth_balance$_ split_depth:(#<= 30) balance:CurrencyCollection = DepthBalanceInfo; - -export function loadDepthBalanceInfo(slice: Slice): DepthBalanceInfo { - let split_depth: number = slice.loadUint(bitLen(30)); - let balance: CurrencyCollection = loadCurrencyCollection(slice); - return { - kind: 'DepthBalanceInfo', - split_depth: split_depth, - balance: balance, - } - -} - -export function storeDepthBalanceInfo(depthBalanceInfo: DepthBalanceInfo): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(depthBalanceInfo.split_depth, bitLen(30)); - storeCurrencyCollection(depthBalanceInfo.balance)(builder); - }) - -} - -// _ (HashmapAugE 256 ShardAccount DepthBalanceInfo) = ShardAccounts; - -export function loadShardAccounts(slice: Slice): ShardAccounts { - let anon0: HashmapAugE = loadHashmapAugE(slice, 256, loadShardAccount, loadDepthBalanceInfo); - return { - kind: 'ShardAccounts', - anon0: anon0, - } - -} - -export function storeShardAccounts(shardAccounts: ShardAccounts): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapAugE(shardAccounts.anon0, storeShardAccount, storeDepthBalanceInfo)(builder); - }) - -} - -/* -transaction$0111 account_addr:bits256 lt:uint64 - prev_trans_hash:bits256 prev_trans_lt:uint64 now:uint32 - outmsg_cnt:uint15 - orig_status:AccountStatus end_status:AccountStatus - ^[ in_msg:(Maybe ^(Message Any)) out_msgs:(HashmapE 15 ^(Message Any)) ] - total_fees:CurrencyCollection state_update:^(HASH_UPDATE Account) - description:^TransactionDescr = Transaction; -*/ - -export function loadTransaction(slice: Slice): Transaction { - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0b0111))) { - slice.loadUint(4); - let account_addr: BitString = slice.loadBits(256); - let lt: number = slice.loadUint(64); - let prev_trans_hash: BitString = slice.loadBits(256); - let prev_trans_lt: number = slice.loadUint(64); - let now: number = slice.loadUint(32); - let outmsg_cnt: number = slice.loadUint(15); - let orig_status: AccountStatus = loadAccountStatus(slice); - let end_status: AccountStatus = loadAccountStatus(slice); - let slice1 = slice.loadRef().beginParse(); - let in_msg: Maybe> = loadMaybe>(slice1, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadMessage(slice1, ((slice: Slice) => { - return slice - - })) - - })); - let out_msgs: HashmapE> = loadHashmapE>(slice1, 15, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadMessage(slice1, ((slice: Slice) => { - return slice - - })) - - })); - let total_fees: CurrencyCollection = loadCurrencyCollection(slice); - let slice2 = slice.loadRef().beginParse(); - let state_update: HASH_UPDATE = loadHASH_UPDATE(slice2, loadAccount); - let slice3 = slice.loadRef().beginParse(); - let description: TransactionDescr = loadTransactionDescr(slice3); - return { - kind: 'Transaction', - account_addr: account_addr, - lt: lt, - prev_trans_hash: prev_trans_hash, - prev_trans_lt: prev_trans_lt, - now: now, - outmsg_cnt: outmsg_cnt, - orig_status: orig_status, - end_status: end_status, - in_msg: in_msg, - out_msgs: out_msgs, - total_fees: total_fees, - state_update: state_update, - description: description, - } - - } - throw new Error('Expected one of "Transaction" in loading "Transaction", but data does not satisfy any constructor'); -} - -export function storeTransaction(transaction: Transaction): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0b0111, 4); - builder.storeBits(transaction.account_addr); - builder.storeUint(transaction.lt, 64); - builder.storeBits(transaction.prev_trans_hash); - builder.storeUint(transaction.prev_trans_lt, 64); - builder.storeUint(transaction.now, 32); - builder.storeUint(transaction.outmsg_cnt, 15); - storeAccountStatus(transaction.orig_status)(builder); - storeAccountStatus(transaction.end_status)(builder); - let cell1 = beginCell(); - storeMaybe>(transaction.in_msg, ((arg: Message) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeMessage(arg, ((arg: Slice) => { - return ((builder: Builder) => { - builder.storeSlice(arg); - }) - - }))(cell1); - builder.storeRef(cell1); - - }) - - }))(cell1); - storeHashmapE>(transaction.out_msgs, ((arg: Message) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeMessage(arg, ((arg: Slice) => { - return ((builder: Builder) => { - builder.storeSlice(arg); - }) - - }))(cell1); - builder.storeRef(cell1); - - }) - - }))(cell1); - builder.storeRef(cell1); - storeCurrencyCollection(transaction.total_fees)(builder); - let cell2 = beginCell(); - storeHASH_UPDATE(transaction.state_update, storeAccount)(cell2); - builder.storeRef(cell2); - let cell3 = beginCell(); - storeTransactionDescr(transaction.description)(cell3); - builder.storeRef(cell3); - }) - -} - -/* -merkle_update#02 {X:Type} old_hash:bits256 new_hash:bits256 - old:^X new:^X = MERKLE_UPDATE X; -*/ - -export function loadMERKLE_UPDATE(slice: Slice, loadX: (slice: Slice) => X): MERKLE_UPDATE { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x02))) { - slice.loadUint(8); - let old_hash: BitString = slice.loadBits(256); - let new_hash: BitString = slice.loadBits(256); - let slice1 = slice.loadRef().beginParse(); - let old: X = loadX(slice1); - let slice2 = slice.loadRef().beginParse(); - let new0: X = loadX(slice2); - return { - kind: 'MERKLE_UPDATE', - old_hash: old_hash, - new_hash: new_hash, - old: old, - new0: new0, - } - - } - throw new Error('Expected one of "MERKLE_UPDATE" in loading "MERKLE_UPDATE", but data does not satisfy any constructor'); -} - -export function storeMERKLE_UPDATE(mERKLE_UPDATE: MERKLE_UPDATE, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x02, 8); - builder.storeBits(mERKLE_UPDATE.old_hash); - builder.storeBits(mERKLE_UPDATE.new_hash); - let cell1 = beginCell(); - storeX(mERKLE_UPDATE.old)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeX(mERKLE_UPDATE.new0)(cell2); - builder.storeRef(cell2); - }) - -} - -/* -update_hashes#72 {X:Type} old_hash:bits256 new_hash:bits256 - = HASH_UPDATE X; -*/ - -export function loadHASH_UPDATE(slice: Slice, loadX: (slice: Slice) => X): HASH_UPDATE { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x72))) { - slice.loadUint(8); - let old_hash: BitString = slice.loadBits(256); - let new_hash: BitString = slice.loadBits(256); - return { - kind: 'HASH_UPDATE', - old_hash: old_hash, - new_hash: new_hash, - } - - } - throw new Error('Expected one of "HASH_UPDATE" in loading "HASH_UPDATE", but data does not satisfy any constructor'); -} - -export function storeHASH_UPDATE(hASH_UPDATE: HASH_UPDATE, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x72, 8); - builder.storeBits(hASH_UPDATE.old_hash); - builder.storeBits(hASH_UPDATE.new_hash); - }) - -} - -// merkle_proof#03 {X:Type} virtual_hash:bits256 depth:uint16 virtual_root:^X = MERKLE_PROOF X; - -export function loadMERKLE_PROOF(slice: Slice, loadX: (slice: Slice) => X): MERKLE_PROOF { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x03))) { - slice.loadUint(8); - let virtual_hash: BitString = slice.loadBits(256); - let depth: number = slice.loadUint(16); - let slice1 = slice.loadRef().beginParse(); - let virtual_root: X = loadX(slice1); - return { - kind: 'MERKLE_PROOF', - virtual_hash: virtual_hash, - depth: depth, - virtual_root: virtual_root, - } - - } - throw new Error('Expected one of "MERKLE_PROOF" in loading "MERKLE_PROOF", but data does not satisfy any constructor'); -} - -export function storeMERKLE_PROOF(mERKLE_PROOF: MERKLE_PROOF, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x03, 8); - builder.storeBits(mERKLE_PROOF.virtual_hash); - builder.storeUint(mERKLE_PROOF.depth, 16); - let cell1 = beginCell(); - storeX(mERKLE_PROOF.virtual_root)(cell1); - builder.storeRef(cell1); - }) - -} - -/* -acc_trans#5 account_addr:bits256 - transactions:(HashmapAug 64 ^Transaction CurrencyCollection) - state_update:^(HASH_UPDATE Account) - = AccountBlock; -*/ - -export function loadAccountBlock(slice: Slice): AccountBlock { - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0x5))) { - slice.loadUint(4); - let account_addr: BitString = slice.loadBits(256); - let transactions: HashmapAug = loadHashmapAug(slice, 64, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadTransaction(slice1) - - }), loadCurrencyCollection); - let slice1 = slice.loadRef().beginParse(); - let state_update: HASH_UPDATE = loadHASH_UPDATE(slice1, loadAccount); - return { - kind: 'AccountBlock', - account_addr: account_addr, - transactions: transactions, - state_update: state_update, - } - - } - throw new Error('Expected one of "AccountBlock" in loading "AccountBlock", but data does not satisfy any constructor'); -} - -export function storeAccountBlock(accountBlock: AccountBlock): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x5, 4); - builder.storeBits(accountBlock.account_addr); - storeHashmapAug(accountBlock.transactions, ((arg: Transaction) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeTransaction(arg)(cell1); - builder.storeRef(cell1); - - }) - - }), storeCurrencyCollection)(builder); - let cell1 = beginCell(); - storeHASH_UPDATE(accountBlock.state_update, storeAccount)(cell1); - builder.storeRef(cell1); - }) - -} - -// _ (HashmapAugE 256 AccountBlock CurrencyCollection) = ShardAccountBlocks; - -export function loadShardAccountBlocks(slice: Slice): ShardAccountBlocks { - let anon0: HashmapAugE = loadHashmapAugE(slice, 256, loadAccountBlock, loadCurrencyCollection); - return { - kind: 'ShardAccountBlocks', - anon0: anon0, - } - -} - -export function storeShardAccountBlocks(shardAccountBlocks: ShardAccountBlocks): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapAugE(shardAccountBlocks.anon0, storeAccountBlock, storeCurrencyCollection)(builder); - }) - -} - -/* -tr_phase_storage$_ storage_fees_collected:Grams - storage_fees_due:(Maybe Grams) - status_change:AccStatusChange - = TrStoragePhase; -*/ - -export function loadTrStoragePhase(slice: Slice): TrStoragePhase { - let storage_fees_collected: Grams = loadGrams(slice); - let storage_fees_due: Maybe = loadMaybe(slice, loadGrams); - let status_change: AccStatusChange = loadAccStatusChange(slice); - return { - kind: 'TrStoragePhase', - storage_fees_collected: storage_fees_collected, - storage_fees_due: storage_fees_due, - status_change: status_change, - } - -} - -export function storeTrStoragePhase(trStoragePhase: TrStoragePhase): (builder: Builder) => void { - return ((builder: Builder) => { - storeGrams(trStoragePhase.storage_fees_collected)(builder); - storeMaybe(trStoragePhase.storage_fees_due, storeGrams)(builder); - storeAccStatusChange(trStoragePhase.status_change)(builder); - }) - -} - -// acst_unchanged$0 = AccStatusChange; - -// acst_frozen$10 = AccStatusChange; - -// acst_deleted$11 = AccStatusChange; - -export function loadAccStatusChange(slice: Slice): AccStatusChange { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'AccStatusChange_acst_unchanged', - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b10))) { - slice.loadUint(2); - return { - kind: 'AccStatusChange_acst_frozen', - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b11))) { - slice.loadUint(2); - return { - kind: 'AccStatusChange_acst_deleted', - } - - } - throw new Error('Expected one of "AccStatusChange_acst_unchanged", "AccStatusChange_acst_frozen", "AccStatusChange_acst_deleted" in loading "AccStatusChange", but data does not satisfy any constructor'); -} - -export function storeAccStatusChange(accStatusChange: AccStatusChange): (builder: Builder) => void { - if ((accStatusChange.kind == 'AccStatusChange_acst_unchanged')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((accStatusChange.kind == 'AccStatusChange_acst_frozen')) { - return ((builder: Builder) => { - builder.storeUint(0b10, 2); - }) - - } - if ((accStatusChange.kind == 'AccStatusChange_acst_deleted')) { - return ((builder: Builder) => { - builder.storeUint(0b11, 2); - }) - - } - throw new Error('Expected one of "AccStatusChange_acst_unchanged", "AccStatusChange_acst_frozen", "AccStatusChange_acst_deleted" in loading "AccStatusChange", but data does not satisfy any constructor'); -} - -/* -tr_phase_credit$_ due_fees_collected:(Maybe Grams) - credit:CurrencyCollection = TrCreditPhase; -*/ - -export function loadTrCreditPhase(slice: Slice): TrCreditPhase { - let due_fees_collected: Maybe = loadMaybe(slice, loadGrams); - let credit: CurrencyCollection = loadCurrencyCollection(slice); - return { - kind: 'TrCreditPhase', - due_fees_collected: due_fees_collected, - credit: credit, - } - -} - -export function storeTrCreditPhase(trCreditPhase: TrCreditPhase): (builder: Builder) => void { - return ((builder: Builder) => { - storeMaybe(trCreditPhase.due_fees_collected, storeGrams)(builder); - storeCurrencyCollection(trCreditPhase.credit)(builder); - }) - -} - -/* -tr_phase_compute_skipped$0 reason:ComputeSkipReason - = TrComputePhase; -*/ - -/* -tr_phase_compute_vm$1 success:Bool msg_state_used:Bool - account_activated:Bool gas_fees:Grams - ^[ gas_used:(VarUInteger 7) - gas_limit:(VarUInteger 7) gas_credit:(Maybe (VarUInteger 3)) - mode:int8 exit_code:int32 exit_arg:(Maybe int32) - vm_steps:uint32 - vm_init_state_hash:bits256 vm_final_state_hash:bits256 ] - = TrComputePhase; -*/ - -export function loadTrComputePhase(slice: Slice): TrComputePhase { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let reason: ComputeSkipReason = loadComputeSkipReason(slice); - return { - kind: 'TrComputePhase_tr_phase_compute_skipped', - reason: reason, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let success: boolean = slice.loadBoolean(); - let msg_state_used: boolean = slice.loadBoolean(); - let account_activated: boolean = slice.loadBoolean(); - let gas_fees: Grams = loadGrams(slice); - let slice1 = slice.loadRef().beginParse(); - let gas_used: VarUInteger = loadVarUInteger(slice1, 7); - let gas_limit: VarUInteger = loadVarUInteger(slice1, 7); - let gas_credit: Maybe = loadMaybe(slice1, ((slice: Slice) => { - return loadVarUInteger(slice, 3) - - })); - let mode: number = slice1.loadInt(8); - let exit_code: number = slice1.loadInt(32); - let exit_arg: Maybe = loadMaybe(slice1, ((slice: Slice) => { - return slice1.loadInt(32) - - })); - let vm_steps: number = slice1.loadUint(32); - let vm_init_state_hash: BitString = slice1.loadBits(256); - let vm_final_state_hash: BitString = slice1.loadBits(256); - return { - kind: 'TrComputePhase_tr_phase_compute_vm', - success: success, - msg_state_used: msg_state_used, - account_activated: account_activated, - gas_fees: gas_fees, - gas_used: gas_used, - gas_limit: gas_limit, - gas_credit: gas_credit, - mode: mode, - exit_code: exit_code, - exit_arg: exit_arg, - vm_steps: vm_steps, - vm_init_state_hash: vm_init_state_hash, - vm_final_state_hash: vm_final_state_hash, - } - - } - throw new Error('Expected one of "TrComputePhase_tr_phase_compute_skipped", "TrComputePhase_tr_phase_compute_vm" in loading "TrComputePhase", but data does not satisfy any constructor'); -} - -export function storeTrComputePhase(trComputePhase: TrComputePhase): (builder: Builder) => void { - if ((trComputePhase.kind == 'TrComputePhase_tr_phase_compute_skipped')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - storeComputeSkipReason(trComputePhase.reason)(builder); - }) - - } - if ((trComputePhase.kind == 'TrComputePhase_tr_phase_compute_vm')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - builder.storeBit(trComputePhase.success); - builder.storeBit(trComputePhase.msg_state_used); - builder.storeBit(trComputePhase.account_activated); - storeGrams(trComputePhase.gas_fees)(builder); - let cell1 = beginCell(); - storeVarUInteger(trComputePhase.gas_used)(cell1); - storeVarUInteger(trComputePhase.gas_limit)(cell1); - storeMaybe(trComputePhase.gas_credit, ((arg: VarUInteger) => { - return ((builder: Builder) => { - storeVarUInteger(arg)(builder); - }) - - }))(cell1); - cell1.storeInt(trComputePhase.mode, 8); - cell1.storeInt(trComputePhase.exit_code, 32); - storeMaybe(trComputePhase.exit_arg, ((arg: number) => { - return ((builder: Builder) => { - builder.storeInt(arg, 32); - }) - - }))(cell1); - cell1.storeUint(trComputePhase.vm_steps, 32); - cell1.storeBits(trComputePhase.vm_init_state_hash); - cell1.storeBits(trComputePhase.vm_final_state_hash); - builder.storeRef(cell1); - }) - - } - throw new Error('Expected one of "TrComputePhase_tr_phase_compute_skipped", "TrComputePhase_tr_phase_compute_vm" in loading "TrComputePhase", but data does not satisfy any constructor'); -} - -// cskip_no_state$00 = ComputeSkipReason; - -// cskip_bad_state$01 = ComputeSkipReason; - -// cskip_no_gas$10 = ComputeSkipReason; - -// cskip_suspended$110 = ComputeSkipReason; - -export function loadComputeSkipReason(slice: Slice): ComputeSkipReason { - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b00))) { - slice.loadUint(2); - return { - kind: 'ComputeSkipReason_cskip_no_state', - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b01))) { - slice.loadUint(2); - return { - kind: 'ComputeSkipReason_cskip_bad_state', - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b10))) { - slice.loadUint(2); - return { - kind: 'ComputeSkipReason_cskip_no_gas', - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b110))) { - slice.loadUint(3); - return { - kind: 'ComputeSkipReason_cskip_suspended', - } - - } - throw new Error('Expected one of "ComputeSkipReason_cskip_no_state", "ComputeSkipReason_cskip_bad_state", "ComputeSkipReason_cskip_no_gas", "ComputeSkipReason_cskip_suspended" in loading "ComputeSkipReason", but data does not satisfy any constructor'); -} - -export function storeComputeSkipReason(computeSkipReason: ComputeSkipReason): (builder: Builder) => void { - if ((computeSkipReason.kind == 'ComputeSkipReason_cskip_no_state')) { - return ((builder: Builder) => { - builder.storeUint(0b00, 2); - }) - - } - if ((computeSkipReason.kind == 'ComputeSkipReason_cskip_bad_state')) { - return ((builder: Builder) => { - builder.storeUint(0b01, 2); - }) - - } - if ((computeSkipReason.kind == 'ComputeSkipReason_cskip_no_gas')) { - return ((builder: Builder) => { - builder.storeUint(0b10, 2); - }) - - } - if ((computeSkipReason.kind == 'ComputeSkipReason_cskip_suspended')) { - return ((builder: Builder) => { - builder.storeUint(0b110, 3); - }) - - } - throw new Error('Expected one of "ComputeSkipReason_cskip_no_state", "ComputeSkipReason_cskip_bad_state", "ComputeSkipReason_cskip_no_gas", "ComputeSkipReason_cskip_suspended" in loading "ComputeSkipReason", but data does not satisfy any constructor'); -} - -/* -tr_phase_action$_ success:Bool valid:Bool no_funds:Bool - status_change:AccStatusChange - total_fwd_fees:(Maybe Grams) total_action_fees:(Maybe Grams) - result_code:int32 result_arg:(Maybe int32) tot_actions:uint16 - spec_actions:uint16 skipped_actions:uint16 msgs_created:uint16 - action_list_hash:bits256 tot_msg_size:StorageUsedShort - = TrActionPhase; -*/ - -export function loadTrActionPhase(slice: Slice): TrActionPhase { - let success: boolean = slice.loadBoolean(); - let valid: boolean = slice.loadBoolean(); - let no_funds: boolean = slice.loadBoolean(); - let status_change: AccStatusChange = loadAccStatusChange(slice); - let total_fwd_fees: Maybe = loadMaybe(slice, loadGrams); - let total_action_fees: Maybe = loadMaybe(slice, loadGrams); - let result_code: number = slice.loadInt(32); - let result_arg: Maybe = loadMaybe(slice, ((slice: Slice) => { - return slice.loadInt(32) - - })); - let tot_actions: number = slice.loadUint(16); - let spec_actions: number = slice.loadUint(16); - let skipped_actions: number = slice.loadUint(16); - let msgs_created: number = slice.loadUint(16); - let action_list_hash: BitString = slice.loadBits(256); - let tot_msg_size: StorageUsedShort = loadStorageUsedShort(slice); - return { - kind: 'TrActionPhase', - success: success, - valid: valid, - no_funds: no_funds, - status_change: status_change, - total_fwd_fees: total_fwd_fees, - total_action_fees: total_action_fees, - result_code: result_code, - result_arg: result_arg, - tot_actions: tot_actions, - spec_actions: spec_actions, - skipped_actions: skipped_actions, - msgs_created: msgs_created, - action_list_hash: action_list_hash, - tot_msg_size: tot_msg_size, - } - -} - -export function storeTrActionPhase(trActionPhase: TrActionPhase): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeBit(trActionPhase.success); - builder.storeBit(trActionPhase.valid); - builder.storeBit(trActionPhase.no_funds); - storeAccStatusChange(trActionPhase.status_change)(builder); - storeMaybe(trActionPhase.total_fwd_fees, storeGrams)(builder); - storeMaybe(trActionPhase.total_action_fees, storeGrams)(builder); - builder.storeInt(trActionPhase.result_code, 32); - storeMaybe(trActionPhase.result_arg, ((arg: number) => { - return ((builder: Builder) => { - builder.storeInt(arg, 32); - }) - - }))(builder); - builder.storeUint(trActionPhase.tot_actions, 16); - builder.storeUint(trActionPhase.spec_actions, 16); - builder.storeUint(trActionPhase.skipped_actions, 16); - builder.storeUint(trActionPhase.msgs_created, 16); - builder.storeBits(trActionPhase.action_list_hash); - storeStorageUsedShort(trActionPhase.tot_msg_size)(builder); - }) - -} - -// tr_phase_bounce_negfunds$00 = TrBouncePhase; - -/* -tr_phase_bounce_nofunds$01 msg_size:StorageUsedShort - req_fwd_fees:Grams = TrBouncePhase; -*/ - -/* -tr_phase_bounce_ok$1 msg_size:StorageUsedShort - msg_fees:Grams fwd_fees:Grams = TrBouncePhase; -*/ - -export function loadTrBouncePhase(slice: Slice): TrBouncePhase { - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b00))) { - slice.loadUint(2); - return { - kind: 'TrBouncePhase_tr_phase_bounce_negfunds', - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b01))) { - slice.loadUint(2); - let msg_size: StorageUsedShort = loadStorageUsedShort(slice); - let req_fwd_fees: Grams = loadGrams(slice); - return { - kind: 'TrBouncePhase_tr_phase_bounce_nofunds', - msg_size: msg_size, - req_fwd_fees: req_fwd_fees, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let msg_size: StorageUsedShort = loadStorageUsedShort(slice); - let msg_fees: Grams = loadGrams(slice); - let fwd_fees: Grams = loadGrams(slice); - return { - kind: 'TrBouncePhase_tr_phase_bounce_ok', - msg_size: msg_size, - msg_fees: msg_fees, - fwd_fees: fwd_fees, - } - - } - throw new Error('Expected one of "TrBouncePhase_tr_phase_bounce_negfunds", "TrBouncePhase_tr_phase_bounce_nofunds", "TrBouncePhase_tr_phase_bounce_ok" in loading "TrBouncePhase", but data does not satisfy any constructor'); -} - -export function storeTrBouncePhase(trBouncePhase: TrBouncePhase): (builder: Builder) => void { - if ((trBouncePhase.kind == 'TrBouncePhase_tr_phase_bounce_negfunds')) { - return ((builder: Builder) => { - builder.storeUint(0b00, 2); - }) - - } - if ((trBouncePhase.kind == 'TrBouncePhase_tr_phase_bounce_nofunds')) { - return ((builder: Builder) => { - builder.storeUint(0b01, 2); - storeStorageUsedShort(trBouncePhase.msg_size)(builder); - storeGrams(trBouncePhase.req_fwd_fees)(builder); - }) - - } - if ((trBouncePhase.kind == 'TrBouncePhase_tr_phase_bounce_ok')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - storeStorageUsedShort(trBouncePhase.msg_size)(builder); - storeGrams(trBouncePhase.msg_fees)(builder); - storeGrams(trBouncePhase.fwd_fees)(builder); - }) - - } - throw new Error('Expected one of "TrBouncePhase_tr_phase_bounce_negfunds", "TrBouncePhase_tr_phase_bounce_nofunds", "TrBouncePhase_tr_phase_bounce_ok" in loading "TrBouncePhase", but data does not satisfy any constructor'); -} - -/* -trans_ord$0000 credit_first:Bool - storage_ph:(Maybe TrStoragePhase) - credit_ph:(Maybe TrCreditPhase) - compute_ph:TrComputePhase action:(Maybe ^TrActionPhase) - aborted:Bool bounce:(Maybe TrBouncePhase) - destroyed:Bool - = TransactionDescr; -*/ - -/* -trans_storage$0001 storage_ph:TrStoragePhase - = TransactionDescr; -*/ - -/* -trans_tick_tock$001 is_tock:Bool storage_ph:TrStoragePhase - compute_ph:TrComputePhase action:(Maybe ^TrActionPhase) - aborted:Bool destroyed:Bool = TransactionDescr; -*/ - -/* -trans_split_prepare$0100 split_info:SplitMergeInfo - storage_ph:(Maybe TrStoragePhase) - compute_ph:TrComputePhase action:(Maybe ^TrActionPhase) - aborted:Bool destroyed:Bool - = TransactionDescr; -*/ - -/* -trans_split_install$0101 split_info:SplitMergeInfo - prepare_transaction:^Transaction - installed:Bool = TransactionDescr; -*/ - -/* -trans_merge_prepare$0110 split_info:SplitMergeInfo - storage_ph:TrStoragePhase aborted:Bool - = TransactionDescr; -*/ - -/* -trans_merge_install$0111 split_info:SplitMergeInfo - prepare_transaction:^Transaction - storage_ph:(Maybe TrStoragePhase) - credit_ph:(Maybe TrCreditPhase) - compute_ph:TrComputePhase action:(Maybe ^TrActionPhase) - aborted:Bool destroyed:Bool - = TransactionDescr; -*/ - -export function loadTransactionDescr(slice: Slice): TransactionDescr { - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0b0000))) { - slice.loadUint(4); - let credit_first: boolean = slice.loadBoolean(); - let storage_ph: Maybe = loadMaybe(slice, loadTrStoragePhase); - let credit_ph: Maybe = loadMaybe(slice, loadTrCreditPhase); - let compute_ph: TrComputePhase = loadTrComputePhase(slice); - let action: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadTrActionPhase(slice1) - - })); - let aborted: boolean = slice.loadBoolean(); - let bounce: Maybe = loadMaybe(slice, loadTrBouncePhase); - let destroyed: boolean = slice.loadBoolean(); - return { - kind: 'TransactionDescr_trans_ord', - credit_first: credit_first, - storage_ph: storage_ph, - credit_ph: credit_ph, - compute_ph: compute_ph, - action: action, - aborted: aborted, - bounce: bounce, - destroyed: destroyed, - } - - } - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0b0001))) { - slice.loadUint(4); - let storage_ph: TrStoragePhase = loadTrStoragePhase(slice); - return { - kind: 'TransactionDescr_trans_storage', - storage_ph: storage_ph, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b001))) { - slice.loadUint(3); - let is_tock: boolean = slice.loadBoolean(); - let storage_ph: TrStoragePhase = loadTrStoragePhase(slice); - let compute_ph: TrComputePhase = loadTrComputePhase(slice); - let action: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadTrActionPhase(slice1) - - })); - let aborted: boolean = slice.loadBoolean(); - let destroyed: boolean = slice.loadBoolean(); - return { - kind: 'TransactionDescr_trans_tick_tock', - is_tock: is_tock, - storage_ph: storage_ph, - compute_ph: compute_ph, - action: action, - aborted: aborted, - destroyed: destroyed, - } - - } - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0b0100))) { - slice.loadUint(4); - let split_info: SplitMergeInfo = loadSplitMergeInfo(slice); - let storage_ph: Maybe = loadMaybe(slice, loadTrStoragePhase); - let compute_ph: TrComputePhase = loadTrComputePhase(slice); - let action: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadTrActionPhase(slice1) - - })); - let aborted: boolean = slice.loadBoolean(); - let destroyed: boolean = slice.loadBoolean(); - return { - kind: 'TransactionDescr_trans_split_prepare', - split_info: split_info, - storage_ph: storage_ph, - compute_ph: compute_ph, - action: action, - aborted: aborted, - destroyed: destroyed, - } - - } - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0b0101))) { - slice.loadUint(4); - let split_info: SplitMergeInfo = loadSplitMergeInfo(slice); - let slice1 = slice.loadRef().beginParse(); - let prepare_transaction: Transaction = loadTransaction(slice1); - let installed: boolean = slice.loadBoolean(); - return { - kind: 'TransactionDescr_trans_split_install', - split_info: split_info, - prepare_transaction: prepare_transaction, - installed: installed, - } - - } - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0b0110))) { - slice.loadUint(4); - let split_info: SplitMergeInfo = loadSplitMergeInfo(slice); - let storage_ph: TrStoragePhase = loadTrStoragePhase(slice); - let aborted: boolean = slice.loadBoolean(); - return { - kind: 'TransactionDescr_trans_merge_prepare', - split_info: split_info, - storage_ph: storage_ph, - aborted: aborted, - } - - } - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0b0111))) { - slice.loadUint(4); - let split_info: SplitMergeInfo = loadSplitMergeInfo(slice); - let slice1 = slice.loadRef().beginParse(); - let prepare_transaction: Transaction = loadTransaction(slice1); - let storage_ph: Maybe = loadMaybe(slice, loadTrStoragePhase); - let credit_ph: Maybe = loadMaybe(slice, loadTrCreditPhase); - let compute_ph: TrComputePhase = loadTrComputePhase(slice); - let action: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadTrActionPhase(slice1) - - })); - let aborted: boolean = slice.loadBoolean(); - let destroyed: boolean = slice.loadBoolean(); - return { - kind: 'TransactionDescr_trans_merge_install', - split_info: split_info, - prepare_transaction: prepare_transaction, - storage_ph: storage_ph, - credit_ph: credit_ph, - compute_ph: compute_ph, - action: action, - aborted: aborted, - destroyed: destroyed, - } - - } - throw new Error('Expected one of "TransactionDescr_trans_ord", "TransactionDescr_trans_storage", "TransactionDescr_trans_tick_tock", "TransactionDescr_trans_split_prepare", "TransactionDescr_trans_split_install", "TransactionDescr_trans_merge_prepare", "TransactionDescr_trans_merge_install" in loading "TransactionDescr", but data does not satisfy any constructor'); -} - -export function storeTransactionDescr(transactionDescr: TransactionDescr): (builder: Builder) => void { - if ((transactionDescr.kind == 'TransactionDescr_trans_ord')) { - return ((builder: Builder) => { - builder.storeUint(0b0000, 4); - builder.storeBit(transactionDescr.credit_first); - storeMaybe(transactionDescr.storage_ph, storeTrStoragePhase)(builder); - storeMaybe(transactionDescr.credit_ph, storeTrCreditPhase)(builder); - storeTrComputePhase(transactionDescr.compute_ph)(builder); - storeMaybe(transactionDescr.action, ((arg: TrActionPhase) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeTrActionPhase(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - builder.storeBit(transactionDescr.aborted); - storeMaybe(transactionDescr.bounce, storeTrBouncePhase)(builder); - builder.storeBit(transactionDescr.destroyed); - }) - - } - if ((transactionDescr.kind == 'TransactionDescr_trans_storage')) { - return ((builder: Builder) => { - builder.storeUint(0b0001, 4); - storeTrStoragePhase(transactionDescr.storage_ph)(builder); - }) - - } - if ((transactionDescr.kind == 'TransactionDescr_trans_tick_tock')) { - return ((builder: Builder) => { - builder.storeUint(0b001, 3); - builder.storeBit(transactionDescr.is_tock); - storeTrStoragePhase(transactionDescr.storage_ph)(builder); - storeTrComputePhase(transactionDescr.compute_ph)(builder); - storeMaybe(transactionDescr.action, ((arg: TrActionPhase) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeTrActionPhase(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - builder.storeBit(transactionDescr.aborted); - builder.storeBit(transactionDescr.destroyed); - }) - - } - if ((transactionDescr.kind == 'TransactionDescr_trans_split_prepare')) { - return ((builder: Builder) => { - builder.storeUint(0b0100, 4); - storeSplitMergeInfo(transactionDescr.split_info)(builder); - storeMaybe(transactionDescr.storage_ph, storeTrStoragePhase)(builder); - storeTrComputePhase(transactionDescr.compute_ph)(builder); - storeMaybe(transactionDescr.action, ((arg: TrActionPhase) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeTrActionPhase(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - builder.storeBit(transactionDescr.aborted); - builder.storeBit(transactionDescr.destroyed); - }) - - } - if ((transactionDescr.kind == 'TransactionDescr_trans_split_install')) { - return ((builder: Builder) => { - builder.storeUint(0b0101, 4); - storeSplitMergeInfo(transactionDescr.split_info)(builder); - let cell1 = beginCell(); - storeTransaction(transactionDescr.prepare_transaction)(cell1); - builder.storeRef(cell1); - builder.storeBit(transactionDescr.installed); - }) - - } - if ((transactionDescr.kind == 'TransactionDescr_trans_merge_prepare')) { - return ((builder: Builder) => { - builder.storeUint(0b0110, 4); - storeSplitMergeInfo(transactionDescr.split_info)(builder); - storeTrStoragePhase(transactionDescr.storage_ph)(builder); - builder.storeBit(transactionDescr.aborted); - }) - - } - if ((transactionDescr.kind == 'TransactionDescr_trans_merge_install')) { - return ((builder: Builder) => { - builder.storeUint(0b0111, 4); - storeSplitMergeInfo(transactionDescr.split_info)(builder); - let cell1 = beginCell(); - storeTransaction(transactionDescr.prepare_transaction)(cell1); - builder.storeRef(cell1); - storeMaybe(transactionDescr.storage_ph, storeTrStoragePhase)(builder); - storeMaybe(transactionDescr.credit_ph, storeTrCreditPhase)(builder); - storeTrComputePhase(transactionDescr.compute_ph)(builder); - storeMaybe(transactionDescr.action, ((arg: TrActionPhase) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeTrActionPhase(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - builder.storeBit(transactionDescr.aborted); - builder.storeBit(transactionDescr.destroyed); - }) - - } - throw new Error('Expected one of "TransactionDescr_trans_ord", "TransactionDescr_trans_storage", "TransactionDescr_trans_tick_tock", "TransactionDescr_trans_split_prepare", "TransactionDescr_trans_split_install", "TransactionDescr_trans_merge_prepare", "TransactionDescr_trans_merge_install" in loading "TransactionDescr", but data does not satisfy any constructor'); -} - -/* -split_merge_info$_ cur_shard_pfx_len:(## 6) - acc_split_depth:(## 6) this_addr:bits256 sibling_addr:bits256 - = SplitMergeInfo; -*/ - -export function loadSplitMergeInfo(slice: Slice): SplitMergeInfo { - let cur_shard_pfx_len: number = slice.loadUint(6); - let acc_split_depth: number = slice.loadUint(6); - let this_addr: BitString = slice.loadBits(256); - let sibling_addr: BitString = slice.loadBits(256); - return { - kind: 'SplitMergeInfo', - cur_shard_pfx_len: cur_shard_pfx_len, - acc_split_depth: acc_split_depth, - this_addr: this_addr, - sibling_addr: sibling_addr, - } - -} - -export function storeSplitMergeInfo(splitMergeInfo: SplitMergeInfo): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(splitMergeInfo.cur_shard_pfx_len, 6); - builder.storeUint(splitMergeInfo.acc_split_depth, 6); - builder.storeBits(splitMergeInfo.this_addr); - builder.storeBits(splitMergeInfo.sibling_addr); - }) - -} - -/* -smc_info#076ef1ea actions:uint16 msgs_sent:uint16 - unixtime:uint32 block_lt:uint64 trans_lt:uint64 - rand_seed:bits256 balance_remaining:CurrencyCollection - myself:MsgAddressInt global_config:(Maybe Cell) = SmartContractInfo; -*/ - -export function loadSmartContractInfo(slice: Slice): SmartContractInfo { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x076ef1ea))) { - slice.loadUint(32); - let actions: number = slice.loadUint(16); - let msgs_sent: number = slice.loadUint(16); - let unixtime: number = slice.loadUint(32); - let block_lt: number = slice.loadUint(64); - let trans_lt: number = slice.loadUint(64); - let rand_seed: BitString = slice.loadBits(256); - let balance_remaining: CurrencyCollection = loadCurrencyCollection(slice); - let myself: Address = slice.loadAddress(); - let global_config: Maybe = loadMaybe(slice, ((slice: Slice) => { - return slice - - })); - return { - kind: 'SmartContractInfo', - actions: actions, - msgs_sent: msgs_sent, - unixtime: unixtime, - block_lt: block_lt, - trans_lt: trans_lt, - rand_seed: rand_seed, - balance_remaining: balance_remaining, - myself: myself, - global_config: global_config, - } - - } - throw new Error('Expected one of "SmartContractInfo" in loading "SmartContractInfo", but data does not satisfy any constructor'); -} - -export function storeSmartContractInfo(smartContractInfo: SmartContractInfo): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x076ef1ea, 32); - builder.storeUint(smartContractInfo.actions, 16); - builder.storeUint(smartContractInfo.msgs_sent, 16); - builder.storeUint(smartContractInfo.unixtime, 32); - builder.storeUint(smartContractInfo.block_lt, 64); - builder.storeUint(smartContractInfo.trans_lt, 64); - builder.storeBits(smartContractInfo.rand_seed); - storeCurrencyCollection(smartContractInfo.balance_remaining)(builder); - builder.storeAddress(smartContractInfo.myself); - storeMaybe(smartContractInfo.global_config, ((arg: Slice) => { - return ((builder: Builder) => { - builder.storeSlice(arg); - }) - - }))(builder); - }) - -} - -// out_list_empty$_ = OutList 0; - -/* -out_list$_ {n:#} prev:^(OutList n) action:OutAction - = OutList (n + 1); -*/ - -export function loadOutList(slice: Slice, arg0: number): OutList { - if ((arg0 == 0)) { - return { - kind: 'OutList_out_list_empty', - } - - } - if (true) { - let slice1 = slice.loadRef().beginParse(); - let prev: OutList = loadOutList(slice1, (arg0 - 1)); - let action: OutAction = loadOutAction(slice); - return { - kind: 'OutList_out_list', - n: (arg0 - 1), - prev: prev, - action: action, - } - - } - throw new Error('Expected one of "OutList_out_list_empty", "OutList_out_list" in loading "OutList", but data does not satisfy any constructor'); -} - -export function storeOutList(outList: OutList): (builder: Builder) => void { - if ((outList.kind == 'OutList_out_list_empty')) { - return ((builder: Builder) => { - }) - - } - if ((outList.kind == 'OutList_out_list')) { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeOutList(outList.prev)(cell1); - builder.storeRef(cell1); - storeOutAction(outList.action)(builder); - }) - - } - throw new Error('Expected one of "OutList_out_list_empty", "OutList_out_list" in loading "OutList", but data does not satisfy any constructor'); -} - -/* -action_send_msg#0ec3c86d mode:(## 8) - out_msg:^(MessageRelaxed Any) = OutAction; -*/ - -// action_set_code#ad4de08e new_code:^Cell = OutAction; - -/* -action_reserve_currency#36e6b809 mode:(## 8) - currency:CurrencyCollection = OutAction; -*/ - -/* -action_change_library#26fa1dd4 mode:(## 7) - libref:LibRef = OutAction; -*/ - -export function loadOutAction(slice: Slice): OutAction { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x0ec3c86d))) { - slice.loadUint(32); - let mode: number = slice.loadUint(8); - let slice1 = slice.loadRef().beginParse(); - let out_msg: MessageRelaxed = loadMessageRelaxed(slice1, ((slice: Slice) => { - return slice - - })); - return { - kind: 'OutAction_action_send_msg', - mode: mode, - out_msg: out_msg, - } - - } - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0xad4de08e))) { - slice.loadUint(32); - let slice1 = slice.loadRef().beginParse(); - let new_code: Slice = slice1; - return { - kind: 'OutAction_action_set_code', - new_code: new_code, - } - - } - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x36e6b809))) { - slice.loadUint(32); - let mode: number = slice.loadUint(8); - let currency: CurrencyCollection = loadCurrencyCollection(slice); - return { - kind: 'OutAction_action_reserve_currency', - mode: mode, - currency: currency, - } - - } - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x26fa1dd4))) { - slice.loadUint(32); - let mode: number = slice.loadUint(7); - let libref: LibRef = loadLibRef(slice); - return { - kind: 'OutAction_action_change_library', - mode: mode, - libref: libref, - } - - } - throw new Error('Expected one of "OutAction_action_send_msg", "OutAction_action_set_code", "OutAction_action_reserve_currency", "OutAction_action_change_library" in loading "OutAction", but data does not satisfy any constructor'); -} - -export function storeOutAction(outAction: OutAction): (builder: Builder) => void { - if ((outAction.kind == 'OutAction_action_send_msg')) { - return ((builder: Builder) => { - builder.storeUint(0x0ec3c86d, 32); - builder.storeUint(outAction.mode, 8); - let cell1 = beginCell(); - storeMessageRelaxed(outAction.out_msg, ((arg: Slice) => { - return ((builder: Builder) => { - builder.storeSlice(arg); - }) - - }))(cell1); - builder.storeRef(cell1); - }) - - } - if ((outAction.kind == 'OutAction_action_set_code')) { - return ((builder: Builder) => { - builder.storeUint(0xad4de08e, 32); - let cell1 = beginCell(); - cell1.storeSlice(outAction.new_code); - builder.storeRef(cell1); - }) - - } - if ((outAction.kind == 'OutAction_action_reserve_currency')) { - return ((builder: Builder) => { - builder.storeUint(0x36e6b809, 32); - builder.storeUint(outAction.mode, 8); - storeCurrencyCollection(outAction.currency)(builder); - }) - - } - if ((outAction.kind == 'OutAction_action_change_library')) { - return ((builder: Builder) => { - builder.storeUint(0x26fa1dd4, 32); - builder.storeUint(outAction.mode, 7); - storeLibRef(outAction.libref)(builder); - }) - - } - throw new Error('Expected one of "OutAction_action_send_msg", "OutAction_action_set_code", "OutAction_action_reserve_currency", "OutAction_action_change_library" in loading "OutAction", but data does not satisfy any constructor'); -} - -// libref_hash$0 lib_hash:bits256 = LibRef; - -// libref_ref$1 library:^Cell = LibRef; - -export function loadLibRef(slice: Slice): LibRef { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let lib_hash: BitString = slice.loadBits(256); - return { - kind: 'LibRef_libref_hash', - lib_hash: lib_hash, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let slice1 = slice.loadRef().beginParse(); - let library: Slice = slice1; - return { - kind: 'LibRef_libref_ref', - library: library, - } - - } - throw new Error('Expected one of "LibRef_libref_hash", "LibRef_libref_ref" in loading "LibRef", but data does not satisfy any constructor'); -} - -export function storeLibRef(libRef: LibRef): (builder: Builder) => void { - if ((libRef.kind == 'LibRef_libref_hash')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - builder.storeBits(libRef.lib_hash); - }) - - } - if ((libRef.kind == 'LibRef_libref_ref')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - let cell1 = beginCell(); - cell1.storeSlice(libRef.library); - builder.storeRef(cell1); - }) - - } - throw new Error('Expected one of "LibRef_libref_hash", "LibRef_libref_ref" in loading "LibRef", but data does not satisfy any constructor'); -} - -// out_list_node$_ prev:^Cell action:OutAction = OutListNode; - -export function loadOutListNode(slice: Slice): OutListNode { - let slice1 = slice.loadRef().beginParse(); - let prev: Slice = slice1; - let action: OutAction = loadOutAction(slice); - return { - kind: 'OutListNode', - prev: prev, - action: action, - } - -} - -export function storeOutListNode(outListNode: OutListNode): (builder: Builder) => void { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeSlice(outListNode.prev); - builder.storeRef(cell1); - storeOutAction(outListNode.action)(builder); - }) - -} - -/* -shard_ident$00 shard_pfx_bits:(#<= 60) - workchain_id:int32 shard_prefix:uint64 = ShardIdent; -*/ - -export function loadShardIdent(slice: Slice): ShardIdent { - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b00))) { - slice.loadUint(2); - let shard_pfx_bits: number = slice.loadUint(bitLen(60)); - let workchain_id: number = slice.loadInt(32); - let shard_prefix: number = slice.loadUint(64); - return { - kind: 'ShardIdent', - shard_pfx_bits: shard_pfx_bits, - workchain_id: workchain_id, - shard_prefix: shard_prefix, - } - - } - throw new Error('Expected one of "ShardIdent" in loading "ShardIdent", but data does not satisfy any constructor'); -} - -export function storeShardIdent(shardIdent: ShardIdent): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0b00, 2); - builder.storeUint(shardIdent.shard_pfx_bits, bitLen(60)); - builder.storeInt(shardIdent.workchain_id, 32); - builder.storeUint(shardIdent.shard_prefix, 64); - }) - -} - -/* -ext_blk_ref$_ end_lt:uint64 - seq_no:uint32 root_hash:bits256 file_hash:bits256 - = ExtBlkRef; -*/ - -export function loadExtBlkRef(slice: Slice): ExtBlkRef { - let end_lt: number = slice.loadUint(64); - let seq_no: number = slice.loadUint(32); - let root_hash: BitString = slice.loadBits(256); - let file_hash: BitString = slice.loadBits(256); - return { - kind: 'ExtBlkRef', - end_lt: end_lt, - seq_no: seq_no, - root_hash: root_hash, - file_hash: file_hash, - } - -} - -export function storeExtBlkRef(extBlkRef: ExtBlkRef): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(extBlkRef.end_lt, 64); - builder.storeUint(extBlkRef.seq_no, 32); - builder.storeBits(extBlkRef.root_hash); - builder.storeBits(extBlkRef.file_hash); - }) - -} - -/* -block_id_ext$_ shard_id:ShardIdent seq_no:uint32 - root_hash:bits256 file_hash:bits256 = BlockIdExt; -*/ - -export function loadBlockIdExt(slice: Slice): BlockIdExt { - let shard_id: ShardIdent = loadShardIdent(slice); - let seq_no: number = slice.loadUint(32); - let root_hash: BitString = slice.loadBits(256); - let file_hash: BitString = slice.loadBits(256); - return { - kind: 'BlockIdExt', - shard_id: shard_id, - seq_no: seq_no, - root_hash: root_hash, - file_hash: file_hash, - } - -} - -export function storeBlockIdExt(blockIdExt: BlockIdExt): (builder: Builder) => void { - return ((builder: Builder) => { - storeShardIdent(blockIdExt.shard_id)(builder); - builder.storeUint(blockIdExt.seq_no, 32); - builder.storeBits(blockIdExt.root_hash); - builder.storeBits(blockIdExt.file_hash); - }) - -} - -// master_info$_ master:ExtBlkRef = BlkMasterInfo; - -export function loadBlkMasterInfo(slice: Slice): BlkMasterInfo { - let master: ExtBlkRef = loadExtBlkRef(slice); - return { - kind: 'BlkMasterInfo', - master: master, - } - -} - -export function storeBlkMasterInfo(blkMasterInfo: BlkMasterInfo): (builder: Builder) => void { - return ((builder: Builder) => { - storeExtBlkRef(blkMasterInfo.master)(builder); - }) - -} - -/* -shard_state#9023afe2 global_id:int32 - shard_id:ShardIdent - seq_no:uint32 vert_seq_no:# - gen_utime:uint32 gen_lt:uint64 - min_ref_mc_seqno:uint32 - out_msg_queue_info:^OutMsgQueueInfo - before_split:(## 1) - accounts:^ShardAccounts - ^[ overload_history:uint64 underload_history:uint64 - total_balance:CurrencyCollection - total_validator_fees:CurrencyCollection - libraries:(HashmapE 256 LibDescr) - master_ref:(Maybe BlkMasterInfo) ] - custom:(Maybe ^McStateExtra) - = ShardStateUnsplit; -*/ - -export function loadShardStateUnsplit(slice: Slice): ShardStateUnsplit { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x9023afe2))) { - slice.loadUint(32); - let global_id: number = slice.loadInt(32); - let shard_id: ShardIdent = loadShardIdent(slice); - let seq_no: number = slice.loadUint(32); - let vert_seq_no: number = slice.loadUint(32); - let gen_utime: number = slice.loadUint(32); - let gen_lt: number = slice.loadUint(64); - let min_ref_mc_seqno: number = slice.loadUint(32); - let slice1 = slice.loadRef().beginParse(); - let out_msg_queue_info: OutMsgQueueInfo = loadOutMsgQueueInfo(slice1); - let before_split: number = slice.loadUint(1); - let slice2 = slice.loadRef().beginParse(); - let accounts: ShardAccounts = loadShardAccounts(slice2); - let slice3 = slice.loadRef().beginParse(); - let overload_history: number = slice3.loadUint(64); - let underload_history: number = slice3.loadUint(64); - let total_balance: CurrencyCollection = loadCurrencyCollection(slice3); - let total_validator_fees: CurrencyCollection = loadCurrencyCollection(slice3); - let libraries: HashmapE = loadHashmapE(slice3, 256, loadLibDescr); - let master_ref: Maybe = loadMaybe(slice3, loadBlkMasterInfo); - let custom: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadMcStateExtra(slice1) - - })); - return { - kind: 'ShardStateUnsplit', - global_id: global_id, - shard_id: shard_id, - seq_no: seq_no, - vert_seq_no: vert_seq_no, - gen_utime: gen_utime, - gen_lt: gen_lt, - min_ref_mc_seqno: min_ref_mc_seqno, - out_msg_queue_info: out_msg_queue_info, - before_split: before_split, - accounts: accounts, - overload_history: overload_history, - underload_history: underload_history, - total_balance: total_balance, - total_validator_fees: total_validator_fees, - libraries: libraries, - master_ref: master_ref, - custom: custom, - } - - } - throw new Error('Expected one of "ShardStateUnsplit" in loading "ShardStateUnsplit", but data does not satisfy any constructor'); -} - -export function storeShardStateUnsplit(shardStateUnsplit: ShardStateUnsplit): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x9023afe2, 32); - builder.storeInt(shardStateUnsplit.global_id, 32); - storeShardIdent(shardStateUnsplit.shard_id)(builder); - builder.storeUint(shardStateUnsplit.seq_no, 32); - builder.storeUint(shardStateUnsplit.vert_seq_no, 32); - builder.storeUint(shardStateUnsplit.gen_utime, 32); - builder.storeUint(shardStateUnsplit.gen_lt, 64); - builder.storeUint(shardStateUnsplit.min_ref_mc_seqno, 32); - let cell1 = beginCell(); - storeOutMsgQueueInfo(shardStateUnsplit.out_msg_queue_info)(cell1); - builder.storeRef(cell1); - builder.storeUint(shardStateUnsplit.before_split, 1); - let cell2 = beginCell(); - storeShardAccounts(shardStateUnsplit.accounts)(cell2); - builder.storeRef(cell2); - let cell3 = beginCell(); - cell3.storeUint(shardStateUnsplit.overload_history, 64); - cell3.storeUint(shardStateUnsplit.underload_history, 64); - storeCurrencyCollection(shardStateUnsplit.total_balance)(cell3); - storeCurrencyCollection(shardStateUnsplit.total_validator_fees)(cell3); - storeHashmapE(shardStateUnsplit.libraries, storeLibDescr)(cell3); - storeMaybe(shardStateUnsplit.master_ref, storeBlkMasterInfo)(cell3); - builder.storeRef(cell3); - storeMaybe(shardStateUnsplit.custom, ((arg: McStateExtra) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeMcStateExtra(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - -} - -// split_state#5f327da5 left:^ShardStateUnsplit right:^ShardStateUnsplit = ShardState; - -// _ ShardStateUnsplit = ShardState; - -export function loadShardState(slice: Slice): ShardState { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x5f327da5))) { - slice.loadUint(32); - let slice1 = slice.loadRef().beginParse(); - let left: ShardStateUnsplit = loadShardStateUnsplit(slice1); - let slice2 = slice.loadRef().beginParse(); - let right: ShardStateUnsplit = loadShardStateUnsplit(slice2); - return { - kind: 'ShardState_split_state', - left: left, - right: right, - } - - } - if (true) { - let anon0: ShardStateUnsplit = loadShardStateUnsplit(slice); - return { - kind: 'ShardState__', - anon0: anon0, - } - - } - throw new Error('Expected one of "ShardState_split_state", "ShardState__" in loading "ShardState", but data does not satisfy any constructor'); -} - -export function storeShardState(shardState: ShardState): (builder: Builder) => void { - if ((shardState.kind == 'ShardState_split_state')) { - return ((builder: Builder) => { - builder.storeUint(0x5f327da5, 32); - let cell1 = beginCell(); - storeShardStateUnsplit(shardState.left)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeShardStateUnsplit(shardState.right)(cell2); - builder.storeRef(cell2); - }) - - } - if ((shardState.kind == 'ShardState__')) { - return ((builder: Builder) => { - storeShardStateUnsplit(shardState.anon0)(builder); - }) - - } - throw new Error('Expected one of "ShardState_split_state", "ShardState__" in loading "ShardState", but data does not satisfy any constructor'); -} - -/* -shared_lib_descr$00 lib:^Cell publishers:(Hashmap 256 True) - = LibDescr; -*/ - -export function loadLibDescr(slice: Slice): LibDescr { - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b00))) { - slice.loadUint(2); - let slice1 = slice.loadRef().beginParse(); - let lib: Slice = slice1; - let publishers: Hashmap = loadHashmap(slice, 256, loadTrue); - return { - kind: 'LibDescr', - lib: lib, - publishers: publishers, - } - - } - throw new Error('Expected one of "LibDescr" in loading "LibDescr", but data does not satisfy any constructor'); -} - -export function storeLibDescr(libDescr: LibDescr): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0b00, 2); - let cell1 = beginCell(); - cell1.storeSlice(libDescr.lib); - builder.storeRef(cell1); - storeHashmap(libDescr.publishers, storeTrue)(builder); - }) - -} - -/* -block_info#9bc7a987 version:uint32 - not_master:(## 1) - after_merge:(## 1) before_split:(## 1) - after_split:(## 1) - want_split:Bool want_merge:Bool - key_block:Bool vert_seqno_incr:(## 1) - flags:(## 8) { flags <= 1 } - seq_no:# vert_seq_no:# { vert_seq_no >= vert_seqno_incr } - { prev_seq_no:# } { ~prev_seq_no + 1 = seq_no } - shard:ShardIdent gen_utime:uint32 - start_lt:uint64 end_lt:uint64 - gen_validator_list_hash_short:uint32 - gen_catchain_seqno:uint32 - min_ref_mc_seqno:uint32 - prev_key_block_seqno:uint32 - gen_software:flags . 0?GlobalVersion - master_ref:not_master?^BlkMasterInfo - prev_ref:^(BlkPrevInfo after_merge) - prev_vert_ref:vert_seqno_incr?^(BlkPrevInfo 0) - = BlockInfo; -*/ - -export function loadBlockInfo(slice: Slice): BlockInfo { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x9bc7a987))) { - slice.loadUint(32); - let version: number = slice.loadUint(32); - let not_master: number = slice.loadUint(1); - let after_merge: number = slice.loadUint(1); - let before_split: number = slice.loadUint(1); - let after_split: number = slice.loadUint(1); - let want_split: boolean = slice.loadBoolean(); - let want_merge: boolean = slice.loadBoolean(); - let key_block: boolean = slice.loadBoolean(); - let vert_seqno_incr: number = slice.loadUint(1); - let flags: number = slice.loadUint(8); - let seq_no: number = slice.loadUint(32); - let vert_seq_no: number = slice.loadUint(32); - let shard: ShardIdent = loadShardIdent(slice); - let gen_utime: number = slice.loadUint(32); - let start_lt: number = slice.loadUint(64); - let end_lt: number = slice.loadUint(64); - let gen_validator_list_hash_short: number = slice.loadUint(32); - let gen_catchain_seqno: number = slice.loadUint(32); - let min_ref_mc_seqno: number = slice.loadUint(32); - let prev_key_block_seqno: number = slice.loadUint(32); - let gen_software: GlobalVersion | undefined = ((flags & (1 << 0)) ? loadGlobalVersion(slice) : undefined); - let master_ref: BlkMasterInfo | undefined = (not_master ? ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadBlkMasterInfo(slice1) - - })(slice) : undefined); - let slice1 = slice.loadRef().beginParse(); - let prev_ref: BlkPrevInfo = loadBlkPrevInfo(slice1, after_merge); - let prev_vert_ref: BlkPrevInfo | undefined = (vert_seqno_incr ? ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadBlkPrevInfo(slice1, 0) - - })(slice) : undefined); - if ((!(flags <= 1))) { - throw new Error('Condition (flags <= 1) is not satisfied while loading "BlockInfo" for type "BlockInfo"'); - } - if ((!(vert_seq_no >= vert_seqno_incr))) { - throw new Error('Condition (vert_seq_no >= vert_seqno_incr) is not satisfied while loading "BlockInfo" for type "BlockInfo"'); - } - return { - kind: 'BlockInfo', - prev_seq_no: (seq_no - 1), - version: version, - not_master: not_master, - after_merge: after_merge, - before_split: before_split, - after_split: after_split, - want_split: want_split, - want_merge: want_merge, - key_block: key_block, - vert_seqno_incr: vert_seqno_incr, - flags: flags, - seq_no: seq_no, - vert_seq_no: vert_seq_no, - shard: shard, - gen_utime: gen_utime, - start_lt: start_lt, - end_lt: end_lt, - gen_validator_list_hash_short: gen_validator_list_hash_short, - gen_catchain_seqno: gen_catchain_seqno, - min_ref_mc_seqno: min_ref_mc_seqno, - prev_key_block_seqno: prev_key_block_seqno, - gen_software: gen_software, - master_ref: master_ref, - prev_ref: prev_ref, - prev_vert_ref: prev_vert_ref, - } - - } - throw new Error('Expected one of "BlockInfo" in loading "BlockInfo", but data does not satisfy any constructor'); -} - -export function storeBlockInfo(blockInfo: BlockInfo): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x9bc7a987, 32); - builder.storeUint(blockInfo.version, 32); - builder.storeUint(blockInfo.not_master, 1); - builder.storeUint(blockInfo.after_merge, 1); - builder.storeUint(blockInfo.before_split, 1); - builder.storeUint(blockInfo.after_split, 1); - builder.storeBit(blockInfo.want_split); - builder.storeBit(blockInfo.want_merge); - builder.storeBit(blockInfo.key_block); - builder.storeUint(blockInfo.vert_seqno_incr, 1); - builder.storeUint(blockInfo.flags, 8); - builder.storeUint(blockInfo.seq_no, 32); - builder.storeUint(blockInfo.vert_seq_no, 32); - storeShardIdent(blockInfo.shard)(builder); - builder.storeUint(blockInfo.gen_utime, 32); - builder.storeUint(blockInfo.start_lt, 64); - builder.storeUint(blockInfo.end_lt, 64); - builder.storeUint(blockInfo.gen_validator_list_hash_short, 32); - builder.storeUint(blockInfo.gen_catchain_seqno, 32); - builder.storeUint(blockInfo.min_ref_mc_seqno, 32); - builder.storeUint(blockInfo.prev_key_block_seqno, 32); - if ((blockInfo.gen_software != undefined)) { - storeGlobalVersion(blockInfo.gen_software)(builder); - } - if ((blockInfo.master_ref != undefined)) { - let cell1 = beginCell(); - storeBlkMasterInfo(blockInfo.master_ref)(cell1); - builder.storeRef(cell1); - - } - let cell1 = beginCell(); - storeBlkPrevInfo(blockInfo.prev_ref)(cell1); - builder.storeRef(cell1); - if ((blockInfo.prev_vert_ref != undefined)) { - let cell1 = beginCell(); - storeBlkPrevInfo(blockInfo.prev_vert_ref)(cell1); - builder.storeRef(cell1); - - } - if ((!(blockInfo.flags <= 1))) { - throw new Error('Condition (blockInfo.flags <= 1) is not satisfied while loading "BlockInfo" for type "BlockInfo"'); - } - if ((!(blockInfo.vert_seq_no >= blockInfo.vert_seqno_incr))) { - throw new Error('Condition (blockInfo.vert_seq_no >= blockInfo.vert_seqno_incr) is not satisfied while loading "BlockInfo" for type "BlockInfo"'); - } - }) - -} - -// prev_blk_info$_ prev:ExtBlkRef = BlkPrevInfo 0; - -// prev_blks_info$_ prev1:^ExtBlkRef prev2:^ExtBlkRef = BlkPrevInfo 1; - -export function loadBlkPrevInfo(slice: Slice, arg0: number): BlkPrevInfo { - if ((arg0 == 0)) { - let prev: ExtBlkRef = loadExtBlkRef(slice); - return { - kind: 'BlkPrevInfo_prev_blk_info', - prev: prev, - } - - } - if ((arg0 == 1)) { - let slice1 = slice.loadRef().beginParse(); - let prev1: ExtBlkRef = loadExtBlkRef(slice1); - let slice2 = slice.loadRef().beginParse(); - let prev2: ExtBlkRef = loadExtBlkRef(slice2); - return { - kind: 'BlkPrevInfo_prev_blks_info', - prev1: prev1, - prev2: prev2, - } - - } - throw new Error('Expected one of "BlkPrevInfo_prev_blk_info", "BlkPrevInfo_prev_blks_info" in loading "BlkPrevInfo", but data does not satisfy any constructor'); -} - -export function storeBlkPrevInfo(blkPrevInfo: BlkPrevInfo): (builder: Builder) => void { - if ((blkPrevInfo.kind == 'BlkPrevInfo_prev_blk_info')) { - return ((builder: Builder) => { - storeExtBlkRef(blkPrevInfo.prev)(builder); - }) - - } - if ((blkPrevInfo.kind == 'BlkPrevInfo_prev_blks_info')) { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeExtBlkRef(blkPrevInfo.prev1)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeExtBlkRef(blkPrevInfo.prev2)(cell2); - builder.storeRef(cell2); - }) - - } - throw new Error('Expected one of "BlkPrevInfo_prev_blk_info", "BlkPrevInfo_prev_blks_info" in loading "BlkPrevInfo", but data does not satisfy any constructor'); -} - -/* -block#11ef55aa global_id:int32 - info:^BlockInfo value_flow:^ValueFlow - state_update:^(MERKLE_UPDATE ShardState) - extra:^BlockExtra = Block; -*/ - -export function loadBlock(slice: Slice): Block { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x11ef55aa))) { - slice.loadUint(32); - let global_id: number = slice.loadInt(32); - let slice1 = slice.loadRef().beginParse(); - let info: BlockInfo = loadBlockInfo(slice1); - let slice2 = slice.loadRef().beginParse(); - let value_flow: ValueFlow = loadValueFlow(slice2); - let cell3 = slice.loadRef(); - let state_update = cell3; - let slice4 = slice.loadRef().beginParse(); - let extra: BlockExtra = loadBlockExtra(slice4); - return { - kind: 'Block', - global_id: global_id, - info: info, - value_flow: value_flow, - state_update: state_update, - extra: extra, - } - - } - throw new Error('Expected one of "Block" in loading "Block", but data does not satisfy any constructor'); -} - -export function storeBlock(block: Block): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x11ef55aa, 32); - builder.storeInt(block.global_id, 32); - let cell1 = beginCell(); - storeBlockInfo(block.info)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeValueFlow(block.value_flow)(cell2); - builder.storeRef(cell2); - builder.storeRef(block.state_update); - let cell4 = beginCell(); - storeBlockExtra(block.extra)(cell4); - builder.storeRef(cell4); - }) - -} - -/* -block_extra in_msg_descr:^InMsgDescr - out_msg_descr:^OutMsgDescr - account_blocks:^ShardAccountBlocks - rand_seed:bits256 - created_by:bits256 - custom:(Maybe ^McBlockExtra) = BlockExtra; -*/ - -export function loadBlockExtra(slice: Slice): BlockExtra { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x4a33f6fd))) { - slice.loadUint(32); - let slice1 = slice.loadRef().beginParse(); - let in_msg_descr: InMsgDescr = loadInMsgDescr(slice1); - let slice2 = slice.loadRef().beginParse(); - let out_msg_descr: OutMsgDescr = loadOutMsgDescr(slice2); - let slice3 = slice.loadRef().beginParse(); - let account_blocks: ShardAccountBlocks = loadShardAccountBlocks(slice3); - let rand_seed: BitString = slice.loadBits(256); - let created_by: BitString = slice.loadBits(256); - let custom: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadMcBlockExtra(slice1) - - })); - return { - kind: 'BlockExtra', - in_msg_descr: in_msg_descr, - out_msg_descr: out_msg_descr, - account_blocks: account_blocks, - rand_seed: rand_seed, - created_by: created_by, - custom: custom, - } - - } - throw new Error('Expected one of "BlockExtra" in loading "BlockExtra", but data does not satisfy any constructor'); -} - -export function storeBlockExtra(blockExtra: BlockExtra): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x4a33f6fd, 32); - let cell1 = beginCell(); - storeInMsgDescr(blockExtra.in_msg_descr)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeOutMsgDescr(blockExtra.out_msg_descr)(cell2); - builder.storeRef(cell2); - let cell3 = beginCell(); - storeShardAccountBlocks(blockExtra.account_blocks)(cell3); - builder.storeRef(cell3); - builder.storeBits(blockExtra.rand_seed); - builder.storeBits(blockExtra.created_by); - storeMaybe(blockExtra.custom, ((arg: McBlockExtra) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeMcBlockExtra(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - -} - -/* -value_flow#b8e48dfb ^[ from_prev_blk:CurrencyCollection - to_next_blk:CurrencyCollection - imported:CurrencyCollection - exported:CurrencyCollection ] - fees_collected:CurrencyCollection - ^[ - fees_imported:CurrencyCollection - recovered:CurrencyCollection - created:CurrencyCollection - minted:CurrencyCollection - ] = ValueFlow; -*/ - -/* -value_flow_v2#3ebf98b7 ^[ from_prev_blk:CurrencyCollection - to_next_blk:CurrencyCollection - imported:CurrencyCollection - exported:CurrencyCollection ] - fees_collected:CurrencyCollection - burned:CurrencyCollection - ^[ - fees_imported:CurrencyCollection - recovered:CurrencyCollection - created:CurrencyCollection - minted:CurrencyCollection - ] = ValueFlow; -*/ - -export function loadValueFlow(slice: Slice): ValueFlow { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0xb8e48dfb))) { - slice.loadUint(32); - let slice1 = slice.loadRef().beginParse(); - let from_prev_blk: CurrencyCollection = loadCurrencyCollection(slice1); - let to_next_blk: CurrencyCollection = loadCurrencyCollection(slice1); - let imported: CurrencyCollection = loadCurrencyCollection(slice1); - let exported: CurrencyCollection = loadCurrencyCollection(slice1); - let fees_collected: CurrencyCollection = loadCurrencyCollection(slice); - let slice2 = slice.loadRef().beginParse(); - let fees_imported: CurrencyCollection = loadCurrencyCollection(slice2); - let recovered: CurrencyCollection = loadCurrencyCollection(slice2); - let created: CurrencyCollection = loadCurrencyCollection(slice2); - let minted: CurrencyCollection = loadCurrencyCollection(slice2); - return { - kind: 'ValueFlow_value_flow', - from_prev_blk: from_prev_blk, - to_next_blk: to_next_blk, - imported: imported, - exported: exported, - fees_collected: fees_collected, - fees_imported: fees_imported, - recovered: recovered, - created: created, - minted: minted, - } - - } - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x3ebf98b7))) { - slice.loadUint(32); - let slice1 = slice.loadRef().beginParse(); - let from_prev_blk: CurrencyCollection = loadCurrencyCollection(slice1); - let to_next_blk: CurrencyCollection = loadCurrencyCollection(slice1); - let imported: CurrencyCollection = loadCurrencyCollection(slice1); - let exported: CurrencyCollection = loadCurrencyCollection(slice1); - let fees_collected: CurrencyCollection = loadCurrencyCollection(slice); - let burned: CurrencyCollection = loadCurrencyCollection(slice); - let slice2 = slice.loadRef().beginParse(); - let fees_imported: CurrencyCollection = loadCurrencyCollection(slice2); - let recovered: CurrencyCollection = loadCurrencyCollection(slice2); - let created: CurrencyCollection = loadCurrencyCollection(slice2); - let minted: CurrencyCollection = loadCurrencyCollection(slice2); - return { - kind: 'ValueFlow_value_flow_v2', - from_prev_blk: from_prev_blk, - to_next_blk: to_next_blk, - imported: imported, - exported: exported, - fees_collected: fees_collected, - burned: burned, - fees_imported: fees_imported, - recovered: recovered, - created: created, - minted: minted, - } - - } - throw new Error('Expected one of "ValueFlow_value_flow", "ValueFlow_value_flow_v2" in loading "ValueFlow", but data does not satisfy any constructor'); -} - -export function storeValueFlow(valueFlow: ValueFlow): (builder: Builder) => void { - if ((valueFlow.kind == 'ValueFlow_value_flow')) { - return ((builder: Builder) => { - builder.storeUint(0xb8e48dfb, 32); - let cell1 = beginCell(); - storeCurrencyCollection(valueFlow.from_prev_blk)(cell1); - storeCurrencyCollection(valueFlow.to_next_blk)(cell1); - storeCurrencyCollection(valueFlow.imported)(cell1); - storeCurrencyCollection(valueFlow.exported)(cell1); - builder.storeRef(cell1); - storeCurrencyCollection(valueFlow.fees_collected)(builder); - let cell2 = beginCell(); - storeCurrencyCollection(valueFlow.fees_imported)(cell2); - storeCurrencyCollection(valueFlow.recovered)(cell2); - storeCurrencyCollection(valueFlow.created)(cell2); - storeCurrencyCollection(valueFlow.minted)(cell2); - builder.storeRef(cell2); - }) - - } - if ((valueFlow.kind == 'ValueFlow_value_flow_v2')) { - return ((builder: Builder) => { - builder.storeUint(0x3ebf98b7, 32); - let cell1 = beginCell(); - storeCurrencyCollection(valueFlow.from_prev_blk)(cell1); - storeCurrencyCollection(valueFlow.to_next_blk)(cell1); - storeCurrencyCollection(valueFlow.imported)(cell1); - storeCurrencyCollection(valueFlow.exported)(cell1); - builder.storeRef(cell1); - storeCurrencyCollection(valueFlow.fees_collected)(builder); - storeCurrencyCollection(valueFlow.burned)(builder); - let cell2 = beginCell(); - storeCurrencyCollection(valueFlow.fees_imported)(cell2); - storeCurrencyCollection(valueFlow.recovered)(cell2); - storeCurrencyCollection(valueFlow.created)(cell2); - storeCurrencyCollection(valueFlow.minted)(cell2); - builder.storeRef(cell2); - }) - - } - throw new Error('Expected one of "ValueFlow_value_flow", "ValueFlow_value_flow_v2" in loading "ValueFlow", but data does not satisfy any constructor'); -} - -// bt_leaf$0 {X:Type} leaf:X = BinTree X; - -/* -bt_fork$1 {X:Type} left:^(BinTree X) right:^(BinTree X) - = BinTree X; -*/ - -export function loadBinTree(slice: Slice, loadX: (slice: Slice) => X): BinTree { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let leaf: X = loadX(slice); - return { - kind: 'BinTree_bt_leaf', - leaf: leaf, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let slice1 = slice.loadRef().beginParse(); - let left: BinTree = loadBinTree(slice1, loadX); - let slice2 = slice.loadRef().beginParse(); - let right: BinTree = loadBinTree(slice2, loadX); - return { - kind: 'BinTree_bt_fork', - left: left, - right: right, - } - - } - throw new Error('Expected one of "BinTree_bt_leaf", "BinTree_bt_fork" in loading "BinTree", but data does not satisfy any constructor'); -} - -export function storeBinTree(binTree: BinTree, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - if ((binTree.kind == 'BinTree_bt_leaf')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - storeX(binTree.leaf)(builder); - }) - - } - if ((binTree.kind == 'BinTree_bt_fork')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - let cell1 = beginCell(); - storeBinTree(binTree.left, storeX)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeBinTree(binTree.right, storeX)(cell2); - builder.storeRef(cell2); - }) - - } - throw new Error('Expected one of "BinTree_bt_leaf", "BinTree_bt_fork" in loading "BinTree", but data does not satisfy any constructor'); -} - -// fsm_none$0 = FutureSplitMerge; - -// fsm_split$10 split_utime:uint32 interval:uint32 = FutureSplitMerge; - -// fsm_merge$11 merge_utime:uint32 interval:uint32 = FutureSplitMerge; - -export function loadFutureSplitMerge(slice: Slice): FutureSplitMerge { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'FutureSplitMerge_fsm_none', - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b10))) { - slice.loadUint(2); - let split_utime: number = slice.loadUint(32); - let interval: number = slice.loadUint(32); - return { - kind: 'FutureSplitMerge_fsm_split', - split_utime: split_utime, - interval: interval, - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b11))) { - slice.loadUint(2); - let merge_utime: number = slice.loadUint(32); - let interval: number = slice.loadUint(32); - return { - kind: 'FutureSplitMerge_fsm_merge', - merge_utime: merge_utime, - interval: interval, - } - - } - throw new Error('Expected one of "FutureSplitMerge_fsm_none", "FutureSplitMerge_fsm_split", "FutureSplitMerge_fsm_merge" in loading "FutureSplitMerge", but data does not satisfy any constructor'); -} - -export function storeFutureSplitMerge(futureSplitMerge: FutureSplitMerge): (builder: Builder) => void { - if ((futureSplitMerge.kind == 'FutureSplitMerge_fsm_none')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((futureSplitMerge.kind == 'FutureSplitMerge_fsm_split')) { - return ((builder: Builder) => { - builder.storeUint(0b10, 2); - builder.storeUint(futureSplitMerge.split_utime, 32); - builder.storeUint(futureSplitMerge.interval, 32); - }) - - } - if ((futureSplitMerge.kind == 'FutureSplitMerge_fsm_merge')) { - return ((builder: Builder) => { - builder.storeUint(0b11, 2); - builder.storeUint(futureSplitMerge.merge_utime, 32); - builder.storeUint(futureSplitMerge.interval, 32); - }) - - } - throw new Error('Expected one of "FutureSplitMerge_fsm_none", "FutureSplitMerge_fsm_split", "FutureSplitMerge_fsm_merge" in loading "FutureSplitMerge", but data does not satisfy any constructor'); -} - -/* -shard_descr#b seq_no:uint32 reg_mc_seqno:uint32 - start_lt:uint64 end_lt:uint64 - root_hash:bits256 file_hash:bits256 - before_split:Bool before_merge:Bool - want_split:Bool want_merge:Bool - nx_cc_updated:Bool flags:(## 3) { flags = 0 } - next_catchain_seqno:uint32 next_validator_shard:uint64 - min_ref_mc_seqno:uint32 gen_utime:uint32 - split_merge_at:FutureSplitMerge - fees_collected:CurrencyCollection - funds_created:CurrencyCollection = ShardDescr; -*/ - -/* -shard_descr_new#a seq_no:uint32 reg_mc_seqno:uint32 - start_lt:uint64 end_lt:uint64 - root_hash:bits256 file_hash:bits256 - before_split:Bool before_merge:Bool - want_split:Bool want_merge:Bool - nx_cc_updated:Bool flags:(## 3) { flags = 0 } - next_catchain_seqno:uint32 next_validator_shard:uint64 - min_ref_mc_seqno:uint32 gen_utime:uint32 - split_merge_at:FutureSplitMerge - ^[ fees_collected:CurrencyCollection - funds_created:CurrencyCollection ] = ShardDescr; -*/ - -export function loadShardDescr(slice: Slice): ShardDescr { - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0xb))) { - slice.loadUint(4); - let seq_no: number = slice.loadUint(32); - let reg_mc_seqno: number = slice.loadUint(32); - let start_lt: number = slice.loadUint(64); - let end_lt: number = slice.loadUint(64); - let root_hash: BitString = slice.loadBits(256); - let file_hash: BitString = slice.loadBits(256); - let before_split: boolean = slice.loadBoolean(); - let before_merge: boolean = slice.loadBoolean(); - let want_split: boolean = slice.loadBoolean(); - let want_merge: boolean = slice.loadBoolean(); - let nx_cc_updated: boolean = slice.loadBoolean(); - let flags: number = slice.loadUint(3); - let next_catchain_seqno: number = slice.loadUint(32); - let next_validator_shard: number = slice.loadUint(64); - let min_ref_mc_seqno: number = slice.loadUint(32); - let gen_utime: number = slice.loadUint(32); - let split_merge_at: FutureSplitMerge = loadFutureSplitMerge(slice); - let fees_collected: CurrencyCollection = loadCurrencyCollection(slice); - let funds_created: CurrencyCollection = loadCurrencyCollection(slice); - if ((!(flags == 0))) { - throw new Error('Condition (flags == 0) is not satisfied while loading "ShardDescr_shard_descr" for type "ShardDescr"'); - } - return { - kind: 'ShardDescr_shard_descr', - seq_no: seq_no, - reg_mc_seqno: reg_mc_seqno, - start_lt: start_lt, - end_lt: end_lt, - root_hash: root_hash, - file_hash: file_hash, - before_split: before_split, - before_merge: before_merge, - want_split: want_split, - want_merge: want_merge, - nx_cc_updated: nx_cc_updated, - flags: flags, - next_catchain_seqno: next_catchain_seqno, - next_validator_shard: next_validator_shard, - min_ref_mc_seqno: min_ref_mc_seqno, - gen_utime: gen_utime, - split_merge_at: split_merge_at, - fees_collected: fees_collected, - funds_created: funds_created, - } - - } - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0xa))) { - slice.loadUint(4); - let seq_no: number = slice.loadUint(32); - let reg_mc_seqno: number = slice.loadUint(32); - let start_lt: number = slice.loadUint(64); - let end_lt: number = slice.loadUint(64); - let root_hash: BitString = slice.loadBits(256); - let file_hash: BitString = slice.loadBits(256); - let before_split: boolean = slice.loadBoolean(); - let before_merge: boolean = slice.loadBoolean(); - let want_split: boolean = slice.loadBoolean(); - let want_merge: boolean = slice.loadBoolean(); - let nx_cc_updated: boolean = slice.loadBoolean(); - let flags: number = slice.loadUint(3); - let next_catchain_seqno: number = slice.loadUint(32); - let next_validator_shard: number = slice.loadUint(64); - let min_ref_mc_seqno: number = slice.loadUint(32); - let gen_utime: number = slice.loadUint(32); - let split_merge_at: FutureSplitMerge = loadFutureSplitMerge(slice); - let slice1 = slice.loadRef().beginParse(); - let fees_collected: CurrencyCollection = loadCurrencyCollection(slice1); - let funds_created: CurrencyCollection = loadCurrencyCollection(slice1); - if ((!(flags == 0))) { - throw new Error('Condition (flags == 0) is not satisfied while loading "ShardDescr_shard_descr_new" for type "ShardDescr"'); - } - return { - kind: 'ShardDescr_shard_descr_new', - seq_no: seq_no, - reg_mc_seqno: reg_mc_seqno, - start_lt: start_lt, - end_lt: end_lt, - root_hash: root_hash, - file_hash: file_hash, - before_split: before_split, - before_merge: before_merge, - want_split: want_split, - want_merge: want_merge, - nx_cc_updated: nx_cc_updated, - flags: flags, - next_catchain_seqno: next_catchain_seqno, - next_validator_shard: next_validator_shard, - min_ref_mc_seqno: min_ref_mc_seqno, - gen_utime: gen_utime, - split_merge_at: split_merge_at, - fees_collected: fees_collected, - funds_created: funds_created, - } - - } - throw new Error('Expected one of "ShardDescr_shard_descr", "ShardDescr_shard_descr_new" in loading "ShardDescr", but data does not satisfy any constructor'); -} - -export function storeShardDescr(shardDescr: ShardDescr): (builder: Builder) => void { - if ((shardDescr.kind == 'ShardDescr_shard_descr')) { - return ((builder: Builder) => { - builder.storeUint(0xb, 4); - builder.storeUint(shardDescr.seq_no, 32); - builder.storeUint(shardDescr.reg_mc_seqno, 32); - builder.storeUint(shardDescr.start_lt, 64); - builder.storeUint(shardDescr.end_lt, 64); - builder.storeBits(shardDescr.root_hash); - builder.storeBits(shardDescr.file_hash); - builder.storeBit(shardDescr.before_split); - builder.storeBit(shardDescr.before_merge); - builder.storeBit(shardDescr.want_split); - builder.storeBit(shardDescr.want_merge); - builder.storeBit(shardDescr.nx_cc_updated); - builder.storeUint(shardDescr.flags, 3); - builder.storeUint(shardDescr.next_catchain_seqno, 32); - builder.storeUint(shardDescr.next_validator_shard, 64); - builder.storeUint(shardDescr.min_ref_mc_seqno, 32); - builder.storeUint(shardDescr.gen_utime, 32); - storeFutureSplitMerge(shardDescr.split_merge_at)(builder); - storeCurrencyCollection(shardDescr.fees_collected)(builder); - storeCurrencyCollection(shardDescr.funds_created)(builder); - if ((!(shardDescr.flags == 0))) { - throw new Error('Condition (shardDescr.flags == 0) is not satisfied while loading "ShardDescr_shard_descr" for type "ShardDescr"'); - } - }) - - } - if ((shardDescr.kind == 'ShardDescr_shard_descr_new')) { - return ((builder: Builder) => { - builder.storeUint(0xa, 4); - builder.storeUint(shardDescr.seq_no, 32); - builder.storeUint(shardDescr.reg_mc_seqno, 32); - builder.storeUint(shardDescr.start_lt, 64); - builder.storeUint(shardDescr.end_lt, 64); - builder.storeBits(shardDescr.root_hash); - builder.storeBits(shardDescr.file_hash); - builder.storeBit(shardDescr.before_split); - builder.storeBit(shardDescr.before_merge); - builder.storeBit(shardDescr.want_split); - builder.storeBit(shardDescr.want_merge); - builder.storeBit(shardDescr.nx_cc_updated); - builder.storeUint(shardDescr.flags, 3); - builder.storeUint(shardDescr.next_catchain_seqno, 32); - builder.storeUint(shardDescr.next_validator_shard, 64); - builder.storeUint(shardDescr.min_ref_mc_seqno, 32); - builder.storeUint(shardDescr.gen_utime, 32); - storeFutureSplitMerge(shardDescr.split_merge_at)(builder); - let cell1 = beginCell(); - storeCurrencyCollection(shardDescr.fees_collected)(cell1); - storeCurrencyCollection(shardDescr.funds_created)(cell1); - builder.storeRef(cell1); - if ((!(shardDescr.flags == 0))) { - throw new Error('Condition (shardDescr.flags == 0) is not satisfied while loading "ShardDescr_shard_descr_new" for type "ShardDescr"'); - } - }) - - } - throw new Error('Expected one of "ShardDescr_shard_descr", "ShardDescr_shard_descr_new" in loading "ShardDescr", but data does not satisfy any constructor'); -} - -// _ (HashmapE 32 ^(BinTree ShardDescr)) = ShardHashes; - -export function loadShardHashes(slice: Slice): ShardHashes { - let anon0: HashmapE> = loadHashmapE>(slice, 32, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadBinTree(slice1, loadShardDescr) - - })); - return { - kind: 'ShardHashes', - anon0: anon0, - } - -} - -export function storeShardHashes(shardHashes: ShardHashes): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapE>(shardHashes.anon0, ((arg: BinTree) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeBinTree(arg, storeShardDescr)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - -} - -// bta_leaf$0 {X:Type} {Y:Type} extra:Y leaf:X = BinTreeAug X Y; - -/* -bta_fork$1 {X:Type} {Y:Type} left:^(BinTreeAug X Y) - right:^(BinTreeAug X Y) extra:Y = BinTreeAug X Y; -*/ - -export function loadBinTreeAug(slice: Slice, loadX: (slice: Slice) => X, loadY: (slice: Slice) => Y): BinTreeAug { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let extra: Y = loadY(slice); - let leaf: X = loadX(slice); - return { - kind: 'BinTreeAug_bta_leaf', - extra: extra, - leaf: leaf, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let slice1 = slice.loadRef().beginParse(); - let left: BinTreeAug = loadBinTreeAug(slice1, loadX, loadY); - let slice2 = slice.loadRef().beginParse(); - let right: BinTreeAug = loadBinTreeAug(slice2, loadX, loadY); - let extra: Y = loadY(slice); - return { - kind: 'BinTreeAug_bta_fork', - left: left, - right: right, - extra: extra, - } - - } - throw new Error('Expected one of "BinTreeAug_bta_leaf", "BinTreeAug_bta_fork" in loading "BinTreeAug", but data does not satisfy any constructor'); -} - -export function storeBinTreeAug(binTreeAug: BinTreeAug, storeX: (x: X) => (builder: Builder) => void, storeY: (y: Y) => (builder: Builder) => void): (builder: Builder) => void { - if ((binTreeAug.kind == 'BinTreeAug_bta_leaf')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - storeY(binTreeAug.extra)(builder); - storeX(binTreeAug.leaf)(builder); - }) - - } - if ((binTreeAug.kind == 'BinTreeAug_bta_fork')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - let cell1 = beginCell(); - storeBinTreeAug(binTreeAug.left, storeX, storeY)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeBinTreeAug(binTreeAug.right, storeX, storeY)(cell2); - builder.storeRef(cell2); - storeY(binTreeAug.extra)(builder); - }) - - } - throw new Error('Expected one of "BinTreeAug_bta_leaf", "BinTreeAug_bta_fork" in loading "BinTreeAug", but data does not satisfy any constructor'); -} - -// _ fees:CurrencyCollection create:CurrencyCollection = ShardFeeCreated; - -export function loadShardFeeCreated(slice: Slice): ShardFeeCreated { - let fees: CurrencyCollection = loadCurrencyCollection(slice); - let create: CurrencyCollection = loadCurrencyCollection(slice); - return { - kind: 'ShardFeeCreated', - fees: fees, - create: create, - } - -} - -export function storeShardFeeCreated(shardFeeCreated: ShardFeeCreated): (builder: Builder) => void { - return ((builder: Builder) => { - storeCurrencyCollection(shardFeeCreated.fees)(builder); - storeCurrencyCollection(shardFeeCreated.create)(builder); - }) - -} - -// _ (HashmapAugE 96 ShardFeeCreated ShardFeeCreated) = ShardFees; - -export function loadShardFees(slice: Slice): ShardFees { - let anon0: HashmapAugE = loadHashmapAugE(slice, 96, loadShardFeeCreated, loadShardFeeCreated); - return { - kind: 'ShardFees', - anon0: anon0, - } - -} - -export function storeShardFees(shardFees: ShardFees): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapAugE(shardFees.anon0, storeShardFeeCreated, storeShardFeeCreated)(builder); - }) - -} - -/* -_ config_addr:bits256 config:^(Hashmap 32 ^Cell) - = ConfigParams; -*/ - -export function loadConfigParams(slice: Slice): ConfigParams { - let config_addr: BitString = slice.loadBits(256); - let slice1 = slice.loadRef().beginParse(); - let config: Hashmap = loadHashmap(slice1, 32, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return slice1 - - })); - return { - kind: 'ConfigParams', - config_addr: config_addr, - config: config, - } - -} - -export function storeConfigParams(configParams: ConfigParams): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeBits(configParams.config_addr); - let cell1 = beginCell(); - storeHashmap(configParams.config, ((arg: Slice) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeSlice(arg); - builder.storeRef(cell1); - - }) - - }))(cell1); - builder.storeRef(cell1); - }) - -} - -/* -validator_info$_ - validator_list_hash_short:uint32 - catchain_seqno:uint32 - nx_cc_updated:Bool -= ValidatorInfo; -*/ - -export function loadValidatorInfo(slice: Slice): ValidatorInfo { - let validator_list_hash_short: number = slice.loadUint(32); - let catchain_seqno: number = slice.loadUint(32); - let nx_cc_updated: boolean = slice.loadBoolean(); - return { - kind: 'ValidatorInfo', - validator_list_hash_short: validator_list_hash_short, - catchain_seqno: catchain_seqno, - nx_cc_updated: nx_cc_updated, - } - -} - -export function storeValidatorInfo(validatorInfo: ValidatorInfo): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(validatorInfo.validator_list_hash_short, 32); - builder.storeUint(validatorInfo.catchain_seqno, 32); - builder.storeBit(validatorInfo.nx_cc_updated); - }) - -} - -/* -validator_base_info$_ - validator_list_hash_short:uint32 - catchain_seqno:uint32 -= ValidatorBaseInfo; -*/ - -export function loadValidatorBaseInfo(slice: Slice): ValidatorBaseInfo { - let validator_list_hash_short: number = slice.loadUint(32); - let catchain_seqno: number = slice.loadUint(32); - return { - kind: 'ValidatorBaseInfo', - validator_list_hash_short: validator_list_hash_short, - catchain_seqno: catchain_seqno, - } - -} - -export function storeValidatorBaseInfo(validatorBaseInfo: ValidatorBaseInfo): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(validatorBaseInfo.validator_list_hash_short, 32); - builder.storeUint(validatorBaseInfo.catchain_seqno, 32); - }) - -} - -// _ key:Bool max_end_lt:uint64 = KeyMaxLt; - -export function loadKeyMaxLt(slice: Slice): KeyMaxLt { - let key: boolean = slice.loadBoolean(); - let max_end_lt: number = slice.loadUint(64); - return { - kind: 'KeyMaxLt', - key: key, - max_end_lt: max_end_lt, - } - -} - -export function storeKeyMaxLt(keyMaxLt: KeyMaxLt): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeBit(keyMaxLt.key); - builder.storeUint(keyMaxLt.max_end_lt, 64); - }) - -} - -// _ key:Bool blk_ref:ExtBlkRef = KeyExtBlkRef; - -export function loadKeyExtBlkRef(slice: Slice): KeyExtBlkRef { - let key: boolean = slice.loadBoolean(); - let blk_ref: ExtBlkRef = loadExtBlkRef(slice); - return { - kind: 'KeyExtBlkRef', - key: key, - blk_ref: blk_ref, - } - -} - -export function storeKeyExtBlkRef(keyExtBlkRef: KeyExtBlkRef): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeBit(keyExtBlkRef.key); - storeExtBlkRef(keyExtBlkRef.blk_ref)(builder); - }) - -} - -// _ (HashmapAugE 32 KeyExtBlkRef KeyMaxLt) = OldMcBlocksInfo; - -export function loadOldMcBlocksInfo(slice: Slice): OldMcBlocksInfo { - let anon0: HashmapAugE = loadHashmapAugE(slice, 32, loadKeyExtBlkRef, loadKeyMaxLt); - return { - kind: 'OldMcBlocksInfo', - anon0: anon0, - } - -} - -export function storeOldMcBlocksInfo(oldMcBlocksInfo: OldMcBlocksInfo): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapAugE(oldMcBlocksInfo.anon0, storeKeyExtBlkRef, storeKeyMaxLt)(builder); - }) - -} - -// counters#_ last_updated:uint32 total:uint64 cnt2048:uint64 cnt65536:uint64 = Counters; - -export function loadCounters(slice: Slice): Counters { - let last_updated: number = slice.loadUint(32); - let total: number = slice.loadUint(64); - let cnt2048: number = slice.loadUint(64); - let cnt65536: number = slice.loadUint(64); - return { - kind: 'Counters', - last_updated: last_updated, - total: total, - cnt2048: cnt2048, - cnt65536: cnt65536, - } - -} - -export function storeCounters(counters: Counters): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(counters.last_updated, 32); - builder.storeUint(counters.total, 64); - builder.storeUint(counters.cnt2048, 64); - builder.storeUint(counters.cnt65536, 64); - }) - -} - -// creator_info#4 mc_blocks:Counters shard_blocks:Counters = CreatorStats; - -export function loadCreatorStats(slice: Slice): CreatorStats { - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0x4))) { - slice.loadUint(4); - let mc_blocks: Counters = loadCounters(slice); - let shard_blocks: Counters = loadCounters(slice); - return { - kind: 'CreatorStats', - mc_blocks: mc_blocks, - shard_blocks: shard_blocks, - } - - } - throw new Error('Expected one of "CreatorStats" in loading "CreatorStats", but data does not satisfy any constructor'); -} - -export function storeCreatorStats(creatorStats: CreatorStats): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x4, 4); - storeCounters(creatorStats.mc_blocks)(builder); - storeCounters(creatorStats.shard_blocks)(builder); - }) - -} - -// block_create_stats#17 counters:(HashmapE 256 CreatorStats) = BlockCreateStats; - -// block_create_stats_ext#34 counters:(HashmapAugE 256 CreatorStats uint32) = BlockCreateStats; - -export function loadBlockCreateStats(slice: Slice): BlockCreateStats { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x17))) { - slice.loadUint(8); - let counters: HashmapE = loadHashmapE(slice, 256, loadCreatorStats); - return { - kind: 'BlockCreateStats_block_create_stats', - counters: counters, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x34))) { - slice.loadUint(8); - let counters: HashmapAugE = loadHashmapAugE(slice, 256, loadCreatorStats, ((slice: Slice) => { - return slice.loadUint(32) - - })); - return { - kind: 'BlockCreateStats_block_create_stats_ext', - counters: counters, - } - - } - throw new Error('Expected one of "BlockCreateStats_block_create_stats", "BlockCreateStats_block_create_stats_ext" in loading "BlockCreateStats", but data does not satisfy any constructor'); -} - -export function storeBlockCreateStats(blockCreateStats: BlockCreateStats): (builder: Builder) => void { - if ((blockCreateStats.kind == 'BlockCreateStats_block_create_stats')) { - return ((builder: Builder) => { - builder.storeUint(0x17, 8); - storeHashmapE(blockCreateStats.counters, storeCreatorStats)(builder); - }) - - } - if ((blockCreateStats.kind == 'BlockCreateStats_block_create_stats_ext')) { - return ((builder: Builder) => { - builder.storeUint(0x34, 8); - storeHashmapAugE(blockCreateStats.counters, storeCreatorStats, ((arg: number) => { - return ((builder: Builder) => { - builder.storeUint(arg, 32); - }) - - }))(builder); - }) - - } - throw new Error('Expected one of "BlockCreateStats_block_create_stats", "BlockCreateStats_block_create_stats_ext" in loading "BlockCreateStats", but data does not satisfy any constructor'); -} - -/* -masterchain_state_extra#cc26 - shard_hashes:ShardHashes - config:ConfigParams - ^[ flags:(## 16) { flags <= 1 } - validator_info:ValidatorInfo - prev_blocks:OldMcBlocksInfo - after_key_block:Bool - last_key_block:(Maybe ExtBlkRef) - block_create_stats:(flags . 0)?BlockCreateStats ] - global_balance:CurrencyCollection -= McStateExtra; -*/ - -export function loadMcStateExtra(slice: Slice): McStateExtra { - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0xcc26))) { - slice.loadUint(16); - let shard_hashes: ShardHashes = loadShardHashes(slice); - let config: ConfigParams = loadConfigParams(slice); - let slice1 = slice.loadRef().beginParse(); - let flags: number = slice1.loadUint(16); - let validator_info: ValidatorInfo = loadValidatorInfo(slice1); - let prev_blocks: OldMcBlocksInfo = loadOldMcBlocksInfo(slice1); - let after_key_block: boolean = slice1.loadBoolean(); - let last_key_block: Maybe = loadMaybe(slice1, loadExtBlkRef); - let block_create_stats: BlockCreateStats | undefined = ((flags & (1 << 0)) ? loadBlockCreateStats(slice1) : undefined); - let global_balance: CurrencyCollection = loadCurrencyCollection(slice); - return { - kind: 'McStateExtra', - shard_hashes: shard_hashes, - config: config, - flags: flags, - validator_info: validator_info, - prev_blocks: prev_blocks, - after_key_block: after_key_block, - last_key_block: last_key_block, - block_create_stats: block_create_stats, - global_balance: global_balance, - } - - } - throw new Error('Expected one of "McStateExtra" in loading "McStateExtra", but data does not satisfy any constructor'); -} - -export function storeMcStateExtra(mcStateExtra: McStateExtra): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0xcc26, 16); - storeShardHashes(mcStateExtra.shard_hashes)(builder); - storeConfigParams(mcStateExtra.config)(builder); - let cell1 = beginCell(); - cell1.storeUint(mcStateExtra.flags, 16); - storeValidatorInfo(mcStateExtra.validator_info)(cell1); - storeOldMcBlocksInfo(mcStateExtra.prev_blocks)(cell1); - cell1.storeBit(mcStateExtra.after_key_block); - storeMaybe(mcStateExtra.last_key_block, storeExtBlkRef)(cell1); - if ((mcStateExtra.block_create_stats != undefined)) { - storeBlockCreateStats(mcStateExtra.block_create_stats)(cell1); - } - builder.storeRef(cell1); - storeCurrencyCollection(mcStateExtra.global_balance)(builder); - }) - -} - -// ed25519_pubkey#8e81278a pubkey:bits256 = SigPubKey; - -export function loadSigPubKey(slice: Slice): SigPubKey { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x8e81278a))) { - slice.loadUint(32); - let pubkey: BitString = slice.loadBits(256); - return { - kind: 'SigPubKey', - pubkey: pubkey, - } - - } - throw new Error('Expected one of "SigPubKey" in loading "SigPubKey", but data does not satisfy any constructor'); -} - -export function storeSigPubKey(sigPubKey: SigPubKey): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x8e81278a, 32); - builder.storeBits(sigPubKey.pubkey); - }) - -} - -// ed25519_signature#5 R:bits256 s:bits256 = CryptoSignatureSimple; - -export function loadCryptoSignatureSimple(slice: Slice): CryptoSignatureSimple { - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0x5))) { - slice.loadUint(4); - let R: BitString = slice.loadBits(256); - let s: BitString = slice.loadBits(256); - return { - kind: 'CryptoSignatureSimple', - R: R, - s: s, - } - - } - throw new Error('Expected one of "CryptoSignatureSimple" in loading "CryptoSignatureSimple", but data does not satisfy any constructor'); -} - -export function storeCryptoSignatureSimple(cryptoSignatureSimple: CryptoSignatureSimple): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x5, 4); - builder.storeBits(cryptoSignatureSimple.R); - builder.storeBits(cryptoSignatureSimple.s); - }) - -} - -/* -chained_signature#f signed_cert:^SignedCertificate temp_key_signature:CryptoSignatureSimple - = CryptoSignature; -*/ - -// _ CryptoSignatureSimple = CryptoSignature; - -export function loadCryptoSignature(slice: Slice): CryptoSignature { - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0xf))) { - slice.loadUint(4); - let slice1 = slice.loadRef().beginParse(); - let signed_cert: SignedCertificate = loadSignedCertificate(slice1); - let temp_key_signature: CryptoSignatureSimple = loadCryptoSignatureSimple(slice); - return { - kind: 'CryptoSignature_chained_signature', - signed_cert: signed_cert, - temp_key_signature: temp_key_signature, - } - - } - if (true) { - let anon0: CryptoSignatureSimple = loadCryptoSignatureSimple(slice); - return { - kind: 'CryptoSignature__', - anon0: anon0, - } - - } - throw new Error('Expected one of "CryptoSignature_chained_signature", "CryptoSignature__" in loading "CryptoSignature", but data does not satisfy any constructor'); -} - -export function storeCryptoSignature(cryptoSignature: CryptoSignature): (builder: Builder) => void { - if ((cryptoSignature.kind == 'CryptoSignature_chained_signature')) { - return ((builder: Builder) => { - builder.storeUint(0xf, 4); - let cell1 = beginCell(); - storeSignedCertificate(cryptoSignature.signed_cert)(cell1); - builder.storeRef(cell1); - storeCryptoSignatureSimple(cryptoSignature.temp_key_signature)(builder); - }) - - } - if ((cryptoSignature.kind == 'CryptoSignature__')) { - return ((builder: Builder) => { - storeCryptoSignatureSimple(cryptoSignature.anon0)(builder); - }) - - } - throw new Error('Expected one of "CryptoSignature_chained_signature", "CryptoSignature__" in loading "CryptoSignature", but data does not satisfy any constructor'); -} - -// sig_pair$_ node_id_short:bits256 sign:CryptoSignature = CryptoSignaturePair; - -export function loadCryptoSignaturePair(slice: Slice): CryptoSignaturePair { - let node_id_short: BitString = slice.loadBits(256); - let sign: CryptoSignature = loadCryptoSignature(slice); - return { - kind: 'CryptoSignaturePair', - node_id_short: node_id_short, - sign: sign, - } - -} - -export function storeCryptoSignaturePair(cryptoSignaturePair: CryptoSignaturePair): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeBits(cryptoSignaturePair.node_id_short); - storeCryptoSignature(cryptoSignaturePair.sign)(builder); - }) - -} - -// certificate#4 temp_key:SigPubKey valid_since:uint32 valid_until:uint32 = Certificate; - -export function loadCertificate(slice: Slice): Certificate { - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0x4))) { - slice.loadUint(4); - let temp_key: SigPubKey = loadSigPubKey(slice); - let valid_since: number = slice.loadUint(32); - let valid_until: number = slice.loadUint(32); - return { - kind: 'Certificate', - temp_key: temp_key, - valid_since: valid_since, - valid_until: valid_until, - } - - } - throw new Error('Expected one of "Certificate" in loading "Certificate", but data does not satisfy any constructor'); -} - -export function storeCertificate(certificate: Certificate): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x4, 4); - storeSigPubKey(certificate.temp_key)(builder); - builder.storeUint(certificate.valid_since, 32); - builder.storeUint(certificate.valid_until, 32); - }) - -} - -// certificate_env#a419b7d certificate:Certificate = CertificateEnv; - -export function loadCertificateEnv(slice: Slice): CertificateEnv { - if (((slice.remainingBits >= 28) && (slice.preloadUint(28) == 0xa419b7d))) { - slice.loadUint(28); - let certificate: Certificate = loadCertificate(slice); - return { - kind: 'CertificateEnv', - certificate: certificate, - } - - } - throw new Error('Expected one of "CertificateEnv" in loading "CertificateEnv", but data does not satisfy any constructor'); -} - -export function storeCertificateEnv(certificateEnv: CertificateEnv): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0xa419b7d, 28); - storeCertificate(certificateEnv.certificate)(builder); - }) - -} - -/* -signed_certificate$_ certificate:Certificate certificate_signature:CryptoSignature - = SignedCertificate; -*/ - -export function loadSignedCertificate(slice: Slice): SignedCertificate { - let certificate: Certificate = loadCertificate(slice); - let certificate_signature: CryptoSignature = loadCryptoSignature(slice); - return { - kind: 'SignedCertificate', - certificate: certificate, - certificate_signature: certificate_signature, - } - -} - -export function storeSignedCertificate(signedCertificate: SignedCertificate): (builder: Builder) => void { - return ((builder: Builder) => { - storeCertificate(signedCertificate.certificate)(builder); - storeCryptoSignature(signedCertificate.certificate_signature)(builder); - }) - -} - -/* -masterchain_block_extra#cca5 - key_block:(## 1) - shard_hashes:ShardHashes - shard_fees:ShardFees - ^[ prev_blk_signatures:(HashmapE 16 CryptoSignaturePair) - recover_create_msg:(Maybe ^InMsg) - mint_msg:(Maybe ^InMsg) ] - config:key_block?ConfigParams -= McBlockExtra; -*/ - -export function loadMcBlockExtra(slice: Slice): McBlockExtra { - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0xcca5))) { - slice.loadUint(16); - let key_block: number = slice.loadUint(1); - let shard_hashes: ShardHashes = loadShardHashes(slice); - let shard_fees: ShardFees = loadShardFees(slice); - let slice1 = slice.loadRef().beginParse(); - let prev_blk_signatures: HashmapE = loadHashmapE(slice1, 16, loadCryptoSignaturePair); - let recover_create_msg: Maybe = loadMaybe(slice1, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadInMsg(slice1) - - })); - let mint_msg: Maybe = loadMaybe(slice1, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadInMsg(slice1) - - })); - let config: ConfigParams | undefined = (key_block ? loadConfigParams(slice) : undefined); - return { - kind: 'McBlockExtra', - key_block: key_block, - shard_hashes: shard_hashes, - shard_fees: shard_fees, - prev_blk_signatures: prev_blk_signatures, - recover_create_msg: recover_create_msg, - mint_msg: mint_msg, - config: config, - } - - } - throw new Error('Expected one of "McBlockExtra" in loading "McBlockExtra", but data does not satisfy any constructor'); -} - -export function storeMcBlockExtra(mcBlockExtra: McBlockExtra): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0xcca5, 16); - builder.storeUint(mcBlockExtra.key_block, 1); - storeShardHashes(mcBlockExtra.shard_hashes)(builder); - storeShardFees(mcBlockExtra.shard_fees)(builder); - let cell1 = beginCell(); - storeHashmapE(mcBlockExtra.prev_blk_signatures, storeCryptoSignaturePair)(cell1); - storeMaybe(mcBlockExtra.recover_create_msg, ((arg: InMsg) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeInMsg(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(cell1); - storeMaybe(mcBlockExtra.mint_msg, ((arg: InMsg) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeInMsg(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(cell1); - builder.storeRef(cell1); - if ((mcBlockExtra.config != undefined)) { - storeConfigParams(mcBlockExtra.config)(builder); - } - }) - -} - -// validator#53 public_key:SigPubKey weight:uint64 = ValidatorDescr; - -// validator_addr#73 public_key:SigPubKey weight:uint64 adnl_addr:bits256 = ValidatorDescr; - -export function loadValidatorDescr(slice: Slice): ValidatorDescr { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x53))) { - slice.loadUint(8); - let public_key: SigPubKey = loadSigPubKey(slice); - let weight: number = slice.loadUint(64); - return { - kind: 'ValidatorDescr_validator', - public_key: public_key, - weight: weight, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x73))) { - slice.loadUint(8); - let public_key: SigPubKey = loadSigPubKey(slice); - let weight: number = slice.loadUint(64); - let adnl_addr: BitString = slice.loadBits(256); - return { - kind: 'ValidatorDescr_validator_addr', - public_key: public_key, - weight: weight, - adnl_addr: adnl_addr, - } - - } - throw new Error('Expected one of "ValidatorDescr_validator", "ValidatorDescr_validator_addr" in loading "ValidatorDescr", but data does not satisfy any constructor'); -} - -export function storeValidatorDescr(validatorDescr: ValidatorDescr): (builder: Builder) => void { - if ((validatorDescr.kind == 'ValidatorDescr_validator')) { - return ((builder: Builder) => { - builder.storeUint(0x53, 8); - storeSigPubKey(validatorDescr.public_key)(builder); - builder.storeUint(validatorDescr.weight, 64); - }) - - } - if ((validatorDescr.kind == 'ValidatorDescr_validator_addr')) { - return ((builder: Builder) => { - builder.storeUint(0x73, 8); - storeSigPubKey(validatorDescr.public_key)(builder); - builder.storeUint(validatorDescr.weight, 64); - builder.storeBits(validatorDescr.adnl_addr); - }) - - } - throw new Error('Expected one of "ValidatorDescr_validator", "ValidatorDescr_validator_addr" in loading "ValidatorDescr", but data does not satisfy any constructor'); -} - -/* -validators#11 utime_since:uint32 utime_until:uint32 - total:(## 16) main:(## 16) { main <= total } { main >= 1 } - list:(Hashmap 16 ValidatorDescr) = ValidatorSet; -*/ - -/* -validators_ext#12 utime_since:uint32 utime_until:uint32 - total:(## 16) main:(## 16) { main <= total } { main >= 1 } - total_weight:uint64 list:(HashmapE 16 ValidatorDescr) = ValidatorSet; -*/ - -export function loadValidatorSet(slice: Slice): ValidatorSet { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x11))) { - slice.loadUint(8); - let utime_since: number = slice.loadUint(32); - let utime_until: number = slice.loadUint(32); - let total: number = slice.loadUint(16); - let main: number = slice.loadUint(16); - let list: Hashmap = loadHashmap(slice, 16, loadValidatorDescr); - if ((!(main <= total))) { - throw new Error('Condition (main <= total) is not satisfied while loading "ValidatorSet_validators" for type "ValidatorSet"'); - } - if ((!(main >= 1))) { - throw new Error('Condition (main >= 1) is not satisfied while loading "ValidatorSet_validators" for type "ValidatorSet"'); - } - return { - kind: 'ValidatorSet_validators', - utime_since: utime_since, - utime_until: utime_until, - total: total, - main: main, - list: list, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x12))) { - slice.loadUint(8); - let utime_since: number = slice.loadUint(32); - let utime_until: number = slice.loadUint(32); - let total: number = slice.loadUint(16); - let main: number = slice.loadUint(16); - let total_weight: number = slice.loadUint(64); - let list: HashmapE = loadHashmapE(slice, 16, loadValidatorDescr); - if ((!(main <= total))) { - throw new Error('Condition (main <= total) is not satisfied while loading "ValidatorSet_validators_ext" for type "ValidatorSet"'); - } - if ((!(main >= 1))) { - throw new Error('Condition (main >= 1) is not satisfied while loading "ValidatorSet_validators_ext" for type "ValidatorSet"'); - } - return { - kind: 'ValidatorSet_validators_ext', - utime_since: utime_since, - utime_until: utime_until, - total: total, - main: main, - total_weight: total_weight, - list: list, - } - - } - throw new Error('Expected one of "ValidatorSet_validators", "ValidatorSet_validators_ext" in loading "ValidatorSet", but data does not satisfy any constructor'); -} - -export function storeValidatorSet(validatorSet: ValidatorSet): (builder: Builder) => void { - if ((validatorSet.kind == 'ValidatorSet_validators')) { - return ((builder: Builder) => { - builder.storeUint(0x11, 8); - builder.storeUint(validatorSet.utime_since, 32); - builder.storeUint(validatorSet.utime_until, 32); - builder.storeUint(validatorSet.total, 16); - builder.storeUint(validatorSet.main, 16); - storeHashmap(validatorSet.list, storeValidatorDescr)(builder); - if ((!(validatorSet.main <= validatorSet.total))) { - throw new Error('Condition (validatorSet.main <= validatorSet.total) is not satisfied while loading "ValidatorSet_validators" for type "ValidatorSet"'); - } - if ((!(validatorSet.main >= 1))) { - throw new Error('Condition (validatorSet.main >= 1) is not satisfied while loading "ValidatorSet_validators" for type "ValidatorSet"'); - } - }) - - } - if ((validatorSet.kind == 'ValidatorSet_validators_ext')) { - return ((builder: Builder) => { - builder.storeUint(0x12, 8); - builder.storeUint(validatorSet.utime_since, 32); - builder.storeUint(validatorSet.utime_until, 32); - builder.storeUint(validatorSet.total, 16); - builder.storeUint(validatorSet.main, 16); - builder.storeUint(validatorSet.total_weight, 64); - storeHashmapE(validatorSet.list, storeValidatorDescr)(builder); - if ((!(validatorSet.main <= validatorSet.total))) { - throw new Error('Condition (validatorSet.main <= validatorSet.total) is not satisfied while loading "ValidatorSet_validators_ext" for type "ValidatorSet"'); - } - if ((!(validatorSet.main >= 1))) { - throw new Error('Condition (validatorSet.main >= 1) is not satisfied while loading "ValidatorSet_validators_ext" for type "ValidatorSet"'); - } - }) - - } - throw new Error('Expected one of "ValidatorSet_validators", "ValidatorSet_validators_ext" in loading "ValidatorSet", but data does not satisfy any constructor'); -} - -// _ config_addr:bits256 = ConfigParam 0; - -// _ elector_addr:bits256 = ConfigParam 1; - -// _ minter_addr:bits256 = ConfigParam 2; - -// _ fee_collector_addr:bits256 = ConfigParam 3; - -// _ dns_root_addr:bits256 = ConfigParam 4; - -// _ BurningConfig = ConfigParam 5; - -// _ mint_new_price:Grams mint_add_price:Grams = ConfigParam 6; - -// _ to_mint:ExtraCurrencyCollection = ConfigParam 7; - -// _ GlobalVersion = ConfigParam 8; - -// _ mandatory_params:(Hashmap 32 True) = ConfigParam 9; - -// _ critical_params:(Hashmap 32 True) = ConfigParam 10; - -// _ ConfigVotingSetup = ConfigParam 11; - -// _ workchains:(HashmapE 32 WorkchainDescr) = ConfigParam 12; - -// _ ComplaintPricing = ConfigParam 13; - -// _ BlockCreateFees = ConfigParam 14; - -/* -_ validators_elected_for:uint32 elections_start_before:uint32 - elections_end_before:uint32 stake_held_for:uint32 - = ConfigParam 15; -*/ - -/* -_ max_validators:(## 16) max_main_validators:(## 16) min_validators:(## 16) - { max_validators >= max_main_validators } - { max_main_validators >= min_validators } - { min_validators >= 1 } - = ConfigParam 16; -*/ - -// _ min_stake:Grams max_stake:Grams min_total_stake:Grams max_stake_factor:uint32 = ConfigParam 17; - -// _ (Hashmap 32 StoragePrices) = ConfigParam 18; - -// _ global_id:int32 = ConfigParam 19; - -// config_mc_gas_prices#_ GasLimitsPrices = ConfigParam 20; - -// config_gas_prices#_ GasLimitsPrices = ConfigParam 21; - -// config_mc_block_limits#_ BlockLimits = ConfigParam 22; - -// config_block_limits#_ BlockLimits = ConfigParam 23; - -// config_mc_fwd_prices#_ MsgForwardPrices = ConfigParam 24; - -// config_fwd_prices#_ MsgForwardPrices = ConfigParam 25; - -// _ CatchainConfig = ConfigParam 28; - -// _ ConsensusConfig = ConfigParam 29; - -// _ fundamental_smc_addr:(HashmapE 256 True) = ConfigParam 31; - -// _ prev_validators:ValidatorSet = ConfigParam 32; - -// _ prev_temp_validators:ValidatorSet = ConfigParam 33; - -// _ cur_validators:ValidatorSet = ConfigParam 34; - -// _ cur_temp_validators:ValidatorSet = ConfigParam 35; - -// _ next_validators:ValidatorSet = ConfigParam 36; - -// _ next_temp_validators:ValidatorSet = ConfigParam 37; - -// _ (HashmapE 256 ValidatorSignedTempKey) = ConfigParam 39; - -// _ MisbehaviourPunishmentConfig = ConfigParam 40; - -// _ SizeLimitsConfig = ConfigParam 43; - -// _ SuspendedAddressList = ConfigParam 44; - -// _ OracleBridgeParams = ConfigParam 71; - -// _ OracleBridgeParams = ConfigParam 72; - -// _ OracleBridgeParams = ConfigParam 73; - -// _ JettonBridgeParams = ConfigParam 79; - -// _ JettonBridgeParams = ConfigParam 81; - -// _ JettonBridgeParams = ConfigParam 82; - -export function loadConfigParam(slice: Slice, arg0: number): ConfigParam { - if ((arg0 == 0)) { - let config_addr: BitString = slice.loadBits(256); - return { - kind: 'ConfigParam__', - config_addr: config_addr, - } - - } - if ((arg0 == 1)) { - let elector_addr: BitString = slice.loadBits(256); - return { - kind: 'ConfigParam__1', - elector_addr: elector_addr, - } - - } - if ((arg0 == 2)) { - let minter_addr: BitString = slice.loadBits(256); - return { - kind: 'ConfigParam__2', - minter_addr: minter_addr, - } - - } - if ((arg0 == 3)) { - let fee_collector_addr: BitString = slice.loadBits(256); - return { - kind: 'ConfigParam__3', - fee_collector_addr: fee_collector_addr, - } - - } - if ((arg0 == 4)) { - let dns_root_addr: BitString = slice.loadBits(256); - return { - kind: 'ConfigParam__4', - dns_root_addr: dns_root_addr, - } - - } - if ((arg0 == 5)) { - let anon0: BurningConfig = loadBurningConfig(slice); - return { - kind: 'ConfigParam__5', - anon0: anon0, - } - - } - if ((arg0 == 6)) { - let mint_new_price: Grams = loadGrams(slice); - let mint_add_price: Grams = loadGrams(slice); - return { - kind: 'ConfigParam__6', - mint_new_price: mint_new_price, - mint_add_price: mint_add_price, - } - - } - if ((arg0 == 7)) { - let to_mint: ExtraCurrencyCollection = loadExtraCurrencyCollection(slice); - return { - kind: 'ConfigParam__7', - to_mint: to_mint, - } - - } - if ((arg0 == 8)) { - let anon0: GlobalVersion = loadGlobalVersion(slice); - return { - kind: 'ConfigParam__8', - anon0: anon0, - } - - } - if ((arg0 == 9)) { - let mandatory_params: Hashmap = loadHashmap(slice, 32, loadTrue); - return { - kind: 'ConfigParam__9', - mandatory_params: mandatory_params, - } - - } - if ((arg0 == 10)) { - let critical_params: Hashmap = loadHashmap(slice, 32, loadTrue); - return { - kind: 'ConfigParam__10', - critical_params: critical_params, - } - - } - if ((arg0 == 11)) { - let anon0: ConfigVotingSetup = loadConfigVotingSetup(slice); - return { - kind: 'ConfigParam__11', - anon0: anon0, - } - - } - if ((arg0 == 12)) { - let workchains: HashmapE = loadHashmapE(slice, 32, loadWorkchainDescr); - return { - kind: 'ConfigParam__12', - workchains: workchains, - } - - } - if ((arg0 == 13)) { - let anon0: ComplaintPricing = loadComplaintPricing(slice); - return { - kind: 'ConfigParam__13', - anon0: anon0, - } - - } - if ((arg0 == 14)) { - let anon0: BlockCreateFees = loadBlockCreateFees(slice); - return { - kind: 'ConfigParam__14', - anon0: anon0, - } - - } - if ((arg0 == 15)) { - let validators_elected_for: number = slice.loadUint(32); - let elections_start_before: number = slice.loadUint(32); - let elections_end_before: number = slice.loadUint(32); - let stake_held_for: number = slice.loadUint(32); - return { - kind: 'ConfigParam__15', - validators_elected_for: validators_elected_for, - elections_start_before: elections_start_before, - elections_end_before: elections_end_before, - stake_held_for: stake_held_for, - } - - } - if ((arg0 == 16)) { - let max_validators: number = slice.loadUint(16); - let max_main_validators: number = slice.loadUint(16); - let min_validators: number = slice.loadUint(16); - if ((!(max_validators >= max_main_validators))) { - throw new Error('Condition (max_validators >= max_main_validators) is not satisfied while loading "ConfigParam__16" for type "ConfigParam"'); - } - if ((!(max_main_validators >= min_validators))) { - throw new Error('Condition (max_main_validators >= min_validators) is not satisfied while loading "ConfigParam__16" for type "ConfigParam"'); - } - if ((!(min_validators >= 1))) { - throw new Error('Condition (min_validators >= 1) is not satisfied while loading "ConfigParam__16" for type "ConfigParam"'); - } - return { - kind: 'ConfigParam__16', - max_validators: max_validators, - max_main_validators: max_main_validators, - min_validators: min_validators, - } - - } - if ((arg0 == 17)) { - let min_stake: Grams = loadGrams(slice); - let max_stake: Grams = loadGrams(slice); - let min_total_stake: Grams = loadGrams(slice); - let max_stake_factor: number = slice.loadUint(32); - return { - kind: 'ConfigParam__17', - min_stake: min_stake, - max_stake: max_stake, - min_total_stake: min_total_stake, - max_stake_factor: max_stake_factor, - } - - } - if ((arg0 == 18)) { - let anon0: Hashmap = loadHashmap(slice, 32, loadStoragePrices); - return { - kind: 'ConfigParam__18', - anon0: anon0, - } - - } - if ((arg0 == 19)) { - let global_id: number = slice.loadInt(32); - return { - kind: 'ConfigParam__19', - global_id: global_id, - } - - } - if ((arg0 == 20)) { - let anon0: GasLimitsPrices = loadGasLimitsPrices(slice); - return { - kind: 'ConfigParam_config_mc_gas_prices', - anon0: anon0, - } - - } - if ((arg0 == 21)) { - let anon0: GasLimitsPrices = loadGasLimitsPrices(slice); - return { - kind: 'ConfigParam_config_gas_prices', - anon0: anon0, - } - - } - if ((arg0 == 22)) { - let anon0: BlockLimits = loadBlockLimits(slice); - return { - kind: 'ConfigParam_config_mc_block_limits', - anon0: anon0, - } - - } - if ((arg0 == 23)) { - let anon0: BlockLimits = loadBlockLimits(slice); - return { - kind: 'ConfigParam_config_block_limits', - anon0: anon0, - } - - } - if ((arg0 == 24)) { - let anon0: MsgForwardPrices = loadMsgForwardPrices(slice); - return { - kind: 'ConfigParam_config_mc_fwd_prices', - anon0: anon0, - } - - } - if ((arg0 == 25)) { - let anon0: MsgForwardPrices = loadMsgForwardPrices(slice); - return { - kind: 'ConfigParam_config_fwd_prices', - anon0: anon0, - } - - } - if ((arg0 == 28)) { - let anon0: CatchainConfig = loadCatchainConfig(slice); - return { - kind: 'ConfigParam__26', - anon0: anon0, - } - - } - if ((arg0 == 29)) { - let anon0: ConsensusConfig = loadConsensusConfig(slice); - return { - kind: 'ConfigParam__27', - anon0: anon0, - } - - } - if ((arg0 == 31)) { - let fundamental_smc_addr: HashmapE = loadHashmapE(slice, 256, loadTrue); - return { - kind: 'ConfigParam__28', - fundamental_smc_addr: fundamental_smc_addr, - } - - } - if ((arg0 == 32)) { - let prev_validators: ValidatorSet = loadValidatorSet(slice); - return { - kind: 'ConfigParam__29', - prev_validators: prev_validators, - } - - } - if ((arg0 == 33)) { - let prev_temp_validators: ValidatorSet = loadValidatorSet(slice); - return { - kind: 'ConfigParam__30', - prev_temp_validators: prev_temp_validators, - } - - } - if ((arg0 == 34)) { - let cur_validators: ValidatorSet = loadValidatorSet(slice); - return { - kind: 'ConfigParam__31', - cur_validators: cur_validators, - } - - } - if ((arg0 == 35)) { - let cur_temp_validators: ValidatorSet = loadValidatorSet(slice); - return { - kind: 'ConfigParam__32', - cur_temp_validators: cur_temp_validators, - } - - } - if ((arg0 == 36)) { - let next_validators: ValidatorSet = loadValidatorSet(slice); - return { - kind: 'ConfigParam__33', - next_validators: next_validators, - } - - } - if ((arg0 == 37)) { - let next_temp_validators: ValidatorSet = loadValidatorSet(slice); - return { - kind: 'ConfigParam__34', - next_temp_validators: next_temp_validators, - } - - } - if ((arg0 == 39)) { - let anon0: HashmapE = loadHashmapE(slice, 256, loadValidatorSignedTempKey); - return { - kind: 'ConfigParam__35', - anon0: anon0, - } - - } - if ((arg0 == 40)) { - let anon0: MisbehaviourPunishmentConfig = loadMisbehaviourPunishmentConfig(slice); - return { - kind: 'ConfigParam__36', - anon0: anon0, - } - - } - if ((arg0 == 43)) { - let anon0: SizeLimitsConfig = loadSizeLimitsConfig(slice); - return { - kind: 'ConfigParam__37', - anon0: anon0, - } - - } - if ((arg0 == 44)) { - let anon0: SuspendedAddressList = loadSuspendedAddressList(slice); - return { - kind: 'ConfigParam__38', - anon0: anon0, - } - - } - if ((arg0 == 71)) { - let anon0: OracleBridgeParams = loadOracleBridgeParams(slice); - return { - kind: 'ConfigParam__39', - anon0: anon0, - } - - } - if ((arg0 == 72)) { - let anon0: OracleBridgeParams = loadOracleBridgeParams(slice); - return { - kind: 'ConfigParam__40', - anon0: anon0, - } - - } - if ((arg0 == 73)) { - let anon0: OracleBridgeParams = loadOracleBridgeParams(slice); - return { - kind: 'ConfigParam__41', - anon0: anon0, - } - - } - if ((arg0 == 79)) { - let anon0: JettonBridgeParams = loadJettonBridgeParams(slice); - return { - kind: 'ConfigParam__42', - anon0: anon0, - } - - } - if ((arg0 == 81)) { - let anon0: JettonBridgeParams = loadJettonBridgeParams(slice); - return { - kind: 'ConfigParam__43', - anon0: anon0, - } - - } - if ((arg0 == 82)) { - let anon0: JettonBridgeParams = loadJettonBridgeParams(slice); - return { - kind: 'ConfigParam__44', - anon0: anon0, - } - - } - throw new Error('Expected one of "ConfigParam__", "ConfigParam__1", "ConfigParam__2", "ConfigParam__3", "ConfigParam__4", "ConfigParam__5", "ConfigParam__6", "ConfigParam__7", "ConfigParam__8", "ConfigParam__9", "ConfigParam__10", "ConfigParam__11", "ConfigParam__12", "ConfigParam__13", "ConfigParam__14", "ConfigParam__15", "ConfigParam__16", "ConfigParam__17", "ConfigParam__18", "ConfigParam__19", "ConfigParam_config_mc_gas_prices", "ConfigParam_config_gas_prices", "ConfigParam_config_mc_block_limits", "ConfigParam_config_block_limits", "ConfigParam_config_mc_fwd_prices", "ConfigParam_config_fwd_prices", "ConfigParam__26", "ConfigParam__27", "ConfigParam__28", "ConfigParam__29", "ConfigParam__30", "ConfigParam__31", "ConfigParam__32", "ConfigParam__33", "ConfigParam__34", "ConfigParam__35", "ConfigParam__36", "ConfigParam__37", "ConfigParam__38", "ConfigParam__39", "ConfigParam__40", "ConfigParam__41", "ConfigParam__42", "ConfigParam__43", "ConfigParam__44" in loading "ConfigParam", but data does not satisfy any constructor'); -} - -export function storeConfigParam(configParam: ConfigParam): (builder: Builder) => void { - if ((configParam.kind == 'ConfigParam__')) { - return ((builder: Builder) => { - builder.storeBits(configParam.config_addr); - }) - - } - if ((configParam.kind == 'ConfigParam__1')) { - return ((builder: Builder) => { - builder.storeBits(configParam.elector_addr); - }) - - } - if ((configParam.kind == 'ConfigParam__2')) { - return ((builder: Builder) => { - builder.storeBits(configParam.minter_addr); - }) - - } - if ((configParam.kind == 'ConfigParam__3')) { - return ((builder: Builder) => { - builder.storeBits(configParam.fee_collector_addr); - }) - - } - if ((configParam.kind == 'ConfigParam__4')) { - return ((builder: Builder) => { - builder.storeBits(configParam.dns_root_addr); - }) - - } - if ((configParam.kind == 'ConfigParam__5')) { - return ((builder: Builder) => { - storeBurningConfig(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__6')) { - return ((builder: Builder) => { - storeGrams(configParam.mint_new_price)(builder); - storeGrams(configParam.mint_add_price)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__7')) { - return ((builder: Builder) => { - storeExtraCurrencyCollection(configParam.to_mint)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__8')) { - return ((builder: Builder) => { - storeGlobalVersion(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__9')) { - return ((builder: Builder) => { - storeHashmap(configParam.mandatory_params, storeTrue)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__10')) { - return ((builder: Builder) => { - storeHashmap(configParam.critical_params, storeTrue)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__11')) { - return ((builder: Builder) => { - storeConfigVotingSetup(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__12')) { - return ((builder: Builder) => { - storeHashmapE(configParam.workchains, storeWorkchainDescr)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__13')) { - return ((builder: Builder) => { - storeComplaintPricing(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__14')) { - return ((builder: Builder) => { - storeBlockCreateFees(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__15')) { - return ((builder: Builder) => { - builder.storeUint(configParam.validators_elected_for, 32); - builder.storeUint(configParam.elections_start_before, 32); - builder.storeUint(configParam.elections_end_before, 32); - builder.storeUint(configParam.stake_held_for, 32); - }) - - } - if ((configParam.kind == 'ConfigParam__16')) { - return ((builder: Builder) => { - builder.storeUint(configParam.max_validators, 16); - builder.storeUint(configParam.max_main_validators, 16); - builder.storeUint(configParam.min_validators, 16); - if ((!(configParam.max_validators >= configParam.max_main_validators))) { - throw new Error('Condition (configParam.max_validators >= configParam.max_main_validators) is not satisfied while loading "ConfigParam__16" for type "ConfigParam"'); - } - if ((!(configParam.max_main_validators >= configParam.min_validators))) { - throw new Error('Condition (configParam.max_main_validators >= configParam.min_validators) is not satisfied while loading "ConfigParam__16" for type "ConfigParam"'); - } - if ((!(configParam.min_validators >= 1))) { - throw new Error('Condition (configParam.min_validators >= 1) is not satisfied while loading "ConfigParam__16" for type "ConfigParam"'); - } - }) - - } - if ((configParam.kind == 'ConfigParam__17')) { - return ((builder: Builder) => { - storeGrams(configParam.min_stake)(builder); - storeGrams(configParam.max_stake)(builder); - storeGrams(configParam.min_total_stake)(builder); - builder.storeUint(configParam.max_stake_factor, 32); - }) - - } - if ((configParam.kind == 'ConfigParam__18')) { - return ((builder: Builder) => { - storeHashmap(configParam.anon0, storeStoragePrices)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__19')) { - return ((builder: Builder) => { - builder.storeInt(configParam.global_id, 32); - }) - - } - if ((configParam.kind == 'ConfigParam_config_mc_gas_prices')) { - return ((builder: Builder) => { - storeGasLimitsPrices(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam_config_gas_prices')) { - return ((builder: Builder) => { - storeGasLimitsPrices(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam_config_mc_block_limits')) { - return ((builder: Builder) => { - storeBlockLimits(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam_config_block_limits')) { - return ((builder: Builder) => { - storeBlockLimits(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam_config_mc_fwd_prices')) { - return ((builder: Builder) => { - storeMsgForwardPrices(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam_config_fwd_prices')) { - return ((builder: Builder) => { - storeMsgForwardPrices(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__26')) { - return ((builder: Builder) => { - storeCatchainConfig(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__27')) { - return ((builder: Builder) => { - storeConsensusConfig(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__28')) { - return ((builder: Builder) => { - storeHashmapE(configParam.fundamental_smc_addr, storeTrue)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__29')) { - return ((builder: Builder) => { - storeValidatorSet(configParam.prev_validators)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__30')) { - return ((builder: Builder) => { - storeValidatorSet(configParam.prev_temp_validators)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__31')) { - return ((builder: Builder) => { - storeValidatorSet(configParam.cur_validators)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__32')) { - return ((builder: Builder) => { - storeValidatorSet(configParam.cur_temp_validators)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__33')) { - return ((builder: Builder) => { - storeValidatorSet(configParam.next_validators)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__34')) { - return ((builder: Builder) => { - storeValidatorSet(configParam.next_temp_validators)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__35')) { - return ((builder: Builder) => { - storeHashmapE(configParam.anon0, storeValidatorSignedTempKey)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__36')) { - return ((builder: Builder) => { - storeMisbehaviourPunishmentConfig(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__37')) { - return ((builder: Builder) => { - storeSizeLimitsConfig(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__38')) { - return ((builder: Builder) => { - storeSuspendedAddressList(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__39')) { - return ((builder: Builder) => { - storeOracleBridgeParams(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__40')) { - return ((builder: Builder) => { - storeOracleBridgeParams(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__41')) { - return ((builder: Builder) => { - storeOracleBridgeParams(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__42')) { - return ((builder: Builder) => { - storeJettonBridgeParams(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__43')) { - return ((builder: Builder) => { - storeJettonBridgeParams(configParam.anon0)(builder); - }) - - } - if ((configParam.kind == 'ConfigParam__44')) { - return ((builder: Builder) => { - storeJettonBridgeParams(configParam.anon0)(builder); - }) - - } - throw new Error('Expected one of "ConfigParam__", "ConfigParam__1", "ConfigParam__2", "ConfigParam__3", "ConfigParam__4", "ConfigParam__5", "ConfigParam__6", "ConfigParam__7", "ConfigParam__8", "ConfigParam__9", "ConfigParam__10", "ConfigParam__11", "ConfigParam__12", "ConfigParam__13", "ConfigParam__14", "ConfigParam__15", "ConfigParam__16", "ConfigParam__17", "ConfigParam__18", "ConfigParam__19", "ConfigParam_config_mc_gas_prices", "ConfigParam_config_gas_prices", "ConfigParam_config_mc_block_limits", "ConfigParam_config_block_limits", "ConfigParam_config_mc_fwd_prices", "ConfigParam_config_fwd_prices", "ConfigParam__26", "ConfigParam__27", "ConfigParam__28", "ConfigParam__29", "ConfigParam__30", "ConfigParam__31", "ConfigParam__32", "ConfigParam__33", "ConfigParam__34", "ConfigParam__35", "ConfigParam__36", "ConfigParam__37", "ConfigParam__38", "ConfigParam__39", "ConfigParam__40", "ConfigParam__41", "ConfigParam__42", "ConfigParam__43", "ConfigParam__44" in loading "ConfigParam", but data does not satisfy any constructor'); -} - -/* -burning_config#01 - blackhole_addr:(Maybe bits256) - fee_burn_num:# fee_burn_denom:# { fee_burn_num <= fee_burn_denom } { fee_burn_denom >= 1 } = BurningConfig; -*/ - -export function loadBurningConfig(slice: Slice): BurningConfig { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x01))) { - slice.loadUint(8); - let blackhole_addr: Maybe = loadMaybe(slice, ((slice: Slice) => { - return slice.loadBits(256) - - })); - let fee_burn_num: number = slice.loadUint(32); - let fee_burn_denom: number = slice.loadUint(32); - if ((!(fee_burn_num <= fee_burn_denom))) { - throw new Error('Condition (fee_burn_num <= fee_burn_denom) is not satisfied while loading "BurningConfig" for type "BurningConfig"'); - } - if ((!(fee_burn_denom >= 1))) { - throw new Error('Condition (fee_burn_denom >= 1) is not satisfied while loading "BurningConfig" for type "BurningConfig"'); - } - return { - kind: 'BurningConfig', - blackhole_addr: blackhole_addr, - fee_burn_num: fee_burn_num, - fee_burn_denom: fee_burn_denom, - } - - } - throw new Error('Expected one of "BurningConfig" in loading "BurningConfig", but data does not satisfy any constructor'); -} - -export function storeBurningConfig(burningConfig: BurningConfig): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x01, 8); - storeMaybe(burningConfig.blackhole_addr, ((arg: BitString) => { - return ((builder: Builder) => { - builder.storeBits(arg); - }) - - }))(builder); - builder.storeUint(burningConfig.fee_burn_num, 32); - builder.storeUint(burningConfig.fee_burn_denom, 32); - if ((!(burningConfig.fee_burn_num <= burningConfig.fee_burn_denom))) { - throw new Error('Condition (burningConfig.fee_burn_num <= burningConfig.fee_burn_denom) is not satisfied while loading "BurningConfig" for type "BurningConfig"'); - } - if ((!(burningConfig.fee_burn_denom >= 1))) { - throw new Error('Condition (burningConfig.fee_burn_denom >= 1) is not satisfied while loading "BurningConfig" for type "BurningConfig"'); - } - }) - -} - -// capabilities#c4 version:uint32 capabilities:uint64 = GlobalVersion; - -export function loadGlobalVersion(slice: Slice): GlobalVersion { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xc4))) { - slice.loadUint(8); - let version: number = slice.loadUint(32); - let capabilities: number = slice.loadUint(64); - return { - kind: 'GlobalVersion', - version: version, - capabilities: capabilities, - } - - } - throw new Error('Expected one of "GlobalVersion" in loading "GlobalVersion", but data does not satisfy any constructor'); -} - -export function storeGlobalVersion(globalVersion: GlobalVersion): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0xc4, 8); - builder.storeUint(globalVersion.version, 32); - builder.storeUint(globalVersion.capabilities, 64); - }) - -} - -// cfg_vote_cfg#36 min_tot_rounds:uint8 max_tot_rounds:uint8 min_wins:uint8 max_losses:uint8 min_store_sec:uint32 max_store_sec:uint32 bit_price:uint32 cell_price:uint32 = ConfigProposalSetup; - -export function loadConfigProposalSetup(slice: Slice): ConfigProposalSetup { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x36))) { - slice.loadUint(8); - let min_tot_rounds: number = slice.loadUint(8); - let max_tot_rounds: number = slice.loadUint(8); - let min_wins: number = slice.loadUint(8); - let max_losses: number = slice.loadUint(8); - let min_store_sec: number = slice.loadUint(32); - let max_store_sec: number = slice.loadUint(32); - let bit_price: number = slice.loadUint(32); - let _cell_price: number = slice.loadUint(32); - return { - kind: 'ConfigProposalSetup', - min_tot_rounds: min_tot_rounds, - max_tot_rounds: max_tot_rounds, - min_wins: min_wins, - max_losses: max_losses, - min_store_sec: min_store_sec, - max_store_sec: max_store_sec, - bit_price: bit_price, - _cell_price: _cell_price, - } - - } - throw new Error('Expected one of "ConfigProposalSetup" in loading "ConfigProposalSetup", but data does not satisfy any constructor'); -} - -export function storeConfigProposalSetup(configProposalSetup: ConfigProposalSetup): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x36, 8); - builder.storeUint(configProposalSetup.min_tot_rounds, 8); - builder.storeUint(configProposalSetup.max_tot_rounds, 8); - builder.storeUint(configProposalSetup.min_wins, 8); - builder.storeUint(configProposalSetup.max_losses, 8); - builder.storeUint(configProposalSetup.min_store_sec, 32); - builder.storeUint(configProposalSetup.max_store_sec, 32); - builder.storeUint(configProposalSetup.bit_price, 32); - builder.storeUint(configProposalSetup._cell_price, 32); - }) - -} - -// cfg_vote_setup#91 normal_params:^ConfigProposalSetup critical_params:^ConfigProposalSetup = ConfigVotingSetup; - -export function loadConfigVotingSetup(slice: Slice): ConfigVotingSetup { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x91))) { - slice.loadUint(8); - let slice1 = slice.loadRef().beginParse(); - let normal_params: ConfigProposalSetup = loadConfigProposalSetup(slice1); - let slice2 = slice.loadRef().beginParse(); - let critical_params: ConfigProposalSetup = loadConfigProposalSetup(slice2); - return { - kind: 'ConfigVotingSetup', - normal_params: normal_params, - critical_params: critical_params, - } - - } - throw new Error('Expected one of "ConfigVotingSetup" in loading "ConfigVotingSetup", but data does not satisfy any constructor'); -} - -export function storeConfigVotingSetup(configVotingSetup: ConfigVotingSetup): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x91, 8); - let cell1 = beginCell(); - storeConfigProposalSetup(configVotingSetup.normal_params)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeConfigProposalSetup(configVotingSetup.critical_params)(cell2); - builder.storeRef(cell2); - }) - -} - -/* -cfg_proposal#f3 param_id:int32 param_value:(Maybe ^Cell) if_hash_equal:(Maybe uint256) - = ConfigProposal; -*/ - -export function loadConfigProposal(slice: Slice): ConfigProposal { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xf3))) { - slice.loadUint(8); - let param_id: number = slice.loadInt(32); - let param_value: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return slice1 - - })); - let if_hash_equal: Maybe = loadMaybe(slice, ((slice: Slice) => { - return slice.loadUintBig(256) - - })); - return { - kind: 'ConfigProposal', - param_id: param_id, - param_value: param_value, - if_hash_equal: if_hash_equal, - } - - } - throw new Error('Expected one of "ConfigProposal" in loading "ConfigProposal", but data does not satisfy any constructor'); -} - -export function storeConfigProposal(configProposal: ConfigProposal): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0xf3, 8); - builder.storeInt(configProposal.param_id, 32); - storeMaybe(configProposal.param_value, ((arg: Slice) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeSlice(arg); - builder.storeRef(cell1); - - }) - - }))(builder); - storeMaybe(configProposal.if_hash_equal, ((arg: bigint) => { - return ((builder: Builder) => { - builder.storeUint(arg, 256); - }) - - }))(builder); - }) - -} - -/* -cfg_proposal_status#ce expires:uint32 proposal:^ConfigProposal is_critical:Bool - voters:(HashmapE 16 True) remaining_weight:int64 validator_set_id:uint256 - rounds_remaining:uint8 wins:uint8 losses:uint8 = ConfigProposalStatus; -*/ - -export function loadConfigProposalStatus(slice: Slice): ConfigProposalStatus { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xce))) { - slice.loadUint(8); - let expires: number = slice.loadUint(32); - let slice1 = slice.loadRef().beginParse(); - let proposal: ConfigProposal = loadConfigProposal(slice1); - let is_critical: boolean = slice.loadBoolean(); - let voters: HashmapE = loadHashmapE(slice, 16, loadTrue); - let remaining_weight: number = slice.loadInt(64); - let validator_set_id: bigint = slice.loadUintBig(256); - let rounds_remaining: number = slice.loadUint(8); - let wins: number = slice.loadUint(8); - let losses: number = slice.loadUint(8); - return { - kind: 'ConfigProposalStatus', - expires: expires, - proposal: proposal, - is_critical: is_critical, - voters: voters, - remaining_weight: remaining_weight, - validator_set_id: validator_set_id, - rounds_remaining: rounds_remaining, - wins: wins, - losses: losses, - } - - } - throw new Error('Expected one of "ConfigProposalStatus" in loading "ConfigProposalStatus", but data does not satisfy any constructor'); -} - -export function storeConfigProposalStatus(configProposalStatus: ConfigProposalStatus): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0xce, 8); - builder.storeUint(configProposalStatus.expires, 32); - let cell1 = beginCell(); - storeConfigProposal(configProposalStatus.proposal)(cell1); - builder.storeRef(cell1); - builder.storeBit(configProposalStatus.is_critical); - storeHashmapE(configProposalStatus.voters, storeTrue)(builder); - builder.storeInt(configProposalStatus.remaining_weight, 64); - builder.storeUint(configProposalStatus.validator_set_id, 256); - builder.storeUint(configProposalStatus.rounds_remaining, 8); - builder.storeUint(configProposalStatus.wins, 8); - builder.storeUint(configProposalStatus.losses, 8); - }) - -} - -// wfmt_basic#1 vm_version:int32 vm_mode:uint64 = WorkchainFormat 1; - -/* -wfmt_ext#0 min_addr_len:(## 12) max_addr_len:(## 12) addr_len_step:(## 12) - { min_addr_len >= 64 } { min_addr_len <= max_addr_len } - { max_addr_len <= 1023 } { addr_len_step <= 1023 } - workchain_type_id:(## 32) { workchain_type_id >= 1 } - = WorkchainFormat 0; -*/ - -export function loadWorkchainFormat(slice: Slice, arg0: number): WorkchainFormat { - if (((slice.remainingBits >= 4) && ((slice.preloadUint(4) == 0x1) && (arg0 == 1)))) { - slice.loadUint(4); - let vm_version: number = slice.loadInt(32); - let vm_mode: number = slice.loadUint(64); - return { - kind: 'WorkchainFormat_wfmt_basic', - vm_version: vm_version, - vm_mode: vm_mode, - } - - } - if (((slice.remainingBits >= 4) && ((slice.preloadUint(4) == 0x0) && (arg0 == 0)))) { - slice.loadUint(4); - let min_addr_len: number = slice.loadUint(12); - let max_addr_len: number = slice.loadUint(12); - let addr_len_step: number = slice.loadUint(12); - let workchain_type_id: number = slice.loadUint(32); - if ((!(min_addr_len >= 64))) { - throw new Error('Condition (min_addr_len >= 64) is not satisfied while loading "WorkchainFormat_wfmt_ext" for type "WorkchainFormat"'); - } - if ((!(min_addr_len <= max_addr_len))) { - throw new Error('Condition (min_addr_len <= max_addr_len) is not satisfied while loading "WorkchainFormat_wfmt_ext" for type "WorkchainFormat"'); - } - if ((!(max_addr_len <= 1023))) { - throw new Error('Condition (max_addr_len <= 1023) is not satisfied while loading "WorkchainFormat_wfmt_ext" for type "WorkchainFormat"'); - } - if ((!(addr_len_step <= 1023))) { - throw new Error('Condition (addr_len_step <= 1023) is not satisfied while loading "WorkchainFormat_wfmt_ext" for type "WorkchainFormat"'); - } - if ((!(workchain_type_id >= 1))) { - throw new Error('Condition (workchain_type_id >= 1) is not satisfied while loading "WorkchainFormat_wfmt_ext" for type "WorkchainFormat"'); - } - return { - kind: 'WorkchainFormat_wfmt_ext', - min_addr_len: min_addr_len, - max_addr_len: max_addr_len, - addr_len_step: addr_len_step, - workchain_type_id: workchain_type_id, - } - - } - throw new Error('Expected one of "WorkchainFormat_wfmt_basic", "WorkchainFormat_wfmt_ext" in loading "WorkchainFormat", but data does not satisfy any constructor'); -} - -export function storeWorkchainFormat(workchainFormat: WorkchainFormat): (builder: Builder) => void { - if ((workchainFormat.kind == 'WorkchainFormat_wfmt_basic')) { - return ((builder: Builder) => { - builder.storeUint(0x1, 4); - builder.storeInt(workchainFormat.vm_version, 32); - builder.storeUint(workchainFormat.vm_mode, 64); - }) - - } - if ((workchainFormat.kind == 'WorkchainFormat_wfmt_ext')) { - return ((builder: Builder) => { - builder.storeUint(0x0, 4); - builder.storeUint(workchainFormat.min_addr_len, 12); - builder.storeUint(workchainFormat.max_addr_len, 12); - builder.storeUint(workchainFormat.addr_len_step, 12); - builder.storeUint(workchainFormat.workchain_type_id, 32); - if ((!(workchainFormat.min_addr_len >= 64))) { - throw new Error('Condition (workchainFormat.min_addr_len >= 64) is not satisfied while loading "WorkchainFormat_wfmt_ext" for type "WorkchainFormat"'); - } - if ((!(workchainFormat.min_addr_len <= workchainFormat.max_addr_len))) { - throw new Error('Condition (workchainFormat.min_addr_len <= workchainFormat.max_addr_len) is not satisfied while loading "WorkchainFormat_wfmt_ext" for type "WorkchainFormat"'); - } - if ((!(workchainFormat.max_addr_len <= 1023))) { - throw new Error('Condition (workchainFormat.max_addr_len <= 1023) is not satisfied while loading "WorkchainFormat_wfmt_ext" for type "WorkchainFormat"'); - } - if ((!(workchainFormat.addr_len_step <= 1023))) { - throw new Error('Condition (workchainFormat.addr_len_step <= 1023) is not satisfied while loading "WorkchainFormat_wfmt_ext" for type "WorkchainFormat"'); - } - if ((!(workchainFormat.workchain_type_id >= 1))) { - throw new Error('Condition (workchainFormat.workchain_type_id >= 1) is not satisfied while loading "WorkchainFormat_wfmt_ext" for type "WorkchainFormat"'); - } - }) - - } - throw new Error('Expected one of "WorkchainFormat_wfmt_basic", "WorkchainFormat_wfmt_ext" in loading "WorkchainFormat", but data does not satisfy any constructor'); -} - -/* -wc_split_merge_timings#0 - split_merge_delay:uint32 split_merge_interval:uint32 - min_split_merge_interval:uint32 max_split_merge_delay:uint32 - = WcSplitMergeTimings; -*/ - -export function loadWcSplitMergeTimings(slice: Slice): WcSplitMergeTimings { - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0x0))) { - slice.loadUint(4); - let split_merge_delay: number = slice.loadUint(32); - let split_merge_interval: number = slice.loadUint(32); - let min_split_merge_interval: number = slice.loadUint(32); - let max_split_merge_delay: number = slice.loadUint(32); - return { - kind: 'WcSplitMergeTimings', - split_merge_delay: split_merge_delay, - split_merge_interval: split_merge_interval, - min_split_merge_interval: min_split_merge_interval, - max_split_merge_delay: max_split_merge_delay, - } - - } - throw new Error('Expected one of "WcSplitMergeTimings" in loading "WcSplitMergeTimings", but data does not satisfy any constructor'); -} - -export function storeWcSplitMergeTimings(wcSplitMergeTimings: WcSplitMergeTimings): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x0, 4); - builder.storeUint(wcSplitMergeTimings.split_merge_delay, 32); - builder.storeUint(wcSplitMergeTimings.split_merge_interval, 32); - builder.storeUint(wcSplitMergeTimings.min_split_merge_interval, 32); - builder.storeUint(wcSplitMergeTimings.max_split_merge_delay, 32); - }) - -} - -/* -workchain#a6 enabled_since:uint32 actual_min_split:(## 8) - min_split:(## 8) max_split:(## 8) { actual_min_split <= min_split } - basic:(## 1) active:Bool accept_msgs:Bool flags:(## 13) { flags = 0 } - zerostate_root_hash:bits256 zerostate_file_hash:bits256 - version:uint32 format:(WorkchainFormat basic) - = WorkchainDescr; -*/ - -/* -workchain_v2#a7 enabled_since:uint32 actual_min_split:(## 8) - min_split:(## 8) max_split:(## 8) { actual_min_split <= min_split } - basic:(## 1) active:Bool accept_msgs:Bool flags:(## 13) { flags = 0 } - zerostate_root_hash:bits256 zerostate_file_hash:bits256 - version:uint32 format:(WorkchainFormat basic) - split_merge_timings:WcSplitMergeTimings - = WorkchainDescr; -*/ - -export function loadWorkchainDescr(slice: Slice): WorkchainDescr { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xa6))) { - slice.loadUint(8); - let enabled_since: number = slice.loadUint(32); - let actual_min_split: number = slice.loadUint(8); - let min_split: number = slice.loadUint(8); - let max_split: number = slice.loadUint(8); - let basic: number = slice.loadUint(1); - let active: boolean = slice.loadBoolean(); - let accept_msgs: boolean = slice.loadBoolean(); - let flags: number = slice.loadUint(13); - let zerostate_root_hash: BitString = slice.loadBits(256); - let zerostate_file_hash: BitString = slice.loadBits(256); - let version: number = slice.loadUint(32); - let format: WorkchainFormat = loadWorkchainFormat(slice, basic); - if ((!(actual_min_split <= min_split))) { - throw new Error('Condition (actual_min_split <= min_split) is not satisfied while loading "WorkchainDescr_workchain" for type "WorkchainDescr"'); - } - if ((!(flags == 0))) { - throw new Error('Condition (flags == 0) is not satisfied while loading "WorkchainDescr_workchain" for type "WorkchainDescr"'); - } - return { - kind: 'WorkchainDescr_workchain', - enabled_since: enabled_since, - actual_min_split: actual_min_split, - min_split: min_split, - max_split: max_split, - basic: basic, - active: active, - accept_msgs: accept_msgs, - flags: flags, - zerostate_root_hash: zerostate_root_hash, - zerostate_file_hash: zerostate_file_hash, - version: version, - format: format, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xa7))) { - slice.loadUint(8); - let enabled_since: number = slice.loadUint(32); - let actual_min_split: number = slice.loadUint(8); - let min_split: number = slice.loadUint(8); - let max_split: number = slice.loadUint(8); - let basic: number = slice.loadUint(1); - let active: boolean = slice.loadBoolean(); - let accept_msgs: boolean = slice.loadBoolean(); - let flags: number = slice.loadUint(13); - let zerostate_root_hash: BitString = slice.loadBits(256); - let zerostate_file_hash: BitString = slice.loadBits(256); - let version: number = slice.loadUint(32); - let format: WorkchainFormat = loadWorkchainFormat(slice, basic); - let split_merge_timings: WcSplitMergeTimings = loadWcSplitMergeTimings(slice); - if ((!(actual_min_split <= min_split))) { - throw new Error('Condition (actual_min_split <= min_split) is not satisfied while loading "WorkchainDescr_workchain_v2" for type "WorkchainDescr"'); - } - if ((!(flags == 0))) { - throw new Error('Condition (flags == 0) is not satisfied while loading "WorkchainDescr_workchain_v2" for type "WorkchainDescr"'); - } - return { - kind: 'WorkchainDescr_workchain_v2', - enabled_since: enabled_since, - actual_min_split: actual_min_split, - min_split: min_split, - max_split: max_split, - basic: basic, - active: active, - accept_msgs: accept_msgs, - flags: flags, - zerostate_root_hash: zerostate_root_hash, - zerostate_file_hash: zerostate_file_hash, - version: version, - format: format, - split_merge_timings: split_merge_timings, - } - - } - throw new Error('Expected one of "WorkchainDescr_workchain", "WorkchainDescr_workchain_v2" in loading "WorkchainDescr", but data does not satisfy any constructor'); -} - -export function storeWorkchainDescr(workchainDescr: WorkchainDescr): (builder: Builder) => void { - if ((workchainDescr.kind == 'WorkchainDescr_workchain')) { - return ((builder: Builder) => { - builder.storeUint(0xa6, 8); - builder.storeUint(workchainDescr.enabled_since, 32); - builder.storeUint(workchainDescr.actual_min_split, 8); - builder.storeUint(workchainDescr.min_split, 8); - builder.storeUint(workchainDescr.max_split, 8); - builder.storeUint(workchainDescr.basic, 1); - builder.storeBit(workchainDescr.active); - builder.storeBit(workchainDescr.accept_msgs); - builder.storeUint(workchainDescr.flags, 13); - builder.storeBits(workchainDescr.zerostate_root_hash); - builder.storeBits(workchainDescr.zerostate_file_hash); - builder.storeUint(workchainDescr.version, 32); - storeWorkchainFormat(workchainDescr.format)(builder); - if ((!(workchainDescr.actual_min_split <= workchainDescr.min_split))) { - throw new Error('Condition (workchainDescr.actual_min_split <= workchainDescr.min_split) is not satisfied while loading "WorkchainDescr_workchain" for type "WorkchainDescr"'); - } - if ((!(workchainDescr.flags == 0))) { - throw new Error('Condition (workchainDescr.flags == 0) is not satisfied while loading "WorkchainDescr_workchain" for type "WorkchainDescr"'); - } - }) - - } - if ((workchainDescr.kind == 'WorkchainDescr_workchain_v2')) { - return ((builder: Builder) => { - builder.storeUint(0xa7, 8); - builder.storeUint(workchainDescr.enabled_since, 32); - builder.storeUint(workchainDescr.actual_min_split, 8); - builder.storeUint(workchainDescr.min_split, 8); - builder.storeUint(workchainDescr.max_split, 8); - builder.storeUint(workchainDescr.basic, 1); - builder.storeBit(workchainDescr.active); - builder.storeBit(workchainDescr.accept_msgs); - builder.storeUint(workchainDescr.flags, 13); - builder.storeBits(workchainDescr.zerostate_root_hash); - builder.storeBits(workchainDescr.zerostate_file_hash); - builder.storeUint(workchainDescr.version, 32); - storeWorkchainFormat(workchainDescr.format)(builder); - storeWcSplitMergeTimings(workchainDescr.split_merge_timings)(builder); - if ((!(workchainDescr.actual_min_split <= workchainDescr.min_split))) { - throw new Error('Condition (workchainDescr.actual_min_split <= workchainDescr.min_split) is not satisfied while loading "WorkchainDescr_workchain_v2" for type "WorkchainDescr"'); - } - if ((!(workchainDescr.flags == 0))) { - throw new Error('Condition (workchainDescr.flags == 0) is not satisfied while loading "WorkchainDescr_workchain_v2" for type "WorkchainDescr"'); - } - }) - - } - throw new Error('Expected one of "WorkchainDescr_workchain", "WorkchainDescr_workchain_v2" in loading "WorkchainDescr", but data does not satisfy any constructor'); -} - -// complaint_prices#1a deposit:Grams bit_price:Grams cell_price:Grams = ComplaintPricing; - -export function loadComplaintPricing(slice: Slice): ComplaintPricing { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x1a))) { - slice.loadUint(8); - let deposit: Grams = loadGrams(slice); - let bit_price: Grams = loadGrams(slice); - let _cell_price: Grams = loadGrams(slice); - return { - kind: 'ComplaintPricing', - deposit: deposit, - bit_price: bit_price, - _cell_price: _cell_price, - } - - } - throw new Error('Expected one of "ComplaintPricing" in loading "ComplaintPricing", but data does not satisfy any constructor'); -} - -export function storeComplaintPricing(complaintPricing: ComplaintPricing): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x1a, 8); - storeGrams(complaintPricing.deposit)(builder); - storeGrams(complaintPricing.bit_price)(builder); - storeGrams(complaintPricing._cell_price)(builder); - }) - -} - -/* -block_grams_created#6b masterchain_block_fee:Grams basechain_block_fee:Grams - = BlockCreateFees; -*/ - -export function loadBlockCreateFees(slice: Slice): BlockCreateFees { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x6b))) { - slice.loadUint(8); - let masterchain_block_fee: Grams = loadGrams(slice); - let basechain_block_fee: Grams = loadGrams(slice); - return { - kind: 'BlockCreateFees', - masterchain_block_fee: masterchain_block_fee, - basechain_block_fee: basechain_block_fee, - } - - } - throw new Error('Expected one of "BlockCreateFees" in loading "BlockCreateFees", but data does not satisfy any constructor'); -} - -export function storeBlockCreateFees(blockCreateFees: BlockCreateFees): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x6b, 8); - storeGrams(blockCreateFees.masterchain_block_fee)(builder); - storeGrams(blockCreateFees.basechain_block_fee)(builder); - }) - -} - -/* -_#cc utime_since:uint32 bit_price_ps:uint64 cell_price_ps:uint64 - mc_bit_price_ps:uint64 mc_cell_price_ps:uint64 = StoragePrices; -*/ - -export function loadStoragePrices(slice: Slice): StoragePrices { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xcc))) { - slice.loadUint(8); - let utime_since: number = slice.loadUint(32); - let bit_price_ps: number = slice.loadUint(64); - let _cell_price_ps: number = slice.loadUint(64); - let mc_bit_price_ps: number = slice.loadUint(64); - let mc_cell_price_ps: number = slice.loadUint(64); - return { - kind: 'StoragePrices', - utime_since: utime_since, - bit_price_ps: bit_price_ps, - _cell_price_ps: _cell_price_ps, - mc_bit_price_ps: mc_bit_price_ps, - mc_cell_price_ps: mc_cell_price_ps, - } - - } - throw new Error('Expected one of "StoragePrices" in loading "StoragePrices", but data does not satisfy any constructor'); -} - -export function storeStoragePrices(storagePrices: StoragePrices): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0xcc, 8); - builder.storeUint(storagePrices.utime_since, 32); - builder.storeUint(storagePrices.bit_price_ps, 64); - builder.storeUint(storagePrices._cell_price_ps, 64); - builder.storeUint(storagePrices.mc_bit_price_ps, 64); - builder.storeUint(storagePrices.mc_cell_price_ps, 64); - }) - -} - -/* -gas_prices#dd gas_price:uint64 gas_limit:uint64 gas_credit:uint64 - block_gas_limit:uint64 freeze_due_limit:uint64 delete_due_limit:uint64 - = GasLimitsPrices; -*/ - -/* -gas_prices_ext#de gas_price:uint64 gas_limit:uint64 special_gas_limit:uint64 gas_credit:uint64 - block_gas_limit:uint64 freeze_due_limit:uint64 delete_due_limit:uint64 - = GasLimitsPrices; -*/ - -/* -gas_flat_pfx#d1 flat_gas_limit:uint64 flat_gas_price:uint64 other:GasLimitsPrices - = GasLimitsPrices; -*/ - -export function loadGasLimitsPrices(slice: Slice): GasLimitsPrices { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xdd))) { - slice.loadUint(8); - let gas_price: number = slice.loadUint(64); - let gas_limit: number = slice.loadUint(64); - let gas_credit: number = slice.loadUint(64); - let block_gas_limit: number = slice.loadUint(64); - let freeze_due_limit: number = slice.loadUint(64); - let delete_due_limit: number = slice.loadUint(64); - return { - kind: 'GasLimitsPrices_gas_prices', - gas_price: gas_price, - gas_limit: gas_limit, - gas_credit: gas_credit, - block_gas_limit: block_gas_limit, - freeze_due_limit: freeze_due_limit, - delete_due_limit: delete_due_limit, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xde))) { - slice.loadUint(8); - let gas_price: number = slice.loadUint(64); - let gas_limit: number = slice.loadUint(64); - let special_gas_limit: number = slice.loadUint(64); - let gas_credit: number = slice.loadUint(64); - let block_gas_limit: number = slice.loadUint(64); - let freeze_due_limit: number = slice.loadUint(64); - let delete_due_limit: number = slice.loadUint(64); - return { - kind: 'GasLimitsPrices_gas_prices_ext', - gas_price: gas_price, - gas_limit: gas_limit, - special_gas_limit: special_gas_limit, - gas_credit: gas_credit, - block_gas_limit: block_gas_limit, - freeze_due_limit: freeze_due_limit, - delete_due_limit: delete_due_limit, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xd1))) { - slice.loadUint(8); - let flat_gas_limit: number = slice.loadUint(64); - let flat_gas_price: number = slice.loadUint(64); - let other: GasLimitsPrices = loadGasLimitsPrices(slice); - return { - kind: 'GasLimitsPrices_gas_flat_pfx', - flat_gas_limit: flat_gas_limit, - flat_gas_price: flat_gas_price, - other: other, - } - - } - throw new Error('Expected one of "GasLimitsPrices_gas_prices", "GasLimitsPrices_gas_prices_ext", "GasLimitsPrices_gas_flat_pfx" in loading "GasLimitsPrices", but data does not satisfy any constructor'); -} - -export function storeGasLimitsPrices(gasLimitsPrices: GasLimitsPrices): (builder: Builder) => void { - if ((gasLimitsPrices.kind == 'GasLimitsPrices_gas_prices')) { - return ((builder: Builder) => { - builder.storeUint(0xdd, 8); - builder.storeUint(gasLimitsPrices.gas_price, 64); - builder.storeUint(gasLimitsPrices.gas_limit, 64); - builder.storeUint(gasLimitsPrices.gas_credit, 64); - builder.storeUint(gasLimitsPrices.block_gas_limit, 64); - builder.storeUint(gasLimitsPrices.freeze_due_limit, 64); - builder.storeUint(gasLimitsPrices.delete_due_limit, 64); - }) - - } - if ((gasLimitsPrices.kind == 'GasLimitsPrices_gas_prices_ext')) { - return ((builder: Builder) => { - builder.storeUint(0xde, 8); - builder.storeUint(gasLimitsPrices.gas_price, 64); - builder.storeUint(gasLimitsPrices.gas_limit, 64); - builder.storeUint(gasLimitsPrices.special_gas_limit, 64); - builder.storeUint(gasLimitsPrices.gas_credit, 64); - builder.storeUint(gasLimitsPrices.block_gas_limit, 64); - builder.storeUint(gasLimitsPrices.freeze_due_limit, 64); - builder.storeUint(gasLimitsPrices.delete_due_limit, 64); - }) - - } - if ((gasLimitsPrices.kind == 'GasLimitsPrices_gas_flat_pfx')) { - return ((builder: Builder) => { - builder.storeUint(0xd1, 8); - builder.storeUint(gasLimitsPrices.flat_gas_limit, 64); - builder.storeUint(gasLimitsPrices.flat_gas_price, 64); - storeGasLimitsPrices(gasLimitsPrices.other)(builder); - }) - - } - throw new Error('Expected one of "GasLimitsPrices_gas_prices", "GasLimitsPrices_gas_prices_ext", "GasLimitsPrices_gas_flat_pfx" in loading "GasLimitsPrices", but data does not satisfy any constructor'); -} - -/* -param_limits#c3 underload:# soft_limit:# { underload <= soft_limit } - hard_limit:# { soft_limit <= hard_limit } = ParamLimits; -*/ - -export function loadParamLimits(slice: Slice): ParamLimits { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xc3))) { - slice.loadUint(8); - let underload: number = slice.loadUint(32); - let soft_limit: number = slice.loadUint(32); - let hard_limit: number = slice.loadUint(32); - if ((!(underload <= soft_limit))) { - throw new Error('Condition (underload <= soft_limit) is not satisfied while loading "ParamLimits" for type "ParamLimits"'); - } - if ((!(soft_limit <= hard_limit))) { - throw new Error('Condition (soft_limit <= hard_limit) is not satisfied while loading "ParamLimits" for type "ParamLimits"'); - } - return { - kind: 'ParamLimits', - underload: underload, - soft_limit: soft_limit, - hard_limit: hard_limit, - } - - } - throw new Error('Expected one of "ParamLimits" in loading "ParamLimits", but data does not satisfy any constructor'); -} - -export function storeParamLimits(paramLimits: ParamLimits): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0xc3, 8); - builder.storeUint(paramLimits.underload, 32); - builder.storeUint(paramLimits.soft_limit, 32); - builder.storeUint(paramLimits.hard_limit, 32); - if ((!(paramLimits.underload <= paramLimits.soft_limit))) { - throw new Error('Condition (paramLimits.underload <= paramLimits.soft_limit) is not satisfied while loading "ParamLimits" for type "ParamLimits"'); - } - if ((!(paramLimits.soft_limit <= paramLimits.hard_limit))) { - throw new Error('Condition (paramLimits.soft_limit <= paramLimits.hard_limit) is not satisfied while loading "ParamLimits" for type "ParamLimits"'); - } - }) - -} - -/* -block_limits#5d bytes:ParamLimits gas:ParamLimits lt_delta:ParamLimits - = BlockLimits; -*/ - -export function loadBlockLimits(slice: Slice): BlockLimits { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x5d))) { - slice.loadUint(8); - let bytes: ParamLimits = loadParamLimits(slice); - let gas: ParamLimits = loadParamLimits(slice); - let lt_delta: ParamLimits = loadParamLimits(slice); - return { - kind: 'BlockLimits', - bytes: bytes, - gas: gas, - lt_delta: lt_delta, - } - - } - throw new Error('Expected one of "BlockLimits" in loading "BlockLimits", but data does not satisfy any constructor'); -} - -export function storeBlockLimits(blockLimits: BlockLimits): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x5d, 8); - storeParamLimits(blockLimits.bytes)(builder); - storeParamLimits(blockLimits.gas)(builder); - storeParamLimits(blockLimits.lt_delta)(builder); - }) - -} - -/* -msg_forward_prices#ea lump_price:uint64 bit_price:uint64 cell_price:uint64 - ihr_price_factor:uint32 first_frac:uint16 next_frac:uint16 = MsgForwardPrices; -*/ - -export function loadMsgForwardPrices(slice: Slice): MsgForwardPrices { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xea))) { - slice.loadUint(8); - let lump_price: number = slice.loadUint(64); - let bit_price: number = slice.loadUint(64); - let _cell_price: number = slice.loadUint(64); - let ihr_price_factor: number = slice.loadUint(32); - let first_frac: number = slice.loadUint(16); - let next_frac: number = slice.loadUint(16); - return { - kind: 'MsgForwardPrices', - lump_price: lump_price, - bit_price: bit_price, - _cell_price: _cell_price, - ihr_price_factor: ihr_price_factor, - first_frac: first_frac, - next_frac: next_frac, - } - - } - throw new Error('Expected one of "MsgForwardPrices" in loading "MsgForwardPrices", but data does not satisfy any constructor'); -} - -export function storeMsgForwardPrices(msgForwardPrices: MsgForwardPrices): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0xea, 8); - builder.storeUint(msgForwardPrices.lump_price, 64); - builder.storeUint(msgForwardPrices.bit_price, 64); - builder.storeUint(msgForwardPrices._cell_price, 64); - builder.storeUint(msgForwardPrices.ihr_price_factor, 32); - builder.storeUint(msgForwardPrices.first_frac, 16); - builder.storeUint(msgForwardPrices.next_frac, 16); - }) - -} - -/* -catchain_config#c1 mc_catchain_lifetime:uint32 shard_catchain_lifetime:uint32 - shard_validators_lifetime:uint32 shard_validators_num:uint32 = CatchainConfig; -*/ - -/* -catchain_config_new#c2 flags:(## 7) { flags = 0 } shuffle_mc_validators:Bool - mc_catchain_lifetime:uint32 shard_catchain_lifetime:uint32 - shard_validators_lifetime:uint32 shard_validators_num:uint32 = CatchainConfig; -*/ - -export function loadCatchainConfig(slice: Slice): CatchainConfig { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xc1))) { - slice.loadUint(8); - let mc_catchain_lifetime: number = slice.loadUint(32); - let shard_catchain_lifetime: number = slice.loadUint(32); - let shard_validators_lifetime: number = slice.loadUint(32); - let shard_validators_num: number = slice.loadUint(32); - return { - kind: 'CatchainConfig_catchain_config', - mc_catchain_lifetime: mc_catchain_lifetime, - shard_catchain_lifetime: shard_catchain_lifetime, - shard_validators_lifetime: shard_validators_lifetime, - shard_validators_num: shard_validators_num, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xc2))) { - slice.loadUint(8); - let flags: number = slice.loadUint(7); - let shuffle_mc_validators: boolean = slice.loadBoolean(); - let mc_catchain_lifetime: number = slice.loadUint(32); - let shard_catchain_lifetime: number = slice.loadUint(32); - let shard_validators_lifetime: number = slice.loadUint(32); - let shard_validators_num: number = slice.loadUint(32); - if ((!(flags == 0))) { - throw new Error('Condition (flags == 0) is not satisfied while loading "CatchainConfig_catchain_config_new" for type "CatchainConfig"'); - } - return { - kind: 'CatchainConfig_catchain_config_new', - flags: flags, - shuffle_mc_validators: shuffle_mc_validators, - mc_catchain_lifetime: mc_catchain_lifetime, - shard_catchain_lifetime: shard_catchain_lifetime, - shard_validators_lifetime: shard_validators_lifetime, - shard_validators_num: shard_validators_num, - } - - } - throw new Error('Expected one of "CatchainConfig_catchain_config", "CatchainConfig_catchain_config_new" in loading "CatchainConfig", but data does not satisfy any constructor'); -} - -export function storeCatchainConfig(catchainConfig: CatchainConfig): (builder: Builder) => void { - if ((catchainConfig.kind == 'CatchainConfig_catchain_config')) { - return ((builder: Builder) => { - builder.storeUint(0xc1, 8); - builder.storeUint(catchainConfig.mc_catchain_lifetime, 32); - builder.storeUint(catchainConfig.shard_catchain_lifetime, 32); - builder.storeUint(catchainConfig.shard_validators_lifetime, 32); - builder.storeUint(catchainConfig.shard_validators_num, 32); - }) - - } - if ((catchainConfig.kind == 'CatchainConfig_catchain_config_new')) { - return ((builder: Builder) => { - builder.storeUint(0xc2, 8); - builder.storeUint(catchainConfig.flags, 7); - builder.storeBit(catchainConfig.shuffle_mc_validators); - builder.storeUint(catchainConfig.mc_catchain_lifetime, 32); - builder.storeUint(catchainConfig.shard_catchain_lifetime, 32); - builder.storeUint(catchainConfig.shard_validators_lifetime, 32); - builder.storeUint(catchainConfig.shard_validators_num, 32); - if ((!(catchainConfig.flags == 0))) { - throw new Error('Condition (catchainConfig.flags == 0) is not satisfied while loading "CatchainConfig_catchain_config_new" for type "CatchainConfig"'); - } - }) - - } - throw new Error('Expected one of "CatchainConfig_catchain_config", "CatchainConfig_catchain_config_new" in loading "CatchainConfig", but data does not satisfy any constructor'); -} - -/* -consensus_config#d6 round_candidates:# { round_candidates >= 1 } - next_candidate_delay_ms:uint32 consensus_timeout_ms:uint32 - fast_attempts:uint32 attempt_duration:uint32 catchain_max_deps:uint32 - max_block_bytes:uint32 max_collated_bytes:uint32 = ConsensusConfig; -*/ - -/* -consensus_config_new#d7 flags:(## 7) { flags = 0 } new_catchain_ids:Bool - round_candidates:(## 8) { round_candidates >= 1 } - next_candidate_delay_ms:uint32 consensus_timeout_ms:uint32 - fast_attempts:uint32 attempt_duration:uint32 catchain_max_deps:uint32 - max_block_bytes:uint32 max_collated_bytes:uint32 = ConsensusConfig; -*/ - -/* -consensus_config_v3#d8 flags:(## 7) { flags = 0 } new_catchain_ids:Bool - round_candidates:(## 8) { round_candidates >= 1 } - next_candidate_delay_ms:uint32 consensus_timeout_ms:uint32 - fast_attempts:uint32 attempt_duration:uint32 catchain_max_deps:uint32 - max_block_bytes:uint32 max_collated_bytes:uint32 - proto_version:uint16 = ConsensusConfig; -*/ - -/* -consensus_config_v4#d9 flags:(## 7) { flags = 0 } new_catchain_ids:Bool - round_candidates:(## 8) { round_candidates >= 1 } - next_candidate_delay_ms:uint32 consensus_timeout_ms:uint32 - fast_attempts:uint32 attempt_duration:uint32 catchain_max_deps:uint32 - max_block_bytes:uint32 max_collated_bytes:uint32 - proto_version:uint16 catchain_max_blocks_coeff:uint32 = ConsensusConfig; -*/ - -export function loadConsensusConfig(slice: Slice): ConsensusConfig { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xd6))) { - slice.loadUint(8); - let round_candidates: number = slice.loadUint(32); - let next_candidate_delay_ms: number = slice.loadUint(32); - let consensus_timeout_ms: number = slice.loadUint(32); - let fast_attempts: number = slice.loadUint(32); - let attempt_duration: number = slice.loadUint(32); - let catchain_max_deps: number = slice.loadUint(32); - let max_block_bytes: number = slice.loadUint(32); - let max_collated_bytes: number = slice.loadUint(32); - if ((!(round_candidates >= 1))) { - throw new Error('Condition (round_candidates >= 1) is not satisfied while loading "ConsensusConfig_consensus_config" for type "ConsensusConfig"'); - } - return { - kind: 'ConsensusConfig_consensus_config', - round_candidates: round_candidates, - next_candidate_delay_ms: next_candidate_delay_ms, - consensus_timeout_ms: consensus_timeout_ms, - fast_attempts: fast_attempts, - attempt_duration: attempt_duration, - catchain_max_deps: catchain_max_deps, - max_block_bytes: max_block_bytes, - max_collated_bytes: max_collated_bytes, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xd7))) { - slice.loadUint(8); - let flags: number = slice.loadUint(7); - let new_catchain_ids: boolean = slice.loadBoolean(); - let round_candidates: number = slice.loadUint(8); - let next_candidate_delay_ms: number = slice.loadUint(32); - let consensus_timeout_ms: number = slice.loadUint(32); - let fast_attempts: number = slice.loadUint(32); - let attempt_duration: number = slice.loadUint(32); - let catchain_max_deps: number = slice.loadUint(32); - let max_block_bytes: number = slice.loadUint(32); - let max_collated_bytes: number = slice.loadUint(32); - if ((!(flags == 0))) { - throw new Error('Condition (flags == 0) is not satisfied while loading "ConsensusConfig_consensus_config_new" for type "ConsensusConfig"'); - } - if ((!(round_candidates >= 1))) { - throw new Error('Condition (round_candidates >= 1) is not satisfied while loading "ConsensusConfig_consensus_config_new" for type "ConsensusConfig"'); - } - return { - kind: 'ConsensusConfig_consensus_config_new', - flags: flags, - new_catchain_ids: new_catchain_ids, - round_candidates: round_candidates, - next_candidate_delay_ms: next_candidate_delay_ms, - consensus_timeout_ms: consensus_timeout_ms, - fast_attempts: fast_attempts, - attempt_duration: attempt_duration, - catchain_max_deps: catchain_max_deps, - max_block_bytes: max_block_bytes, - max_collated_bytes: max_collated_bytes, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xd8))) { - slice.loadUint(8); - let flags: number = slice.loadUint(7); - let new_catchain_ids: boolean = slice.loadBoolean(); - let round_candidates: number = slice.loadUint(8); - let next_candidate_delay_ms: number = slice.loadUint(32); - let consensus_timeout_ms: number = slice.loadUint(32); - let fast_attempts: number = slice.loadUint(32); - let attempt_duration: number = slice.loadUint(32); - let catchain_max_deps: number = slice.loadUint(32); - let max_block_bytes: number = slice.loadUint(32); - let max_collated_bytes: number = slice.loadUint(32); - let proto_version: number = slice.loadUint(16); - if ((!(flags == 0))) { - throw new Error('Condition (flags == 0) is not satisfied while loading "ConsensusConfig_consensus_config_v3" for type "ConsensusConfig"'); - } - if ((!(round_candidates >= 1))) { - throw new Error('Condition (round_candidates >= 1) is not satisfied while loading "ConsensusConfig_consensus_config_v3" for type "ConsensusConfig"'); - } - return { - kind: 'ConsensusConfig_consensus_config_v3', - flags: flags, - new_catchain_ids: new_catchain_ids, - round_candidates: round_candidates, - next_candidate_delay_ms: next_candidate_delay_ms, - consensus_timeout_ms: consensus_timeout_ms, - fast_attempts: fast_attempts, - attempt_duration: attempt_duration, - catchain_max_deps: catchain_max_deps, - max_block_bytes: max_block_bytes, - max_collated_bytes: max_collated_bytes, - proto_version: proto_version, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xd9))) { - slice.loadUint(8); - let flags: number = slice.loadUint(7); - let new_catchain_ids: boolean = slice.loadBoolean(); - let round_candidates: number = slice.loadUint(8); - let next_candidate_delay_ms: number = slice.loadUint(32); - let consensus_timeout_ms: number = slice.loadUint(32); - let fast_attempts: number = slice.loadUint(32); - let attempt_duration: number = slice.loadUint(32); - let catchain_max_deps: number = slice.loadUint(32); - let max_block_bytes: number = slice.loadUint(32); - let max_collated_bytes: number = slice.loadUint(32); - let proto_version: number = slice.loadUint(16); - let catchain_max_blocks_coeff: number = slice.loadUint(32); - if ((!(flags == 0))) { - throw new Error('Condition (flags == 0) is not satisfied while loading "ConsensusConfig_consensus_config_v4" for type "ConsensusConfig"'); - } - if ((!(round_candidates >= 1))) { - throw new Error('Condition (round_candidates >= 1) is not satisfied while loading "ConsensusConfig_consensus_config_v4" for type "ConsensusConfig"'); - } - return { - kind: 'ConsensusConfig_consensus_config_v4', - flags: flags, - new_catchain_ids: new_catchain_ids, - round_candidates: round_candidates, - next_candidate_delay_ms: next_candidate_delay_ms, - consensus_timeout_ms: consensus_timeout_ms, - fast_attempts: fast_attempts, - attempt_duration: attempt_duration, - catchain_max_deps: catchain_max_deps, - max_block_bytes: max_block_bytes, - max_collated_bytes: max_collated_bytes, - proto_version: proto_version, - catchain_max_blocks_coeff: catchain_max_blocks_coeff, - } - - } - throw new Error('Expected one of "ConsensusConfig_consensus_config", "ConsensusConfig_consensus_config_new", "ConsensusConfig_consensus_config_v3", "ConsensusConfig_consensus_config_v4" in loading "ConsensusConfig", but data does not satisfy any constructor'); -} - -export function storeConsensusConfig(consensusConfig: ConsensusConfig): (builder: Builder) => void { - if ((consensusConfig.kind == 'ConsensusConfig_consensus_config')) { - return ((builder: Builder) => { - builder.storeUint(0xd6, 8); - builder.storeUint(consensusConfig.round_candidates, 32); - builder.storeUint(consensusConfig.next_candidate_delay_ms, 32); - builder.storeUint(consensusConfig.consensus_timeout_ms, 32); - builder.storeUint(consensusConfig.fast_attempts, 32); - builder.storeUint(consensusConfig.attempt_duration, 32); - builder.storeUint(consensusConfig.catchain_max_deps, 32); - builder.storeUint(consensusConfig.max_block_bytes, 32); - builder.storeUint(consensusConfig.max_collated_bytes, 32); - if ((!(consensusConfig.round_candidates >= 1))) { - throw new Error('Condition (consensusConfig.round_candidates >= 1) is not satisfied while loading "ConsensusConfig_consensus_config" for type "ConsensusConfig"'); - } - }) - - } - if ((consensusConfig.kind == 'ConsensusConfig_consensus_config_new')) { - return ((builder: Builder) => { - builder.storeUint(0xd7, 8); - builder.storeUint(consensusConfig.flags, 7); - builder.storeBit(consensusConfig.new_catchain_ids); - builder.storeUint(consensusConfig.round_candidates, 8); - builder.storeUint(consensusConfig.next_candidate_delay_ms, 32); - builder.storeUint(consensusConfig.consensus_timeout_ms, 32); - builder.storeUint(consensusConfig.fast_attempts, 32); - builder.storeUint(consensusConfig.attempt_duration, 32); - builder.storeUint(consensusConfig.catchain_max_deps, 32); - builder.storeUint(consensusConfig.max_block_bytes, 32); - builder.storeUint(consensusConfig.max_collated_bytes, 32); - if ((!(consensusConfig.flags == 0))) { - throw new Error('Condition (consensusConfig.flags == 0) is not satisfied while loading "ConsensusConfig_consensus_config_new" for type "ConsensusConfig"'); - } - if ((!(consensusConfig.round_candidates >= 1))) { - throw new Error('Condition (consensusConfig.round_candidates >= 1) is not satisfied while loading "ConsensusConfig_consensus_config_new" for type "ConsensusConfig"'); - } - }) - - } - if ((consensusConfig.kind == 'ConsensusConfig_consensus_config_v3')) { - return ((builder: Builder) => { - builder.storeUint(0xd8, 8); - builder.storeUint(consensusConfig.flags, 7); - builder.storeBit(consensusConfig.new_catchain_ids); - builder.storeUint(consensusConfig.round_candidates, 8); - builder.storeUint(consensusConfig.next_candidate_delay_ms, 32); - builder.storeUint(consensusConfig.consensus_timeout_ms, 32); - builder.storeUint(consensusConfig.fast_attempts, 32); - builder.storeUint(consensusConfig.attempt_duration, 32); - builder.storeUint(consensusConfig.catchain_max_deps, 32); - builder.storeUint(consensusConfig.max_block_bytes, 32); - builder.storeUint(consensusConfig.max_collated_bytes, 32); - builder.storeUint(consensusConfig.proto_version, 16); - if ((!(consensusConfig.flags == 0))) { - throw new Error('Condition (consensusConfig.flags == 0) is not satisfied while loading "ConsensusConfig_consensus_config_v3" for type "ConsensusConfig"'); - } - if ((!(consensusConfig.round_candidates >= 1))) { - throw new Error('Condition (consensusConfig.round_candidates >= 1) is not satisfied while loading "ConsensusConfig_consensus_config_v3" for type "ConsensusConfig"'); - } - }) - - } - if ((consensusConfig.kind == 'ConsensusConfig_consensus_config_v4')) { - return ((builder: Builder) => { - builder.storeUint(0xd9, 8); - builder.storeUint(consensusConfig.flags, 7); - builder.storeBit(consensusConfig.new_catchain_ids); - builder.storeUint(consensusConfig.round_candidates, 8); - builder.storeUint(consensusConfig.next_candidate_delay_ms, 32); - builder.storeUint(consensusConfig.consensus_timeout_ms, 32); - builder.storeUint(consensusConfig.fast_attempts, 32); - builder.storeUint(consensusConfig.attempt_duration, 32); - builder.storeUint(consensusConfig.catchain_max_deps, 32); - builder.storeUint(consensusConfig.max_block_bytes, 32); - builder.storeUint(consensusConfig.max_collated_bytes, 32); - builder.storeUint(consensusConfig.proto_version, 16); - builder.storeUint(consensusConfig.catchain_max_blocks_coeff, 32); - if ((!(consensusConfig.flags == 0))) { - throw new Error('Condition (consensusConfig.flags == 0) is not satisfied while loading "ConsensusConfig_consensus_config_v4" for type "ConsensusConfig"'); - } - if ((!(consensusConfig.round_candidates >= 1))) { - throw new Error('Condition (consensusConfig.round_candidates >= 1) is not satisfied while loading "ConsensusConfig_consensus_config_v4" for type "ConsensusConfig"'); - } - }) - - } - throw new Error('Expected one of "ConsensusConfig_consensus_config", "ConsensusConfig_consensus_config_new", "ConsensusConfig_consensus_config_v3", "ConsensusConfig_consensus_config_v4" in loading "ConsensusConfig", but data does not satisfy any constructor'); -} - -// validator_temp_key#3 adnl_addr:bits256 temp_public_key:SigPubKey seqno:# valid_until:uint32 = ValidatorTempKey; - -export function loadValidatorTempKey(slice: Slice): ValidatorTempKey { - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0x3))) { - slice.loadUint(4); - let adnl_addr: BitString = slice.loadBits(256); - let temp_public_key: SigPubKey = loadSigPubKey(slice); - let seqno: number = slice.loadUint(32); - let valid_until: number = slice.loadUint(32); - return { - kind: 'ValidatorTempKey', - adnl_addr: adnl_addr, - temp_public_key: temp_public_key, - seqno: seqno, - valid_until: valid_until, - } - - } - throw new Error('Expected one of "ValidatorTempKey" in loading "ValidatorTempKey", but data does not satisfy any constructor'); -} - -export function storeValidatorTempKey(validatorTempKey: ValidatorTempKey): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x3, 4); - builder.storeBits(validatorTempKey.adnl_addr); - storeSigPubKey(validatorTempKey.temp_public_key)(builder); - builder.storeUint(validatorTempKey.seqno, 32); - builder.storeUint(validatorTempKey.valid_until, 32); - }) - -} - -// signed_temp_key#4 key:^ValidatorTempKey signature:CryptoSignature = ValidatorSignedTempKey; - -export function loadValidatorSignedTempKey(slice: Slice): ValidatorSignedTempKey { - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0x4))) { - slice.loadUint(4); - let slice1 = slice.loadRef().beginParse(); - let key: ValidatorTempKey = loadValidatorTempKey(slice1); - let signature: CryptoSignature = loadCryptoSignature(slice); - return { - kind: 'ValidatorSignedTempKey', - key: key, - signature: signature, - } - - } - throw new Error('Expected one of "ValidatorSignedTempKey" in loading "ValidatorSignedTempKey", but data does not satisfy any constructor'); -} - -export function storeValidatorSignedTempKey(validatorSignedTempKey: ValidatorSignedTempKey): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x4, 4); - let cell1 = beginCell(); - storeValidatorTempKey(validatorSignedTempKey.key)(cell1); - builder.storeRef(cell1); - storeCryptoSignature(validatorSignedTempKey.signature)(builder); - }) - -} - -/* -misbehaviour_punishment_config_v1#01 - default_flat_fine:Grams default_proportional_fine:uint32 - severity_flat_mult:uint16 severity_proportional_mult:uint16 - unpunishable_interval:uint16 - long_interval:uint16 long_flat_mult:uint16 long_proportional_mult:uint16 - medium_interval:uint16 medium_flat_mult:uint16 medium_proportional_mult:uint16 - = MisbehaviourPunishmentConfig; -*/ - -export function loadMisbehaviourPunishmentConfig(slice: Slice): MisbehaviourPunishmentConfig { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x01))) { - slice.loadUint(8); - let default_flat_fine: Grams = loadGrams(slice); - let default_proportional_fine: number = slice.loadUint(32); - let severity_flat_mult: number = slice.loadUint(16); - let severity_proportional_mult: number = slice.loadUint(16); - let unpunishable_interval: number = slice.loadUint(16); - let long_interval: number = slice.loadUint(16); - let long_flat_mult: number = slice.loadUint(16); - let long_proportional_mult: number = slice.loadUint(16); - let medium_interval: number = slice.loadUint(16); - let medium_flat_mult: number = slice.loadUint(16); - let medium_proportional_mult: number = slice.loadUint(16); - return { - kind: 'MisbehaviourPunishmentConfig', - default_flat_fine: default_flat_fine, - default_proportional_fine: default_proportional_fine, - severity_flat_mult: severity_flat_mult, - severity_proportional_mult: severity_proportional_mult, - unpunishable_interval: unpunishable_interval, - long_interval: long_interval, - long_flat_mult: long_flat_mult, - long_proportional_mult: long_proportional_mult, - medium_interval: medium_interval, - medium_flat_mult: medium_flat_mult, - medium_proportional_mult: medium_proportional_mult, - } - - } - throw new Error('Expected one of "MisbehaviourPunishmentConfig" in loading "MisbehaviourPunishmentConfig", but data does not satisfy any constructor'); -} - -export function storeMisbehaviourPunishmentConfig(misbehaviourPunishmentConfig: MisbehaviourPunishmentConfig): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x01, 8); - storeGrams(misbehaviourPunishmentConfig.default_flat_fine)(builder); - builder.storeUint(misbehaviourPunishmentConfig.default_proportional_fine, 32); - builder.storeUint(misbehaviourPunishmentConfig.severity_flat_mult, 16); - builder.storeUint(misbehaviourPunishmentConfig.severity_proportional_mult, 16); - builder.storeUint(misbehaviourPunishmentConfig.unpunishable_interval, 16); - builder.storeUint(misbehaviourPunishmentConfig.long_interval, 16); - builder.storeUint(misbehaviourPunishmentConfig.long_flat_mult, 16); - builder.storeUint(misbehaviourPunishmentConfig.long_proportional_mult, 16); - builder.storeUint(misbehaviourPunishmentConfig.medium_interval, 16); - builder.storeUint(misbehaviourPunishmentConfig.medium_flat_mult, 16); - builder.storeUint(misbehaviourPunishmentConfig.medium_proportional_mult, 16); - }) - -} - -/* -size_limits_config#01 max_msg_bits:uint32 max_msg_cells:uint32 max_library_cells:uint32 max_vm_data_depth:uint16 - max_ext_msg_size:uint32 max_ext_msg_depth:uint16 = SizeLimitsConfig; -*/ - -/* -size_limits_config_v2#02 max_msg_bits:uint32 max_msg_cells:uint32 max_library_cells:uint32 max_vm_data_depth:uint16 - max_ext_msg_size:uint32 max_ext_msg_depth:uint16 max_acc_state_cells:uint32 max_acc_state_bits:uint32 - max_acc_public_libraries:uint32 = SizeLimitsConfig; -*/ - -export function loadSizeLimitsConfig(slice: Slice): SizeLimitsConfig { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x01))) { - slice.loadUint(8); - let max_msg_bits: number = slice.loadUint(32); - let max_msg_cells: number = slice.loadUint(32); - let max_library_cells: number = slice.loadUint(32); - let max_vm_data_depth: number = slice.loadUint(16); - let max_ext_msg_size: number = slice.loadUint(32); - let max_ext_msg_depth: number = slice.loadUint(16); - return { - kind: 'SizeLimitsConfig_size_limits_config', - max_msg_bits: max_msg_bits, - max_msg_cells: max_msg_cells, - max_library_cells: max_library_cells, - max_vm_data_depth: max_vm_data_depth, - max_ext_msg_size: max_ext_msg_size, - max_ext_msg_depth: max_ext_msg_depth, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x02))) { - slice.loadUint(8); - let max_msg_bits: number = slice.loadUint(32); - let max_msg_cells: number = slice.loadUint(32); - let max_library_cells: number = slice.loadUint(32); - let max_vm_data_depth: number = slice.loadUint(16); - let max_ext_msg_size: number = slice.loadUint(32); - let max_ext_msg_depth: number = slice.loadUint(16); - let max_acc_state_cells: number = slice.loadUint(32); - let max_acc_state_bits: number = slice.loadUint(32); - let max_acc_public_libraries: number = slice.loadUint(32); - return { - kind: 'SizeLimitsConfig_size_limits_config_v2', - max_msg_bits: max_msg_bits, - max_msg_cells: max_msg_cells, - max_library_cells: max_library_cells, - max_vm_data_depth: max_vm_data_depth, - max_ext_msg_size: max_ext_msg_size, - max_ext_msg_depth: max_ext_msg_depth, - max_acc_state_cells: max_acc_state_cells, - max_acc_state_bits: max_acc_state_bits, - max_acc_public_libraries: max_acc_public_libraries, - } - - } - throw new Error('Expected one of "SizeLimitsConfig_size_limits_config", "SizeLimitsConfig_size_limits_config_v2" in loading "SizeLimitsConfig", but data does not satisfy any constructor'); -} - -export function storeSizeLimitsConfig(sizeLimitsConfig: SizeLimitsConfig): (builder: Builder) => void { - if ((sizeLimitsConfig.kind == 'SizeLimitsConfig_size_limits_config')) { - return ((builder: Builder) => { - builder.storeUint(0x01, 8); - builder.storeUint(sizeLimitsConfig.max_msg_bits, 32); - builder.storeUint(sizeLimitsConfig.max_msg_cells, 32); - builder.storeUint(sizeLimitsConfig.max_library_cells, 32); - builder.storeUint(sizeLimitsConfig.max_vm_data_depth, 16); - builder.storeUint(sizeLimitsConfig.max_ext_msg_size, 32); - builder.storeUint(sizeLimitsConfig.max_ext_msg_depth, 16); - }) - - } - if ((sizeLimitsConfig.kind == 'SizeLimitsConfig_size_limits_config_v2')) { - return ((builder: Builder) => { - builder.storeUint(0x02, 8); - builder.storeUint(sizeLimitsConfig.max_msg_bits, 32); - builder.storeUint(sizeLimitsConfig.max_msg_cells, 32); - builder.storeUint(sizeLimitsConfig.max_library_cells, 32); - builder.storeUint(sizeLimitsConfig.max_vm_data_depth, 16); - builder.storeUint(sizeLimitsConfig.max_ext_msg_size, 32); - builder.storeUint(sizeLimitsConfig.max_ext_msg_depth, 16); - builder.storeUint(sizeLimitsConfig.max_acc_state_cells, 32); - builder.storeUint(sizeLimitsConfig.max_acc_state_bits, 32); - builder.storeUint(sizeLimitsConfig.max_acc_public_libraries, 32); - }) - - } - throw new Error('Expected one of "SizeLimitsConfig_size_limits_config", "SizeLimitsConfig_size_limits_config_v2" in loading "SizeLimitsConfig", but data does not satisfy any constructor'); -} - -// suspended_address_list#00 addresses:(HashmapE 288 Unit) suspended_until:uint32 = SuspendedAddressList; - -export function loadSuspendedAddressList(slice: Slice): SuspendedAddressList { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x00))) { - slice.loadUint(8); - let addresses: HashmapE = loadHashmapE(slice, 288, loadUnit); - let suspended_until: number = slice.loadUint(32); - return { - kind: 'SuspendedAddressList', - addresses: addresses, - suspended_until: suspended_until, - } - - } - throw new Error('Expected one of "SuspendedAddressList" in loading "SuspendedAddressList", but data does not satisfy any constructor'); -} - -export function storeSuspendedAddressList(suspendedAddressList: SuspendedAddressList): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x00, 8); - storeHashmapE(suspendedAddressList.addresses, storeUnit)(builder); - builder.storeUint(suspendedAddressList.suspended_until, 32); - }) - -} - -// oracle_bridge_params#_ bridge_address:bits256 oracle_mutlisig_address:bits256 oracles:(HashmapE 256 uint256) external_chain_address:bits256 = OracleBridgeParams; - -export function loadOracleBridgeParams(slice: Slice): OracleBridgeParams { - let bridge_address: BitString = slice.loadBits(256); - let oracle_mutlisig_address: BitString = slice.loadBits(256); - let oracles: HashmapE = loadHashmapE(slice, 256, ((slice: Slice) => { - return slice.loadUintBig(256) - - })); - let external_chain_address: BitString = slice.loadBits(256); - return { - kind: 'OracleBridgeParams', - bridge_address: bridge_address, - oracle_mutlisig_address: oracle_mutlisig_address, - oracles: oracles, - external_chain_address: external_chain_address, - } - -} - -export function storeOracleBridgeParams(oracleBridgeParams: OracleBridgeParams): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeBits(oracleBridgeParams.bridge_address); - builder.storeBits(oracleBridgeParams.oracle_mutlisig_address); - storeHashmapE(oracleBridgeParams.oracles, ((arg: bigint) => { - return ((builder: Builder) => { - builder.storeUint(arg, 256); - }) - - }))(builder); - builder.storeBits(oracleBridgeParams.external_chain_address); - }) - -} - -/* -jetton_bridge_prices#_ bridge_burn_fee:Coins bridge_mint_fee:Coins - wallet_min_tons_for_storage:Coins - wallet_gas_consumption:Coins - minter_min_tons_for_storage:Coins - discover_gas_consumption:Coins = JettonBridgePrices; -*/ - -export function loadJettonBridgePrices(slice: Slice): JettonBridgePrices { - let bridge_burn_fee: Coins = loadCoins(slice); - let bridge_mint_fee: Coins = loadCoins(slice); - let wallet_min_tons_for_storage: Coins = loadCoins(slice); - let wallet_gas_consumption: Coins = loadCoins(slice); - let minter_min_tons_for_storage: Coins = loadCoins(slice); - let discover_gas_consumption: Coins = loadCoins(slice); - return { - kind: 'JettonBridgePrices', - bridge_burn_fee: bridge_burn_fee, - bridge_mint_fee: bridge_mint_fee, - wallet_min_tons_for_storage: wallet_min_tons_for_storage, - wallet_gas_consumption: wallet_gas_consumption, - minter_min_tons_for_storage: minter_min_tons_for_storage, - discover_gas_consumption: discover_gas_consumption, - } - -} - -export function storeJettonBridgePrices(jettonBridgePrices: JettonBridgePrices): (builder: Builder) => void { - return ((builder: Builder) => { - storeCoins(jettonBridgePrices.bridge_burn_fee)(builder); - storeCoins(jettonBridgePrices.bridge_mint_fee)(builder); - storeCoins(jettonBridgePrices.wallet_min_tons_for_storage)(builder); - storeCoins(jettonBridgePrices.wallet_gas_consumption)(builder); - storeCoins(jettonBridgePrices.minter_min_tons_for_storage)(builder); - storeCoins(jettonBridgePrices.discover_gas_consumption)(builder); - }) - -} - -// jetton_bridge_params_v0#00 bridge_address:bits256 oracles_address:bits256 oracles:(HashmapE 256 uint256) state_flags:uint8 burn_bridge_fee:Coins = JettonBridgeParams; - -// jetton_bridge_params_v1#01 bridge_address:bits256 oracles_address:bits256 oracles:(HashmapE 256 uint256) state_flags:uint8 prices:^JettonBridgePrices external_chain_address:bits256 = JettonBridgeParams; - -export function loadJettonBridgeParams(slice: Slice): JettonBridgeParams { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x00))) { - slice.loadUint(8); - let bridge_address: BitString = slice.loadBits(256); - let oracles_address: BitString = slice.loadBits(256); - let oracles: HashmapE = loadHashmapE(slice, 256, ((slice: Slice) => { - return slice.loadUintBig(256) - - })); - let state_flags: number = slice.loadUint(8); - let burn_bridge_fee: Coins = loadCoins(slice); - return { - kind: 'JettonBridgeParams_jetton_bridge_params_v0', - bridge_address: bridge_address, - oracles_address: oracles_address, - oracles: oracles, - state_flags: state_flags, - burn_bridge_fee: burn_bridge_fee, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x01))) { - slice.loadUint(8); - let bridge_address: BitString = slice.loadBits(256); - let oracles_address: BitString = slice.loadBits(256); - let oracles: HashmapE = loadHashmapE(slice, 256, ((slice: Slice) => { - return slice.loadUintBig(256) - - })); - let state_flags: number = slice.loadUint(8); - let slice1 = slice.loadRef().beginParse(); - let prices: JettonBridgePrices = loadJettonBridgePrices(slice1); - let external_chain_address: BitString = slice.loadBits(256); - return { - kind: 'JettonBridgeParams_jetton_bridge_params_v1', - bridge_address: bridge_address, - oracles_address: oracles_address, - oracles: oracles, - state_flags: state_flags, - prices: prices, - external_chain_address: external_chain_address, - } - - } - throw new Error('Expected one of "JettonBridgeParams_jetton_bridge_params_v0", "JettonBridgeParams_jetton_bridge_params_v1" in loading "JettonBridgeParams", but data does not satisfy any constructor'); -} - -export function storeJettonBridgeParams(jettonBridgeParams: JettonBridgeParams): (builder: Builder) => void { - if ((jettonBridgeParams.kind == 'JettonBridgeParams_jetton_bridge_params_v0')) { - return ((builder: Builder) => { - builder.storeUint(0x00, 8); - builder.storeBits(jettonBridgeParams.bridge_address); - builder.storeBits(jettonBridgeParams.oracles_address); - storeHashmapE(jettonBridgeParams.oracles, ((arg: bigint) => { - return ((builder: Builder) => { - builder.storeUint(arg, 256); - }) - - }))(builder); - builder.storeUint(jettonBridgeParams.state_flags, 8); - storeCoins(jettonBridgeParams.burn_bridge_fee)(builder); - }) - - } - if ((jettonBridgeParams.kind == 'JettonBridgeParams_jetton_bridge_params_v1')) { - return ((builder: Builder) => { - builder.storeUint(0x01, 8); - builder.storeBits(jettonBridgeParams.bridge_address); - builder.storeBits(jettonBridgeParams.oracles_address); - storeHashmapE(jettonBridgeParams.oracles, ((arg: bigint) => { - return ((builder: Builder) => { - builder.storeUint(arg, 256); - }) - - }))(builder); - builder.storeUint(jettonBridgeParams.state_flags, 8); - let cell1 = beginCell(); - storeJettonBridgePrices(jettonBridgeParams.prices)(cell1); - builder.storeRef(cell1); - builder.storeBits(jettonBridgeParams.external_chain_address); - }) - - } - throw new Error('Expected one of "JettonBridgeParams_jetton_bridge_params_v0", "JettonBridgeParams_jetton_bridge_params_v1" in loading "JettonBridgeParams", but data does not satisfy any constructor'); -} - -/* -block_signatures_pure#_ sig_count:uint32 sig_weight:uint64 - signatures:(HashmapE 16 CryptoSignaturePair) = BlockSignaturesPure; -*/ - -export function loadBlockSignaturesPure(slice: Slice): BlockSignaturesPure { - let sig_count: number = slice.loadUint(32); - let sig_weight: number = slice.loadUint(64); - let signatures: HashmapE = loadHashmapE(slice, 16, loadCryptoSignaturePair); - return { - kind: 'BlockSignaturesPure', - sig_count: sig_count, - sig_weight: sig_weight, - signatures: signatures, - } - -} - -export function storeBlockSignaturesPure(blockSignaturesPure: BlockSignaturesPure): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(blockSignaturesPure.sig_count, 32); - builder.storeUint(blockSignaturesPure.sig_weight, 64); - storeHashmapE(blockSignaturesPure.signatures, storeCryptoSignaturePair)(builder); - }) - -} - -// block_signatures#11 validator_info:ValidatorBaseInfo pure_signatures:BlockSignaturesPure = BlockSignatures; - -export function loadBlockSignatures(slice: Slice): BlockSignatures { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x11))) { - slice.loadUint(8); - let validator_info: ValidatorBaseInfo = loadValidatorBaseInfo(slice); - let pure_signatures: BlockSignaturesPure = loadBlockSignaturesPure(slice); - return { - kind: 'BlockSignatures', - validator_info: validator_info, - pure_signatures: pure_signatures, - } - - } - throw new Error('Expected one of "BlockSignatures" in loading "BlockSignatures", but data does not satisfy any constructor'); -} - -export function storeBlockSignatures(blockSignatures: BlockSignatures): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x11, 8); - storeValidatorBaseInfo(blockSignatures.validator_info)(builder); - storeBlockSignaturesPure(blockSignatures.pure_signatures)(builder); - }) - -} - -// block_proof#c3 proof_for:BlockIdExt root:^Cell signatures:(Maybe ^BlockSignatures) = BlockProof; - -export function loadBlockProof(slice: Slice): BlockProof { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xc3))) { - slice.loadUint(8); - let proof_for: BlockIdExt = loadBlockIdExt(slice); - let slice1 = slice.loadRef().beginParse(); - let root: Slice = slice1; - let signatures: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadBlockSignatures(slice1) - - })); - return { - kind: 'BlockProof', - proof_for: proof_for, - root: root, - signatures: signatures, - } - - } - throw new Error('Expected one of "BlockProof" in loading "BlockProof", but data does not satisfy any constructor'); -} - -export function storeBlockProof(blockProof: BlockProof): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0xc3, 8); - storeBlockIdExt(blockProof.proof_for)(builder); - let cell1 = beginCell(); - cell1.storeSlice(blockProof.root); - builder.storeRef(cell1); - storeMaybe(blockProof.signatures, ((arg: BlockSignatures) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeBlockSignatures(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - -} - -// chain_empty$_ = ProofChain 0; - -// chain_link$_ {n:#} root:^Cell prev:n?^(ProofChain n) = ProofChain (n + 1); - -export function loadProofChain(slice: Slice, arg0: number): ProofChain { - if ((arg0 == 0)) { - return { - kind: 'ProofChain_chain_empty', - } - - } - if (true) { - let slice1 = slice.loadRef().beginParse(); - let root: Slice = slice1; - let prev: ProofChain | undefined = ((arg0 - 1) ? ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadProofChain(slice1, (arg0 - 1)) - - })(slice) : undefined); - return { - kind: 'ProofChain_chain_link', - n: (arg0 - 1), - root: root, - prev: prev, - } - - } - throw new Error('Expected one of "ProofChain_chain_empty", "ProofChain_chain_link" in loading "ProofChain", but data does not satisfy any constructor'); -} - -export function storeProofChain(proofChain: ProofChain): (builder: Builder) => void { - if ((proofChain.kind == 'ProofChain_chain_empty')) { - return ((builder: Builder) => { - }) - - } - if ((proofChain.kind == 'ProofChain_chain_link')) { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeSlice(proofChain.root); - builder.storeRef(cell1); - if ((proofChain.prev != undefined)) { - let cell1 = beginCell(); - storeProofChain(proofChain.prev)(cell1); - builder.storeRef(cell1); - - } - }) - - } - throw new Error('Expected one of "ProofChain_chain_empty", "ProofChain_chain_link" in loading "ProofChain", but data does not satisfy any constructor'); -} - -/* -top_block_descr#d5 proof_for:BlockIdExt signatures:(Maybe ^BlockSignatures) - len:(## 8) { len >= 1 } { len <= 8 } chain:(ProofChain len) = TopBlockDescr; -*/ - -export function loadTopBlockDescr(slice: Slice): TopBlockDescr { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xd5))) { - slice.loadUint(8); - let proof_for: BlockIdExt = loadBlockIdExt(slice); - let signatures: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadBlockSignatures(slice1) - - })); - let len: number = slice.loadUint(8); - let chain: ProofChain = loadProofChain(slice, len); - if ((!(len >= 1))) { - throw new Error('Condition (len >= 1) is not satisfied while loading "TopBlockDescr" for type "TopBlockDescr"'); - } - if ((!(len <= 8))) { - throw new Error('Condition (len <= 8) is not satisfied while loading "TopBlockDescr" for type "TopBlockDescr"'); - } - return { - kind: 'TopBlockDescr', - proof_for: proof_for, - signatures: signatures, - len: len, - chain: chain, - } - - } - throw new Error('Expected one of "TopBlockDescr" in loading "TopBlockDescr", but data does not satisfy any constructor'); -} - -export function storeTopBlockDescr(topBlockDescr: TopBlockDescr): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0xd5, 8); - storeBlockIdExt(topBlockDescr.proof_for)(builder); - storeMaybe(topBlockDescr.signatures, ((arg: BlockSignatures) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeBlockSignatures(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - builder.storeUint(topBlockDescr.len, 8); - storeProofChain(topBlockDescr.chain)(builder); - if ((!(topBlockDescr.len >= 1))) { - throw new Error('Condition (topBlockDescr.len >= 1) is not satisfied while loading "TopBlockDescr" for type "TopBlockDescr"'); - } - if ((!(topBlockDescr.len <= 8))) { - throw new Error('Condition (topBlockDescr.len <= 8) is not satisfied while loading "TopBlockDescr" for type "TopBlockDescr"'); - } - }) - -} - -// top_block_descr_set#4ac789f3 collection:(HashmapE 96 ^TopBlockDescr) = TopBlockDescrSet; - -export function loadTopBlockDescrSet(slice: Slice): TopBlockDescrSet { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x4ac789f3))) { - slice.loadUint(32); - let collection: HashmapE = loadHashmapE(slice, 96, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadTopBlockDescr(slice1) - - })); - return { - kind: 'TopBlockDescrSet', - collection: collection, - } - - } - throw new Error('Expected one of "TopBlockDescrSet" in loading "TopBlockDescrSet", but data does not satisfy any constructor'); -} - -export function storeTopBlockDescrSet(topBlockDescrSet: TopBlockDescrSet): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x4ac789f3, 32); - storeHashmapE(topBlockDescrSet.collection, ((arg: TopBlockDescr) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeTopBlockDescr(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - -} - -/* -prod_info#34 utime:uint32 mc_blk_ref:ExtBlkRef state_proof:^(MERKLE_PROOF Block) - prod_proof:^(MERKLE_PROOF ShardState) = ProducerInfo; -*/ - -export function loadProducerInfo(slice: Slice): ProducerInfo { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x34))) { - slice.loadUint(8); - let utime: number = slice.loadUint(32); - let mc_blk_ref: ExtBlkRef = loadExtBlkRef(slice); - let slice1 = slice.loadRef().beginParse(); - let state_proof: MERKLE_PROOF = loadMERKLE_PROOF(slice1, loadBlock); - let slice2 = slice.loadRef().beginParse(); - let prod_proof: MERKLE_PROOF = loadMERKLE_PROOF(slice2, loadShardState); - return { - kind: 'ProducerInfo', - utime: utime, - mc_blk_ref: mc_blk_ref, - state_proof: state_proof, - prod_proof: prod_proof, - } - - } - throw new Error('Expected one of "ProducerInfo" in loading "ProducerInfo", but data does not satisfy any constructor'); -} - -export function storeProducerInfo(producerInfo: ProducerInfo): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x34, 8); - builder.storeUint(producerInfo.utime, 32); - storeExtBlkRef(producerInfo.mc_blk_ref)(builder); - let cell1 = beginCell(); - storeMERKLE_PROOF(producerInfo.state_proof, storeBlock)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeMERKLE_PROOF(producerInfo.prod_proof, storeShardState)(cell2); - builder.storeRef(cell2); - }) - -} - -// no_blk_gen from_utime:uint32 prod_info:^ProducerInfo = ComplaintDescr; - -// no_blk_gen_diff prod_info_old:^ProducerInfo prod_info_new:^ProducerInfo = ComplaintDescr; - -export function loadComplaintDescr(slice: Slice): ComplaintDescr { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x450e8bd9))) { - slice.loadUint(32); - let from_utime: number = slice.loadUint(32); - let slice1 = slice.loadRef().beginParse(); - let prod_info: ProducerInfo = loadProducerInfo(slice1); - return { - kind: 'ComplaintDescr_no_blk_gen', - from_utime: from_utime, - prod_info: prod_info, - } - - } - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x4737b0ca))) { - slice.loadUint(32); - let slice1 = slice.loadRef().beginParse(); - let prod_info_old: ProducerInfo = loadProducerInfo(slice1); - let slice2 = slice.loadRef().beginParse(); - let prod_info_new: ProducerInfo = loadProducerInfo(slice2); - return { - kind: 'ComplaintDescr_no_blk_gen_diff', - prod_info_old: prod_info_old, - prod_info_new: prod_info_new, - } - - } - throw new Error('Expected one of "ComplaintDescr_no_blk_gen", "ComplaintDescr_no_blk_gen_diff" in loading "ComplaintDescr", but data does not satisfy any constructor'); -} - -export function storeComplaintDescr(complaintDescr: ComplaintDescr): (builder: Builder) => void { - if ((complaintDescr.kind == 'ComplaintDescr_no_blk_gen')) { - return ((builder: Builder) => { - builder.storeUint(0x450e8bd9, 32); - builder.storeUint(complaintDescr.from_utime, 32); - let cell1 = beginCell(); - storeProducerInfo(complaintDescr.prod_info)(cell1); - builder.storeRef(cell1); - }) - - } - if ((complaintDescr.kind == 'ComplaintDescr_no_blk_gen_diff')) { - return ((builder: Builder) => { - builder.storeUint(0x4737b0ca, 32); - let cell1 = beginCell(); - storeProducerInfo(complaintDescr.prod_info_old)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeProducerInfo(complaintDescr.prod_info_new)(cell2); - builder.storeRef(cell2); - }) - - } - throw new Error('Expected one of "ComplaintDescr_no_blk_gen", "ComplaintDescr_no_blk_gen_diff" in loading "ComplaintDescr", but data does not satisfy any constructor'); -} - -// validator_complaint#bc validator_pubkey:bits256 description:^ComplaintDescr created_at:uint32 severity:uint8 reward_addr:uint256 paid:Grams suggested_fine:Grams suggested_fine_part:uint32 = ValidatorComplaint; - -export function loadValidatorComplaint(slice: Slice): ValidatorComplaint { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xbc))) { - slice.loadUint(8); - let validator_pubkey: BitString = slice.loadBits(256); - let slice1 = slice.loadRef().beginParse(); - let description: ComplaintDescr = loadComplaintDescr(slice1); - let created_at: number = slice.loadUint(32); - let severity: number = slice.loadUint(8); - let reward_addr: bigint = slice.loadUintBig(256); - let paid: Grams = loadGrams(slice); - let suggested_fine: Grams = loadGrams(slice); - let suggested_fine_part: number = slice.loadUint(32); - return { - kind: 'ValidatorComplaint', - validator_pubkey: validator_pubkey, - description: description, - created_at: created_at, - severity: severity, - reward_addr: reward_addr, - paid: paid, - suggested_fine: suggested_fine, - suggested_fine_part: suggested_fine_part, - } - - } - throw new Error('Expected one of "ValidatorComplaint" in loading "ValidatorComplaint", but data does not satisfy any constructor'); -} - -export function storeValidatorComplaint(validatorComplaint: ValidatorComplaint): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0xbc, 8); - builder.storeBits(validatorComplaint.validator_pubkey); - let cell1 = beginCell(); - storeComplaintDescr(validatorComplaint.description)(cell1); - builder.storeRef(cell1); - builder.storeUint(validatorComplaint.created_at, 32); - builder.storeUint(validatorComplaint.severity, 8); - builder.storeUint(validatorComplaint.reward_addr, 256); - storeGrams(validatorComplaint.paid)(builder); - storeGrams(validatorComplaint.suggested_fine)(builder); - builder.storeUint(validatorComplaint.suggested_fine_part, 32); - }) - -} - -// complaint_status#2d complaint:^ValidatorComplaint voters:(HashmapE 16 True) vset_id:uint256 weight_remaining:int64 = ValidatorComplaintStatus; - -export function loadValidatorComplaintStatus(slice: Slice): ValidatorComplaintStatus { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x2d))) { - slice.loadUint(8); - let slice1 = slice.loadRef().beginParse(); - let complaint: ValidatorComplaint = loadValidatorComplaint(slice1); - let voters: HashmapE = loadHashmapE(slice, 16, loadTrue); - let vset_id: bigint = slice.loadUintBig(256); - let weight_remaining: number = slice.loadInt(64); - return { - kind: 'ValidatorComplaintStatus', - complaint: complaint, - voters: voters, - vset_id: vset_id, - weight_remaining: weight_remaining, - } - - } - throw new Error('Expected one of "ValidatorComplaintStatus" in loading "ValidatorComplaintStatus", but data does not satisfy any constructor'); -} - -export function storeValidatorComplaintStatus(validatorComplaintStatus: ValidatorComplaintStatus): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x2d, 8); - let cell1 = beginCell(); - storeValidatorComplaint(validatorComplaintStatus.complaint)(cell1); - builder.storeRef(cell1); - storeHashmapE(validatorComplaintStatus.voters, storeTrue)(builder); - builder.storeUint(validatorComplaintStatus.vset_id, 256); - builder.storeInt(validatorComplaintStatus.weight_remaining, 64); - }) - -} - -// vm_stk_null#00 = VmStackValue; - -// vm_stk_tinyint#01 value:int64 = VmStackValue; - -// vm_stk_int#0201_ value:int257 = VmStackValue; - -// vm_stk_nan#02ff = VmStackValue; - -// vm_stk_cell#03 cell:^Cell = VmStackValue; - -// vm_stk_slice#04 _:VmCellSlice = VmStackValue; - -// vm_stk_builder#05 cell:^Cell = VmStackValue; - -// vm_stk_cont#06 cont:VmCont = VmStackValue; - -// vm_stk_tuple#07 len:(## 16) data:(VmTuple len) = VmStackValue; - -export function loadVmStackValue(slice: Slice): VmStackValue { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x00))) { - slice.loadUint(8); - return { - kind: 'VmStackValue_vm_stk_null', - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x01))) { - slice.loadUint(8); - let value: number = slice.loadInt(64); - return { - kind: 'VmStackValue_vm_stk_tinyint', - value: value, - } - - } - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0x0201))) { - slice.loadUint(16); - let value: bigint = slice.loadIntBig(257); - return { - kind: 'VmStackValue_vm_stk_int', - value: value, - } - - } - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0x02ff))) { - slice.loadUint(16); - return { - kind: 'VmStackValue_vm_stk_nan', - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x03))) { - slice.loadUint(8); - let slice1 = slice.loadRef().beginParse(); - let _cell: Slice = slice1; - return { - kind: 'VmStackValue_vm_stk_cell', - _cell: _cell, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x04))) { - slice.loadUint(8); - let _: VmCellSlice = loadVmCellSlice(slice); - return { - kind: 'VmStackValue_vm_stk_slice', - _: _, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x05))) { - slice.loadUint(8); - let slice1 = slice.loadRef().beginParse(); - let _cell: Slice = slice1; - return { - kind: 'VmStackValue_vm_stk_builder', - _cell: _cell, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x06))) { - slice.loadUint(8); - let cont: VmCont = loadVmCont(slice); - return { - kind: 'VmStackValue_vm_stk_cont', - cont: cont, - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0x07))) { - slice.loadUint(8); - let len: number = slice.loadUint(16); - let data: VmTuple = loadVmTuple(slice, len); - return { - kind: 'VmStackValue_vm_stk_tuple', - len: len, - data: data, - } - - } - throw new Error('Expected one of "VmStackValue_vm_stk_null", "VmStackValue_vm_stk_tinyint", "VmStackValue_vm_stk_int", "VmStackValue_vm_stk_nan", "VmStackValue_vm_stk_cell", "VmStackValue_vm_stk_slice", "VmStackValue_vm_stk_builder", "VmStackValue_vm_stk_cont", "VmStackValue_vm_stk_tuple" in loading "VmStackValue", but data does not satisfy any constructor'); -} - -export function storeVmStackValue(vmStackValue: VmStackValue): (builder: Builder) => void { - if ((vmStackValue.kind == 'VmStackValue_vm_stk_null')) { - return ((builder: Builder) => { - builder.storeUint(0x00, 8); - }) - - } - if ((vmStackValue.kind == 'VmStackValue_vm_stk_tinyint')) { - return ((builder: Builder) => { - builder.storeUint(0x01, 8); - builder.storeInt(vmStackValue.value, 64); - }) - - } - if ((vmStackValue.kind == 'VmStackValue_vm_stk_int')) { - return ((builder: Builder) => { - builder.storeUint(0x0201, 16); - builder.storeInt(vmStackValue.value, 257); - }) - - } - if ((vmStackValue.kind == 'VmStackValue_vm_stk_nan')) { - return ((builder: Builder) => { - builder.storeUint(0x02ff, 16); - }) - - } - if ((vmStackValue.kind == 'VmStackValue_vm_stk_cell')) { - return ((builder: Builder) => { - builder.storeUint(0x03, 8); - let cell1 = beginCell(); - cell1.storeSlice(vmStackValue._cell); - builder.storeRef(cell1); - }) - - } - if ((vmStackValue.kind == 'VmStackValue_vm_stk_slice')) { - return ((builder: Builder) => { - builder.storeUint(0x04, 8); - storeVmCellSlice(vmStackValue._)(builder); - }) - - } - if ((vmStackValue.kind == 'VmStackValue_vm_stk_builder')) { - return ((builder: Builder) => { - builder.storeUint(0x05, 8); - let cell1 = beginCell(); - cell1.storeSlice(vmStackValue._cell); - builder.storeRef(cell1); - }) - - } - if ((vmStackValue.kind == 'VmStackValue_vm_stk_cont')) { - return ((builder: Builder) => { - builder.storeUint(0x06, 8); - storeVmCont(vmStackValue.cont)(builder); - }) - - } - if ((vmStackValue.kind == 'VmStackValue_vm_stk_tuple')) { - return ((builder: Builder) => { - builder.storeUint(0x07, 8); - builder.storeUint(vmStackValue.len, 16); - storeVmTuple(vmStackValue.data)(builder); - }) - - } - throw new Error('Expected one of "VmStackValue_vm_stk_null", "VmStackValue_vm_stk_tinyint", "VmStackValue_vm_stk_int", "VmStackValue_vm_stk_nan", "VmStackValue_vm_stk_cell", "VmStackValue_vm_stk_slice", "VmStackValue_vm_stk_builder", "VmStackValue_vm_stk_cont", "VmStackValue_vm_stk_tuple" in loading "VmStackValue", but data does not satisfy any constructor'); -} - -/* -_ cell:^Cell st_bits:(## 10) end_bits:(## 10) { st_bits <= end_bits } - st_ref:(#<= 4) end_ref:(#<= 4) { st_ref <= end_ref } = VmCellSlice; -*/ - -export function loadVmCellSlice(slice: Slice): VmCellSlice { - let slice1 = slice.loadRef().beginParse(); - let _cell: Slice = slice1; - let st_bits: number = slice.loadUint(10); - let end_bits: number = slice.loadUint(10); - let st_ref: number = slice.loadUint(bitLen(4)); - let end_ref: number = slice.loadUint(bitLen(4)); - if ((!(st_bits <= end_bits))) { - throw new Error('Condition (st_bits <= end_bits) is not satisfied while loading "VmCellSlice" for type "VmCellSlice"'); - } - if ((!(st_ref <= end_ref))) { - throw new Error('Condition (st_ref <= end_ref) is not satisfied while loading "VmCellSlice" for type "VmCellSlice"'); - } - return { - kind: 'VmCellSlice', - _cell: _cell, - st_bits: st_bits, - end_bits: end_bits, - st_ref: st_ref, - end_ref: end_ref, - } - -} - -export function storeVmCellSlice(vmCellSlice: VmCellSlice): (builder: Builder) => void { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeSlice(vmCellSlice._cell); - builder.storeRef(cell1); - builder.storeUint(vmCellSlice.st_bits, 10); - builder.storeUint(vmCellSlice.end_bits, 10); - builder.storeUint(vmCellSlice.st_ref, bitLen(4)); - builder.storeUint(vmCellSlice.end_ref, bitLen(4)); - if ((!(vmCellSlice.st_bits <= vmCellSlice.end_bits))) { - throw new Error('Condition (vmCellSlice.st_bits <= vmCellSlice.end_bits) is not satisfied while loading "VmCellSlice" for type "VmCellSlice"'); - } - if ((!(vmCellSlice.st_ref <= vmCellSlice.end_ref))) { - throw new Error('Condition (vmCellSlice.st_ref <= vmCellSlice.end_ref) is not satisfied while loading "VmCellSlice" for type "VmCellSlice"'); - } - }) - -} - -// vm_tupref_nil$_ = VmTupleRef 0; - -// vm_tupref_single$_ entry:^VmStackValue = VmTupleRef 1; - -// vm_tupref_any$_ {n:#} ref:^(VmTuple (n + 2)) = VmTupleRef (n + 2); - -export function loadVmTupleRef(slice: Slice, arg0: number): VmTupleRef { - if ((arg0 == 0)) { - return { - kind: 'VmTupleRef_vm_tupref_nil', - } - - } - if ((arg0 == 1)) { - let slice1 = slice.loadRef().beginParse(); - let entry: VmStackValue = loadVmStackValue(slice1); - return { - kind: 'VmTupleRef_vm_tupref_single', - entry: entry, - } - - } - if (true) { - let slice1 = slice.loadRef().beginParse(); - let ref: VmTuple = loadVmTuple(slice1, ((arg0 - 2) + 2)); - return { - kind: 'VmTupleRef_vm_tupref_any', - n: (arg0 - 2), - ref: ref, - } - - } - throw new Error('Expected one of "VmTupleRef_vm_tupref_nil", "VmTupleRef_vm_tupref_single", "VmTupleRef_vm_tupref_any" in loading "VmTupleRef", but data does not satisfy any constructor'); -} - -export function storeVmTupleRef(vmTupleRef: VmTupleRef): (builder: Builder) => void { - if ((vmTupleRef.kind == 'VmTupleRef_vm_tupref_nil')) { - return ((builder: Builder) => { - }) - - } - if ((vmTupleRef.kind == 'VmTupleRef_vm_tupref_single')) { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeVmStackValue(vmTupleRef.entry)(cell1); - builder.storeRef(cell1); - }) - - } - if ((vmTupleRef.kind == 'VmTupleRef_vm_tupref_any')) { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeVmTuple(vmTupleRef.ref)(cell1); - builder.storeRef(cell1); - }) - - } - throw new Error('Expected one of "VmTupleRef_vm_tupref_nil", "VmTupleRef_vm_tupref_single", "VmTupleRef_vm_tupref_any" in loading "VmTupleRef", but data does not satisfy any constructor'); -} - -// vm_tuple_nil$_ = VmTuple 0; - -// vm_tuple_tcons$_ {n:#} head:(VmTupleRef n) tail:^VmStackValue = VmTuple (n + 1); - -export function loadVmTuple(slice: Slice, arg0: number): VmTuple { - if ((arg0 == 0)) { - return { - kind: 'VmTuple_vm_tuple_nil', - } - - } - if (true) { - let head: VmTupleRef = loadVmTupleRef(slice, (arg0 - 1)); - let slice1 = slice.loadRef().beginParse(); - let tail: VmStackValue = loadVmStackValue(slice1); - return { - kind: 'VmTuple_vm_tuple_tcons', - n: (arg0 - 1), - head: head, - tail: tail, - } - - } - throw new Error('Expected one of "VmTuple_vm_tuple_nil", "VmTuple_vm_tuple_tcons" in loading "VmTuple", but data does not satisfy any constructor'); -} - -export function storeVmTuple(vmTuple: VmTuple): (builder: Builder) => void { - if ((vmTuple.kind == 'VmTuple_vm_tuple_nil')) { - return ((builder: Builder) => { - }) - - } - if ((vmTuple.kind == 'VmTuple_vm_tuple_tcons')) { - return ((builder: Builder) => { - storeVmTupleRef(vmTuple.head)(builder); - let cell1 = beginCell(); - storeVmStackValue(vmTuple.tail)(cell1); - builder.storeRef(cell1); - }) - - } - throw new Error('Expected one of "VmTuple_vm_tuple_nil", "VmTuple_vm_tuple_tcons" in loading "VmTuple", but data does not satisfy any constructor'); -} - -// vm_stack#_ depth:(## 24) stack:(VmStackList depth) = VmStack; - -export function loadVmStack(slice: Slice): VmStack { - let depth: number = slice.loadUint(24); - let stack: VmStackList = loadVmStackList(slice, depth); - return { - kind: 'VmStack', - depth: depth, - stack: stack, - } - -} - -export function storeVmStack(vmStack: VmStack): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(vmStack.depth, 24); - storeVmStackList(vmStack.stack)(builder); - }) - -} - -// vm_stk_nil#_ = VmStackList 0; - -// vm_stk_cons#_ {n:#} rest:^(VmStackList n) tos:VmStackValue = VmStackList (n + 1); - -export function loadVmStackList(slice: Slice, arg0: number): VmStackList { - if ((arg0 == 0)) { - return { - kind: 'VmStackList_vm_stk_nil', - } - - } - if (true) { - let slice1 = slice.loadRef().beginParse(); - let rest: VmStackList = loadVmStackList(slice1, (arg0 - 1)); - let tos: VmStackValue = loadVmStackValue(slice); - return { - kind: 'VmStackList_vm_stk_cons', - n: (arg0 - 1), - rest: rest, - tos: tos, - } - - } - throw new Error('Expected one of "VmStackList_vm_stk_nil", "VmStackList_vm_stk_cons" in loading "VmStackList", but data does not satisfy any constructor'); -} - -export function storeVmStackList(vmStackList: VmStackList): (builder: Builder) => void { - if ((vmStackList.kind == 'VmStackList_vm_stk_nil')) { - return ((builder: Builder) => { - }) - - } - if ((vmStackList.kind == 'VmStackList_vm_stk_cons')) { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeVmStackList(vmStackList.rest)(cell1); - builder.storeRef(cell1); - storeVmStackValue(vmStackList.tos)(builder); - }) - - } - throw new Error('Expected one of "VmStackList_vm_stk_nil", "VmStackList_vm_stk_cons" in loading "VmStackList", but data does not satisfy any constructor'); -} - -// _ cregs:(HashmapE 4 VmStackValue) = VmSaveList; - -export function loadVmSaveList(slice: Slice): VmSaveList { - let cregs: HashmapE = loadHashmapE(slice, 4, loadVmStackValue); - return { - kind: 'VmSaveList', - cregs: cregs, - } - -} - -export function storeVmSaveList(vmSaveList: VmSaveList): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapE(vmSaveList.cregs, storeVmStackValue)(builder); - }) - -} - -/* -gas_limits#_ remaining:int64 _:^[ max_limit:int64 cur_limit:int64 credit:int64 ] - = VmGasLimits; -*/ - -export function loadVmGasLimits(slice: Slice): VmGasLimits { - let remaining: number = slice.loadInt(64); - let slice1 = slice.loadRef().beginParse(); - let max_limit: number = slice1.loadInt(64); - let cur_limit: number = slice1.loadInt(64); - let credit: number = slice1.loadInt(64); - return { - kind: 'VmGasLimits', - remaining: remaining, - max_limit: max_limit, - cur_limit: cur_limit, - credit: credit, - } - -} - -export function storeVmGasLimits(vmGasLimits: VmGasLimits): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeInt(vmGasLimits.remaining, 64); - let cell1 = beginCell(); - cell1.storeInt(vmGasLimits.max_limit, 64); - cell1.storeInt(vmGasLimits.cur_limit, 64); - cell1.storeInt(vmGasLimits.credit, 64); - builder.storeRef(cell1); - }) - -} - -// _ libraries:(HashmapE 256 ^Cell) = VmLibraries; - -export function loadVmLibraries(slice: Slice): VmLibraries { - let libraries: HashmapE = loadHashmapE(slice, 256, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return slice1 - - })); - return { - kind: 'VmLibraries', - libraries: libraries, - } - -} - -export function storeVmLibraries(vmLibraries: VmLibraries): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapE(vmLibraries.libraries, ((arg: Slice) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeSlice(arg); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - -} - -/* -vm_ctl_data$_ nargs:(Maybe uint13) stack:(Maybe VmStack) save:VmSaveList -cp:(Maybe int16) = VmControlData; -*/ - -export function loadVmControlData(slice: Slice): VmControlData { - let nargs: Maybe = loadMaybe(slice, ((slice: Slice) => { - return slice.loadUint(13) - - })); - let stack: Maybe = loadMaybe(slice, loadVmStack); - let save: VmSaveList = loadVmSaveList(slice); - let cp: Maybe = loadMaybe(slice, ((slice: Slice) => { - return slice.loadInt(16) - - })); - return { - kind: 'VmControlData', - nargs: nargs, - stack: stack, - save: save, - cp: cp, - } - -} - -export function storeVmControlData(vmControlData: VmControlData): (builder: Builder) => void { - return ((builder: Builder) => { - storeMaybe(vmControlData.nargs, ((arg: number) => { - return ((builder: Builder) => { - builder.storeUint(arg, 13); - }) - - }))(builder); - storeMaybe(vmControlData.stack, storeVmStack)(builder); - storeVmSaveList(vmControlData.save)(builder); - storeMaybe(vmControlData.cp, ((arg: number) => { - return ((builder: Builder) => { - builder.storeInt(arg, 16); - }) - - }))(builder); - }) - -} - -// vmc_std$00 cdata:VmControlData code:VmCellSlice = VmCont; - -// vmc_envelope$01 cdata:VmControlData next:^VmCont = VmCont; - -// vmc_quit$1000 exit_code:int32 = VmCont; - -// vmc_quit_exc$1001 = VmCont; - -// vmc_repeat$10100 count:uint63 body:^VmCont after:^VmCont = VmCont; - -// vmc_until$110000 body:^VmCont after:^VmCont = VmCont; - -// vmc_again$110001 body:^VmCont = VmCont; - -/* -vmc_while_cond$110010 cond:^VmCont body:^VmCont -after:^VmCont = VmCont; -*/ - -/* -vmc_while_body$110011 cond:^VmCont body:^VmCont -after:^VmCont = VmCont; -*/ - -// vmc_pushint$1111 value:int32 next:^VmCont = VmCont; - -export function loadVmCont(slice: Slice): VmCont { - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b00))) { - slice.loadUint(2); - let cdata: VmControlData = loadVmControlData(slice); - let code: VmCellSlice = loadVmCellSlice(slice); - return { - kind: 'VmCont_vmc_std', - cdata: cdata, - code: code, - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b01))) { - slice.loadUint(2); - let cdata: VmControlData = loadVmControlData(slice); - let slice1 = slice.loadRef().beginParse(); - let next: VmCont = loadVmCont(slice1); - return { - kind: 'VmCont_vmc_envelope', - cdata: cdata, - next: next, - } - - } - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0b1000))) { - slice.loadUint(4); - let exit_code: number = slice.loadInt(32); - return { - kind: 'VmCont_vmc_quit', - exit_code: exit_code, - } - - } - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0b1001))) { - slice.loadUint(4); - return { - kind: 'VmCont_vmc_quit_exc', - } - - } - if (((slice.remainingBits >= 5) && (slice.preloadUint(5) == 0b10100))) { - slice.loadUint(5); - let count: number = slice.loadUint(63); - let slice1 = slice.loadRef().beginParse(); - let body: VmCont = loadVmCont(slice1); - let slice2 = slice.loadRef().beginParse(); - let after: VmCont = loadVmCont(slice2); - return { - kind: 'VmCont_vmc_repeat', - count: count, - body: body, - after: after, - } - - } - if (((slice.remainingBits >= 6) && (slice.preloadUint(6) == 0b110000))) { - slice.loadUint(6); - let slice1 = slice.loadRef().beginParse(); - let body: VmCont = loadVmCont(slice1); - let slice2 = slice.loadRef().beginParse(); - let after: VmCont = loadVmCont(slice2); - return { - kind: 'VmCont_vmc_until', - body: body, - after: after, - } - - } - if (((slice.remainingBits >= 6) && (slice.preloadUint(6) == 0b110001))) { - slice.loadUint(6); - let slice1 = slice.loadRef().beginParse(); - let body: VmCont = loadVmCont(slice1); - return { - kind: 'VmCont_vmc_again', - body: body, - } - - } - if (((slice.remainingBits >= 6) && (slice.preloadUint(6) == 0b110010))) { - slice.loadUint(6); - let slice1 = slice.loadRef().beginParse(); - let cond: VmCont = loadVmCont(slice1); - let slice2 = slice.loadRef().beginParse(); - let body: VmCont = loadVmCont(slice2); - let slice3 = slice.loadRef().beginParse(); - let after: VmCont = loadVmCont(slice3); - return { - kind: 'VmCont_vmc_while_cond', - cond: cond, - body: body, - after: after, - } - - } - if (((slice.remainingBits >= 6) && (slice.preloadUint(6) == 0b110011))) { - slice.loadUint(6); - let slice1 = slice.loadRef().beginParse(); - let cond: VmCont = loadVmCont(slice1); - let slice2 = slice.loadRef().beginParse(); - let body: VmCont = loadVmCont(slice2); - let slice3 = slice.loadRef().beginParse(); - let after: VmCont = loadVmCont(slice3); - return { - kind: 'VmCont_vmc_while_body', - cond: cond, - body: body, - after: after, - } - - } - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0b1111))) { - slice.loadUint(4); - let value: number = slice.loadInt(32); - let slice1 = slice.loadRef().beginParse(); - let next: VmCont = loadVmCont(slice1); - return { - kind: 'VmCont_vmc_pushint', - value: value, - next: next, - } - - } - throw new Error('Expected one of "VmCont_vmc_std", "VmCont_vmc_envelope", "VmCont_vmc_quit", "VmCont_vmc_quit_exc", "VmCont_vmc_repeat", "VmCont_vmc_until", "VmCont_vmc_again", "VmCont_vmc_while_cond", "VmCont_vmc_while_body", "VmCont_vmc_pushint" in loading "VmCont", but data does not satisfy any constructor'); -} - -export function storeVmCont(vmCont: VmCont): (builder: Builder) => void { - if ((vmCont.kind == 'VmCont_vmc_std')) { - return ((builder: Builder) => { - builder.storeUint(0b00, 2); - storeVmControlData(vmCont.cdata)(builder); - storeVmCellSlice(vmCont.code)(builder); - }) - - } - if ((vmCont.kind == 'VmCont_vmc_envelope')) { - return ((builder: Builder) => { - builder.storeUint(0b01, 2); - storeVmControlData(vmCont.cdata)(builder); - let cell1 = beginCell(); - storeVmCont(vmCont.next)(cell1); - builder.storeRef(cell1); - }) - - } - if ((vmCont.kind == 'VmCont_vmc_quit')) { - return ((builder: Builder) => { - builder.storeUint(0b1000, 4); - builder.storeInt(vmCont.exit_code, 32); - }) - - } - if ((vmCont.kind == 'VmCont_vmc_quit_exc')) { - return ((builder: Builder) => { - builder.storeUint(0b1001, 4); - }) - - } - if ((vmCont.kind == 'VmCont_vmc_repeat')) { - return ((builder: Builder) => { - builder.storeUint(0b10100, 5); - builder.storeUint(vmCont.count, 63); - let cell1 = beginCell(); - storeVmCont(vmCont.body)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeVmCont(vmCont.after)(cell2); - builder.storeRef(cell2); - }) - - } - if ((vmCont.kind == 'VmCont_vmc_until')) { - return ((builder: Builder) => { - builder.storeUint(0b110000, 6); - let cell1 = beginCell(); - storeVmCont(vmCont.body)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeVmCont(vmCont.after)(cell2); - builder.storeRef(cell2); - }) - - } - if ((vmCont.kind == 'VmCont_vmc_again')) { - return ((builder: Builder) => { - builder.storeUint(0b110001, 6); - let cell1 = beginCell(); - storeVmCont(vmCont.body)(cell1); - builder.storeRef(cell1); - }) - - } - if ((vmCont.kind == 'VmCont_vmc_while_cond')) { - return ((builder: Builder) => { - builder.storeUint(0b110010, 6); - let cell1 = beginCell(); - storeVmCont(vmCont.cond)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeVmCont(vmCont.body)(cell2); - builder.storeRef(cell2); - let cell3 = beginCell(); - storeVmCont(vmCont.after)(cell3); - builder.storeRef(cell3); - }) - - } - if ((vmCont.kind == 'VmCont_vmc_while_body')) { - return ((builder: Builder) => { - builder.storeUint(0b110011, 6); - let cell1 = beginCell(); - storeVmCont(vmCont.cond)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeVmCont(vmCont.body)(cell2); - builder.storeRef(cell2); - let cell3 = beginCell(); - storeVmCont(vmCont.after)(cell3); - builder.storeRef(cell3); - }) - - } - if ((vmCont.kind == 'VmCont_vmc_pushint')) { - return ((builder: Builder) => { - builder.storeUint(0b1111, 4); - builder.storeInt(vmCont.value, 32); - let cell1 = beginCell(); - storeVmCont(vmCont.next)(cell1); - builder.storeRef(cell1); - }) - - } - throw new Error('Expected one of "VmCont_vmc_std", "VmCont_vmc_envelope", "VmCont_vmc_quit", "VmCont_vmc_quit_exc", "VmCont_vmc_repeat", "VmCont_vmc_until", "VmCont_vmc_again", "VmCont_vmc_while_cond", "VmCont_vmc_while_body", "VmCont_vmc_pushint" in loading "VmCont", but data does not satisfy any constructor'); -} - -// _ (HashmapE 256 ^DNSRecord) = DNS_RecordSet; - -export function loadDNS_RecordSet(slice: Slice): DNS_RecordSet { - let anon0: HashmapE = loadHashmapE(slice, 256, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadDNSRecord(slice1) - - })); - return { - kind: 'DNS_RecordSet', - anon0: anon0, - } - -} - -export function storeDNS_RecordSet(dNS_RecordSet: DNS_RecordSet): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapE(dNS_RecordSet.anon0, ((arg: DNSRecord) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeDNSRecord(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - -} - -// chunk_ref_empty$_ = TextChunkRef 0; - -// chunk_ref$_ {n:#} ref:^(TextChunks (n + 1)) = TextChunkRef (n + 1); - -export function loadTextChunkRef(slice: Slice, arg0: number): TextChunkRef { - if ((arg0 == 0)) { - return { - kind: 'TextChunkRef_chunk_ref_empty', - } - - } - if (true) { - let slice1 = slice.loadRef().beginParse(); - let ref: TextChunks = loadTextChunks(slice1, ((arg0 - 1) + 1)); - return { - kind: 'TextChunkRef_chunk_ref', - n: (arg0 - 1), - ref: ref, - } - - } - throw new Error('Expected one of "TextChunkRef_chunk_ref_empty", "TextChunkRef_chunk_ref" in loading "TextChunkRef", but data does not satisfy any constructor'); -} - -export function storeTextChunkRef(textChunkRef: TextChunkRef): (builder: Builder) => void { - if ((textChunkRef.kind == 'TextChunkRef_chunk_ref_empty')) { - return ((builder: Builder) => { - }) - - } - if ((textChunkRef.kind == 'TextChunkRef_chunk_ref')) { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeTextChunks(textChunkRef.ref)(cell1); - builder.storeRef(cell1); - }) - - } - throw new Error('Expected one of "TextChunkRef_chunk_ref_empty", "TextChunkRef_chunk_ref" in loading "TextChunkRef", but data does not satisfy any constructor'); -} - -// text_chunk_empty$_ = TextChunks 0; - -// text_chunk$_ {n:#} len:(## 8) data:(bits (len * 8)) next:(TextChunkRef n) = TextChunks (n + 1); - -export function loadTextChunks(slice: Slice, arg0: number): TextChunks { - if ((arg0 == 0)) { - return { - kind: 'TextChunks_text_chunk_empty', - } - - } - if (true) { - let len: number = slice.loadUint(8); - let data: BitString = slice.loadBits((len * 8)); - let next: TextChunkRef = loadTextChunkRef(slice, (arg0 - 1)); - return { - kind: 'TextChunks_text_chunk', - n: (arg0 - 1), - len: len, - data: data, - next: next, - } - - } - throw new Error('Expected one of "TextChunks_text_chunk_empty", "TextChunks_text_chunk" in loading "TextChunks", but data does not satisfy any constructor'); -} - -export function storeTextChunks(textChunks: TextChunks): (builder: Builder) => void { - if ((textChunks.kind == 'TextChunks_text_chunk_empty')) { - return ((builder: Builder) => { - }) - - } - if ((textChunks.kind == 'TextChunks_text_chunk')) { - return ((builder: Builder) => { - builder.storeUint(textChunks.len, 8); - builder.storeBits(textChunks.data); - storeTextChunkRef(textChunks.next)(builder); - }) - - } - throw new Error('Expected one of "TextChunks_text_chunk_empty", "TextChunks_text_chunk" in loading "TextChunks", but data does not satisfy any constructor'); -} - -// text$_ chunks:(## 8) rest:(TextChunks chunks) = Text; - -export function loadText(slice: Slice): Text { - let chunks: number = slice.loadUint(8); - let rest: TextChunks = loadTextChunks(slice, chunks); - return { - kind: 'Text', - chunks: chunks, - rest: rest, - } - -} - -export function storeText(text: Text): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(text.chunks, 8); - storeTextChunks(text.rest)(builder); - }) - -} - -// dns_text#1eda _:Text = DNSRecord; - -// dns_next_resolver#ba93 resolver:MsgAddressInt = DNSRecord; - -/* -dns_adnl_address#ad01 adnl_addr:bits256 flags:(## 8) { flags <= 1 } - proto_list:flags . 0?ProtoList = DNSRecord; -*/ - -/* -dns_smc_address#9fd3 smc_addr:MsgAddressInt flags:(## 8) { flags <= 1 } - cap_list:flags . 0?SmcCapList = DNSRecord; -*/ - -// dns_storage_address#7473 bag_id:bits256 = DNSRecord; - -export function loadDNSRecord(slice: Slice): DNSRecord { - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0x1eda))) { - slice.loadUint(16); - let _: Text = loadText(slice); - return { - kind: 'DNSRecord_dns_text', - _: _, - } - - } - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0xba93))) { - slice.loadUint(16); - let resolver: Address = slice.loadAddress(); - return { - kind: 'DNSRecord_dns_next_resolver', - resolver: resolver, - } - - } - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0xad01))) { - slice.loadUint(16); - let adnl_addr: BitString = slice.loadBits(256); - let flags: number = slice.loadUint(8); - let proto_list: ProtoList | undefined = ((flags & (1 << 0)) ? loadProtoList(slice) : undefined); - if ((!(flags <= 1))) { - throw new Error('Condition (flags <= 1) is not satisfied while loading "DNSRecord_dns_adnl_address" for type "DNSRecord"'); - } - return { - kind: 'DNSRecord_dns_adnl_address', - adnl_addr: adnl_addr, - flags: flags, - proto_list: proto_list, - } - - } - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0x9fd3))) { - slice.loadUint(16); - let smc_addr: Address = slice.loadAddress(); - let flags: number = slice.loadUint(8); - let cap_list: SmcCapList | undefined = ((flags & (1 << 0)) ? loadSmcCapList(slice) : undefined); - if ((!(flags <= 1))) { - throw new Error('Condition (flags <= 1) is not satisfied while loading "DNSRecord_dns_smc_address" for type "DNSRecord"'); - } - return { - kind: 'DNSRecord_dns_smc_address', - smc_addr: smc_addr, - flags: flags, - cap_list: cap_list, - } - - } - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0x7473))) { - slice.loadUint(16); - let bag_id: BitString = slice.loadBits(256); - return { - kind: 'DNSRecord_dns_storage_address', - bag_id: bag_id, - } - - } - throw new Error('Expected one of "DNSRecord_dns_text", "DNSRecord_dns_next_resolver", "DNSRecord_dns_adnl_address", "DNSRecord_dns_smc_address", "DNSRecord_dns_storage_address" in loading "DNSRecord", but data does not satisfy any constructor'); -} - -export function storeDNSRecord(dNSRecord: DNSRecord): (builder: Builder) => void { - if ((dNSRecord.kind == 'DNSRecord_dns_text')) { - return ((builder: Builder) => { - builder.storeUint(0x1eda, 16); - storeText(dNSRecord._)(builder); - }) - - } - if ((dNSRecord.kind == 'DNSRecord_dns_next_resolver')) { - return ((builder: Builder) => { - builder.storeUint(0xba93, 16); - builder.storeAddress(dNSRecord.resolver); - }) - - } - if ((dNSRecord.kind == 'DNSRecord_dns_adnl_address')) { - return ((builder: Builder) => { - builder.storeUint(0xad01, 16); - builder.storeBits(dNSRecord.adnl_addr); - builder.storeUint(dNSRecord.flags, 8); - if ((dNSRecord.proto_list != undefined)) { - storeProtoList(dNSRecord.proto_list)(builder); - } - if ((!(dNSRecord.flags <= 1))) { - throw new Error('Condition (dNSRecord.flags <= 1) is not satisfied while loading "DNSRecord_dns_adnl_address" for type "DNSRecord"'); - } - }) - - } - if ((dNSRecord.kind == 'DNSRecord_dns_smc_address')) { - return ((builder: Builder) => { - builder.storeUint(0x9fd3, 16); - builder.storeAddress(dNSRecord.smc_addr); - builder.storeUint(dNSRecord.flags, 8); - if ((dNSRecord.cap_list != undefined)) { - storeSmcCapList(dNSRecord.cap_list)(builder); - } - if ((!(dNSRecord.flags <= 1))) { - throw new Error('Condition (dNSRecord.flags <= 1) is not satisfied while loading "DNSRecord_dns_smc_address" for type "DNSRecord"'); - } - }) - - } - if ((dNSRecord.kind == 'DNSRecord_dns_storage_address')) { - return ((builder: Builder) => { - builder.storeUint(0x7473, 16); - builder.storeBits(dNSRecord.bag_id); - }) - - } - throw new Error('Expected one of "DNSRecord_dns_text", "DNSRecord_dns_next_resolver", "DNSRecord_dns_adnl_address", "DNSRecord_dns_smc_address", "DNSRecord_dns_storage_address" in loading "DNSRecord", but data does not satisfy any constructor'); -} - -// proto_list_nil$0 = ProtoList; - -// proto_list_next$1 head:Protocol tail:ProtoList = ProtoList; - -export function loadProtoList(slice: Slice): ProtoList { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'ProtoList_proto_list_nil', - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let head: Protocol = loadProtocol(slice); - let tail: ProtoList = loadProtoList(slice); - return { - kind: 'ProtoList_proto_list_next', - head: head, - tail: tail, - } - - } - throw new Error('Expected one of "ProtoList_proto_list_nil", "ProtoList_proto_list_next" in loading "ProtoList", but data does not satisfy any constructor'); -} - -export function storeProtoList(protoList: ProtoList): (builder: Builder) => void { - if ((protoList.kind == 'ProtoList_proto_list_nil')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((protoList.kind == 'ProtoList_proto_list_next')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - storeProtocol(protoList.head)(builder); - storeProtoList(protoList.tail)(builder); - }) - - } - throw new Error('Expected one of "ProtoList_proto_list_nil", "ProtoList_proto_list_next" in loading "ProtoList", but data does not satisfy any constructor'); -} - -// proto_http#4854 = Protocol; - -export function loadProtocol(slice: Slice): Protocol { - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0x4854))) { - slice.loadUint(16); - return { - kind: 'Protocol', - } - - } - throw new Error('Expected one of "Protocol" in loading "Protocol", but data does not satisfy any constructor'); -} - -export function storeProtocol(protocol: Protocol): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x4854, 16); - }) - -} - -// cap_list_nil$0 = SmcCapList; - -// cap_list_next$1 head:SmcCapability tail:SmcCapList = SmcCapList; - -export function loadSmcCapList(slice: Slice): SmcCapList { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'SmcCapList_cap_list_nil', - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let head: SmcCapability = loadSmcCapability(slice); - let tail: SmcCapList = loadSmcCapList(slice); - return { - kind: 'SmcCapList_cap_list_next', - head: head, - tail: tail, - } - - } - throw new Error('Expected one of "SmcCapList_cap_list_nil", "SmcCapList_cap_list_next" in loading "SmcCapList", but data does not satisfy any constructor'); -} - -export function storeSmcCapList(smcCapList: SmcCapList): (builder: Builder) => void { - if ((smcCapList.kind == 'SmcCapList_cap_list_nil')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((smcCapList.kind == 'SmcCapList_cap_list_next')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - storeSmcCapability(smcCapList.head)(builder); - storeSmcCapList(smcCapList.tail)(builder); - }) - - } - throw new Error('Expected one of "SmcCapList_cap_list_nil", "SmcCapList_cap_list_next" in loading "SmcCapList", but data does not satisfy any constructor'); -} - -// cap_method_seqno#5371 = SmcCapability; - -// cap_method_pubkey#71f4 = SmcCapability; - -// cap_is_wallet#2177 = SmcCapability; - -// cap_name#ff name:Text = SmcCapability; - -export function loadSmcCapability(slice: Slice): SmcCapability { - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0x5371))) { - slice.loadUint(16); - return { - kind: 'SmcCapability_cap_method_seqno', - } - - } - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0x71f4))) { - slice.loadUint(16); - return { - kind: 'SmcCapability_cap_method_pubkey', - } - - } - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0x2177))) { - slice.loadUint(16); - return { - kind: 'SmcCapability_cap_is_wallet', - } - - } - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xff))) { - slice.loadUint(8); - let name: Text = loadText(slice); - return { - kind: 'SmcCapability_cap_name', - name: name, - } - - } - throw new Error('Expected one of "SmcCapability_cap_method_seqno", "SmcCapability_cap_method_pubkey", "SmcCapability_cap_is_wallet", "SmcCapability_cap_name" in loading "SmcCapability", but data does not satisfy any constructor'); -} - -export function storeSmcCapability(smcCapability: SmcCapability): (builder: Builder) => void { - if ((smcCapability.kind == 'SmcCapability_cap_method_seqno')) { - return ((builder: Builder) => { - builder.storeUint(0x5371, 16); - }) - - } - if ((smcCapability.kind == 'SmcCapability_cap_method_pubkey')) { - return ((builder: Builder) => { - builder.storeUint(0x71f4, 16); - }) - - } - if ((smcCapability.kind == 'SmcCapability_cap_is_wallet')) { - return ((builder: Builder) => { - builder.storeUint(0x2177, 16); - }) - - } - if ((smcCapability.kind == 'SmcCapability_cap_name')) { - return ((builder: Builder) => { - builder.storeUint(0xff, 8); - storeText(smcCapability.name)(builder); - }) - - } - throw new Error('Expected one of "SmcCapability_cap_method_seqno", "SmcCapability_cap_method_pubkey", "SmcCapability_cap_is_wallet", "SmcCapability_cap_name" in loading "SmcCapability", but data does not satisfy any constructor'); -} - -/* -chan_config$_ init_timeout:uint32 close_timeout:uint32 a_key:bits256 b_key:bits256 - a_addr:^MsgAddressInt b_addr:^MsgAddressInt channel_id:uint64 min_A_extra:Grams = ChanConfig; -*/ - -export function loadChanConfig(slice: Slice): ChanConfig { - let init_timeout: number = slice.loadUint(32); - let close_timeout: number = slice.loadUint(32); - let a_key: BitString = slice.loadBits(256); - let b_key: BitString = slice.loadBits(256); - let slice1 = slice.loadRef().beginParse(); - let a_addr: Address = slice1.loadAddress(); - let slice2 = slice.loadRef().beginParse(); - let b_addr: Address = slice2.loadAddress(); - let channel_id: number = slice.loadUint(64); - let min_A_extra: Grams = loadGrams(slice); - return { - kind: 'ChanConfig', - init_timeout: init_timeout, - close_timeout: close_timeout, - a_key: a_key, - b_key: b_key, - a_addr: a_addr, - b_addr: b_addr, - channel_id: channel_id, - min_A_extra: min_A_extra, - } - -} - -export function storeChanConfig(chanConfig: ChanConfig): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(chanConfig.init_timeout, 32); - builder.storeUint(chanConfig.close_timeout, 32); - builder.storeBits(chanConfig.a_key); - builder.storeBits(chanConfig.b_key); - let cell1 = beginCell(); - cell1.storeAddress(chanConfig.a_addr); - builder.storeRef(cell1); - let cell2 = beginCell(); - cell2.storeAddress(chanConfig.b_addr); - builder.storeRef(cell2); - builder.storeUint(chanConfig.channel_id, 64); - storeGrams(chanConfig.min_A_extra)(builder); - }) - -} - -// chan_state_init$000 signed_A:Bool signed_B:Bool min_A:Grams min_B:Grams expire_at:uint32 A:Grams B:Grams = ChanState; - -// chan_state_close$001 signed_A:Bool signed_B:Bool promise_A:Grams promise_B:Grams expire_at:uint32 A:Grams B:Grams = ChanState; - -// chan_state_payout$010 A:Grams B:Grams = ChanState; - -export function loadChanState(slice: Slice): ChanState { - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b000))) { - slice.loadUint(3); - let signed_A: boolean = slice.loadBoolean(); - let signed_B: boolean = slice.loadBoolean(); - let min_A: Grams = loadGrams(slice); - let min_B: Grams = loadGrams(slice); - let expire_at: number = slice.loadUint(32); - let A: Grams = loadGrams(slice); - let B: Grams = loadGrams(slice); - return { - kind: 'ChanState_chan_state_init', - signed_A: signed_A, - signed_B: signed_B, - min_A: min_A, - min_B: min_B, - expire_at: expire_at, - A: A, - B: B, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b001))) { - slice.loadUint(3); - let signed_A: boolean = slice.loadBoolean(); - let signed_B: boolean = slice.loadBoolean(); - let promise_A: Grams = loadGrams(slice); - let promise_B: Grams = loadGrams(slice); - let expire_at: number = slice.loadUint(32); - let A: Grams = loadGrams(slice); - let B: Grams = loadGrams(slice); - return { - kind: 'ChanState_chan_state_close', - signed_A: signed_A, - signed_B: signed_B, - promise_A: promise_A, - promise_B: promise_B, - expire_at: expire_at, - A: A, - B: B, - } - - } - if (((slice.remainingBits >= 3) && (slice.preloadUint(3) == 0b010))) { - slice.loadUint(3); - let A: Grams = loadGrams(slice); - let B: Grams = loadGrams(slice); - return { - kind: 'ChanState_chan_state_payout', - A: A, - B: B, - } - - } - throw new Error('Expected one of "ChanState_chan_state_init", "ChanState_chan_state_close", "ChanState_chan_state_payout" in loading "ChanState", but data does not satisfy any constructor'); -} - -export function storeChanState(chanState: ChanState): (builder: Builder) => void { - if ((chanState.kind == 'ChanState_chan_state_init')) { - return ((builder: Builder) => { - builder.storeUint(0b000, 3); - builder.storeBit(chanState.signed_A); - builder.storeBit(chanState.signed_B); - storeGrams(chanState.min_A)(builder); - storeGrams(chanState.min_B)(builder); - builder.storeUint(chanState.expire_at, 32); - storeGrams(chanState.A)(builder); - storeGrams(chanState.B)(builder); - }) - - } - if ((chanState.kind == 'ChanState_chan_state_close')) { - return ((builder: Builder) => { - builder.storeUint(0b001, 3); - builder.storeBit(chanState.signed_A); - builder.storeBit(chanState.signed_B); - storeGrams(chanState.promise_A)(builder); - storeGrams(chanState.promise_B)(builder); - builder.storeUint(chanState.expire_at, 32); - storeGrams(chanState.A)(builder); - storeGrams(chanState.B)(builder); - }) - - } - if ((chanState.kind == 'ChanState_chan_state_payout')) { - return ((builder: Builder) => { - builder.storeUint(0b010, 3); - storeGrams(chanState.A)(builder); - storeGrams(chanState.B)(builder); - }) - - } - throw new Error('Expected one of "ChanState_chan_state_init", "ChanState_chan_state_close", "ChanState_chan_state_payout" in loading "ChanState", but data does not satisfy any constructor'); -} - -// chan_promise$_ channel_id:uint64 promise_A:Grams promise_B:Grams = ChanPromise; - -export function loadChanPromise(slice: Slice): ChanPromise { - let channel_id: number = slice.loadUint(64); - let promise_A: Grams = loadGrams(slice); - let promise_B: Grams = loadGrams(slice); - return { - kind: 'ChanPromise', - channel_id: channel_id, - promise_A: promise_A, - promise_B: promise_B, - } - -} - -export function storeChanPromise(chanPromise: ChanPromise): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(chanPromise.channel_id, 64); - storeGrams(chanPromise.promise_A)(builder); - storeGrams(chanPromise.promise_B)(builder); - }) - -} - -// chan_signed_promise#_ sig:(Maybe ^bits512) promise:ChanPromise = ChanSignedPromise; - -export function loadChanSignedPromise(slice: Slice): ChanSignedPromise { - let sig: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return slice1.loadBits(512) - - })); - let promise: ChanPromise = loadChanPromise(slice); - return { - kind: 'ChanSignedPromise', - sig: sig, - promise: promise, - } - -} - -export function storeChanSignedPromise(chanSignedPromise: ChanSignedPromise): (builder: Builder) => void { - return ((builder: Builder) => { - storeMaybe(chanSignedPromise.sig, ((arg: BitString) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeBits(arg); - builder.storeRef(cell1); - - }) - - }))(builder); - storeChanPromise(chanSignedPromise.promise)(builder); - }) - -} - -// chan_msg_init#27317822 inc_A:Grams inc_B:Grams min_A:Grams min_B:Grams channel_id:uint64 = ChanMsg; - -// chan_msg_close#f28ae183 extra_A:Grams extra_B:Grams promise:ChanSignedPromise = ChanMsg; - -// chan_msg_timeout#43278a28 = ChanMsg; - -// chan_msg_payout#37fe7810 = ChanMsg; - -export function loadChanMsg(slice: Slice): ChanMsg { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x27317822))) { - slice.loadUint(32); - let inc_A: Grams = loadGrams(slice); - let inc_B: Grams = loadGrams(slice); - let min_A: Grams = loadGrams(slice); - let min_B: Grams = loadGrams(slice); - let channel_id: number = slice.loadUint(64); - return { - kind: 'ChanMsg_chan_msg_init', - inc_A: inc_A, - inc_B: inc_B, - min_A: min_A, - min_B: min_B, - channel_id: channel_id, - } - - } - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0xf28ae183))) { - slice.loadUint(32); - let extra_A: Grams = loadGrams(slice); - let extra_B: Grams = loadGrams(slice); - let promise: ChanSignedPromise = loadChanSignedPromise(slice); - return { - kind: 'ChanMsg_chan_msg_close', - extra_A: extra_A, - extra_B: extra_B, - promise: promise, - } - - } - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x43278a28))) { - slice.loadUint(32); - return { - kind: 'ChanMsg_chan_msg_timeout', - } - - } - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x37fe7810))) { - slice.loadUint(32); - return { - kind: 'ChanMsg_chan_msg_payout', - } - - } - throw new Error('Expected one of "ChanMsg_chan_msg_init", "ChanMsg_chan_msg_close", "ChanMsg_chan_msg_timeout", "ChanMsg_chan_msg_payout" in loading "ChanMsg", but data does not satisfy any constructor'); -} - -export function storeChanMsg(chanMsg: ChanMsg): (builder: Builder) => void { - if ((chanMsg.kind == 'ChanMsg_chan_msg_init')) { - return ((builder: Builder) => { - builder.storeUint(0x27317822, 32); - storeGrams(chanMsg.inc_A)(builder); - storeGrams(chanMsg.inc_B)(builder); - storeGrams(chanMsg.min_A)(builder); - storeGrams(chanMsg.min_B)(builder); - builder.storeUint(chanMsg.channel_id, 64); - }) - - } - if ((chanMsg.kind == 'ChanMsg_chan_msg_close')) { - return ((builder: Builder) => { - builder.storeUint(0xf28ae183, 32); - storeGrams(chanMsg.extra_A)(builder); - storeGrams(chanMsg.extra_B)(builder); - storeChanSignedPromise(chanMsg.promise)(builder); - }) - - } - if ((chanMsg.kind == 'ChanMsg_chan_msg_timeout')) { - return ((builder: Builder) => { - builder.storeUint(0x43278a28, 32); - }) - - } - if ((chanMsg.kind == 'ChanMsg_chan_msg_payout')) { - return ((builder: Builder) => { - builder.storeUint(0x37fe7810, 32); - }) - - } - throw new Error('Expected one of "ChanMsg_chan_msg_init", "ChanMsg_chan_msg_close", "ChanMsg_chan_msg_timeout", "ChanMsg_chan_msg_payout" in loading "ChanMsg", but data does not satisfy any constructor'); -} - -// chan_signed_msg$_ sig_A:(Maybe ^bits512) sig_B:(Maybe ^bits512) msg:ChanMsg = ChanSignedMsg; - -export function loadChanSignedMsg(slice: Slice): ChanSignedMsg { - let sig_A: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return slice1.loadBits(512) - - })); - let sig_B: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return slice1.loadBits(512) - - })); - let msg: ChanMsg = loadChanMsg(slice); - return { - kind: 'ChanSignedMsg', - sig_A: sig_A, - sig_B: sig_B, - msg: msg, - } - -} - -export function storeChanSignedMsg(chanSignedMsg: ChanSignedMsg): (builder: Builder) => void { - return ((builder: Builder) => { - storeMaybe(chanSignedMsg.sig_A, ((arg: BitString) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeBits(arg); - builder.storeRef(cell1); - - }) - - }))(builder); - storeMaybe(chanSignedMsg.sig_B, ((arg: BitString) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeBits(arg); - builder.storeRef(cell1); - - }) - - }))(builder); - storeChanMsg(chanSignedMsg.msg)(builder); - }) - -} - -// chan_op_cmd#912838d1 msg:ChanSignedMsg = ChanOp; - -export function loadChanOp(slice: Slice): ChanOp { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x912838d1))) { - slice.loadUint(32); - let msg: ChanSignedMsg = loadChanSignedMsg(slice); - return { - kind: 'ChanOp', - msg: msg, - } - - } - throw new Error('Expected one of "ChanOp" in loading "ChanOp", but data does not satisfy any constructor'); -} - -export function storeChanOp(chanOp: ChanOp): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x912838d1, 32); - storeChanSignedMsg(chanOp.msg)(builder); - }) - -} - -// chan_data$_ config:^ChanConfig state:^ChanState = ChanData; - -export function loadChanData(slice: Slice): ChanData { - let slice1 = slice.loadRef().beginParse(); - let config: ChanConfig = loadChanConfig(slice1); - let slice2 = slice.loadRef().beginParse(); - let state: ChanState = loadChanState(slice2); - return { - kind: 'ChanData', - config: config, - state: state, - } - -} - -export function storeChanData(chanData: ChanData): (builder: Builder) => void { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeChanConfig(chanData.config)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeChanState(chanData.state)(cell2); - builder.storeRef(cell2); - }) - -} - diff --git a/test/generated_files/generated_test.ts b/test/generated_files/generated_test.ts deleted file mode 100644 index fcee5bb..0000000 --- a/test/generated_files/generated_test.ts +++ /dev/null @@ -1,2562 +0,0 @@ -import { Builder } from 'ton' -import { Slice } from 'ton' -import { beginCell } from 'ton' -import { BitString } from 'ton' -import { Cell } from 'ton' -import { Address } from 'ton' -export function bitLen(n: number) { - return n.toString(2).length;; -} - -export interface Simple { - readonly kind: 'Simple'; - readonly a: number; - readonly b: number; -} - -export type TwoConstructors = TwoConstructors_bool_false | TwoConstructors_bool_true; - -export interface TwoConstructors_bool_false { - readonly kind: 'TwoConstructors_bool_false'; - readonly a: number; - readonly b: number; - readonly c: number; -} - -export interface TwoConstructors_bool_true { - readonly kind: 'TwoConstructors_bool_true'; - readonly b: number; -} - -export interface FixedIntParam { - readonly kind: 'FixedIntParam'; - readonly y: number; -} - -export interface TypedField { - readonly kind: 'TypedField'; - readonly y: FixedIntParam; - readonly c: number; -} - -export interface SharpConstructor { - readonly kind: 'SharpConstructor'; - readonly y: FixedIntParam; - readonly c: number; -} - -export type Maybe = Maybe_nothing | Maybe_just; - -export interface Maybe_nothing { - readonly kind: 'Maybe_nothing'; -} - -export interface Maybe_just { - readonly kind: 'Maybe_just'; - readonly value: TheType; -} - -export interface TypedParam { - readonly kind: 'TypedParam'; - readonly x: Maybe; -} - -export type Either = Either_left | Either_right; - -export interface Either_left { - readonly kind: 'Either_left'; - readonly value: X; -} - -export interface Either_right { - readonly kind: 'Either_right'; - readonly value: Y; -} - -export interface BitLenArg { - readonly kind: 'BitLenArg'; - readonly x: number; - readonly value: bigint; -} - -export interface BitLenArgUser { - readonly kind: 'BitLenArgUser'; - readonly t: BitLenArg; -} - -export interface ExprArg { - readonly kind: 'ExprArg'; - readonly x: number; - readonly value: bigint; -} - -export interface ExprArgUser { - readonly kind: 'ExprArgUser'; - readonly t: ExprArg; -} - -export interface ComplexTypedField { - readonly kind: 'ComplexTypedField'; - readonly a: ExprArgUser; -} - -export interface CellTypedField { - readonly kind: 'CellTypedField'; - readonly a: ExprArgUser; -} - -export interface CellsSimple { - readonly kind: 'CellsSimple'; - readonly t: number; - readonly q: number; - readonly a: number; - readonly e: number; - readonly b: number; - readonly d: number; - readonly c: number; -} - -export interface IntBits { - readonly kind: 'IntBits'; - readonly d: number; - readonly g: BitString; - readonly arg: Arg; - readonly x: Slice; -} - -export interface IntBitsInside { - readonly kind: 'IntBitsInside'; - readonly x: number; - readonly a: IntBits; -} - -export interface IntBitsOutside { - readonly kind: 'IntBitsOutside'; - readonly x: IntBitsInside; -} - -export interface IntBitsParametrized { - readonly kind: 'IntBitsParametrized'; - readonly e: number; - readonly h: bigint; - readonly f: bigint; - readonly i: BitString; - readonly j: number; - readonly k: bigint; - readonly tc: Slice; -} - -export interface IntBitsParametrizedInside { - readonly kind: 'IntBitsParametrizedInside'; - readonly x: number; - readonly a: IntBitsParametrized; -} - -export interface IntBitsParametrizedOutside { - readonly kind: 'IntBitsParametrizedOutside'; - readonly x: IntBitsParametrizedInside; -} - -export interface LessThan { - readonly kind: 'LessThan'; - readonly x: number; - readonly y: number; -} - -export interface OneComb { - readonly kind: 'OneComb'; - readonly t: number; - readonly x: A; -} - -export interface ManyComb { - readonly kind: 'ManyComb'; - readonly y: OneComb>>; -} - -export type Unary = Unary_unary_zero | Unary_unary_succ; - -export interface Unary_unary_zero { - readonly kind: 'Unary_unary_zero'; -} - -export interface Unary_unary_succ { - readonly kind: 'Unary_unary_succ'; - readonly n: number; - readonly x: Unary; -} - -export type ParamConst = ParamConst_b | ParamConst_c | ParamConst_a | ParamConst_d; - -export interface ParamConst_b { - readonly kind: 'ParamConst_b'; - readonly m: number; - readonly k: number; -} - -export interface ParamConst_c { - readonly kind: 'ParamConst_c'; - readonly n: number; - readonly m: number; - readonly k: number; -} - -export interface ParamConst_a { - readonly kind: 'ParamConst_a'; - readonly n: number; -} - -export interface ParamConst_d { - readonly kind: 'ParamConst_d'; - readonly n: number; - readonly m: number; - readonly k: number; - readonly l: number; -} - -export type ParamDifNames = ParamDifNames_a | ParamDifNames_b | ParamDifNames_c | ParamDifNames_d; - -export interface ParamDifNames_a { - readonly kind: 'ParamDifNames_a'; -} - -export interface ParamDifNames_b { - readonly kind: 'ParamDifNames_b'; -} - -export interface ParamDifNames_c { - readonly kind: 'ParamDifNames_c'; - readonly n: number; - readonly x: ParamDifNames; -} - -export interface ParamDifNames_d { - readonly kind: 'ParamDifNames_d'; - readonly m: number; - readonly x: ParamDifNames; -} - -export interface ParamDifNamesUser { - readonly kind: 'ParamDifNamesUser'; - readonly k: number; - readonly x: ParamDifNames; -} - -export interface NegationFromImplicit { - readonly kind: 'NegationFromImplicit'; - readonly y: number; - readonly t: number; - readonly z: number; -} - -export interface UnaryUserCheckOrder { - readonly kind: 'UnaryUserCheckOrder'; - readonly l: number; - readonly m: number; - readonly label: Unary; -} - -export interface CombArgCellRef { - readonly kind: 'CombArgCellRef'; - readonly info: number; - readonly init: Maybe>; - readonly other: Either>; - readonly body: Either; -} - -export interface CombArgCellRefUser { - readonly kind: 'CombArgCellRefUser'; - readonly x: CombArgCellRef; -} - -export interface MathExprAsCombArg { - readonly kind: 'MathExprAsCombArg'; - readonly n: number; - readonly ref: BitLenArg; -} - -export interface EmptyTag { - readonly kind: 'EmptyTag'; - readonly a: number; -} - -export interface SharpTag { - readonly kind: 'SharpTag'; - readonly x: number; -} - -export interface DollarTag { - readonly kind: 'DollarTag'; - readonly x: number; -} - -export interface TupleCheck { - readonly kind: 'TupleCheck'; - readonly s: Array; -} - -export interface Hashmap { - readonly kind: 'Hashmap'; - readonly n: number; - readonly l: number; - readonly m: number; - readonly label: HmLabel; - readonly node: HashmapNode; -} - -export type HashmapNode = HashmapNode_hmn_leaf | HashmapNode_hmn_fork; - -export interface HashmapNode_hmn_leaf { - readonly kind: 'HashmapNode_hmn_leaf'; - readonly value: X; -} - -export interface HashmapNode_hmn_fork { - readonly kind: 'HashmapNode_hmn_fork'; - readonly n: number; - readonly left: Hashmap; - readonly right: Hashmap; -} - -export type HmLabel = HmLabel_hml_short | HmLabel_hml_long | HmLabel_hml_same; - -export interface HmLabel_hml_short { - readonly kind: 'HmLabel_hml_short'; - readonly m: number; - readonly n: number; - readonly len: Unary; - readonly s: Array; -} - -export interface HmLabel_hml_long { - readonly kind: 'HmLabel_hml_long'; - readonly m: number; - readonly n: number; - readonly s: Array; -} - -export interface HmLabel_hml_same { - readonly kind: 'HmLabel_hml_same'; - readonly m: number; - readonly v: BitString; - readonly n: number; -} - -export type HashmapE = HashmapE_hme_empty | HashmapE_hme_root; - -export interface HashmapE_hme_empty { - readonly kind: 'HashmapE_hme_empty'; - readonly n: number; -} - -export interface HashmapE_hme_root { - readonly kind: 'HashmapE_hme_root'; - readonly n: number; - readonly root: Hashmap; -} - -export interface HashmapEUser { - readonly kind: 'HashmapEUser'; - readonly x: HashmapE; -} - -export interface ConditionalField { - readonly kind: 'ConditionalField'; - readonly a: number; - readonly b: number | undefined; -} - -export interface BitSelection { - readonly kind: 'BitSelection'; - readonly a: number; - readonly b: number | undefined; -} - -export interface ImplicitCondition { - readonly kind: 'ImplicitCondition'; - readonly flags: number; -} - -export type MultipleEmptyConstructor = MultipleEmptyConstructor__ | MultipleEmptyConstructor__1 | MultipleEmptyConstructor_a; - -export interface MultipleEmptyConstructor__ { - readonly kind: 'MultipleEmptyConstructor__'; - readonly a: number; -} - -export interface MultipleEmptyConstructor__1 { - readonly kind: 'MultipleEmptyConstructor__1'; - readonly b: number; -} - -export interface MultipleEmptyConstructor_a { - readonly kind: 'MultipleEmptyConstructor_a'; - readonly x: number; -} - -export interface True { - readonly kind: 'True'; -} - -export type ParamNamedArgInSecondConstr = ParamNamedArgInSecondConstr_a | ParamNamedArgInSecondConstr_b; - -export interface ParamNamedArgInSecondConstr_a { - readonly kind: 'ParamNamedArgInSecondConstr_a'; - readonly n: number; -} - -export interface ParamNamedArgInSecondConstr_b { - readonly kind: 'ParamNamedArgInSecondConstr_b'; - readonly n: number; -} - -export interface RefCombinatorAny { - readonly kind: 'RefCombinatorAny'; - readonly msg: Maybe; -} - -export interface EqualityExpression { - readonly kind: 'EqualityExpression'; - readonly n: number; -} - -export interface ConditionalRef { - readonly kind: 'ConditionalRef'; - readonly x: number; - readonly y: Simple | undefined; -} - -export interface LoadFromNegationOutsideExpr { - readonly kind: 'LoadFromNegationOutsideExpr'; - readonly prev_seq_no: number; - readonly seq_no: number; -} - -export interface AnonymousData { - readonly kind: 'AnonymousData'; - readonly anon0: number; - readonly anon0_0: number; -} - -export interface FalseAnonField { - readonly kind: 'FalseAnonField'; - readonly value: bigint; -} - -export type ConstructorOrder = ConstructorOrder_a | ConstructorOrder__; - -export interface ConstructorOrder_a { - readonly kind: 'ConstructorOrder_a'; - readonly a: Simple; -} - -export interface ConstructorOrder__ { - readonly kind: 'ConstructorOrder__'; - readonly anon0: Simple; -} - -export type CheckCrc32 = CheckCrc32_a | CheckCrc32_b; - -export interface CheckCrc32_a { - readonly kind: 'CheckCrc32_a'; - readonly a: number; -} - -export interface CheckCrc32_b { - readonly kind: 'CheckCrc32_b'; - readonly b: number; - readonly c: number; -} - -export interface CheckKeyword { - readonly kind: 'CheckKeyword'; - readonly const0: number; -} - -export interface RefCombinatorInRefHelper { - readonly kind: 'RefCombinatorInRefHelper'; - readonly t: number; - readonly y: Maybe; -} - -export interface RefCombinatorInRef { - readonly kind: 'RefCombinatorInRef'; - readonly msg: RefCombinatorInRefHelper; -} - -export interface BoolUser { - readonly kind: 'BoolUser'; - readonly a: boolean; -} - -export interface Anycast { - readonly kind: 'Anycast'; - readonly depth: number; - readonly rewrite_pfx: BitString; -} - -export interface AddressUser { - readonly kind: 'AddressUser'; - readonly src: Address; -} - -// tmpa$_ a:# b:# = Simple; - -export function loadSimple(slice: Slice): Simple { - let a: number = slice.loadUint(32); - let b: number = slice.loadUint(32); - return { - kind: 'Simple', - a: a, - b: b, - } - -} - -export function storeSimple(simple: Simple): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(simple.a, 32); - builder.storeUint(simple.b, 32); - }) - -} - -// bool_false$0 a:# b:(## 7) c:# = TwoConstructors; - -// bool_true$1 b:# = TwoConstructors; - -export function loadTwoConstructors(slice: Slice): TwoConstructors { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let a: number = slice.loadUint(32); - let b: number = slice.loadUint(7); - let c: number = slice.loadUint(32); - return { - kind: 'TwoConstructors_bool_false', - a: a, - b: b, - c: c, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let b: number = slice.loadUint(32); - return { - kind: 'TwoConstructors_bool_true', - b: b, - } - - } - throw new Error('Expected one of "TwoConstructors_bool_false", "TwoConstructors_bool_true" in loading "TwoConstructors", but data does not satisfy any constructor'); -} - -export function storeTwoConstructors(twoConstructors: TwoConstructors): (builder: Builder) => void { - if ((twoConstructors.kind == 'TwoConstructors_bool_false')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - builder.storeUint(twoConstructors.a, 32); - builder.storeUint(twoConstructors.b, 7); - builder.storeUint(twoConstructors.c, 32); - }) - - } - if ((twoConstructors.kind == 'TwoConstructors_bool_true')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - builder.storeUint(twoConstructors.b, 32); - }) - - } - throw new Error('Expected one of "TwoConstructors_bool_false", "TwoConstructors_bool_true" in loading "TwoConstructors", but data does not satisfy any constructor'); -} - -// tmpb$_ y:(## 5) = FixedIntParam; - -export function loadFixedIntParam(slice: Slice): FixedIntParam { - let y: number = slice.loadUint(5); - return { - kind: 'FixedIntParam', - y: y, - } - -} - -export function storeFixedIntParam(fixedIntParam: FixedIntParam): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(fixedIntParam.y, 5); - }) - -} - -// tmpc$_ y:FixedIntParam c:# = TypedField; - -export function loadTypedField(slice: Slice): TypedField { - let y: FixedIntParam = loadFixedIntParam(slice); - let c: number = slice.loadUint(32); - return { - kind: 'TypedField', - y: y, - c: c, - } - -} - -export function storeTypedField(typedField: TypedField): (builder: Builder) => void { - return ((builder: Builder) => { - storeFixedIntParam(typedField.y)(builder); - builder.storeUint(typedField.c, 32); - }) - -} - -// tmpd#_ y:FixedIntParam c:# = SharpConstructor; - -export function loadSharpConstructor(slice: Slice): SharpConstructor { - let y: FixedIntParam = loadFixedIntParam(slice); - let c: number = slice.loadUint(32); - return { - kind: 'SharpConstructor', - y: y, - c: c, - } - -} - -export function storeSharpConstructor(sharpConstructor: SharpConstructor): (builder: Builder) => void { - return ((builder: Builder) => { - storeFixedIntParam(sharpConstructor.y)(builder); - builder.storeUint(sharpConstructor.c, 32); - }) - -} - -// nothing$0 {TheType:Type} = Maybe TheType; - -// just$1 {TheType:Type} value:TheType = Maybe TheType; - -export function loadMaybe(slice: Slice, loadTheType: (slice: Slice) => TheType): Maybe { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'Maybe_nothing', - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let value: TheType = loadTheType(slice); - return { - kind: 'Maybe_just', - value: value, - } - - } - throw new Error('Expected one of "Maybe_nothing", "Maybe_just" in loading "Maybe", but data does not satisfy any constructor'); -} - -export function storeMaybe(maybe: Maybe, storeTheType: (theType: TheType) => (builder: Builder) => void): (builder: Builder) => void { - if ((maybe.kind == 'Maybe_nothing')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((maybe.kind == 'Maybe_just')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - storeTheType(maybe.value)(builder); - }) - - } - throw new Error('Expected one of "Maybe_nothing", "Maybe_just" in loading "Maybe", but data does not satisfy any constructor'); -} - -// thejust$_ x:(Maybe SharpConstructor) = TypedParam; - -export function loadTypedParam(slice: Slice): TypedParam { - let x: Maybe = loadMaybe(slice, loadSharpConstructor); - return { - kind: 'TypedParam', - x: x, - } - -} - -export function storeTypedParam(typedParam: TypedParam): (builder: Builder) => void { - return ((builder: Builder) => { - storeMaybe(typedParam.x, storeSharpConstructor)(builder); - }) - -} - -// left$0 {X:Type} {Y:Type} value:X = Either X Y; - -// right$1 {X:Type} {Y:Type} value:Y = Either X Y; - -export function loadEither(slice: Slice, loadX: (slice: Slice) => X, loadY: (slice: Slice) => Y): Either { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let value: X = loadX(slice); - return { - kind: 'Either_left', - value: value, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let value: Y = loadY(slice); - return { - kind: 'Either_right', - value: value, - } - - } - throw new Error('Expected one of "Either_left", "Either_right" in loading "Either", but data does not satisfy any constructor'); -} - -export function storeEither(either: Either, storeX: (x: X) => (builder: Builder) => void, storeY: (y: Y) => (builder: Builder) => void): (builder: Builder) => void { - if ((either.kind == 'Either_left')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - storeX(either.value)(builder); - }) - - } - if ((either.kind == 'Either_right')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - storeY(either.value)(builder); - }) - - } - throw new Error('Expected one of "Either_left", "Either_right" in loading "Either", but data does not satisfy any constructor'); -} - -// a$_ {x:#} value:(## x) = BitLenArg x; - -export function loadBitLenArg(slice: Slice, x: number): BitLenArg { - let value: bigint = slice.loadUintBig(x); - return { - kind: 'BitLenArg', - x: x, - value: value, - } - -} - -export function storeBitLenArg(bitLenArg: BitLenArg): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(bitLenArg.value, bitLenArg.x); - }) - -} - -// a$_ t:(BitLenArg 4) = BitLenArgUser; - -export function loadBitLenArgUser(slice: Slice): BitLenArgUser { - let t: BitLenArg = loadBitLenArg(slice, 4); - return { - kind: 'BitLenArgUser', - t: t, - } - -} - -export function storeBitLenArgUser(bitLenArgUser: BitLenArgUser): (builder: Builder) => void { - return ((builder: Builder) => { - storeBitLenArg(bitLenArgUser.t)(builder); - }) - -} - -// a$_ {x:#} value:(## x) = ExprArg (2 + x); - -export function loadExprArg(slice: Slice, arg0: number): ExprArg { - let value: bigint = slice.loadUintBig((arg0 - 2)); - return { - kind: 'ExprArg', - x: (arg0 - 2), - value: value, - } - -} - -export function storeExprArg(exprArg: ExprArg): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(exprArg.value, exprArg.x); - }) - -} - -// a$_ t:(ExprArg 6) = ExprArgUser; - -export function loadExprArgUser(slice: Slice): ExprArgUser { - let t: ExprArg = loadExprArg(slice, 6); - return { - kind: 'ExprArgUser', - t: t, - } - -} - -export function storeExprArgUser(exprArgUser: ExprArgUser): (builder: Builder) => void { - return ((builder: Builder) => { - storeExprArg(exprArgUser.t)(builder); - }) - -} - -// a$_ a:ExprArgUser = ComplexTypedField; - -export function loadComplexTypedField(slice: Slice): ComplexTypedField { - let a: ExprArgUser = loadExprArgUser(slice); - return { - kind: 'ComplexTypedField', - a: a, - } - -} - -export function storeComplexTypedField(complexTypedField: ComplexTypedField): (builder: Builder) => void { - return ((builder: Builder) => { - storeExprArgUser(complexTypedField.a)(builder); - }) - -} - -// a$_ a:^ExprArgUser = CellTypedField; - -export function loadCellTypedField(slice: Slice): CellTypedField { - let slice1 = slice.loadRef().beginParse(); - let a: ExprArgUser = loadExprArgUser(slice1); - return { - kind: 'CellTypedField', - a: a, - } - -} - -export function storeCellTypedField(_cellTypedField: CellTypedField): (builder: Builder) => void { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeExprArgUser(_cellTypedField.a)(cell1); - builder.storeRef(cell1); - }) - -} - -// a$_ t:# ^[ q:# ] ^[ a:(## 32) ^[ e:# ] ^[ b:(## 32) d:# ^[ c:(## 32) ] ] ] = CellsSimple; - -export function loadCellsSimple(slice: Slice): CellsSimple { - let t: number = slice.loadUint(32); - let slice1 = slice.loadRef().beginParse(); - let q: number = slice1.loadUint(32); - let slice2 = slice.loadRef().beginParse(); - let a: number = slice2.loadUint(32); - let slice21 = slice2.loadRef().beginParse(); - let e: number = slice21.loadUint(32); - let slice22 = slice2.loadRef().beginParse(); - let b: number = slice22.loadUint(32); - let d: number = slice22.loadUint(32); - let slice221 = slice22.loadRef().beginParse(); - let c: number = slice221.loadUint(32); - return { - kind: 'CellsSimple', - t: t, - q: q, - a: a, - e: e, - b: b, - d: d, - c: c, - } - -} - -export function storeCellsSimple(_cellsSimple: CellsSimple): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(_cellsSimple.t, 32); - let cell1 = beginCell(); - cell1.storeUint(_cellsSimple.q, 32); - builder.storeRef(cell1); - let cell2 = beginCell(); - cell2.storeUint(_cellsSimple.a, 32); - let cell21 = beginCell(); - cell21.storeUint(_cellsSimple.e, 32); - cell2.storeRef(cell21); - let cell22 = beginCell(); - cell22.storeUint(_cellsSimple.b, 32); - cell22.storeUint(_cellsSimple.d, 32); - let cell221 = beginCell(); - cell221.storeUint(_cellsSimple.c, 32); - cell22.storeRef(cell221); - cell2.storeRef(cell22); - builder.storeRef(cell2); - }) - -} - -// b$_ d:int11 g:bits2 {Arg:Type} arg:Arg x:Any = IntBits Arg; - -export function loadIntBits(slice: Slice, loadArg: (slice: Slice) => Arg): IntBits { - let d: number = slice.loadInt(11); - let g: BitString = slice.loadBits(2); - let arg: Arg = loadArg(slice); - let x: Slice = slice; - return { - kind: 'IntBits', - d: d, - g: g, - arg: arg, - x: x, - } - -} - -export function storeIntBits(intBits: IntBits, storeArg: (arg: Arg) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeInt(intBits.d, 11); - builder.storeBits(intBits.g); - storeArg(intBits.arg)(builder); - builder.storeSlice(intBits.x); - }) - -} - -// a$_ {x:#} a:(IntBits (int (1 + x))) = IntBitsInside (x * 2); - -export function loadIntBitsInside(slice: Slice, arg0: number): IntBitsInside { - let a: IntBits = loadIntBits(slice, ((slice: Slice) => { - return slice.loadIntBig((1 + (arg0 / 2))) - - })); - return { - kind: 'IntBitsInside', - x: (arg0 / 2), - a: a, - } - -} - -export function storeIntBitsInside(intBitsInside: IntBitsInside): (builder: Builder) => void { - return ((builder: Builder) => { - storeIntBits(intBitsInside.a, ((arg: bigint) => { - return ((builder: Builder) => { - builder.storeInt(arg, (1 + intBitsInside.x)); - }) - - }))(builder); - }) - -} - -// a$_ x:(IntBitsInside 6) = IntBitsOutside; - -export function loadIntBitsOutside(slice: Slice): IntBitsOutside { - let x: IntBitsInside = loadIntBitsInside(slice, 6); - return { - kind: 'IntBitsOutside', - x: x, - } - -} - -export function storeIntBitsOutside(intBitsOutside: IntBitsOutside): (builder: Builder) => void { - return ((builder: Builder) => { - storeIntBitsInside(intBitsOutside.x)(builder); - }) - -} - -// a$_ {e:#} h:(int (e * 8)) f:(uint (7 * e)) i:(bits (5 + e)) j:(int 5) k:(uint e) tc:Cell = IntBitsParametrized e; - -export function loadIntBitsParametrized(slice: Slice, e: number): IntBitsParametrized { - let h: bigint = slice.loadIntBig((e * 8)); - let f: bigint = slice.loadUintBig((7 * e)); - let i: BitString = slice.loadBits((5 + e)); - let j: number = slice.loadInt(5); - let k: bigint = slice.loadUintBig(e); - let tc: Slice = slice; - return { - kind: 'IntBitsParametrized', - e: e, - h: h, - f: f, - i: i, - j: j, - k: k, - tc: tc, - } - -} - -export function storeIntBitsParametrized(intBitsParametrized: IntBitsParametrized): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeInt(intBitsParametrized.h, (intBitsParametrized.e * 8)); - builder.storeUint(intBitsParametrized.f, (7 * intBitsParametrized.e)); - builder.storeBits(intBitsParametrized.i); - builder.storeInt(intBitsParametrized.j, 5); - builder.storeUint(intBitsParametrized.k, intBitsParametrized.e); - builder.storeSlice(intBitsParametrized.tc); - }) - -} - -// a$_ {x:#} a:(IntBitsParametrized x) = IntBitsParametrizedInside x; - -export function loadIntBitsParametrizedInside(slice: Slice, x: number): IntBitsParametrizedInside { - let a: IntBitsParametrized = loadIntBitsParametrized(slice, x); - return { - kind: 'IntBitsParametrizedInside', - x: x, - a: a, - } - -} - -export function storeIntBitsParametrizedInside(intBitsParametrizedInside: IntBitsParametrizedInside): (builder: Builder) => void { - return ((builder: Builder) => { - storeIntBitsParametrized(intBitsParametrizedInside.a)(builder); - }) - -} - -// a$_ x:(IntBitsParametrizedInside 5) = IntBitsParametrizedOutside; - -export function loadIntBitsParametrizedOutside(slice: Slice): IntBitsParametrizedOutside { - let x: IntBitsParametrizedInside = loadIntBitsParametrizedInside(slice, 5); - return { - kind: 'IntBitsParametrizedOutside', - x: x, - } - -} - -export function storeIntBitsParametrizedOutside(intBitsParametrizedOutside: IntBitsParametrizedOutside): (builder: Builder) => void { - return ((builder: Builder) => { - storeIntBitsParametrizedInside(intBitsParametrizedOutside.x)(builder); - }) - -} - -// a$_ x:(#< 4) y:(#<= 4) = LessThan; - -export function loadLessThan(slice: Slice): LessThan { - let x: number = slice.loadUint(bitLen((4 - 1))); - let y: number = slice.loadUint(bitLen(4)); - return { - kind: 'LessThan', - x: x, - y: y, - } - -} - -export function storeLessThan(lessThan: LessThan): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(lessThan.x, bitLen((4 - 1))); - builder.storeUint(lessThan.y, bitLen(4)); - }) - -} - -// a$_ {A:Type} t:# x:A = OneComb A; - -export function loadOneComb(slice: Slice, loadA: (slice: Slice) => A): OneComb { - let t: number = slice.loadUint(32); - let x: A = loadA(slice); - return { - kind: 'OneComb', - t: t, - x: x, - } - -} - -export function storeOneComb(oneComb: OneComb, storeA: (a: A) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(oneComb.t, 32); - storeA(oneComb.x)(builder); - }) - -} - -// a$_ y:(OneComb(OneComb(OneComb int3))) = ManyComb; - -export function loadManyComb(slice: Slice): ManyComb { - let y: OneComb>> = loadOneComb>>(slice, ((slice: Slice) => { - return loadOneComb>(slice, ((slice: Slice) => { - return loadOneComb(slice, ((slice: Slice) => { - return slice.loadInt(3) - - })) - - })) - - })); - return { - kind: 'ManyComb', - y: y, - } - -} - -export function storeManyComb(manyComb: ManyComb): (builder: Builder) => void { - return ((builder: Builder) => { - storeOneComb>>(manyComb.y, ((arg: OneComb>) => { - return ((builder: Builder) => { - storeOneComb>(arg, ((arg: OneComb) => { - return ((builder: Builder) => { - storeOneComb(arg, ((arg: number) => { - return ((builder: Builder) => { - builder.storeInt(arg, 3); - }) - - }))(builder); - }) - - }))(builder); - }) - - }))(builder); - }) - -} - -// unary_zero$0 = Unary ~0; - -export function unary_unary_succ_get_n(x: Unary): number { - if ((x.kind == 'Unary_unary_zero')) { - return 0 - - } - if ((x.kind == 'Unary_unary_succ')) { - let n = x.n; - return (n + 1) - - } - throw new Error('Expected one of "Unary_unary_zero", "Unary_unary_succ" for type "Unary" while getting "x", but data does not satisfy any constructor'); -} - -// unary_succ$1 {n:#} x:(Unary ~n) = Unary ~(n + 1); - -export function loadUnary(slice: Slice): Unary { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'Unary_unary_zero', - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let x: Unary = loadUnary(slice); - let n = unary_unary_succ_get_n(x); - return { - kind: 'Unary_unary_succ', - x: x, - n: n, - } - - } - throw new Error('Expected one of "Unary_unary_zero", "Unary_unary_succ" in loading "Unary", but data does not satisfy any constructor'); -} - -export function storeUnary(unary: Unary): (builder: Builder) => void { - if ((unary.kind == 'Unary_unary_zero')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((unary.kind == 'Unary_unary_succ')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - storeUnary(unary.x)(builder); - }) - - } - throw new Error('Expected one of "Unary_unary_zero", "Unary_unary_succ" in loading "Unary", but data does not satisfy any constructor'); -} - -// b$01 m:# k:# = ParamConst 2 1; - -// c$01 n:# m:# k:# = ParamConst 3 3; - -// a$_ n:# = ParamConst 1 1; - -// d$_ n:# m:# k:# l:# = ParamConst 4 2; - -export function loadParamConst(slice: Slice, arg0: number, arg1: number): ParamConst { - if (((slice.remainingBits >= 2) && ((slice.preloadUint(2) == 0b01) && ((arg0 == 2) && (arg1 == 1))))) { - slice.loadUint(2); - let m: number = slice.loadUint(32); - let k: number = slice.loadUint(32); - return { - kind: 'ParamConst_b', - m: m, - k: k, - } - - } - if (((slice.remainingBits >= 2) && ((slice.preloadUint(2) == 0b01) && ((arg0 == 3) && (arg1 == 3))))) { - slice.loadUint(2); - let n: number = slice.loadUint(32); - let m: number = slice.loadUint(32); - let k: number = slice.loadUint(32); - return { - kind: 'ParamConst_c', - n: n, - m: m, - k: k, - } - - } - if (((arg0 == 1) && (arg1 == 1))) { - let n: number = slice.loadUint(32); - return { - kind: 'ParamConst_a', - n: n, - } - - } - if (((arg0 == 4) && (arg1 == 2))) { - let n: number = slice.loadUint(32); - let m: number = slice.loadUint(32); - let k: number = slice.loadUint(32); - let l: number = slice.loadUint(32); - return { - kind: 'ParamConst_d', - n: n, - m: m, - k: k, - l: l, - } - - } - throw new Error('Expected one of "ParamConst_b", "ParamConst_c", "ParamConst_a", "ParamConst_d" in loading "ParamConst", but data does not satisfy any constructor'); -} - -export function storeParamConst(paramConst: ParamConst): (builder: Builder) => void { - if ((paramConst.kind == 'ParamConst_b')) { - return ((builder: Builder) => { - builder.storeUint(0b01, 2); - builder.storeUint(paramConst.m, 32); - builder.storeUint(paramConst.k, 32); - }) - - } - if ((paramConst.kind == 'ParamConst_c')) { - return ((builder: Builder) => { - builder.storeUint(0b01, 2); - builder.storeUint(paramConst.n, 32); - builder.storeUint(paramConst.m, 32); - builder.storeUint(paramConst.k, 32); - }) - - } - if ((paramConst.kind == 'ParamConst_a')) { - return ((builder: Builder) => { - builder.storeUint(paramConst.n, 32); - }) - - } - if ((paramConst.kind == 'ParamConst_d')) { - return ((builder: Builder) => { - builder.storeUint(paramConst.n, 32); - builder.storeUint(paramConst.m, 32); - builder.storeUint(paramConst.k, 32); - builder.storeUint(paramConst.l, 32); - }) - - } - throw new Error('Expected one of "ParamConst_b", "ParamConst_c", "ParamConst_a", "ParamConst_d" in loading "ParamConst", but data does not satisfy any constructor'); -} - -// a$0 = ParamDifNames 2 ~1; - -// b$1 = ParamDifNames 3 ~1; - -export function paramDifNames_c_get_n(x: ParamDifNames): number { - if ((x.kind == 'ParamDifNames_a')) { - return 1 - - } - if ((x.kind == 'ParamDifNames_b')) { - return 1 - - } - if ((x.kind == 'ParamDifNames_c')) { - let n = x.n; - return (n + 1) - - } - if ((x.kind == 'ParamDifNames_d')) { - let m = x.m; - return (m * 2) - - } - throw new Error('Expected one of "ParamDifNames_a", "ParamDifNames_b", "ParamDifNames_c", "ParamDifNames_d" for type "ParamDifNames" while getting "x", but data does not satisfy any constructor'); -} - -// c$1 {n:#} x:(ParamDifNames 2 ~n) = ParamDifNames 2 ~(n + 1); - -export function paramDifNames_d_get_m(x: ParamDifNames): number { - if ((x.kind == 'ParamDifNames_a')) { - return 1 - - } - if ((x.kind == 'ParamDifNames_b')) { - return 1 - - } - if ((x.kind == 'ParamDifNames_c')) { - let n = x.n; - return (n + 1) - - } - if ((x.kind == 'ParamDifNames_d')) { - let m = x.m; - return (m * 2) - - } - throw new Error('Expected one of "ParamDifNames_a", "ParamDifNames_b", "ParamDifNames_c", "ParamDifNames_d" for type "ParamDifNames" while getting "x", but data does not satisfy any constructor'); -} - -// d$0 {m:#} x:(ParamDifNames 3 ~m) = ParamDifNames 3 ~(m * 2); - -export function loadParamDifNames(slice: Slice, arg0: number): ParamDifNames { - if (((slice.remainingBits >= 1) && ((slice.preloadUint(1) == 0b0) && (arg0 == 2)))) { - slice.loadUint(1); - return { - kind: 'ParamDifNames_a', - } - - } - if (((slice.remainingBits >= 1) && ((slice.preloadUint(1) == 0b1) && (arg0 == 3)))) { - slice.loadUint(1); - return { - kind: 'ParamDifNames_b', - } - - } - if (((slice.remainingBits >= 1) && ((slice.preloadUint(1) == 0b1) && (arg0 == 2)))) { - slice.loadUint(1); - let x: ParamDifNames = loadParamDifNames(slice, 2); - let n = paramDifNames_c_get_n(x); - return { - kind: 'ParamDifNames_c', - x: x, - n: n, - } - - } - if (((slice.remainingBits >= 1) && ((slice.preloadUint(1) == 0b0) && (arg0 == 3)))) { - slice.loadUint(1); - let x: ParamDifNames = loadParamDifNames(slice, 3); - let m = paramDifNames_d_get_m(x); - return { - kind: 'ParamDifNames_d', - x: x, - m: m, - } - - } - throw new Error('Expected one of "ParamDifNames_a", "ParamDifNames_b", "ParamDifNames_c", "ParamDifNames_d" in loading "ParamDifNames", but data does not satisfy any constructor'); -} - -export function storeParamDifNames(paramDifNames: ParamDifNames): (builder: Builder) => void { - if ((paramDifNames.kind == 'ParamDifNames_a')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((paramDifNames.kind == 'ParamDifNames_b')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - }) - - } - if ((paramDifNames.kind == 'ParamDifNames_c')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - storeParamDifNames(paramDifNames.x)(builder); - }) - - } - if ((paramDifNames.kind == 'ParamDifNames_d')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - storeParamDifNames(paramDifNames.x)(builder); - }) - - } - throw new Error('Expected one of "ParamDifNames_a", "ParamDifNames_b", "ParamDifNames_c", "ParamDifNames_d" in loading "ParamDifNames", but data does not satisfy any constructor'); -} - -export function paramDifNamesUser_get_k(x: ParamDifNames): number { - if ((x.kind == 'ParamDifNames_a')) { - return 1 - - } - if ((x.kind == 'ParamDifNames_b')) { - return 1 - - } - if ((x.kind == 'ParamDifNames_c')) { - let n = x.n; - return (n + 1) - - } - if ((x.kind == 'ParamDifNames_d')) { - let m = x.m; - return (m * 2) - - } - throw new Error('Expected one of "ParamDifNames_a", "ParamDifNames_b", "ParamDifNames_c", "ParamDifNames_d" for type "ParamDifNames" while getting "x", but data does not satisfy any constructor'); -} - -// e$0 {k:#} x:(ParamDifNames 2 ~k) = ParamDifNamesUser; - -export function loadParamDifNamesUser(slice: Slice): ParamDifNamesUser { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let x: ParamDifNames = loadParamDifNames(slice, 2); - let k = paramDifNamesUser_get_k(x); - return { - kind: 'ParamDifNamesUser', - x: x, - k: k, - } - - } - throw new Error('Expected one of "ParamDifNamesUser" in loading "ParamDifNamesUser", but data does not satisfy any constructor'); -} - -export function storeParamDifNamesUser(paramDifNamesUser: ParamDifNamesUser): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - storeParamDifNames(paramDifNamesUser.x)(builder); - }) - -} - -// b$1 {y:#} t:# z:# { t = (~y) * 2} = NegationFromImplicit ~(y + 1); - -export function loadNegationFromImplicit(slice: Slice): NegationFromImplicit { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let t: number = slice.loadUint(32); - let z: number = slice.loadUint(32); - return { - kind: 'NegationFromImplicit', - y: (t / 2), - t: t, - z: z, - } - - } - throw new Error('Expected one of "NegationFromImplicit" in loading "NegationFromImplicit", but data does not satisfy any constructor'); -} - -export function storeNegationFromImplicit(negationFromImplicit: NegationFromImplicit): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - builder.storeUint(negationFromImplicit.t, 32); - builder.storeUint(negationFromImplicit.z, 32); - }) - -} - -export function unaryUserCheckOrder_get_l(label: Unary): number { - if ((label.kind == 'Unary_unary_zero')) { - return 0 - - } - if ((label.kind == 'Unary_unary_succ')) { - let n = label.n; - return (n + 1) - - } - throw new Error('Expected one of "Unary_unary_zero", "Unary_unary_succ" for type "Unary" while getting "label", but data does not satisfy any constructor'); -} - -// hm_edge#_ {l:#} {m:#} label:(Unary ~l) {7 = (~m) + l} = UnaryUserCheckOrder; - -export function loadUnaryUserCheckOrder(slice: Slice): UnaryUserCheckOrder { - let label: Unary = loadUnary(slice); - let l = unaryUserCheckOrder_get_l(label); - return { - kind: 'UnaryUserCheckOrder', - m: (7 - l), - label: label, - l: l, - } - -} - -export function storeUnaryUserCheckOrder(unaryUserCheckOrder: UnaryUserCheckOrder): (builder: Builder) => void { - return ((builder: Builder) => { - storeUnary(unaryUserCheckOrder.label)(builder); - }) - -} - -/* -a$_ {X:Type} info:int32 - init:(Maybe (Either X ^int22)) - other:(Either X ^(OneComb X)) - body:(Either X ^X) = CombArgCellRef X; -*/ - -export function loadCombArgCellRef(slice: Slice, loadX: (slice: Slice) => X): CombArgCellRef { - let info: number = slice.loadInt(32); - let init: Maybe> = loadMaybe>(slice, ((slice: Slice) => { - return loadEither(slice, loadX, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return slice1.loadInt(22) - - })) - - })); - let other: Either> = loadEither>(slice, loadX, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadOneComb(slice1, loadX) - - })); - let body: Either = loadEither(slice, loadX, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadX(slice1) - - })); - return { - kind: 'CombArgCellRef', - info: info, - init: init, - other: other, - body: body, - } - -} - -export function storeCombArgCellRef(combArgCellRef: CombArgCellRef, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeInt(combArgCellRef.info, 32); - storeMaybe>(combArgCellRef.init, ((arg: Either) => { - return ((builder: Builder) => { - storeEither(arg, storeX, ((arg: number) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - cell1.storeInt(arg, 22); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - - }))(builder); - storeEither>(combArgCellRef.other, storeX, ((arg: OneComb) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeOneComb(arg, storeX)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - storeEither(combArgCellRef.body, storeX, ((arg: X) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeX(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - -} - -// a$_ x:(CombArgCellRef int12) = CombArgCellRefUser; - -export function loadCombArgCellRefUser(slice: Slice): CombArgCellRefUser { - let x: CombArgCellRef = loadCombArgCellRef(slice, ((slice: Slice) => { - return slice.loadInt(12) - - })); - return { - kind: 'CombArgCellRefUser', - x: x, - } - -} - -export function storeCombArgCellRefUser(combArgCellRefUser: CombArgCellRefUser): (builder: Builder) => void { - return ((builder: Builder) => { - storeCombArgCellRef(combArgCellRefUser.x, ((arg: number) => { - return ((builder: Builder) => { - builder.storeInt(arg, 12); - }) - - }))(builder); - }) - -} - -// a$_ {n:#} ref:^(BitLenArg (n + 2)) = MathExprAsCombArg (n + 2); - -export function loadMathExprAsCombArg(slice: Slice, arg0: number): MathExprAsCombArg { - let slice1 = slice.loadRef().beginParse(); - let ref: BitLenArg = loadBitLenArg(slice1, ((arg0 - 2) + 2)); - return { - kind: 'MathExprAsCombArg', - n: (arg0 - 2), - ref: ref, - } - -} - -export function storeMathExprAsCombArg(mathExprAsCombArg: MathExprAsCombArg): (builder: Builder) => void { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeBitLenArg(mathExprAsCombArg.ref)(cell1); - builder.storeRef(cell1); - }) - -} - -// _ a:# = EmptyTag; - -export function loadEmptyTag(slice: Slice): EmptyTag { - let a: number = slice.loadUint(32); - return { - kind: 'EmptyTag', - a: a, - } - -} - -export function storeEmptyTag(emptyTag: EmptyTag): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(emptyTag.a, 32); - }) - -} - -// a#f4 x:# = SharpTag; - -export function loadSharpTag(slice: Slice): SharpTag { - if (((slice.remainingBits >= 8) && (slice.preloadUint(8) == 0xf4))) { - slice.loadUint(8); - let x: number = slice.loadUint(32); - return { - kind: 'SharpTag', - x: x, - } - - } - throw new Error('Expected one of "SharpTag" in loading "SharpTag", but data does not satisfy any constructor'); -} - -export function storeSharpTag(sharpTag: SharpTag): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0xf4, 8); - builder.storeUint(sharpTag.x, 32); - }) - -} - -// a$1011 x:# = DollarTag; - -export function loadDollarTag(slice: Slice): DollarTag { - if (((slice.remainingBits >= 4) && (slice.preloadUint(4) == 0b1011))) { - slice.loadUint(4); - let x: number = slice.loadUint(32); - return { - kind: 'DollarTag', - x: x, - } - - } - throw new Error('Expected one of "DollarTag" in loading "DollarTag", but data does not satisfy any constructor'); -} - -export function storeDollarTag(dollarTag: DollarTag): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0b1011, 4); - builder.storeUint(dollarTag.x, 32); - }) - -} - -// a$_ s:(3 * int5) = TupleCheck; - -export function loadTupleCheck(slice: Slice): TupleCheck { - let s: Array = Array.from(Array(3).keys()).map(((arg: number) => { - return slice.loadInt(5) - - })); - return { - kind: 'TupleCheck', - s: s, - } - -} - -export function storeTupleCheck(tupleCheck: TupleCheck): (builder: Builder) => void { - return ((builder: Builder) => { - tupleCheck.s.forEach(((arg: number) => { - builder.storeInt(arg, 5); - })); - }) - -} - -export function hashmap_get_l(label: HmLabel): number { - if ((label.kind == 'HmLabel_hml_short')) { - let n = label.n; - return n - - } - if ((label.kind == 'HmLabel_hml_long')) { - let n = label.n; - return n - - } - if ((label.kind == 'HmLabel_hml_same')) { - let n = label.n; - return n - - } - throw new Error('Expected one of "HmLabel_hml_short", "HmLabel_hml_long", "HmLabel_hml_same" for type "HmLabel" while getting "label", but data does not satisfy any constructor'); -} - -/* -hm_edge#_ {n:#} {X:Type} {l:#} {m:#} label:(HmLabel ~l n) - {n = (~m) + l} node:(HashmapNode m X) = Hashmap n X; -*/ - -export function loadHashmap(slice: Slice, n: number, loadX: (slice: Slice) => X): Hashmap { - let label: HmLabel = loadHmLabel(slice, n); - let l = hashmap_get_l(label); - let node: HashmapNode = loadHashmapNode(slice, (n - l), loadX); - return { - kind: 'Hashmap', - n: n, - m: (n - l), - label: label, - l: l, - node: node, - } - -} - -export function storeHashmap(hashmap: Hashmap, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - storeHmLabel(hashmap.label)(builder); - storeHashmapNode(hashmap.node, storeX)(builder); - }) - -} - -// hmn_leaf#_ {X:Type} value:X = HashmapNode 0 X; - -/* -hmn_fork#_ {n:#} {X:Type} left:^(Hashmap n X) - right:^(Hashmap n X) = HashmapNode (n + 1) X; -*/ - -export function loadHashmapNode(slice: Slice, arg0: number, loadX: (slice: Slice) => X): HashmapNode { - if ((arg0 == 0)) { - let value: X = loadX(slice); - return { - kind: 'HashmapNode_hmn_leaf', - value: value, - } - - } - if (true) { - let slice1 = slice.loadRef().beginParse(); - let left: Hashmap = loadHashmap(slice1, (arg0 - 1), loadX); - let slice2 = slice.loadRef().beginParse(); - let right: Hashmap = loadHashmap(slice2, (arg0 - 1), loadX); - return { - kind: 'HashmapNode_hmn_fork', - n: (arg0 - 1), - left: left, - right: right, - } - - } - throw new Error('Expected one of "HashmapNode_hmn_leaf", "HashmapNode_hmn_fork" in loading "HashmapNode", but data does not satisfy any constructor'); -} - -export function storeHashmapNode(hashmapNode: HashmapNode, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - if ((hashmapNode.kind == 'HashmapNode_hmn_leaf')) { - return ((builder: Builder) => { - storeX(hashmapNode.value)(builder); - }) - - } - if ((hashmapNode.kind == 'HashmapNode_hmn_fork')) { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeHashmap(hashmapNode.left, storeX)(cell1); - builder.storeRef(cell1); - let cell2 = beginCell(); - storeHashmap(hashmapNode.right, storeX)(cell2); - builder.storeRef(cell2); - }) - - } - throw new Error('Expected one of "HashmapNode_hmn_leaf", "HashmapNode_hmn_fork" in loading "HashmapNode", but data does not satisfy any constructor'); -} - -export function hmLabel_hml_short_get_n(len: Unary): number { - if ((len.kind == 'Unary_unary_zero')) { - return 0 - - } - if ((len.kind == 'Unary_unary_succ')) { - let n = len.n; - return (n + 1) - - } - throw new Error('Expected one of "Unary_unary_zero", "Unary_unary_succ" for type "Unary" while getting "len", but data does not satisfy any constructor'); -} - -// hml_short$0 {m:#} {n:#} len:(Unary ~n) {n <= m} s:(n * Bit) = HmLabel ~n m; - -// hml_long$10 {m:#} n:(#<= m) s:(n * Bit) = HmLabel ~n m; - -// hml_same$11 {m:#} v:Bit n:(#<= m) = HmLabel ~n m; - -export function loadHmLabel(slice: Slice, m: number): HmLabel { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let len: Unary = loadUnary(slice); - let n = hmLabel_hml_short_get_n(len); - let s: Array = Array.from(Array(n).keys()).map(((arg: number) => { - return slice.loadBits(1) - - })); - if ((!(n <= m))) { - throw new Error('Condition (n <= m) is not satisfied while loading "HmLabel_hml_short" for type "HmLabel"'); - } - return { - kind: 'HmLabel_hml_short', - m: m, - len: len, - n: n, - s: s, - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b10))) { - slice.loadUint(2); - let n: number = slice.loadUint(bitLen(m)); - let s: Array = Array.from(Array(n).keys()).map(((arg: number) => { - return slice.loadBits(1) - - })); - return { - kind: 'HmLabel_hml_long', - m: m, - n: n, - s: s, - } - - } - if (((slice.remainingBits >= 2) && (slice.preloadUint(2) == 0b11))) { - slice.loadUint(2); - let v: BitString = slice.loadBits(1); - let n: number = slice.loadUint(bitLen(m)); - return { - kind: 'HmLabel_hml_same', - m: m, - v: v, - n: n, - } - - } - throw new Error('Expected one of "HmLabel_hml_short", "HmLabel_hml_long", "HmLabel_hml_same" in loading "HmLabel", but data does not satisfy any constructor'); -} - -export function storeHmLabel(hmLabel: HmLabel): (builder: Builder) => void { - if ((hmLabel.kind == 'HmLabel_hml_short')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - storeUnary(hmLabel.len)(builder); - hmLabel.s.forEach(((arg: BitString) => { - builder.storeBits(arg); - })); - if ((!(hmLabel.n <= hmLabel.m))) { - throw new Error('Condition (hmLabel.n <= hmLabel.m) is not satisfied while loading "HmLabel_hml_short" for type "HmLabel"'); - } - }) - - } - if ((hmLabel.kind == 'HmLabel_hml_long')) { - return ((builder: Builder) => { - builder.storeUint(0b10, 2); - builder.storeUint(hmLabel.n, bitLen(hmLabel.m)); - hmLabel.s.forEach(((arg: BitString) => { - builder.storeBits(arg); - })); - }) - - } - if ((hmLabel.kind == 'HmLabel_hml_same')) { - return ((builder: Builder) => { - builder.storeUint(0b11, 2); - builder.storeBits(hmLabel.v); - builder.storeUint(hmLabel.n, bitLen(hmLabel.m)); - }) - - } - throw new Error('Expected one of "HmLabel_hml_short", "HmLabel_hml_long", "HmLabel_hml_same" in loading "HmLabel", but data does not satisfy any constructor'); -} - -// hme_empty$0 {n:#} {X:Type} = HashmapE n X; - -// hme_root$1 {n:#} {X:Type} root:^(Hashmap n X) = HashmapE n X; - -export function loadHashmapE(slice: Slice, n: number, loadX: (slice: Slice) => X): HashmapE { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'HashmapE_hme_empty', - n: n, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - let slice1 = slice.loadRef().beginParse(); - let root: Hashmap = loadHashmap(slice1, n, loadX); - return { - kind: 'HashmapE_hme_root', - n: n, - root: root, - } - - } - throw new Error('Expected one of "HashmapE_hme_empty", "HashmapE_hme_root" in loading "HashmapE", but data does not satisfy any constructor'); -} - -export function storeHashmapE(hashmapE: HashmapE, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - if ((hashmapE.kind == 'HashmapE_hme_empty')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((hashmapE.kind == 'HashmapE_hme_root')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - let cell1 = beginCell(); - storeHashmap(hashmapE.root, storeX)(cell1); - builder.storeRef(cell1); - }) - - } - throw new Error('Expected one of "HashmapE_hme_empty", "HashmapE_hme_root" in loading "HashmapE", but data does not satisfy any constructor'); -} - -// a$_ x:(HashmapE 8 uint16) = HashmapEUser; - -export function loadHashmapEUser(slice: Slice): HashmapEUser { - let x: HashmapE = loadHashmapE(slice, 8, ((slice: Slice) => { - return slice.loadUint(16) - - })); - return { - kind: 'HashmapEUser', - x: x, - } - -} - -export function storeHashmapEUser(hashmapEUser: HashmapEUser): (builder: Builder) => void { - return ((builder: Builder) => { - storeHashmapE(hashmapEUser.x, ((arg: number) => { - return ((builder: Builder) => { - builder.storeUint(arg, 16); - }) - - }))(builder); - }) - -} - -// _ a:(## 1) b:a?(## 32) = ConditionalField; - -export function loadConditionalField(slice: Slice): ConditionalField { - let a: number = slice.loadUint(1); - let b: number | undefined = (a ? slice.loadUint(32) : undefined); - return { - kind: 'ConditionalField', - a: a, - b: b, - } - -} - -export function storeConditionalField(conditionalField: ConditionalField): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(conditionalField.a, 1); - if ((conditionalField.b != undefined)) { - builder.storeUint(conditionalField.b, 32); - } - }) - -} - -// _ a:(## 6) b:(a . 2)?(## 32) = BitSelection; - -export function loadBitSelection(slice: Slice): BitSelection { - let a: number = slice.loadUint(6); - let b: number | undefined = ((a & (1 << 2)) ? slice.loadUint(32) : undefined); - return { - kind: 'BitSelection', - a: a, - b: b, - } - -} - -export function storeBitSelection(bitSelection: BitSelection): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(bitSelection.a, 6); - if ((bitSelection.b != undefined)) { - builder.storeUint(bitSelection.b, 32); - } - }) - -} - -// _ flags:(## 10) { flags <= 100 } = ImplicitCondition; - -export function loadImplicitCondition(slice: Slice): ImplicitCondition { - let flags: number = slice.loadUint(10); - if ((!(flags <= 100))) { - throw new Error('Condition (flags <= 100) is not satisfied while loading "ImplicitCondition" for type "ImplicitCondition"'); - } - return { - kind: 'ImplicitCondition', - flags: flags, - } - -} - -export function storeImplicitCondition(implicitCondition: ImplicitCondition): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(implicitCondition.flags, 10); - if ((!(implicitCondition.flags <= 100))) { - throw new Error('Condition (implicitCondition.flags <= 100) is not satisfied while loading "ImplicitCondition" for type "ImplicitCondition"'); - } - }) - -} - -// _ a:# = MultipleEmptyConstructor 0; - -// _ b:(## 5) = MultipleEmptyConstructor 1; - -// a$_ x:(## 6) = MultipleEmptyConstructor 2; - -export function loadMultipleEmptyConstructor(slice: Slice, arg0: number): MultipleEmptyConstructor { - if ((arg0 == 0)) { - let a: number = slice.loadUint(32); - return { - kind: 'MultipleEmptyConstructor__', - a: a, - } - - } - if ((arg0 == 1)) { - let b: number = slice.loadUint(5); - return { - kind: 'MultipleEmptyConstructor__1', - b: b, - } - - } - if ((arg0 == 2)) { - let x: number = slice.loadUint(6); - return { - kind: 'MultipleEmptyConstructor_a', - x: x, - } - - } - throw new Error('Expected one of "MultipleEmptyConstructor__", "MultipleEmptyConstructor__1", "MultipleEmptyConstructor_a" in loading "MultipleEmptyConstructor", but data does not satisfy any constructor'); -} - -export function storeMultipleEmptyConstructor(multipleEmptyConstructor: MultipleEmptyConstructor): (builder: Builder) => void { - if ((multipleEmptyConstructor.kind == 'MultipleEmptyConstructor__')) { - return ((builder: Builder) => { - builder.storeUint(multipleEmptyConstructor.a, 32); - }) - - } - if ((multipleEmptyConstructor.kind == 'MultipleEmptyConstructor__1')) { - return ((builder: Builder) => { - builder.storeUint(multipleEmptyConstructor.b, 5); - }) - - } - if ((multipleEmptyConstructor.kind == 'MultipleEmptyConstructor_a')) { - return ((builder: Builder) => { - builder.storeUint(multipleEmptyConstructor.x, 6); - }) - - } - throw new Error('Expected one of "MultipleEmptyConstructor__", "MultipleEmptyConstructor__1", "MultipleEmptyConstructor_a" in loading "MultipleEmptyConstructor", but data does not satisfy any constructor'); -} - -// true$_ = True; - -export function loadTrue(slice: Slice): True { - return { - kind: 'True', - } - -} - -export function storeTrue(true0: True): (builder: Builder) => void { - return ((builder: Builder) => { - }) - -} - -// a$0 {n:#} = ParamNamedArgInSecondConstr n; - -// b$1 {n:#} = ParamNamedArgInSecondConstr (n + 1); - -export function loadParamNamedArgInSecondConstr(slice: Slice, arg0: number): ParamNamedArgInSecondConstr { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - return { - kind: 'ParamNamedArgInSecondConstr_a', - n: arg0, - } - - } - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b1))) { - slice.loadUint(1); - return { - kind: 'ParamNamedArgInSecondConstr_b', - n: (arg0 - 1), - } - - } - throw new Error('Expected one of "ParamNamedArgInSecondConstr_a", "ParamNamedArgInSecondConstr_b" in loading "ParamNamedArgInSecondConstr", but data does not satisfy any constructor'); -} - -export function storeParamNamedArgInSecondConstr(paramNamedArgInSecondConstr: ParamNamedArgInSecondConstr): (builder: Builder) => void { - if ((paramNamedArgInSecondConstr.kind == 'ParamNamedArgInSecondConstr_a')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - }) - - } - if ((paramNamedArgInSecondConstr.kind == 'ParamNamedArgInSecondConstr_b')) { - return ((builder: Builder) => { - builder.storeUint(0b1, 1); - }) - - } - throw new Error('Expected one of "ParamNamedArgInSecondConstr_a", "ParamNamedArgInSecondConstr_b" in loading "ParamNamedArgInSecondConstr", but data does not satisfy any constructor'); -} - -// a$_ msg:^(Maybe Any) = RefCombinatorAny; - -export function loadRefCombinatorAny(slice: Slice): RefCombinatorAny { - let slice1 = slice.loadRef().beginParse(); - let msg: Maybe = loadMaybe(slice1, ((slice: Slice) => { - return slice - - })); - return { - kind: 'RefCombinatorAny', - msg: msg, - } - -} - -export function storeRefCombinatorAny(refCombinatorAny: RefCombinatorAny): (builder: Builder) => void { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeMaybe(refCombinatorAny.msg, ((arg: Slice) => { - return ((builder: Builder) => { - builder.storeSlice(arg); - }) - - }))(cell1); - builder.storeRef(cell1); - }) - -} - -// a$_ n:# { 5 + n = 7 } = EqualityExpression; - -export function loadEqualityExpression(slice: Slice): EqualityExpression { - let n: number = slice.loadUint(32); - if ((!((5 + n) == 7))) { - throw new Error('Condition ((5 + n) == 7) is not satisfied while loading "EqualityExpression" for type "EqualityExpression"'); - } - return { - kind: 'EqualityExpression', - n: n, - } - -} - -export function storeEqualityExpression(equalityExpression: EqualityExpression): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(equalityExpression.n, 32); - if ((!((5 + equalityExpression.n) == 7))) { - throw new Error('Condition ((5 + equalityExpression.n) == 7) is not satisfied while loading "EqualityExpression" for type "EqualityExpression"'); - } - }) - -} - -// a$_ x:(## 1) y:x?^Simple = ConditionalRef; - -export function loadConditionalRef(slice: Slice): ConditionalRef { - let x: number = slice.loadUint(1); - let y: Simple | undefined = (x ? ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadSimple(slice1) - - })(slice) : undefined); - return { - kind: 'ConditionalRef', - x: x, - y: y, - } - -} - -export function storeConditionalRef(conditionalRef: ConditionalRef): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(conditionalRef.x, 1); - if ((conditionalRef.y != undefined)) { - let cell1 = beginCell(); - storeSimple(conditionalRef.y)(cell1); - builder.storeRef(cell1); - - } - }) - -} - -// block_info#9bc7a987 seq_no:# { prev_seq_no:# } { ~prev_seq_no + 1 = seq_no } = LoadFromNegationOutsideExpr; - -export function loadLoadFromNegationOutsideExpr(slice: Slice): LoadFromNegationOutsideExpr { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x9bc7a987))) { - slice.loadUint(32); - let seq_no: number = slice.loadUint(32); - return { - kind: 'LoadFromNegationOutsideExpr', - prev_seq_no: (seq_no - 1), - seq_no: seq_no, - } - - } - throw new Error('Expected one of "LoadFromNegationOutsideExpr" in loading "LoadFromNegationOutsideExpr", but data does not satisfy any constructor'); -} - -export function storeLoadFromNegationOutsideExpr(loadFromNegationOutsideExpr: LoadFromNegationOutsideExpr): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x9bc7a987, 32); - builder.storeUint(loadFromNegationOutsideExpr.seq_no, 32); - }) - -} - -// bit$_ (## 1) anon0:# = AnonymousData; - -export function loadAnonymousData(slice: Slice): AnonymousData { - let anon0: number = slice.loadUint(1); - let anon0_0: number = slice.loadUint(32); - return { - kind: 'AnonymousData', - anon0: anon0, - anon0_0: anon0_0, - } - -} - -export function storeAnonymousData(anonymousData: AnonymousData): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(anonymousData.anon0, 1); - builder.storeUint(anonymousData.anon0_0, 32); - }) - -} - -// vm_stk_int#0201_ value:int257 = FalseAnonField; - -export function loadFalseAnonField(slice: Slice): FalseAnonField { - if (((slice.remainingBits >= 16) && (slice.preloadUint(16) == 0x0201))) { - slice.loadUint(16); - let value: bigint = slice.loadIntBig(257); - return { - kind: 'FalseAnonField', - value: value, - } - - } - throw new Error('Expected one of "FalseAnonField" in loading "FalseAnonField", but data does not satisfy any constructor'); -} - -export function storeFalseAnonField(falseAnonField: FalseAnonField): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(0x0201, 16); - builder.storeInt(falseAnonField.value, 257); - }) - -} - -// a$0 a:Simple = ConstructorOrder; - -// _ Simple = ConstructorOrder; - -export function loadConstructorOrder(slice: Slice): ConstructorOrder { - if (((slice.remainingBits >= 1) && (slice.preloadUint(1) == 0b0))) { - slice.loadUint(1); - let a: Simple = loadSimple(slice); - return { - kind: 'ConstructorOrder_a', - a: a, - } - - } - if (true) { - let anon0: Simple = loadSimple(slice); - return { - kind: 'ConstructorOrder__', - anon0: anon0, - } - - } - throw new Error('Expected one of "ConstructorOrder_a", "ConstructorOrder__" in loading "ConstructorOrder", but data does not satisfy any constructor'); -} - -export function storeConstructorOrder(constructorOrder: ConstructorOrder): (builder: Builder) => void { - if ((constructorOrder.kind == 'ConstructorOrder_a')) { - return ((builder: Builder) => { - builder.storeUint(0b0, 1); - storeSimple(constructorOrder.a)(builder); - }) - - } - if ((constructorOrder.kind == 'ConstructorOrder__')) { - return ((builder: Builder) => { - storeSimple(constructorOrder.anon0)(builder); - }) - - } - throw new Error('Expected one of "ConstructorOrder_a", "ConstructorOrder__" in loading "ConstructorOrder", but data does not satisfy any constructor'); -} - -// a a:# = CheckCrc32; - -// b b:# c:# = CheckCrc32; - -export function loadCheckCrc32(slice: Slice): CheckCrc32 { - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x9d97e7a))) { - slice.loadUint(32); - let a: number = slice.loadUint(32); - return { - kind: 'CheckCrc32_a', - a: a, - } - - } - if (((slice.remainingBits >= 32) && (slice.preloadUint(32) == 0x2842b3f0))) { - slice.loadUint(32); - let b: number = slice.loadUint(32); - let c: number = slice.loadUint(32); - return { - kind: 'CheckCrc32_b', - b: b, - c: c, - } - - } - throw new Error('Expected one of "CheckCrc32_a", "CheckCrc32_b" in loading "CheckCrc32", but data does not satisfy any constructor'); -} - -export function storeCheckCrc32(checkCrc32: CheckCrc32): (builder: Builder) => void { - if ((checkCrc32.kind == 'CheckCrc32_a')) { - return ((builder: Builder) => { - builder.storeUint(0x9d97e7a, 32); - builder.storeUint(checkCrc32.a, 32); - }) - - } - if ((checkCrc32.kind == 'CheckCrc32_b')) { - return ((builder: Builder) => { - builder.storeUint(0x2842b3f0, 32); - builder.storeUint(checkCrc32.b, 32); - builder.storeUint(checkCrc32.c, 32); - }) - - } - throw new Error('Expected one of "CheckCrc32_a", "CheckCrc32_b" in loading "CheckCrc32", but data does not satisfy any constructor'); -} - -// a$_ const:# = CheckKeyword; - -export function loadCheckKeyword(slice: Slice): CheckKeyword { - let const0: number = slice.loadUint(32); - return { - kind: 'CheckKeyword', - const0: const0, - } - -} - -export function storeCheckKeyword(checkKeyword: CheckKeyword): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(checkKeyword.const0, 32); - }) - -} - -// a$_ {X:Type} t:# y:(Maybe ^X) = RefCombinatorInRefHelper X; - -export function loadRefCombinatorInRefHelper(slice: Slice, loadX: (slice: Slice) => X): RefCombinatorInRefHelper { - let t: number = slice.loadUint(32); - let y: Maybe = loadMaybe(slice, ((slice: Slice) => { - let slice1 = slice.loadRef().beginParse(); - return loadX(slice1) - - })); - return { - kind: 'RefCombinatorInRefHelper', - t: t, - y: y, - } - -} - -export function storeRefCombinatorInRefHelper(refCombinatorInRefHelper: RefCombinatorInRefHelper, storeX: (x: X) => (builder: Builder) => void): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(refCombinatorInRefHelper.t, 32); - storeMaybe(refCombinatorInRefHelper.y, ((arg: X) => { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeX(arg)(cell1); - builder.storeRef(cell1); - - }) - - }))(builder); - }) - -} - -// a$_ msg:^(RefCombinatorInRefHelper Any) = RefCombinatorInRef; - -export function loadRefCombinatorInRef(slice: Slice): RefCombinatorInRef { - let slice1 = slice.loadRef().beginParse(); - let msg: RefCombinatorInRefHelper = loadRefCombinatorInRefHelper(slice1, ((slice: Slice) => { - return slice - - })); - return { - kind: 'RefCombinatorInRef', - msg: msg, - } - -} - -export function storeRefCombinatorInRef(refCombinatorInRef: RefCombinatorInRef): (builder: Builder) => void { - return ((builder: Builder) => { - let cell1 = beginCell(); - storeRefCombinatorInRefHelper(refCombinatorInRef.msg, ((arg: Slice) => { - return ((builder: Builder) => { - builder.storeSlice(arg); - }) - - }))(cell1); - builder.storeRef(cell1); - }) - -} - -// _ a:Bool = BoolUser; - -export function loadBoolUser(slice: Slice): BoolUser { - let a: boolean = slice.loadBoolean(); - return { - kind: 'BoolUser', - a: a, - } - -} - -export function storeBoolUser(boolUser: BoolUser): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeBit(boolUser.a); - }) - -} - -/* -anycast_info$_ depth:(#<= 30) { depth >= 1 } - rewrite_pfx:(bits depth) = Anycast; -*/ - -export function loadAnycast(slice: Slice): Anycast { - let depth: number = slice.loadUint(bitLen(30)); - let rewrite_pfx: BitString = slice.loadBits(depth); - if ((!(depth >= 1))) { - throw new Error('Condition (depth >= 1) is not satisfied while loading "Anycast" for type "Anycast"'); - } - return { - kind: 'Anycast', - depth: depth, - rewrite_pfx: rewrite_pfx, - } - -} - -export function storeAnycast(anycast: Anycast): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeUint(anycast.depth, bitLen(30)); - builder.storeBits(anycast.rewrite_pfx); - if ((!(anycast.depth >= 1))) { - throw new Error('Condition (anycast.depth >= 1) is not satisfied while loading "Anycast" for type "Anycast"'); - } - }) - -} - -// _ src:MsgAddressInt = AddressUser; - -export function loadAddressUser(slice: Slice): AddressUser { - let src: Address = slice.loadAddress(); - return { - kind: 'AddressUser', - src: src, - } - -} - -export function storeAddressUser(addressUser: AddressUser): (builder: Builder) => void { - return ((builder: Builder) => { - builder.storeAddress(addressUser.src); - }) - -} - diff --git a/test/tlb/block.tlb b/test/tlb/block.tlb deleted file mode 100644 index 5e6c602..0000000 --- a/test/tlb/block.tlb +++ /dev/null @@ -1,938 +0,0 @@ -unit$_ = Unit; -true$_ = True; -// EMPTY False; -bool_false$0 = Bool; -bool_true$1 = Bool; -bool_false$0 = BoolFalse; -bool_true$1 = BoolTrue; -nothing$0 {X:Type} = Maybe X; -just$1 {X:Type} value:X = Maybe X; -left$0 {X:Type} {Y:Type} value:X = Either X Y; -right$1 {X:Type} {Y:Type} value:Y = Either X Y; -pair$_ {X:Type} {Y:Type} first:X second:Y = Both X Y; - -bit$_ (## 1) = Bit; -/* - * - * FROM hashmap.tlb - * - */ -// ordinary Hashmap / HashmapE, with fixed length keys -// -hm_edge#_ {n:#} {X:Type} {l:#} {m:#} label:(HmLabel ~l n) - {n = (~m) + l} node:(HashmapNode m X) = Hashmap n X; - -hmn_leaf#_ {X:Type} value:X = HashmapNode 0 X; -hmn_fork#_ {n:#} {X:Type} left:^(Hashmap n X) - right:^(Hashmap n X) = HashmapNode (n + 1) X; - -hml_short$0 {m:#} {n:#} len:(Unary ~n) {n <= m} s:(n * Bit) = HmLabel ~n m; -hml_long$10 {m:#} n:(#<= m) s:(n * Bit) = HmLabel ~n m; -hml_same$11 {m:#} v:Bit n:(#<= m) = HmLabel ~n m; - -unary_zero$0 = Unary ~0; -unary_succ$1 {n:#} x:(Unary ~n) = Unary ~(n + 1); - -hme_empty$0 {n:#} {X:Type} = HashmapE n X; -hme_root$1 {n:#} {X:Type} root:^(Hashmap n X) = HashmapE n X; - -// true#_ = True; -_ {n:#} _:(Hashmap n True) = BitstringSet n; - -// HashmapAug, hashmap with an extra value -// (augmentation) of type Y at every node -// -ahm_edge#_ {n:#} {X:Type} {Y:Type} {l:#} {m:#} - label:(HmLabel ~l n) {n = (~m) + l} - node:(HashmapAugNode m X Y) = HashmapAug n X Y; -ahmn_leaf#_ {X:Type} {Y:Type} extra:Y value:X = HashmapAugNode 0 X Y; -ahmn_fork#_ {n:#} {X:Type} {Y:Type} left:^(HashmapAug n X Y) - right:^(HashmapAug n X Y) extra:Y = HashmapAugNode (n + 1) X Y; - -ahme_empty$0 {n:#} {X:Type} {Y:Type} extra:Y - = HashmapAugE n X Y; -ahme_root$1 {n:#} {X:Type} {Y:Type} root:^(HashmapAug n X Y) - extra:Y = HashmapAugE n X Y; - -// VarHashmap / VarHashmapE, with variable-length keys -// -vhm_edge#_ {n:#} {X:Type} {l:#} {m:#} label:(HmLabel ~l n) - {n = (~m) + l} node:(VarHashmapNode m X) - = VarHashmap n X; -vhmn_leaf$00 {n:#} {X:Type} value:X = VarHashmapNode n X; -vhmn_fork$01 {n:#} {X:Type} left:^(VarHashmap n X) - right:^(VarHashmap n X) value:(Maybe X) - = VarHashmapNode (n + 1) X; -vhmn_cont$1 {n:#} {X:Type} branch:Bit child:^(VarHashmap n X) - value:X = VarHashmapNode (n + 1) X; - -// nothing$0 {X:Type} = Maybe X; -// just$1 {X:Type} value:X = Maybe X; - -vhme_empty$0 {n:#} {X:Type} = VarHashmapE n X; -vhme_root$1 {n:#} {X:Type} root:^(VarHashmap n X) - = VarHashmapE n X; - -// -// PfxHashmap / PfxHashmapE, with variable-length keys -// constituting a prefix code -// - -phm_edge#_ {n:#} {X:Type} {l:#} {m:#} label:(HmLabel ~l n) - {n = (~m) + l} node:(PfxHashmapNode m X) - = PfxHashmap n X; - -phmn_leaf$0 {n:#} {X:Type} value:X = PfxHashmapNode n X; -phmn_fork$1 {n:#} {X:Type} left:^(PfxHashmap n X) - right:^(PfxHashmap n X) = PfxHashmapNode (n + 1) X; - -phme_empty$0 {n:#} {X:Type} = PfxHashmapE n X; -phme_root$1 {n:#} {X:Type} root:^(PfxHashmap n X) - = PfxHashmapE n X; -/* - * - * END hashmap.tlb - * - */ -// -// TON BLOCK LAYOUT -// -addr_none$00 = MsgAddressExt; -addr_extern$01 len:(## 9) external_address:(bits len) - = MsgAddressExt; -anycast_info$_ depth:(#<= 30) { depth >= 1 } - rewrite_pfx:(bits depth) = Anycast; -addr_std$10 anycast:(Maybe Anycast) - workchain_id:int8 address:bits256 = MsgAddressInt; -addr_var$11 anycast:(Maybe Anycast) addr_len:(## 9) - workchain_id:int32 address:(bits addr_len) = MsgAddressInt; -_ _:MsgAddressInt = MsgAddress; -_ _:MsgAddressExt = MsgAddress; -// -var_uint$_ {n:#} len:(#< n) value:(uint (len * 8)) - = VarUInteger n; -var_int$_ {n:#} len:(#< n) value:(int (len * 8)) - = VarInteger n; -nanograms$_ amount:(VarUInteger 16) = Grams; - -_ grams:Grams = Coins; - -// -extra_currencies$_ dict:(HashmapE 32 (VarUInteger 32)) - = ExtraCurrencyCollection; -currencies$_ grams:Grams other:ExtraCurrencyCollection - = CurrencyCollection; -// -int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool - src:MsgAddressInt dest:MsgAddressInt - value:CurrencyCollection ihr_fee:Grams fwd_fee:Grams - created_lt:uint64 created_at:uint32 = CommonMsgInfo; -ext_in_msg_info$10 src:MsgAddressExt dest:MsgAddressInt - import_fee:Grams = CommonMsgInfo; -ext_out_msg_info$11 src:MsgAddressInt dest:MsgAddressExt - created_lt:uint64 created_at:uint32 = CommonMsgInfo; - -int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool - src:MsgAddress dest:MsgAddressInt - value:CurrencyCollection ihr_fee:Grams fwd_fee:Grams - created_lt:uint64 created_at:uint32 = CommonMsgInfoRelaxed; -ext_out_msg_info$11 src:MsgAddress dest:MsgAddressExt - created_lt:uint64 created_at:uint32 = CommonMsgInfoRelaxed; - -tick_tock$_ tick:Bool tock:Bool = TickTock; - -_ split_depth:(Maybe (## 5)) special:(Maybe TickTock) - code:(Maybe ^Cell) data:(Maybe ^Cell) - library:(Maybe ^Cell) = StateInit; - -// StateInitWithLibs is used to validate sent and received messages -_ split_depth:(Maybe (## 5)) special:(Maybe TickTock) - code:(Maybe ^Cell) data:(Maybe ^Cell) - library:(HashmapE 256 SimpleLib) = StateInitWithLibs; - -simple_lib$_ public:Bool root:^Cell = SimpleLib; - -message$_ {X:Type} info:CommonMsgInfo - init:(Maybe (Either StateInit ^StateInit)) - body:(Either X ^X) = Message X; - -message$_ {X:Type} info:CommonMsgInfoRelaxed - init:(Maybe (Either StateInit ^StateInit)) - body:(Either X ^X) = MessageRelaxed X; - -_ (Message Any) = MessageAny; - -// -interm_addr_regular$0 use_dest_bits:(#<= 96) - = IntermediateAddress; -interm_addr_simple$10 workchain_id:int8 addr_pfx:uint64 - = IntermediateAddress; -interm_addr_ext$11 workchain_id:int32 addr_pfx:uint64 - = IntermediateAddress; -msg_envelope#4 cur_addr:IntermediateAddress - next_addr:IntermediateAddress fwd_fee_remaining:Grams - msg:^(Message Any) = MsgEnvelope; -// -msg_import_ext$000 msg:^(Message Any) transaction:^Transaction - = InMsg; -msg_import_ihr$010 msg:^(Message Any) transaction:^Transaction - ihr_fee:Grams proof_created:^Cell = InMsg; -msg_import_imm$011 in_msg:^MsgEnvelope - transaction:^Transaction fwd_fee:Grams = InMsg; -msg_import_fin$100 in_msg:^MsgEnvelope - transaction:^Transaction fwd_fee:Grams = InMsg; -msg_import_tr$101 in_msg:^MsgEnvelope out_msg:^MsgEnvelope - transit_fee:Grams = InMsg; -msg_discard_fin$110 in_msg:^MsgEnvelope transaction_id:uint64 - fwd_fee:Grams = InMsg; -msg_discard_tr$111 in_msg:^MsgEnvelope transaction_id:uint64 - fwd_fee:Grams proof_delivered:^Cell = InMsg; -// -import_fees$_ fees_collected:Grams - value_imported:CurrencyCollection = ImportFees; - -_ (HashmapAugE 256 InMsg ImportFees) = InMsgDescr; - -msg_export_ext$000 msg:^(Message Any) - transaction:^Transaction = OutMsg; -msg_export_imm$010 out_msg:^MsgEnvelope - transaction:^Transaction reimport:^InMsg = OutMsg; -msg_export_new$001 out_msg:^MsgEnvelope - transaction:^Transaction = OutMsg; -msg_export_tr$011 out_msg:^MsgEnvelope - imported:^InMsg = OutMsg; -msg_export_deq$1100 out_msg:^MsgEnvelope - import_block_lt:uint63 = OutMsg; -msg_export_deq_short$1101 msg_env_hash:bits256 - next_workchain:int32 next_addr_pfx:uint64 - import_block_lt:uint64 = OutMsg; -msg_export_tr_req$111 out_msg:^MsgEnvelope - imported:^InMsg = OutMsg; -msg_export_deq_imm$100 out_msg:^MsgEnvelope - reimport:^InMsg = OutMsg; - -_ enqueued_lt:uint64 out_msg:^MsgEnvelope = EnqueuedMsg; - -_ (HashmapAugE 256 OutMsg CurrencyCollection) = OutMsgDescr; - -_ (HashmapAugE 352 EnqueuedMsg uint64) = OutMsgQueue; - -processed_upto$_ last_msg_lt:uint64 last_msg_hash:bits256 = ProcessedUpto; -// key is [ shard:uint64 mc_seqno:uint32 ] -_ (HashmapE 96 ProcessedUpto) = ProcessedInfo; - -ihr_pending$_ import_lt:uint64 = IhrPendingSince; -_ (HashmapE 320 IhrPendingSince) = IhrPendingInfo; - -_ out_queue:OutMsgQueue proc_info:ProcessedInfo - ihr_pending:IhrPendingInfo = OutMsgQueueInfo; -// -storage_used$_ cells:(VarUInteger 7) bits:(VarUInteger 7) - public_cells:(VarUInteger 7) = StorageUsed; - -storage_used_short$_ cells:(VarUInteger 7) - bits:(VarUInteger 7) = StorageUsedShort; - -storage_info$_ used:StorageUsed last_paid:uint32 - due_payment:(Maybe Grams) = StorageInfo; - -account_none$0 = Account; -account$1 addr:MsgAddressInt storage_stat:StorageInfo - storage:AccountStorage = Account; - -account_storage$_ last_trans_lt:uint64 - balance:CurrencyCollection state:AccountState - = AccountStorage; - -account_uninit$00 = AccountState; -account_active$1 _:StateInit = AccountState; -account_frozen$01 state_hash:bits256 = AccountState; - -acc_state_uninit$00 = AccountStatus; -acc_state_frozen$01 = AccountStatus; -acc_state_active$10 = AccountStatus; -acc_state_nonexist$11 = AccountStatus; - -/* duplicates -tick_tock$_ tick:Bool tock:Bool = TickTock; - -_ split_depth:(Maybe (## 5)) special:(Maybe TickTock) - code:(Maybe ^Cell) data:(Maybe ^Cell) - library:(Maybe ^Cell) = StateInit; -*/ - -account_descr$_ account:^Account last_trans_hash:bits256 - last_trans_lt:uint64 = ShardAccount; - -depth_balance$_ split_depth:(#<= 30) balance:CurrencyCollection = DepthBalanceInfo; - -_ (HashmapAugE 256 ShardAccount DepthBalanceInfo) = ShardAccounts; - -transaction$0111 account_addr:bits256 lt:uint64 - prev_trans_hash:bits256 prev_trans_lt:uint64 now:uint32 - outmsg_cnt:uint15 - orig_status:AccountStatus end_status:AccountStatus - ^[ in_msg:(Maybe ^(Message Any)) out_msgs:(HashmapE 15 ^(Message Any)) ] - total_fees:CurrencyCollection state_update:^(HASH_UPDATE Account) - description:^TransactionDescr = Transaction; - -merkle_update#02 {X:Type} old_hash:bits256 new_hash:bits256 - old:^X new:^X = MERKLE_UPDATE X; -update_hashes#72 {X:Type} old_hash:bits256 new_hash:bits256 - = HASH_UPDATE X; -merkle_proof#03 {X:Type} virtual_hash:bits256 depth:uint16 virtual_root:^X = MERKLE_PROOF X; - -acc_trans#5 account_addr:bits256 - transactions:(HashmapAug 64 ^Transaction CurrencyCollection) - state_update:^(HASH_UPDATE Account) - = AccountBlock; - -_ (HashmapAugE 256 AccountBlock CurrencyCollection) = ShardAccountBlocks; -// -tr_phase_storage$_ storage_fees_collected:Grams - storage_fees_due:(Maybe Grams) - status_change:AccStatusChange - = TrStoragePhase; - -acst_unchanged$0 = AccStatusChange; // x -> x -acst_frozen$10 = AccStatusChange; // init -> frozen -acst_deleted$11 = AccStatusChange; // frozen -> deleted - -tr_phase_credit$_ due_fees_collected:(Maybe Grams) - credit:CurrencyCollection = TrCreditPhase; - -tr_phase_compute_skipped$0 reason:ComputeSkipReason - = TrComputePhase; -tr_phase_compute_vm$1 success:Bool msg_state_used:Bool - account_activated:Bool gas_fees:Grams - ^[ gas_used:(VarUInteger 7) - gas_limit:(VarUInteger 7) gas_credit:(Maybe (VarUInteger 3)) - mode:int8 exit_code:int32 exit_arg:(Maybe int32) - vm_steps:uint32 - vm_init_state_hash:bits256 vm_final_state_hash:bits256 ] - = TrComputePhase; -cskip_no_state$00 = ComputeSkipReason; -cskip_bad_state$01 = ComputeSkipReason; -cskip_no_gas$10 = ComputeSkipReason; -cskip_suspended$110 = ComputeSkipReason; - -tr_phase_action$_ success:Bool valid:Bool no_funds:Bool - status_change:AccStatusChange - total_fwd_fees:(Maybe Grams) total_action_fees:(Maybe Grams) - result_code:int32 result_arg:(Maybe int32) tot_actions:uint16 - spec_actions:uint16 skipped_actions:uint16 msgs_created:uint16 - action_list_hash:bits256 tot_msg_size:StorageUsedShort - = TrActionPhase; - -tr_phase_bounce_negfunds$00 = TrBouncePhase; -tr_phase_bounce_nofunds$01 msg_size:StorageUsedShort - req_fwd_fees:Grams = TrBouncePhase; -tr_phase_bounce_ok$1 msg_size:StorageUsedShort - msg_fees:Grams fwd_fees:Grams = TrBouncePhase; -// -trans_ord$0000 credit_first:Bool - storage_ph:(Maybe TrStoragePhase) - credit_ph:(Maybe TrCreditPhase) - compute_ph:TrComputePhase action:(Maybe ^TrActionPhase) - aborted:Bool bounce:(Maybe TrBouncePhase) - destroyed:Bool - = TransactionDescr; - -trans_storage$0001 storage_ph:TrStoragePhase - = TransactionDescr; - -trans_tick_tock$001 is_tock:Bool storage_ph:TrStoragePhase - compute_ph:TrComputePhase action:(Maybe ^TrActionPhase) - aborted:Bool destroyed:Bool = TransactionDescr; -// -split_merge_info$_ cur_shard_pfx_len:(## 6) - acc_split_depth:(## 6) this_addr:bits256 sibling_addr:bits256 - = SplitMergeInfo; -trans_split_prepare$0100 split_info:SplitMergeInfo - storage_ph:(Maybe TrStoragePhase) - compute_ph:TrComputePhase action:(Maybe ^TrActionPhase) - aborted:Bool destroyed:Bool - = TransactionDescr; -trans_split_install$0101 split_info:SplitMergeInfo - prepare_transaction:^Transaction - installed:Bool = TransactionDescr; - -trans_merge_prepare$0110 split_info:SplitMergeInfo - storage_ph:TrStoragePhase aborted:Bool - = TransactionDescr; -trans_merge_install$0111 split_info:SplitMergeInfo - prepare_transaction:^Transaction - storage_ph:(Maybe TrStoragePhase) - credit_ph:(Maybe TrCreditPhase) - compute_ph:TrComputePhase action:(Maybe ^TrActionPhase) - aborted:Bool destroyed:Bool - = TransactionDescr; - -smc_info#076ef1ea actions:uint16 msgs_sent:uint16 - unixtime:uint32 block_lt:uint64 trans_lt:uint64 - rand_seed:bits256 balance_remaining:CurrencyCollection - myself:MsgAddressInt global_config:(Maybe Cell) = SmartContractInfo; -// -// -out_list_empty$_ = OutList 0; -out_list$_ {n:#} prev:^(OutList n) action:OutAction - = OutList (n + 1); -action_send_msg#0ec3c86d mode:(## 8) - out_msg:^(MessageRelaxed Any) = OutAction; -action_set_code#ad4de08e new_code:^Cell = OutAction; -action_reserve_currency#36e6b809 mode:(## 8) - currency:CurrencyCollection = OutAction; -libref_hash$0 lib_hash:bits256 = LibRef; -libref_ref$1 library:^Cell = LibRef; -action_change_library#26fa1dd4 mode:(## 7) - libref:LibRef = OutAction; - -out_list_node$_ prev:^Cell action:OutAction = OutListNode; -// -// -shard_ident$00 shard_pfx_bits:(#<= 60) - workchain_id:int32 shard_prefix:uint64 = ShardIdent; - -ext_blk_ref$_ end_lt:uint64 - seq_no:uint32 root_hash:bits256 file_hash:bits256 - = ExtBlkRef; - -block_id_ext$_ shard_id:ShardIdent seq_no:uint32 - root_hash:bits256 file_hash:bits256 = BlockIdExt; - -master_info$_ master:ExtBlkRef = BlkMasterInfo; - -shard_state#9023afe2 global_id:int32 - shard_id:ShardIdent - seq_no:uint32 vert_seq_no:# - gen_utime:uint32 gen_lt:uint64 - min_ref_mc_seqno:uint32 - out_msg_queue_info:^OutMsgQueueInfo - before_split:(## 1) - accounts:^ShardAccounts - ^[ overload_history:uint64 underload_history:uint64 - total_balance:CurrencyCollection - total_validator_fees:CurrencyCollection - libraries:(HashmapE 256 LibDescr) - master_ref:(Maybe BlkMasterInfo) ] - custom:(Maybe ^McStateExtra) - = ShardStateUnsplit; - -_ ShardStateUnsplit = ShardState; -split_state#5f327da5 left:^ShardStateUnsplit right:^ShardStateUnsplit = ShardState; - -shared_lib_descr$00 lib:^Cell publishers:(Hashmap 256 True) - = LibDescr; - -block_info#9bc7a987 version:uint32 - not_master:(## 1) - after_merge:(## 1) before_split:(## 1) - after_split:(## 1) - want_split:Bool want_merge:Bool - key_block:Bool vert_seqno_incr:(## 1) - flags:(## 8) { flags <= 1 } - seq_no:# vert_seq_no:# { vert_seq_no >= vert_seqno_incr } - { prev_seq_no:# } { ~prev_seq_no + 1 = seq_no } - shard:ShardIdent gen_utime:uint32 - start_lt:uint64 end_lt:uint64 - gen_validator_list_hash_short:uint32 - gen_catchain_seqno:uint32 - min_ref_mc_seqno:uint32 - prev_key_block_seqno:uint32 - gen_software:flags . 0?GlobalVersion - master_ref:not_master?^BlkMasterInfo - prev_ref:^(BlkPrevInfo after_merge) - prev_vert_ref:vert_seqno_incr?^(BlkPrevInfo 0) - = BlockInfo; - -prev_blk_info$_ prev:ExtBlkRef = BlkPrevInfo 0; -prev_blks_info$_ prev1:^ExtBlkRef prev2:^ExtBlkRef = BlkPrevInfo 1; - -block#11ef55aa global_id:int32 - info:^BlockInfo value_flow:^ValueFlow - state_update:^(MERKLE_UPDATE ShardState) - extra:^BlockExtra = Block; - -block_extra in_msg_descr:^InMsgDescr - out_msg_descr:^OutMsgDescr - account_blocks:^ShardAccountBlocks - rand_seed:bits256 - created_by:bits256 - custom:(Maybe ^McBlockExtra) = BlockExtra; -// -value_flow#b8e48dfb ^[ from_prev_blk:CurrencyCollection - to_next_blk:CurrencyCollection - imported:CurrencyCollection - exported:CurrencyCollection ] - fees_collected:CurrencyCollection - ^[ - fees_imported:CurrencyCollection - recovered:CurrencyCollection - created:CurrencyCollection - minted:CurrencyCollection - ] = ValueFlow; - -value_flow_v2#3ebf98b7 ^[ from_prev_blk:CurrencyCollection - to_next_blk:CurrencyCollection - imported:CurrencyCollection - exported:CurrencyCollection ] - fees_collected:CurrencyCollection - burned:CurrencyCollection - ^[ - fees_imported:CurrencyCollection - recovered:CurrencyCollection - created:CurrencyCollection - minted:CurrencyCollection - ] = ValueFlow; - -// -// -bt_leaf$0 {X:Type} leaf:X = BinTree X; -bt_fork$1 {X:Type} left:^(BinTree X) right:^(BinTree X) - = BinTree X; - -fsm_none$0 = FutureSplitMerge; -fsm_split$10 split_utime:uint32 interval:uint32 = FutureSplitMerge; -fsm_merge$11 merge_utime:uint32 interval:uint32 = FutureSplitMerge; - -shard_descr#b seq_no:uint32 reg_mc_seqno:uint32 - start_lt:uint64 end_lt:uint64 - root_hash:bits256 file_hash:bits256 - before_split:Bool before_merge:Bool - want_split:Bool want_merge:Bool - nx_cc_updated:Bool flags:(## 3) { flags = 0 } - next_catchain_seqno:uint32 next_validator_shard:uint64 - min_ref_mc_seqno:uint32 gen_utime:uint32 - split_merge_at:FutureSplitMerge - fees_collected:CurrencyCollection - funds_created:CurrencyCollection = ShardDescr; - -shard_descr_new#a seq_no:uint32 reg_mc_seqno:uint32 - start_lt:uint64 end_lt:uint64 - root_hash:bits256 file_hash:bits256 - before_split:Bool before_merge:Bool - want_split:Bool want_merge:Bool - nx_cc_updated:Bool flags:(## 3) { flags = 0 } - next_catchain_seqno:uint32 next_validator_shard:uint64 - min_ref_mc_seqno:uint32 gen_utime:uint32 - split_merge_at:FutureSplitMerge - ^[ fees_collected:CurrencyCollection - funds_created:CurrencyCollection ] = ShardDescr; - -_ (HashmapE 32 ^(BinTree ShardDescr)) = ShardHashes; - -bta_leaf$0 {X:Type} {Y:Type} extra:Y leaf:X = BinTreeAug X Y; -bta_fork$1 {X:Type} {Y:Type} left:^(BinTreeAug X Y) - right:^(BinTreeAug X Y) extra:Y = BinTreeAug X Y; - -_ fees:CurrencyCollection create:CurrencyCollection = ShardFeeCreated; -_ (HashmapAugE 96 ShardFeeCreated ShardFeeCreated) = ShardFees; - -_ config_addr:bits256 config:^(Hashmap 32 ^Cell) - = ConfigParams; - -validator_info$_ - validator_list_hash_short:uint32 - catchain_seqno:uint32 - nx_cc_updated:Bool -= ValidatorInfo; - -validator_base_info$_ - validator_list_hash_short:uint32 - catchain_seqno:uint32 -= ValidatorBaseInfo; - -_ key:Bool max_end_lt:uint64 = KeyMaxLt; -_ key:Bool blk_ref:ExtBlkRef = KeyExtBlkRef; - -_ (HashmapAugE 32 KeyExtBlkRef KeyMaxLt) = OldMcBlocksInfo; - - -counters#_ last_updated:uint32 total:uint64 cnt2048:uint64 cnt65536:uint64 = Counters; -creator_info#4 mc_blocks:Counters shard_blocks:Counters = CreatorStats; -block_create_stats#17 counters:(HashmapE 256 CreatorStats) = BlockCreateStats; -block_create_stats_ext#34 counters:(HashmapAugE 256 CreatorStats uint32) = BlockCreateStats; - -masterchain_state_extra#cc26 - shard_hashes:ShardHashes - config:ConfigParams - ^[ flags:(## 16) { flags <= 1 } - validator_info:ValidatorInfo - prev_blocks:OldMcBlocksInfo - after_key_block:Bool - last_key_block:(Maybe ExtBlkRef) - block_create_stats:(flags . 0)?BlockCreateStats ] - global_balance:CurrencyCollection -= McStateExtra; - -ed25519_pubkey#8e81278a pubkey:bits256 = SigPubKey; // 288 bits -ed25519_signature#5 R:bits256 s:bits256 = CryptoSignatureSimple; // 516 bits -_ CryptoSignatureSimple = CryptoSignature; -sig_pair$_ node_id_short:bits256 sign:CryptoSignature = CryptoSignaturePair; // 256+x ~ 772 bits - -certificate#4 temp_key:SigPubKey valid_since:uint32 valid_until:uint32 = Certificate; // 356 bits -certificate_env#a419b7d certificate:Certificate = CertificateEnv; // 384 bits -signed_certificate$_ certificate:Certificate certificate_signature:CryptoSignature - = SignedCertificate; // 356+516 = 872 bits -// certificate_signature is the signature of CertificateEnv (with embedded certificate) with persistent key -chained_signature#f signed_cert:^SignedCertificate temp_key_signature:CryptoSignatureSimple - = CryptoSignature; // 4+(356+516)+516 = 520 bits+ref (1392 bits total) -// temp_key_signature is the signature of whatever was originally intended to be signed with temp_key from certificate - -masterchain_block_extra#cca5 - key_block:(## 1) - shard_hashes:ShardHashes - shard_fees:ShardFees - ^[ prev_blk_signatures:(HashmapE 16 CryptoSignaturePair) - recover_create_msg:(Maybe ^InMsg) - mint_msg:(Maybe ^InMsg) ] - config:key_block?ConfigParams -= McBlockExtra; - -// -// CONFIGURATION PARAMETERS -// - -validator#53 public_key:SigPubKey weight:uint64 = ValidatorDescr; -validator_addr#73 public_key:SigPubKey weight:uint64 adnl_addr:bits256 = ValidatorDescr; -validators#11 utime_since:uint32 utime_until:uint32 - total:(## 16) main:(## 16) { main <= total } { main >= 1 } - list:(Hashmap 16 ValidatorDescr) = ValidatorSet; -validators_ext#12 utime_since:uint32 utime_until:uint32 - total:(## 16) main:(## 16) { main <= total } { main >= 1 } - total_weight:uint64 list:(HashmapE 16 ValidatorDescr) = ValidatorSet; - -_ config_addr:bits256 = ConfigParam 0; -_ elector_addr:bits256 = ConfigParam 1; -_ minter_addr:bits256 = ConfigParam 2; // ConfigParam 0 is used if absent -_ fee_collector_addr:bits256 = ConfigParam 3; // ConfigParam 1 is used if absent -_ dns_root_addr:bits256 = ConfigParam 4; // root TON DNS resolver - -burning_config#01 - blackhole_addr:(Maybe bits256) - fee_burn_num:# fee_burn_denom:# { fee_burn_num <= fee_burn_denom } { fee_burn_denom >= 1 } = BurningConfig; -_ BurningConfig = ConfigParam 5; - -_ mint_new_price:Grams mint_add_price:Grams = ConfigParam 6; -_ to_mint:ExtraCurrencyCollection = ConfigParam 7; - -capabilities#c4 version:uint32 capabilities:uint64 = GlobalVersion; -_ GlobalVersion = ConfigParam 8; // all zero if absent -_ mandatory_params:(Hashmap 32 True) = ConfigParam 9; -_ critical_params:(Hashmap 32 True) = ConfigParam 10; - -cfg_vote_cfg#36 min_tot_rounds:uint8 max_tot_rounds:uint8 min_wins:uint8 max_losses:uint8 min_store_sec:uint32 max_store_sec:uint32 bit_price:uint32 cell_price:uint32 = ConfigProposalSetup; -cfg_vote_setup#91 normal_params:^ConfigProposalSetup critical_params:^ConfigProposalSetup = ConfigVotingSetup; -_ ConfigVotingSetup = ConfigParam 11; - -cfg_proposal#f3 param_id:int32 param_value:(Maybe ^Cell) if_hash_equal:(Maybe uint256) - = ConfigProposal; -cfg_proposal_status#ce expires:uint32 proposal:^ConfigProposal is_critical:Bool - voters:(HashmapE 16 True) remaining_weight:int64 validator_set_id:uint256 - rounds_remaining:uint8 wins:uint8 losses:uint8 = ConfigProposalStatus; - -wfmt_basic#1 vm_version:int32 vm_mode:uint64 = WorkchainFormat 1; -wfmt_ext#0 min_addr_len:(## 12) max_addr_len:(## 12) addr_len_step:(## 12) - { min_addr_len >= 64 } { min_addr_len <= max_addr_len } - { max_addr_len <= 1023 } { addr_len_step <= 1023 } - workchain_type_id:(## 32) { workchain_type_id >= 1 } - = WorkchainFormat 0; - -wc_split_merge_timings#0 - split_merge_delay:uint32 split_merge_interval:uint32 - min_split_merge_interval:uint32 max_split_merge_delay:uint32 - = WcSplitMergeTimings; - -//workchain#a5 enabled_since:uint32 min_split:(## 8) max_split:(## 8) -// { min_split <= max_split } { max_split <= 60 } - -workchain#a6 enabled_since:uint32 actual_min_split:(## 8) - min_split:(## 8) max_split:(## 8) { actual_min_split <= min_split } - basic:(## 1) active:Bool accept_msgs:Bool flags:(## 13) { flags = 0 } - zerostate_root_hash:bits256 zerostate_file_hash:bits256 - version:uint32 format:(WorkchainFormat basic) - = WorkchainDescr; - -workchain_v2#a7 enabled_since:uint32 actual_min_split:(## 8) - min_split:(## 8) max_split:(## 8) { actual_min_split <= min_split } - basic:(## 1) active:Bool accept_msgs:Bool flags:(## 13) { flags = 0 } - zerostate_root_hash:bits256 zerostate_file_hash:bits256 - version:uint32 format:(WorkchainFormat basic) - split_merge_timings:WcSplitMergeTimings - = WorkchainDescr; - -_ workchains:(HashmapE 32 WorkchainDescr) = ConfigParam 12; - -complaint_prices#1a deposit:Grams bit_price:Grams cell_price:Grams = ComplaintPricing; -_ ComplaintPricing = ConfigParam 13; - -block_grams_created#6b masterchain_block_fee:Grams basechain_block_fee:Grams - = BlockCreateFees; -_ BlockCreateFees = ConfigParam 14; - -_ validators_elected_for:uint32 elections_start_before:uint32 - elections_end_before:uint32 stake_held_for:uint32 - = ConfigParam 15; - -_ max_validators:(## 16) max_main_validators:(## 16) min_validators:(## 16) - { max_validators >= max_main_validators } - { max_main_validators >= min_validators } - { min_validators >= 1 } - = ConfigParam 16; - -_ min_stake:Grams max_stake:Grams min_total_stake:Grams max_stake_factor:uint32 = ConfigParam 17; - -_#cc utime_since:uint32 bit_price_ps:uint64 cell_price_ps:uint64 - mc_bit_price_ps:uint64 mc_cell_price_ps:uint64 = StoragePrices; -_ (Hashmap 32 StoragePrices) = ConfigParam 18; - -_ global_id:int32 = ConfigParam 19; - -gas_prices#dd gas_price:uint64 gas_limit:uint64 gas_credit:uint64 - block_gas_limit:uint64 freeze_due_limit:uint64 delete_due_limit:uint64 - = GasLimitsPrices; - -gas_prices_ext#de gas_price:uint64 gas_limit:uint64 special_gas_limit:uint64 gas_credit:uint64 - block_gas_limit:uint64 freeze_due_limit:uint64 delete_due_limit:uint64 - = GasLimitsPrices; - -gas_flat_pfx#d1 flat_gas_limit:uint64 flat_gas_price:uint64 other:GasLimitsPrices - = GasLimitsPrices; - -config_mc_gas_prices#_ GasLimitsPrices = ConfigParam 20; -config_gas_prices#_ GasLimitsPrices = ConfigParam 21; - -param_limits#c3 underload:# soft_limit:# { underload <= soft_limit } - hard_limit:# { soft_limit <= hard_limit } = ParamLimits; -block_limits#5d bytes:ParamLimits gas:ParamLimits lt_delta:ParamLimits - = BlockLimits; - -config_mc_block_limits#_ BlockLimits = ConfigParam 22; -config_block_limits#_ BlockLimits = ConfigParam 23; - -// msg_fwd_fees = (lump_price + ceil((bit_price * msg.bits + cell_price * msg.cells)/2^16)) nanograms -// ihr_fwd_fees = ceil((msg_fwd_fees * ihr_price_factor)/2^16) nanograms -// bits in the root cell of a message are not included in msg.bits (lump_price pays for them) -msg_forward_prices#ea lump_price:uint64 bit_price:uint64 cell_price:uint64 - ihr_price_factor:uint32 first_frac:uint16 next_frac:uint16 = MsgForwardPrices; - -// used for messages to/from masterchain -config_mc_fwd_prices#_ MsgForwardPrices = ConfigParam 24; -// used for all other messages -config_fwd_prices#_ MsgForwardPrices = ConfigParam 25; - -catchain_config#c1 mc_catchain_lifetime:uint32 shard_catchain_lifetime:uint32 - shard_validators_lifetime:uint32 shard_validators_num:uint32 = CatchainConfig; - -catchain_config_new#c2 flags:(## 7) { flags = 0 } shuffle_mc_validators:Bool - mc_catchain_lifetime:uint32 shard_catchain_lifetime:uint32 - shard_validators_lifetime:uint32 shard_validators_num:uint32 = CatchainConfig; - -consensus_config#d6 round_candidates:# { round_candidates >= 1 } - next_candidate_delay_ms:uint32 consensus_timeout_ms:uint32 - fast_attempts:uint32 attempt_duration:uint32 catchain_max_deps:uint32 - max_block_bytes:uint32 max_collated_bytes:uint32 = ConsensusConfig; - -consensus_config_new#d7 flags:(## 7) { flags = 0 } new_catchain_ids:Bool - round_candidates:(## 8) { round_candidates >= 1 } - next_candidate_delay_ms:uint32 consensus_timeout_ms:uint32 - fast_attempts:uint32 attempt_duration:uint32 catchain_max_deps:uint32 - max_block_bytes:uint32 max_collated_bytes:uint32 = ConsensusConfig; - -consensus_config_v3#d8 flags:(## 7) { flags = 0 } new_catchain_ids:Bool - round_candidates:(## 8) { round_candidates >= 1 } - next_candidate_delay_ms:uint32 consensus_timeout_ms:uint32 - fast_attempts:uint32 attempt_duration:uint32 catchain_max_deps:uint32 - max_block_bytes:uint32 max_collated_bytes:uint32 - proto_version:uint16 = ConsensusConfig; - -consensus_config_v4#d9 flags:(## 7) { flags = 0 } new_catchain_ids:Bool - round_candidates:(## 8) { round_candidates >= 1 } - next_candidate_delay_ms:uint32 consensus_timeout_ms:uint32 - fast_attempts:uint32 attempt_duration:uint32 catchain_max_deps:uint32 - max_block_bytes:uint32 max_collated_bytes:uint32 - proto_version:uint16 catchain_max_blocks_coeff:uint32 = ConsensusConfig; - -_ CatchainConfig = ConfigParam 28; -_ ConsensusConfig = ConfigParam 29; - -_ fundamental_smc_addr:(HashmapE 256 True) = ConfigParam 31; -_ prev_validators:ValidatorSet = ConfigParam 32; -_ prev_temp_validators:ValidatorSet = ConfigParam 33; -_ cur_validators:ValidatorSet = ConfigParam 34; -_ cur_temp_validators:ValidatorSet = ConfigParam 35; -_ next_validators:ValidatorSet = ConfigParam 36; -_ next_temp_validators:ValidatorSet = ConfigParam 37; - -validator_temp_key#3 adnl_addr:bits256 temp_public_key:SigPubKey seqno:# valid_until:uint32 = ValidatorTempKey; -signed_temp_key#4 key:^ValidatorTempKey signature:CryptoSignature = ValidatorSignedTempKey; -_ (HashmapE 256 ValidatorSignedTempKey) = ConfigParam 39; - -misbehaviour_punishment_config_v1#01 - default_flat_fine:Grams default_proportional_fine:uint32 - severity_flat_mult:uint16 severity_proportional_mult:uint16 - unpunishable_interval:uint16 - long_interval:uint16 long_flat_mult:uint16 long_proportional_mult:uint16 - medium_interval:uint16 medium_flat_mult:uint16 medium_proportional_mult:uint16 - = MisbehaviourPunishmentConfig; -_ MisbehaviourPunishmentConfig = ConfigParam 40; - -size_limits_config#01 max_msg_bits:uint32 max_msg_cells:uint32 max_library_cells:uint32 max_vm_data_depth:uint16 - max_ext_msg_size:uint32 max_ext_msg_depth:uint16 = SizeLimitsConfig; -size_limits_config_v2#02 max_msg_bits:uint32 max_msg_cells:uint32 max_library_cells:uint32 max_vm_data_depth:uint16 - max_ext_msg_size:uint32 max_ext_msg_depth:uint16 max_acc_state_cells:uint32 max_acc_state_bits:uint32 - max_acc_public_libraries:uint32 = SizeLimitsConfig; -_ SizeLimitsConfig = ConfigParam 43; - -// key is [ wc:int32 addr:uint256 ] -suspended_address_list#00 addresses:(HashmapE 288 Unit) suspended_until:uint32 = SuspendedAddressList; -_ SuspendedAddressList = ConfigParam 44; - -oracle_bridge_params#_ bridge_address:bits256 oracle_mutlisig_address:bits256 oracles:(HashmapE 256 uint256) external_chain_address:bits256 = OracleBridgeParams; -_ OracleBridgeParams = ConfigParam 71; // Ethereum bridge -_ OracleBridgeParams = ConfigParam 72; // Binance Smart Chain bridge -_ OracleBridgeParams = ConfigParam 73; // Polygon bridge - -// Note that chains in which bridge, minter and jetton-wallet operate are fixated -jetton_bridge_prices#_ bridge_burn_fee:Coins bridge_mint_fee:Coins - wallet_min_tons_for_storage:Coins - wallet_gas_consumption:Coins - minter_min_tons_for_storage:Coins - discover_gas_consumption:Coins = JettonBridgePrices; - -jetton_bridge_params_v0#00 bridge_address:bits256 oracles_address:bits256 oracles:(HashmapE 256 uint256) state_flags:uint8 burn_bridge_fee:Coins = JettonBridgeParams; -jetton_bridge_params_v1#01 bridge_address:bits256 oracles_address:bits256 oracles:(HashmapE 256 uint256) state_flags:uint8 prices:^JettonBridgePrices external_chain_address:bits256 = JettonBridgeParams; - -_ JettonBridgeParams = ConfigParam 79; // ETH->TON token bridge -_ JettonBridgeParams = ConfigParam 81; // BNB->TON token bridge -_ JettonBridgeParams = ConfigParam 82; // Polygon->TON token bridge - - -// -// PROOFS -// -block_signatures_pure#_ sig_count:uint32 sig_weight:uint64 - signatures:(HashmapE 16 CryptoSignaturePair) = BlockSignaturesPure; -block_signatures#11 validator_info:ValidatorBaseInfo pure_signatures:BlockSignaturesPure = BlockSignatures; -block_proof#c3 proof_for:BlockIdExt root:^Cell signatures:(Maybe ^BlockSignatures) = BlockProof; - -chain_empty$_ = ProofChain 0; -chain_link$_ {n:#} root:^Cell prev:n?^(ProofChain n) = ProofChain (n + 1); -top_block_descr#d5 proof_for:BlockIdExt signatures:(Maybe ^BlockSignatures) - len:(## 8) { len >= 1 } { len <= 8 } chain:(ProofChain len) = TopBlockDescr; - -// -// COLLATED DATA -// -top_block_descr_set#4ac789f3 collection:(HashmapE 96 ^TopBlockDescr) = TopBlockDescrSet; - -// -// VALIDATOR MISBEHAVIOR COMPLAINTS -// -prod_info#34 utime:uint32 mc_blk_ref:ExtBlkRef state_proof:^(MERKLE_PROOF Block) - prod_proof:^(MERKLE_PROOF ShardState) = ProducerInfo; -no_blk_gen from_utime:uint32 prod_info:^ProducerInfo = ComplaintDescr; -no_blk_gen_diff prod_info_old:^ProducerInfo prod_info_new:^ProducerInfo = ComplaintDescr; -validator_complaint#bc validator_pubkey:bits256 description:^ComplaintDescr created_at:uint32 severity:uint8 reward_addr:uint256 paid:Grams suggested_fine:Grams suggested_fine_part:uint32 = ValidatorComplaint; -complaint_status#2d complaint:^ValidatorComplaint voters:(HashmapE 16 True) vset_id:uint256 weight_remaining:int64 = ValidatorComplaintStatus; - -// -// TVM REFLECTION -// -vm_stk_null#00 = VmStackValue; -vm_stk_tinyint#01 value:int64 = VmStackValue; -vm_stk_int#0201_ value:int257 = VmStackValue; -vm_stk_nan#02ff = VmStackValue; -vm_stk_cell#03 cell:^Cell = VmStackValue; -_ cell:^Cell st_bits:(## 10) end_bits:(## 10) { st_bits <= end_bits } - st_ref:(#<= 4) end_ref:(#<= 4) { st_ref <= end_ref } = VmCellSlice; -vm_stk_slice#04 _:VmCellSlice = VmStackValue; -vm_stk_builder#05 cell:^Cell = VmStackValue; -vm_stk_cont#06 cont:VmCont = VmStackValue; -vm_tupref_nil$_ = VmTupleRef 0; -vm_tupref_single$_ entry:^VmStackValue = VmTupleRef 1; -vm_tupref_any$_ {n:#} ref:^(VmTuple (n + 2)) = VmTupleRef (n + 2); -vm_tuple_nil$_ = VmTuple 0; -vm_tuple_tcons$_ {n:#} head:(VmTupleRef n) tail:^VmStackValue = VmTuple (n + 1); -vm_stk_tuple#07 len:(## 16) data:(VmTuple len) = VmStackValue; - -vm_stack#_ depth:(## 24) stack:(VmStackList depth) = VmStack; -vm_stk_cons#_ {n:#} rest:^(VmStackList n) tos:VmStackValue = VmStackList (n + 1); -vm_stk_nil#_ = VmStackList 0; - -_ cregs:(HashmapE 4 VmStackValue) = VmSaveList; -gas_limits#_ remaining:int64 _:^[ max_limit:int64 cur_limit:int64 credit:int64 ] - = VmGasLimits; -_ libraries:(HashmapE 256 ^Cell) = VmLibraries; - -vm_ctl_data$_ nargs:(Maybe uint13) stack:(Maybe VmStack) save:VmSaveList -cp:(Maybe int16) = VmControlData; -vmc_std$00 cdata:VmControlData code:VmCellSlice = VmCont; -vmc_envelope$01 cdata:VmControlData next:^VmCont = VmCont; -vmc_quit$1000 exit_code:int32 = VmCont; -vmc_quit_exc$1001 = VmCont; -vmc_repeat$10100 count:uint63 body:^VmCont after:^VmCont = VmCont; -vmc_until$110000 body:^VmCont after:^VmCont = VmCont; -vmc_again$110001 body:^VmCont = VmCont; -vmc_while_cond$110010 cond:^VmCont body:^VmCont -after:^VmCont = VmCont; -vmc_while_body$110011 cond:^VmCont body:^VmCont -after:^VmCont = VmCont; -vmc_pushint$1111 value:int32 next:^VmCont = VmCont; - -// -// DNS RECORDS -// -_ (HashmapE 256 ^DNSRecord) = DNS_RecordSet; - -chunk_ref$_ {n:#} ref:^(TextChunks (n + 1)) = TextChunkRef (n + 1); -chunk_ref_empty$_ = TextChunkRef 0; -text_chunk$_ {n:#} len:(## 8) data:(bits (len * 8)) next:(TextChunkRef n) = TextChunks (n + 1); -text_chunk_empty$_ = TextChunks 0; -text$_ chunks:(## 8) rest:(TextChunks chunks) = Text; -dns_text#1eda _:Text = DNSRecord; - -dns_next_resolver#ba93 resolver:MsgAddressInt = DNSRecord; // usually in record #-1 - -dns_adnl_address#ad01 adnl_addr:bits256 flags:(## 8) { flags <= 1 } - proto_list:flags . 0?ProtoList = DNSRecord; // often in record #2 -proto_list_nil$0 = ProtoList; -proto_list_next$1 head:Protocol tail:ProtoList = ProtoList; -proto_http#4854 = Protocol; - -dns_smc_address#9fd3 smc_addr:MsgAddressInt flags:(## 8) { flags <= 1 } - cap_list:flags . 0?SmcCapList = DNSRecord; // often in record #1 -cap_list_nil$0 = SmcCapList; -cap_list_next$1 head:SmcCapability tail:SmcCapList = SmcCapList; -cap_method_seqno#5371 = SmcCapability; -cap_method_pubkey#71f4 = SmcCapability; -cap_is_wallet#2177 = SmcCapability; -cap_name#ff name:Text = SmcCapability; - -dns_storage_address#7473 bag_id:bits256 = DNSRecord; - -// -// PAYMENT CHANNELS -// - -chan_config$_ init_timeout:uint32 close_timeout:uint32 a_key:bits256 b_key:bits256 - a_addr:^MsgAddressInt b_addr:^MsgAddressInt channel_id:uint64 min_A_extra:Grams = ChanConfig; - -chan_state_init$000 signed_A:Bool signed_B:Bool min_A:Grams min_B:Grams expire_at:uint32 A:Grams B:Grams = ChanState; -chan_state_close$001 signed_A:Bool signed_B:Bool promise_A:Grams promise_B:Grams expire_at:uint32 A:Grams B:Grams = ChanState; -chan_state_payout$010 A:Grams B:Grams = ChanState; - -chan_promise$_ channel_id:uint64 promise_A:Grams promise_B:Grams = ChanPromise; -chan_signed_promise#_ sig:(Maybe ^bits512) promise:ChanPromise = ChanSignedPromise; - -chan_msg_init#27317822 inc_A:Grams inc_B:Grams min_A:Grams min_B:Grams channel_id:uint64 = ChanMsg; -chan_msg_close#f28ae183 extra_A:Grams extra_B:Grams promise:ChanSignedPromise = ChanMsg; -chan_msg_timeout#43278a28 = ChanMsg; -chan_msg_payout#37fe7810 = ChanMsg; - -chan_signed_msg$_ sig_A:(Maybe ^bits512) sig_B:(Maybe ^bits512) msg:ChanMsg = ChanSignedMsg; - -chan_op_cmd#912838d1 msg:ChanSignedMsg = ChanOp; - - -chan_data$_ config:^ChanConfig state:^ChanState = ChanData; \ No newline at end of file diff --git a/test/tlb/test.tlb b/test/tlb/test.tlb deleted file mode 100644 index 60cf64f..0000000 --- a/test/tlb/test.tlb +++ /dev/null @@ -1,140 +0,0 @@ -tmpa$_ a:# b:# = Simple; - -bool_false$0 a:# b:(## 7) c:# = TwoConstructors; -bool_true$1 b:# = TwoConstructors; - -tmpb$_ y:(## 5) = FixedIntParam; -tmpc$_ y:FixedIntParam c:# = TypedField; -tmpd#_ y:FixedIntParam c:# = SharpConstructor; - -nothing$0 {TheType:Type} = Maybe TheType; -just$1 {TheType:Type} value:TheType = Maybe TheType; -thejust$_ x:(Maybe SharpConstructor) = TypedParam; - -left$0 {X:Type} {Y:Type} value:X = Either X Y; -right$1 {X:Type} {Y:Type} value:Y = Either X Y; - -a$_ {x:#} value:(## x) = BitLenArg x; -a$_ t:(BitLenArg 4) = BitLenArgUser; - -a$_ {x:#} value:(## x) = ExprArg (2 + x); -a$_ t:(ExprArg 6) = ExprArgUser; - -a$_ a:ExprArgUser = ComplexTypedField; -a$_ a:^ExprArgUser = CellTypedField; - -a$_ t:# ^[ q:# ] ^[ a:(## 32) ^[ e:# ] ^[ b:(## 32) d:# ^[ c:(## 32) ] ] ] = CellsSimple; - -b$_ d:int11 g:bits2 {Arg:Type} arg:Arg x:Any = IntBits Arg; -a$_ {x:#} a:(IntBits (int (1 + x))) = IntBitsInside (x * 2); -a$_ x:(IntBitsInside 6) = IntBitsOutside; - -a$_ {e:#} h:(int (e * 8)) f:(uint (7 * e)) i:(bits (5 + e)) j:(int 5) k:(uint e) tc:Cell = IntBitsParametrized e; -a$_ {x:#} a:(IntBitsParametrized x) = IntBitsParametrizedInside x; -a$_ x:(IntBitsParametrizedInside 5) = IntBitsParametrizedOutside; - -a$_ x:(#< 4) y:(#<= 4) = LessThan; - -a$_ {A:Type} t:# x:A = OneComb A; -a$_ y:(OneComb(OneComb(OneComb int3))) = ManyComb; - -unary_zero$0 = Unary ~0; -unary_succ$1 {n:#} x:(Unary ~n) = Unary ~(n + 1); - -a$_ n:# = ParamConst 1 1; -b$01 m:# k:# = ParamConst 2 1; -c$01 n:# m:# k:# = ParamConst 3 3; -d$_ n:# m:# k:# l:# = ParamConst 4 2; - -a$0 = ParamDifNames 2 ~1; -b$1 = ParamDifNames 3 ~1; -c$1 {n:#} x:(ParamDifNames 2 ~n) = ParamDifNames 2 ~(n + 1); -d$0 {m:#} x:(ParamDifNames 3 ~m) = ParamDifNames 3 ~(m * 2); -e$0 {k:#} x:(ParamDifNames 2 ~k) = ParamDifNamesUser; - -b$1 {y:#} t:# z:# { t = (~y) * 2} = NegationFromImplicit ~(y + 1); - -hm_edge#_ {l:#} {m:#} label:(Unary ~l) {7 = (~m) + l} = UnaryUserCheckOrder; - -a$_ {X:Type} info:int32 - init:(Maybe (Either X ^int22)) - other:(Either X ^(OneComb X)) - body:(Either X ^X) = CombArgCellRef X; -a$_ x:(CombArgCellRef int12) = CombArgCellRefUser; - -a$_ {n:#} ref:^(BitLenArg (n + 2)) = MathExprAsCombArg (n + 2); - -_ a:# = EmptyTag; - -a#f4 x:# = SharpTag; -a$1011 x:# = DollarTag; - -a$_ s:(3 * int5) = TupleCheck; - -hm_edge#_ {n:#} {X:Type} {l:#} {m:#} label:(HmLabel ~l n) - {n = (~m) + l} node:(HashmapNode m X) = Hashmap n X; - -hmn_leaf#_ {X:Type} value:X = HashmapNode 0 X; -hmn_fork#_ {n:#} {X:Type} left:^(Hashmap n X) - right:^(Hashmap n X) = HashmapNode (n + 1) X; - -hml_short$0 {m:#} {n:#} len:(Unary ~n) {n <= m} s:(n * Bit) = HmLabel ~n m; -hml_long$10 {m:#} n:(#<= m) s:(n * Bit) = HmLabel ~n m; -hml_same$11 {m:#} v:Bit n:(#<= m) = HmLabel ~n m; - -hme_empty$0 {n:#} {X:Type} = HashmapE n X; -hme_root$1 {n:#} {X:Type} root:^(Hashmap n X) = HashmapE n X; - -a$_ x:(HashmapE 8 uint16) = HashmapEUser; - -_ a:(## 1) b:a?(## 32) = ConditionalField; - -_ a:(## 6) b:(a . 2)?(## 32) = BitSelection; - -_ flags:(## 10) { flags <= 100 } = ImplicitCondition; - -_ a:# = MultipleEmptyConstructor 0; -_ b:(## 5) = MultipleEmptyConstructor 1; -a$_ x:(## 6) = MultipleEmptyConstructor 2; - -true$_ = True; - -a$0 {n:#} = ParamNamedArgInSecondConstr n; -b$1 {n:#} = ParamNamedArgInSecondConstr (n + 1); - -a$_ msg:^(Maybe Any) = RefCombinatorAny; - -a$_ n:# { 5 + n = 7 } = EqualityExpression; - -a$_ x:(## 1) y:x?^Simple = ConditionalRef; - -block_info#9bc7a987 seq_no:# { prev_seq_no:# } { ~prev_seq_no + 1 = seq_no } = LoadFromNegationOutsideExpr; - -bit$_ (## 1) anon0:# = AnonymousData; - -vm_stk_int#0201_ value:int257 = FalseAnonField; - -_ Simple = ConstructorOrder; -a$0 a:Simple = ConstructorOrder; - -a a:# = CheckCrc32; -b b:# c:# = CheckCrc32; - -a$_ const:# = CheckKeyword; - -a$_ {X:Type} t:# y:(Maybe ^X) = RefCombinatorInRefHelper X; -a$_ msg:^(RefCombinatorInRefHelper Any) = RefCombinatorInRef; - -bool_false$0 = Bool; -bool_true$1 = Bool; - -_ a:Bool = BoolUser; - -anycast_info$_ depth:(#<= 30) { depth >= 1 } - rewrite_pfx:(bits depth) = Anycast; -addr_std$10 anycast:(Maybe Anycast) - workchain_id:int8 address:bits256 = MsgAddressInt; -addr_var$11 anycast:(Maybe Anycast) addr_len:(## 9) - workchain_id:int32 address:(bits addr_len) = MsgAddressInt; - -_ src:MsgAddressInt = AddressUser; \ No newline at end of file diff --git a/test/tlbgen.spec.ts b/test/tlbgen.spec.ts deleted file mode 100644 index 5b6f21b..0000000 --- a/test/tlbgen.spec.ts +++ /dev/null @@ -1,506 +0,0 @@ -import path from 'path'; - -import { Address, BitString, Cell, Slice } from 'ton'; - -import { describe, expect, test } from '@jest/globals'; -import { beginCell } from 'ton'; -import { loadBlock, storeBlock } from './generated_files/generated_block'; -import { AddressUser, AnonymousData, BitLenArg, BitLenArgUser, BitSelection, BoolUser, CellTypedField, CellsSimple, CheckCrc32, CheckKeyword, CombArgCellRefUser, ComplexTypedField, ConditionalField, ConditionalRef, ConstructorOrder, DollarTag, EmptyTag, EqualityExpression, ExprArgUser, FalseAnonField, HashmapEUser, ImplicitCondition, IntBitsOutside, IntBitsParametrizedOutside, LessThan, LoadFromNegationOutsideExpr, ManyComb, MathExprAsCombArg, MultipleEmptyConstructor, NegationFromImplicit, ParamConst, ParamDifNames, ParamDifNamesUser, ParamNamedArgInSecondConstr, RefCombinatorAny, RefCombinatorInRef, SharpConstructor, SharpTag, Simple, True, TupleCheck, TwoConstructors, TypedField, TypedParam, Unary, UnaryUserCheckOrder, loadAddressUser, loadAnonymousData, loadBitLenArg, loadBitLenArgUser, loadBitSelection, loadBoolUser, loadCellTypedField, loadCellsSimple, loadCheckCrc32, loadCheckKeyword, loadCombArgCellRefUser, loadComplexTypedField, loadConditionalField, loadConditionalRef, loadConstructorOrder, loadDollarTag, loadEmptyTag, loadEqualityExpression, loadExprArgUser, loadFalseAnonField, loadHashmapEUser, loadImplicitCondition, loadIntBitsOutside, loadIntBitsParametrizedOutside, loadLessThan, loadLoadFromNegationOutsideExpr, loadManyComb, loadMathExprAsCombArg, loadMultipleEmptyConstructor, loadNegationFromImplicit, loadParamConst, loadParamDifNames, loadParamDifNamesUser, loadParamNamedArgInSecondConstr, loadRefCombinatorAny, loadRefCombinatorInRef, loadSharpConstructor, loadSharpTag, loadSimple, loadTrue, loadTupleCheck, loadTwoConstructors, loadTypedField, loadTypedParam, loadUnary, loadUnaryUserCheckOrder, storeAddressUser, storeAnonymousData, storeBitLenArg, storeBitLenArgUser, storeBitSelection, storeBoolUser, storeCellTypedField, storeCellsSimple, storeCheckCrc32, storeCheckKeyword, storeCombArgCellRefUser, storeComplexTypedField, storeConditionalField, storeConditionalRef, storeConstructorOrder, storeDollarTag, storeEmptyTag, storeEqualityExpression, storeExprArgUser, storeFalseAnonField, storeHashmapEUser, storeImplicitCondition, storeIntBitsOutside, storeIntBitsParametrizedOutside, storeLessThan, storeLoadFromNegationOutsideExpr, storeManyComb, storeMathExprAsCombArg, storeMultipleEmptyConstructor, storeNegationFromImplicit, storeParamConst, storeParamDifNames, storeParamDifNamesUser, storeParamNamedArgInSecondConstr, storeRefCombinatorAny, storeRefCombinatorInRef, storeSharpConstructor, storeSharpTag, storeSimple, storeTrue, storeTupleCheck, storeTwoConstructors, storeTypedField, storeTypedParam, storeUnary, storeUnaryUserCheckOrder } from './generated_files/generated_test'; - -const fixturesDir = path.resolve(__dirname, 'fixtures'); - -function deepEqual(object1: any, object2: any) { - if (object1 instanceof BitString && object2 instanceof BitString) { - return object1.equals(object2); - } - if (object1 instanceof Slice && object2 instanceof Slice) { - return object1.toString() == object2.toString(); - } - if (object1 instanceof Address && object2 instanceof Address) { - return object1.equals(object2); - } - - const keys1 = Object.keys(object1); - const keys2 = Object.keys(object2); - - if (keys1.length !== keys2.length) { - return false; - } - - for (const key of keys1) { - const val1 = object1[key]; - const val2 = object2[key]; - const areObjects = isObject(val1) && isObject(val2); - if ( - areObjects && !deepEqual(val1, val2) || - !areObjects && val1 !== val2 - ) { - return false; - } - } - - return true; -} - -function isObject(object: any) { - return object != null && typeof object === 'object'; -} - -function checkSameOnStoreLoad(expected: any, load: any, store: any, expectCell?: any) { - let cell = beginCell(); - store(expected)(cell); - let slice = cell.endCell().beginParse(); - if (expectCell) { - expectCell(slice) - } - let actual = load(slice) - expect(deepEqual(expected, actual)).toBeTruthy() -} - -function checkDifferOnStoreLoad(expected: any, load: any, store: any) { - let cell = beginCell(); - store(expected)(cell); - let actual = load(cell.endCell().beginParse()) - expect(deepEqual(expected, actual)).toBeFalsy() -} - -function getBitStringOne(bit: boolean): BitString { - return beginCell().storeBit(bit).endCell().beginParse().loadBits(1); -} - -function getBitStringArray(bitString: string) { - let result: BitString[] = []; - for (let i = 0; i < bitString.length; i++) { - result.push(getBitStringOne(bitString[i] == '0')) - } - return result; -} - -function checkThrowOnStoreLoad(expected: any, load: any, store: any, expectCell?: any) { - const t = () => { - let cell = beginCell(); - store(expected)(cell); - let slice = cell.endCell().beginParse(); - if (expectCell) { - expectCell(slice) - } - let actual = load(slice) - return actual; - } - expect(t).toThrow(Error); -} - -export type TLFunction = { - decode: any - encode: any -}; - -describe('Generating tlb code', () => { - test('Basic types', () => { - expect.hasAssertions() - - let simple: Simple = { kind: 'Simple', a: 827, b: 387 } - checkSameOnStoreLoad(simple, loadSimple, storeSimple); - let tcFalse: TwoConstructors = { 'kind': 'TwoConstructors_bool_false', a: 1000, b: 10, c: 1000 } - checkSameOnStoreLoad(tcFalse, loadTwoConstructors, storeTwoConstructors) - let tcTooBigNumberB: TwoConstructors = { 'kind': 'TwoConstructors_bool_false', a: 1000, b: 128, c: 1000 } - checkThrowOnStoreLoad(tcTooBigNumberB, loadTwoConstructors, storeTwoConstructors) - let tcTrue: TwoConstructors = { 'kind': 'TwoConstructors_bool_true', b: 1000 } - checkSameOnStoreLoad(tcTrue, loadTwoConstructors, storeTwoConstructors) - let typedConstructor: TypedField = { 'kind': 'TypedField', c: 5, y: { 'kind': 'FixedIntParam', y: 10 } } - checkSameOnStoreLoad(typedConstructor, loadTypedField, storeTypedField); - let typedParamValue: TypedParam = { 'kind': 'TypedParam', x: { 'kind': 'Maybe_just', value: { 'kind': 'SharpConstructor', c: 5, y: { 'kind': 'FixedIntParam', y: 6 } } } } - checkSameOnStoreLoad(typedParamValue, loadTypedParam, storeTypedParam); - let typedParamNothing: TypedParam = { 'kind': 'TypedParam', x: { 'kind': 'Maybe_nothing' } } - checkSameOnStoreLoad(typedParamNothing, loadTypedParam, storeTypedParam); - let bitlenArgUser: BitLenArgUser = { 'kind': 'BitLenArgUser', t: { 'kind': 'BitLenArg', x: 4, value: BigInt(10) } } - checkSameOnStoreLoad(bitlenArgUser, loadBitLenArgUser, storeBitLenArgUser); - let bitlenArgUserIncorrect: BitLenArgUser = { 'kind': 'BitLenArgUser', t: { 'kind': 'BitLenArg', x: 3, value: BigInt(10) } } - checkThrowOnStoreLoad(bitlenArgUserIncorrect, loadBitLenArgUser, storeBitLenArgUser); - let exprArgUser: ExprArgUser = { 'kind': 'ExprArgUser', t: { 'kind': 'ExprArg', x: 4, value: BigInt(10) } } - checkSameOnStoreLoad(exprArgUser, loadExprArgUser, storeExprArgUser); - let exprArgUserIncorrect: ExprArgUser = { 'kind': 'ExprArgUser', t: { 'kind': 'ExprArg', x: 5, value: BigInt(10) } } - checkDifferOnStoreLoad(exprArgUserIncorrect, loadExprArgUser, storeExprArgUser); - let complexTypedField: ComplexTypedField = { 'kind': 'ComplexTypedField', a: { 'kind': 'ExprArgUser', t: { 'kind': 'ExprArg', x: 4, value: BigInt(10) } } } - checkSameOnStoreLoad(complexTypedField, loadComplexTypedField, storeComplexTypedField); - let cellTypedField: CellTypedField = { 'kind': 'CellTypedField', a: { 'kind': 'ExprArgUser', t: { 'kind': 'ExprArg', x: 4, value: BigInt(10) } } } - checkSameOnStoreLoad(cellTypedField, loadCellTypedField, storeCellTypedField); - let lessThan: LessThan = { kind: 'LessThan', x: 3, y: 7 } - checkSameOnStoreLoad(lessThan, loadLessThan, storeLessThan); - let lessThanIncorrectX: LessThan = { kind: 'LessThan', x: 4, y: 7 } - checkThrowOnStoreLoad(lessThanIncorrectX, loadLessThan, storeLessThan); - let lessThanIncorrectY: LessThan = { kind: 'LessThan', x: 3, y: 8 } - checkThrowOnStoreLoad(lessThanIncorrectY, loadLessThan, storeLessThan); - let paramNamedArgInSecondConstr: ParamNamedArgInSecondConstr = { kind: 'ParamNamedArgInSecondConstr_a', n: 3 } - checkSameOnStoreLoad(paramNamedArgInSecondConstr, (slice: Slice) => { return loadParamNamedArgInSecondConstr(slice, 3) }, storeParamNamedArgInSecondConstr); - let anonymousData: AnonymousData = { kind: 'AnonymousData', anon0: 1, anon0_0: 3 } - checkSameOnStoreLoad(anonymousData, loadAnonymousData, storeAnonymousData); - let falseAnonField: FalseAnonField = { kind: 'FalseAnonField', value: BigInt(3) } - checkSameOnStoreLoad(falseAnonField, loadFalseAnonField, storeFalseAnonField) - let checkKeyword: CheckKeyword = { kind: 'CheckKeyword', const0: 3 } - checkSameOnStoreLoad(checkKeyword, loadCheckKeyword, storeCheckKeyword); - - let checkBigInt: BitLenArg = { kind: 'BitLenArg', x: 100, value: BigInt(2709958555) * BigInt(1e9) + BigInt(228628813) } - checkSameOnStoreLoad(checkBigInt, (slice: Slice) => { return loadBitLenArg(slice, checkBigInt.x) }, storeBitLenArg) - }) - - test('Primitives', () => { - expect.hasAssertions() - - let boolUserTrue: BoolUser = { kind: 'BoolUser', a: true } - checkSameOnStoreLoad(boolUserTrue, loadBoolUser, storeBoolUser); - let boolUserFalse: BoolUser = { kind: 'BoolUser', a: false } - checkSameOnStoreLoad(boolUserFalse, loadBoolUser, storeBoolUser); - - let expectedAddressUser: AddressUser = { kind: 'AddressUser', src: Address.parseFriendly('EQBmzW4wYlFW0tiBgj5sP1CgSlLdYs-VpjPWM7oPYPYWQEdT').address } - checkSameOnStoreLoad(expectedAddressUser, loadAddressUser, storeAddressUser) - }) - - test('Combinators', () => { - expect.hasAssertions() - let manyComb: ManyComb = { kind: 'ManyComb', y: { kind: 'OneComb', t: 5, x: { kind: 'OneComb', t: 6, x: { kind: 'OneComb', t: 7, x: 3 } } } }; - checkSameOnStoreLoad(manyComb, loadManyComb, storeManyComb); - let manyCombIncorrect: ManyComb = { kind: 'ManyComb', y: { kind: 'OneComb', t: 5, x: { kind: 'OneComb', t: 8, x: { kind: 'OneComb', t: 7, x: 8 } } } }; - checkThrowOnStoreLoad(manyCombIncorrect, loadManyComb, storeManyComb); - let combArgCellRefUser: CombArgCellRefUser = { kind: 'CombArgCellRefUser', x: { kind: 'CombArgCellRef', body: { 'kind': 'Either_right', value: 3 }, info: 4, other: { kind: 'Either_right', value: { kind: 'OneComb', t: 5, x: 5 } }, init: { kind: 'Maybe_just', value: { kind: 'Either_right', value: 4 } } } } - checkSameOnStoreLoad(combArgCellRefUser, loadCombArgCellRefUser, storeCombArgCellRefUser); - let mathExprAsCombArg: MathExprAsCombArg = { kind: 'MathExprAsCombArg', n: 8, ref: { kind: 'BitLenArg', x: 10, value: BigInt(1000) } } - checkSameOnStoreLoad(mathExprAsCombArg, (slice: Slice) => { return loadMathExprAsCombArg(slice, mathExprAsCombArg.n + 2) }, storeMathExprAsCombArg); - - let refCombinatorAny: RefCombinatorAny = { - kind: 'RefCombinatorAny', - msg: { kind: 'Maybe_just', value: beginCell().storeUint(676, 10).endCell().beginParse() } - } - checkSameOnStoreLoad(refCombinatorAny, loadRefCombinatorAny, storeRefCombinatorAny); - - let msgEnvelope: RefCombinatorInRef = { kind: 'RefCombinatorInRef', msg: { kind: 'RefCombinatorInRefHelper', t: 3, y: { kind: 'Maybe_just', value: beginCell().storeUint(3, 32).endCell().beginParse() } } } - checkSameOnStoreLoad(msgEnvelope, loadRefCombinatorInRef, storeRefCombinatorInRef); - }); - - test('Naming', () => { - expect.hasAssertions() - - let multipleEmptyConstructor: MultipleEmptyConstructor = { kind: 'MultipleEmptyConstructor__', a: 5 } - checkSameOnStoreLoad(multipleEmptyConstructor, (slice: Slice) => { return loadMultipleEmptyConstructor(slice, 0); }, storeMultipleEmptyConstructor); - let multipleEmptyConstructor1: MultipleEmptyConstructor = { kind: 'MultipleEmptyConstructor__1', b: 6 } - checkSameOnStoreLoad(multipleEmptyConstructor1, (slice: Slice) => { return loadMultipleEmptyConstructor(slice, 1); }, storeMultipleEmptyConstructor); - let multipleEmptyConstructor2: MultipleEmptyConstructor = { kind: 'MultipleEmptyConstructor_a', x: 5 } - checkSameOnStoreLoad(multipleEmptyConstructor2, (slice: Slice) => { return loadMultipleEmptyConstructor(slice, 2); }, storeMultipleEmptyConstructor); - - let trueCheck: True = { kind: 'True' } - checkSameOnStoreLoad(trueCheck, loadTrue, storeTrue); - }) - - test('Complex Expressions', () => { - expect.hasAssertions() - - let tupleCheck: TupleCheck = { kind: 'TupleCheck', s: [5, 6, 7] } - checkSameOnStoreLoad(tupleCheck, loadTupleCheck, storeTupleCheck); - - let conditionalField: ConditionalField = { kind: 'ConditionalField', a: 1, b: 5 } - checkSameOnStoreLoad(conditionalField, loadConditionalField, storeConditionalField); - - let conditionalFieldIncorrect: ConditionalField = { kind: 'ConditionalField', a: 0, b: 5 } - checkDifferOnStoreLoad(conditionalFieldIncorrect, loadConditionalField, storeConditionalField); - - let conditionalFieldBUndef: ConditionalField = { kind: 'ConditionalField', a: 0, b: undefined } - checkSameOnStoreLoad(conditionalFieldBUndef, loadConditionalField, storeConditionalField); - - let bitSelection: BitSelection = { kind: 'BitSelection', a: 5, b: 5 } - checkSameOnStoreLoad(bitSelection, loadBitSelection, storeBitSelection); - - let bitSelectionIncorrect: BitSelection = { kind: 'BitSelection', a: 8, b: 5 } - checkDifferOnStoreLoad(bitSelectionIncorrect, loadBitSelection, storeBitSelection); - - let conditionalRef: ConditionalRef = { kind: 'ConditionalRef', x: 1, y: { kind: 'Simple', a: 3, b: 4 } } - checkSameOnStoreLoad(conditionalRef, loadConditionalRef, storeConditionalRef); - - let conditionalRefUndefined: ConditionalRef = { kind: 'ConditionalRef', x: 0, y: undefined } - checkSameOnStoreLoad(conditionalRefUndefined, loadConditionalRef, storeConditionalRef); - }) - - test('Exceptions', () => { - expect.hasAssertions() - - let implicitConditionIncorrect: ImplicitCondition = { kind: 'ImplicitCondition', flags: 200 } - checkThrowOnStoreLoad(implicitConditionIncorrect, loadImplicitCondition, storeImplicitCondition); - - let implicitCondition: ImplicitCondition = { kind: 'ImplicitCondition', flags: 100 } - checkSameOnStoreLoad(implicitCondition, loadImplicitCondition, storeImplicitCondition); - - let implicitConditionIncorrectCell = beginCell().storeUint(200, 10).endCell().beginParse(); - expect(() => { - loadImplicitCondition(implicitConditionIncorrectCell) - }).toThrow(Error); - - let implicitConditionCell = beginCell().storeUint(100, 10).endCell().beginParse(); - expect(loadImplicitCondition(implicitConditionCell).flags == 100).toBeTruthy() - - let equalityExpression: EqualityExpression = { kind: 'EqualityExpression', n: 2 } - checkSameOnStoreLoad(equalityExpression, loadEqualityExpression, storeEqualityExpression); - - let equalityExpressionIncorrect: EqualityExpression = { kind: 'EqualityExpression', n: 3 } - checkThrowOnStoreLoad(equalityExpressionIncorrect, loadEqualityExpression, storeEqualityExpression); - }) - - test('Hashmap', () => { - expect.hasAssertions() - - let hashmapEUser: HashmapEUser = { - kind: 'HashmapEUser', - x: { - kind: 'HashmapE_hme_root', - n: 8, - root: { - kind: 'Hashmap', - l: 0, m: 8, n: 8, - label: { - kind: 'HmLabel_hml_short', - n: 0, m: 8, - len: { kind: 'Unary_unary_zero' }, - s: [] - }, - node: { - kind: 'HashmapNode_hmn_fork', - n: 7, - left: { - kind: 'Hashmap', - n: 7, - m: 5, - l: 2, - label: { - kind: 'HmLabel_hml_long', - m: 7, - n: 2, - s: getBitStringArray('00') - }, - node: { - kind: 'HashmapNode_hmn_fork', - n: 4, - left: { - kind: 'Hashmap', - n: 4, - m: 0, - l: 4, - label: { - kind: 'HmLabel_hml_long', - m: 4, - n: 4, - s: getBitStringArray('0001') - }, - node: { - kind: 'HashmapNode_hmn_leaf', - value: 777 - } - }, - right: { - kind: 'Hashmap', - n: 4, - m: 0, - l: 4, - label: { - kind: 'HmLabel_hml_long', - m: 4, - n: 4, - s: getBitStringArray('0001') - }, - node: { - kind: 'HashmapNode_hmn_leaf', - value: 111 - } - } - } - }, - right: { - kind: 'Hashmap', - n: 7, - m: 0, - l: 7, - label: { - kind: 'HmLabel_hml_long', - m: 7, - n: 7, - s: getBitStringArray('0000000') - }, - node: { - kind: 'HashmapNode_hmn_leaf', - value: 777 - } - } - } - } - } - } - checkSameOnStoreLoad(hashmapEUser, loadHashmapEUser, storeHashmapEUser); - }) - - test('Constructor Tags', () => { - expect.hasAssertions() - - let sharpConstructor: SharpConstructor = { kind: 'SharpConstructor', c: 5, y: { 'kind': 'FixedIntParam', y: 6 } } - checkSameOnStoreLoad(sharpConstructor, loadSharpConstructor, storeSharpConstructor); - - let emptyTag: EmptyTag = { kind: 'EmptyTag', a: 3 } - checkSameOnStoreLoad(emptyTag, loadEmptyTag, storeEmptyTag); - let emptyTagCell = beginCell(); - storeEmptyTag(emptyTag)(emptyTagCell); - expect(emptyTagCell.endCell().beginParse().remainingBits == 32).toBeTruthy(); - - let sharpTag: SharpTag = { kind: 'SharpTag', x: 3 } - checkSameOnStoreLoad(sharpTag, loadSharpTag, storeSharpTag); - let sharpTagCell = beginCell(); - storeSharpTag(sharpTag)(sharpTagCell); - let sharpTagSlice = sharpTagCell.endCell().beginParse() - expect(sharpTagSlice.loadUint(8) == 0xf4).toBeTruthy(); - expect(sharpTagSlice.remainingBits == 32).toBeTruthy(); - - let dollarTag: DollarTag = { kind: 'DollarTag', x: 3 } - checkSameOnStoreLoad(dollarTag, loadDollarTag, storeDollarTag); - let dollarTagCell = beginCell(); - storeDollarTag(dollarTag)(dollarTagCell); - let dollarTagSlice = dollarTagCell.endCell().beginParse() - expect(dollarTagSlice.loadUint(4) == 0b1011).toBeTruthy(); - expect(dollarTagSlice.remainingBits == 32).toBeTruthy(); - - let constructorOrder: ConstructorOrder = { kind: 'ConstructorOrder_a', a: { kind: 'Simple', a: 2, b: 3 } } - checkSameOnStoreLoad(constructorOrder, loadConstructorOrder, storeConstructorOrder); - - let checkCrc32A: CheckCrc32 = { kind: 'CheckCrc32_a', a: 3 } - checkSameOnStoreLoad(checkCrc32A, loadCheckCrc32, storeCheckCrc32); - - let checkCrc32B: CheckCrc32 = { kind: 'CheckCrc32_b', b: 4, c: 5 } - checkSameOnStoreLoad(checkCrc32B, loadCheckCrc32, storeCheckCrc32); - - let checkCrc32AOpCode = beginCell().storeUint(0x9d97e7a, 32).storeUint(76, 32).endCell().beginParse(); - loadCheckCrc32(checkCrc32AOpCode); - }) - - test('Advanced types', () => { - expect.hasAssertions() - - let unary: Unary = { kind: 'Unary_unary_succ', n: 2, x: { kind: 'Unary_unary_succ', n: 1, x: { kind: 'Unary_unary_succ', n: 0, x: { kind: 'Unary_unary_zero' } } } } - checkSameOnStoreLoad(unary, loadUnary, storeUnary); - let unaryIncorrectOne: Unary = { kind: 'Unary_unary_succ', n: 3, x: { kind: 'Unary_unary_succ', n: 1, x: { kind: 'Unary_unary_succ', n: 0, x: { kind: 'Unary_unary_zero' } } } } - checkDifferOnStoreLoad(unaryIncorrectOne, loadUnary, storeUnary); - let unaryIncorrectAll: Unary = { kind: 'Unary_unary_succ', n: 3, x: { kind: 'Unary_unary_succ', n: 2, x: { kind: 'Unary_unary_succ', n: 1, x: { kind: 'Unary_unary_zero' } } } } - checkDifferOnStoreLoad(unaryIncorrectAll, loadUnary, storeUnary); - let unaryIncorrectSuccZero: Unary = { kind: 'Unary_unary_succ', n: 3, x: { kind: 'Unary_unary_zero' } } - checkDifferOnStoreLoad(unaryIncorrectSuccZero, loadUnary, storeUnary); - - let paramConstD: ParamConst = { kind: 'ParamConst_d', n: 1, k: 2, l: 3, m: 4 } - checkDifferOnStoreLoad(paramConstD, (slice: Slice) => loadParamConst(slice, 1, 1), storeParamConst); - checkThrowOnStoreLoad(paramConstD, (slice: Slice) => loadParamConst(slice, 1, 2), storeParamConst) - checkSameOnStoreLoad(paramConstD, (slice: Slice) => loadParamConst(slice, 4, 2), storeParamConst) - let paramConstB: ParamConst = { kind: 'ParamConst_b', k: 2, m: 4 } - checkSameOnStoreLoad(paramConstB, (slice: Slice) => loadParamConst(slice, 2, 1), storeParamConst); - let paramConstC: ParamConst = { kind: 'ParamConst_c', k: 2, m: 4, n: 3 } - checkSameOnStoreLoad(paramConstC, (slice: Slice) => loadParamConst(slice, 3, 3), storeParamConst); - - let paramDifNamesC: ParamDifNames = { kind: 'ParamDifNames_c', n: 3, x: { kind: 'ParamDifNames_c', n: 2, x: { kind: 'ParamDifNames_c', n: 1, x: { kind: 'ParamDifNames_a' } } } } - checkSameOnStoreLoad(paramDifNamesC, (slice: Slice) => loadParamDifNames(slice, 2), storeParamDifNames); - let paramDifNamesD: ParamDifNames = { kind: 'ParamDifNames_d', m: 4, x: { kind: 'ParamDifNames_d', m: 2, x: { kind: 'ParamDifNames_d', m: 1, x: { kind: 'ParamDifNames_b' } } } } - checkSameOnStoreLoad(paramDifNamesD, (slice: Slice) => loadParamDifNames(slice, 3), storeParamDifNames); - - let paramDifNamesUser: ParamDifNamesUser = { kind: 'ParamDifNamesUser', k: 4, x: { kind: 'ParamDifNames_c', n: 3, x: { kind: 'ParamDifNames_c', n: 2, x: { kind: 'ParamDifNames_c', n: 1, x: { kind: 'ParamDifNames_a' } } } } } - checkSameOnStoreLoad(paramDifNamesUser, loadParamDifNamesUser, storeParamDifNamesUser); - let paramDifNamesUserIncorrect: ParamDifNamesUser = { kind: 'ParamDifNamesUser', k: 5, x: { kind: 'ParamDifNames_c', n: 3, x: { kind: 'ParamDifNames_c', n: 2, x: { kind: 'ParamDifNames_c', n: 1, x: { kind: 'ParamDifNames_a' } } } } } - checkDifferOnStoreLoad(paramDifNamesUserIncorrect, loadParamDifNamesUser, storeParamDifNamesUser); - - let negationFromImplicit: NegationFromImplicit = { kind: 'NegationFromImplicit', t: 4, y: 2, z: 7 } - checkSameOnStoreLoad(negationFromImplicit, loadNegationFromImplicit, storeNegationFromImplicit) - let negationFromImplicitIncorrect: NegationFromImplicit = { kind: 'NegationFromImplicit', t: 4, y: 3, z: 7 } - checkDifferOnStoreLoad(negationFromImplicitIncorrect, loadNegationFromImplicit, storeNegationFromImplicit) - - let unaryUserCheckOrder: UnaryUserCheckOrder = { kind: 'UnaryUserCheckOrder', l: 2, m: 5, label: { kind: 'Unary_unary_succ', n: 1, x: { kind: 'Unary_unary_succ', n: 0, x: { kind: 'Unary_unary_zero' } } } } - checkSameOnStoreLoad(unaryUserCheckOrder, loadUnaryUserCheckOrder, storeUnaryUserCheckOrder) - - let loadFromNegationOutsideExpr: LoadFromNegationOutsideExpr = { kind: 'LoadFromNegationOutsideExpr', prev_seq_no: 3, seq_no: 4 } - checkSameOnStoreLoad(loadFromNegationOutsideExpr, loadLoadFromNegationOutsideExpr, storeLoadFromNegationOutsideExpr) - - }) - - test('Slices', () => { - expect.hasAssertions() - - let cellsSimple: CellsSimple = { 'kind': 'CellsSimple', a: 5, b: 3, c: 4, d: 100, e: 4, q: 1, t: 3 } - checkSameOnStoreLoad(cellsSimple, loadCellsSimple, storeCellsSimple, (slice: Slice) => { - slice = slice.clone() - slice.loadRef(); - let slice2 = slice.loadRef().beginParse(); - slice2.loadRef(); - let slice22 = slice2.loadRef().beginParse(); - let slice221 = slice22.loadRef(); - }); - checkThrowOnStoreLoad(cellsSimple, loadCellsSimple, storeCellsSimple, (slice: Slice) => { - slice = slice.clone() - slice.loadRef(); - let slice2 = slice.loadRef().beginParse(); - slice2.loadRef(); - let slice22 = slice2.loadRef().beginParse(); - let slice221 = slice22.loadRef(); - let slice2211 = slice221.beginParse().loadRef(); - }); - checkThrowOnStoreLoad(cellsSimple, loadCellsSimple, storeCellsSimple, (slice: Slice) => { - slice.loadRef(); - }); - checkThrowOnStoreLoad(cellsSimple, loadCellsSimple, storeCellsSimple, (slice: Slice) => { - slice.preloadRef().beginParse().preloadRef(); - }); - checkSameOnStoreLoad(cellsSimple, loadCellsSimple, storeCellsSimple, (slice: Slice) => { - slice.preloadRef().beginParse(); - }); - - let intBitsOutside: IntBitsOutside = { - 'kind': 'IntBitsOutside', - x: { - 'kind': 'IntBitsInside', - a: { - 'kind': 'IntBits', arg: BigInt(3), d: 5, - g: beginCell().storeUint(3, 2).endCell().beginParse().loadBits(2), - x: beginCell().storeUint(76, 10).endCell().beginParse() - }, - x: 3 - } - } - checkSameOnStoreLoad(intBitsOutside, loadIntBitsOutside, storeIntBitsOutside); - - let intBitsParametrizedOutside: IntBitsParametrizedOutside = { - kind: 'IntBitsParametrizedOutside', - x: { - kind: 'IntBitsParametrizedInside', - a: { - kind: 'IntBitsParametrized', e: 5, f: BigInt(3), h: BigInt(7), j: 9, k: BigInt(10), - i: beginCell().storeUint(676, 10).endCell().beginParse().loadBits(10), - tc: beginCell().storeUint(76, 10).endCell().beginParse() - }, - x: 5 - } - } - checkSameOnStoreLoad(intBitsParametrizedOutside, loadIntBitsParametrizedOutside, storeIntBitsParametrizedOutside); - - let intBitsParametrizedOutsideIncorrect: IntBitsParametrizedOutside = { - kind: 'IntBitsParametrizedOutside', - x: { - kind: 'IntBitsParametrizedInside', - a: { - kind: 'IntBitsParametrized', e: 6, f: BigInt(3), h: BigInt(7), j: 9, k: BigInt(10), - i: beginCell().storeUint(676, 10).endCell().beginParse().loadBits(10), - tc: beginCell().storeUint(76, 10).endCell().beginParse() - }, - x: 5 - } - } - checkDifferOnStoreLoad(intBitsParametrizedOutsideIncorrect, loadIntBitsParametrizedOutside, storeIntBitsParametrizedOutside); - }) - - test('block tlb tests', () => { - const state = 'te6cckEC0QEAF4EABBAR71Wq////EQ4LARoKigRFBc22uwt5FAe5LkwV9/aUCMG3DMEFmhpBL/V+tBDI/gV3bfbEh9X1jahPoZpMXpC6TwToe2oBAiKcJCMWgMzjAhkCGSUCI1uQI6/i////EQAAAAAAAAAAAAAAAAACCJygAAAAAWQpXggAACE4Ni/9xAGyx8EgCgQDAdkAAAAAAAAAAP//////////glm7Tyr7ph7bvcoliLx6hZAAAhODYReUQBssfBAKstMwDM/+WPxY9XNFdU/4cu5AdlJJxlQd/rujBrVRmS8DPQgPzqUD9KMX8as2Dwctu9c04+8yNoUKVi2nVyoIECITgglm7Tyr7ph7cAUQIxMBBLN2nlX3TD24GAYQIxMBAZDm24nj3jYYBywVIxMBAQHXwZPFZ1f4SRIIAgEgoQkAE7////+8hct+TjABEQAAAAAAAAAAUKICEbjkjftDxPT2BA0MAA0AEO5rKAAIAiWCWbtPKwbudNwSzdp5V90w9sAIEBACoJvHqYcAAAAAhAECCJygAAAAAQAAAAAAAAAAAAAAAABkKV4IAAAhODYv/cAAACE4Ni/9xGSeizgABnF2AbLHwQGyxDjEAAAAAwAAAAAAAAAuRg8AmAAAITg2ILuBAgicn5OTTn6kV5z6E216F7w1p7ywI+Wsbfm4l7+fH+PH3tbaRLtCQmSNinuI8RM1X14LJBOd+k8nDROIBcr5XT35BMwCASARFgATvgAAA7yRYnrqkCMTAQCVZm3cySLJmM8TJCITAQBXbLG1sxxLaBSmIhEA7TNAkoCvNMhLqAIBIBcWABO/////vIuW/JxQABO+AAADvJFVjgoQIxMBAyKPwswTbge4RG8ZABGgAAAA7xs7OCQDiUoz9v0AAAAAMhjte0ADZ9Ue4JasekQN2qxAbkcpsPnm3xb+QdycBRLKp6O4P7y5zuVClQ61W4lQ2IB7RVnlRQ3Zf7ntQCAfGwEHnTCbchwCBw6YTbkeHQKkv9hmS6t5x389cc3WraAW8v9u/tHNgS00XoIS5/rCIFutGIBUYWwzJdW847+euObrVtALeX+3f2jmwJaaL0EJc/1hEC3WqAAABCcGxf+4ZiAVGF9jAqS/8DbUGy9SGYFSs/09wmMCIhXrQq6KCrW1rDQtMCZwfY4csEcRWBtqDZepDMCpWf6e4TGBEQr1oVdFBVra1hoWmBM4PscoAAAEJwbF/7gnLBHEZWkBAYJdAQmYc4+QICECCQw5x8gQIyICU7/tv+KF5I5D4kmpP2G9Ole4W7PrWAo836gCz/UsR488Shhzj5AZhzj5QHFfAkW/+10YVX8suGLI/VWnKzNQacHbz88tvbzdIeyzKUTUvL6ABGxlABGgAAAA7xhMWuQjW5Ajr+L///8RAAAAAAAAAAAAAAAAAAIInJ8AAAABZCleBQAAITg2ILuBAbLHvyBFJyYoSAEBpRWq+4O2768Q6YgNNGQjmj0oa8zM5VMgwFF0+iWqUqkAAiITgglm7TysG7nTcCgpIxMBBLN2nlYN3Om4LSopKEgBAbPpZJ0QzLN5No6Bo6fo5JyOtT9qzGmwui/6gAgvcO45AAEjEwEBkOba1PLVX/hHLCsoSAEBuwbzUGdFxfamI50TKnCzhDnLYP+V9i5FJhuhLoROiJsAAShIAQFdcwvHm2Gi3vzR5QK6MzZpJ2XoxG6s9cU5A+NecaY2ZQBnIxMBAyKPw4EbB4nYRC8uKEgBAW8xXyW0o5rBLIX+pOz+eoPl5Z0fBZeD+gw+8nlzCIBhAAAjEwEBQHDBzHvk29hwMEojEwEAUApu/uIBspgxd0ojEQD9ZwkwKFUL2DJ5MyMRAPxRfpdfYWL4NHwzKEgBAdesu2AjOMhtYQ81z7Ni/Xb8GLGBJHa2/KmaBnjmZfz1AAAiEQDjkp2cjH78iDXQIhEA4qsjFN6mokg2fyIRAOKYHdmYGycIN4EiEQDh3QxQfyu5CJ04Ig8AxgUbDbsGSJw5Ig8AxR33sLE3CDqFIg8AxHL6Yno2qJs7Ig8AxC6kdAuZaJo8Ig8AxCi4DqgjyD2JIg8AxCCrNzFaaJk+Ig8AxCBpdu+8CJg/Ig8AxB7y0orbaECNIg8AxB7qPeidiJdBIg8AxB7pSOPSiEKQIg9QMQaGMcp2EkOSIZu6g2XqQzAqVn+nuExgREK9aFXRQVa2tYaFpgTOD7HAMQaGHhPJk8fJ/pSBwkG9iigbeI6u0UIcOptjngRxq8d+vVLS6LY0AACE4BYzRwaeKEgBAT3wohgPv4MQ4+vz7gM349tPPFYHsqlZSMuevDm3t4EBAhUoSAEBOxcU0HjSRdQVv8jz/2RdmNPXidHJrEXKTEh77ypybKAAAgCYAAAhODYReUQBssfBAKstMwDM/+WPxY9XNFdU/4cu5AdlJJxlQd/rujBrVRmS8DPQgPzqUD9KMX8as2Dwctu9c04+8yNoUKVi2nVyoCMTAQEB18De1F6B2EmjSChIAQHskKRO7gK+2EDBDog1EWPunjYT652+jadgeD2kSXFOKAABKEgBAeK+z0GLoJJXqHmcgiUmFab+cGE3G05kIzFL1fGvx+7yAGcoSAEB7X4mvTbvptXZtPaqq5gTrwdCqEJEl390/UB0ycmJCL4AACIRAOfckED3AmmoTKoiEQDgKvnhz8sqaE2sIg8AzWFSJqtV6M5OIg8AxY+VQnVA6M1PIg8Aw4VN2Uwz6FCwIg8AwmgbZ7zyCFGyIg8AwLPaWJdUqMxSIg8AwEW+c768iMtTIg8AwCGKXAQqSFS2Ig8AwCAp2uw86FW4Ig0Avii23INoylYiDQCg9iRqgQhXuyINAKD0o/xyaFi9Ig0AoNeOM7+oyVkiDQCg1z9eQuhawCINAKDWv15C6MhbIg0AoNIwddNIx1whmbpq3nHfz1xzdatoBby/27+0c2BLTReghLn+sIgW60BQaOLJc2OxZkrdV5VNejNdZYocwulM6KlsjAputOLtERFZ6SV/oAABCcGxf+4cdANFoBtv+KF5I5D4kmpP2G9Ole4W7PrWAo836gCz/UsR488SgFBxZV4CB2Yc4+VxXwO1ewzJdW847+euObrVtALeX+3f2jmwJaaL0EJc/1hEC3WgAAITg2L/3DbOLcUyYI0cPzAxVFzkG6J7zghhDc9bLr92Oh7WOzkVkAACEogQULwWQpXggAAUYgFRiGRjYAIbDLrdCUFp5hRPWGHj4xFiYQBbwAAAAAAAAAAAAAAAAS1FLaRJ5QuM990nhh8UYSKv4bVGu4tw/IIW8MYUE5+OBACeQHvsPQkAAAAAAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCcqwgKOzuSym5usTshSpMpCr16O7s5bepH1izbp7Xp2Czizf8kNDqAW3uBWuovIThZFt6VZVorL4SzhvSsRKnI0wBAaByA7V2BtqDZepDMCpWf6e4TGBEQr1oVdFBVra1hoWmBM4PscAAAhODYv/cHx8n+lIHCQb2KKBt4jq7RQhw6m2OeBHGrx369UtLotjQAAITgFjNHBZCleCAADRywRxIamlmAhEMgFcGG4cyxEBoZwBvyYrVcEwc47gAAAAAAAIAAAAAAAJGZSaqgI5ubq7EBkS9iYCyLImlfsoM+uTwXHcA6Ll23kCQIEwAnUOc4xOIAAAAAAAAAAAhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAgnLsg1gBXx7Xxc8sPHDKhgW6z7UHcU5ZMO7TJUYI4hsdeNd1bVzcsM9RXJH+4PoemNCiNrt5WeZxeO791T0M+08OAgHgbGsBAd9yAd2IAMDbUGy9SGYFSs/09wmMCIhXrQq6KCrW1rDQtMCZwfY4BE2TDQHoAPruZj44qfgANmByqblxPjLe/6PijbrlfomSpMKoT4olv46Ec0Oyon/E9itWsVVbgoHiSurUO1mI0HAAAAALIUryEP2V8t5tAQTQA24AukIAWGZLq3nHfz1xzdatoBby/27+0c2BLTReghLn+sIgW60oLTzCiegAAAAAAAAAAAAAAAAAAAAAADk0YjFlMzVkLWYyMGUtNDJkYS04MGU2LWNiM2ZkYWY2YjcwNCMTAQFAcMEXdEtZuHB1dihIAQEzX6VT6kvKa9205IdZXLH1EnzQYt5IxkFRCl98L8aoHQBhAQxGBgMOcfJyAbNIAMDbUGy9SGYFSs/09wmMCIhXrQq6KCrW1rDQtMCZwfY5ACwzJdW847+euObrVtALeX+3f2jmwJaaL0EJc/1hEC3WlBaeYUT0Bhzj5AAAQnBsX/uEyFK8EMBzAFAAAAAAOTRiMWUzNWQtZjIwZS00MmRhLTgwZTYtY2IzZmRhZjZiNzA0InHACwzJdW847+euObrVtALeX+3f2jmwJaaL0EJc/1hEC3WiLIWQQyFK8EAAAITg2L/3EUGjiyXNk0DGxSMTAQBQCm5J2mgweHh3dgARoAAAAO8ZEcTMKEgBAStT6er4RaQYeNe/8rQVgaM+C5Ec6gMxWKLQBM/s3OP9ADojEQD9Zwh7ILuJuHp5eyhIAQHGJBxyRx2nxj5LaPE51bQZCvSffkDzMhCsMKvaDnBwrgBfIxEA/FF94lfH4Nh9fHsAEaAAAADvGKfJJChIAQHF0rr8QO139Iq41hqZKErCW8ACJrijYIM1RHpJjqtT8gA4IhEA45Kc54Tlemh+0CIRAOKrIl/XDSAogH8oSAEBT02ni3tLW5UgUljEDbLdnR8ffMmUf/QmI5hnM/54gr0AJSIRAOKYHSSQgaTogoEoSAEBM68Z6oNiYqIE/xCVIXNCO5DHgBCH0v6D8o0IlWLSbt8AJiIRAOHdC5t3kjbonYMiDwDGBGYGIYQonIQiDwDFHUKpF7TohoUoSAEBNB3OA0eOfDTx/kErEufcekh6AE8/s2emeGEsVZlHOG8AGCIPAMRyRVrgtIibhyIPAMQt72xyF0iaiCIPAMQoAwcOoaiKiShIAQGiHAzPwfwORsBp02k9WV3cjFaEUdSQ36sRel1jRCTNJAAUIg8AxB/2L5fYSJmLIg8AxB+0b1Y56JiMIg8AxB49yvFZSI6NKEgBAUZtH4yDm+D0wHPn5Yce9BEfDbMoaajlB1Ud1mN/OtlWAA0iDwDEHjU2Txtol48iDwDEHjRBSlBokZAoSAEBdZZPFv97JSIbVQ4JyJgoDuTkm83nC6jEYDVcwGxoNjIACyIPUDEGWO/kFYqTkihIAQEM+/iVpCeSGVQ7v7SwKOqMLsAP7eS6EZo6dUA/pfUPEAAIIZu6g2XqQzAqVn+nuExgREK9aFXRQVa2tYaFpgTOD7HAMQZY3C1pCVzFHjnW5pCIDMke2Eo0dBFsj0nDOu0KHDzAnsVol79cAACE4Ni/9waUInPABgbag2XqQzAqVn+nuExgREK9aFXRQVa2tYaFpgTOD7HCGIIZwyFK8EAAAITg2L/3DYgyxuFrSFNAoJUBWQAAAAFkKVNZDx4g+gWglbhB38WtcZ5x5JAn5jqXB4f3jyt4GZK2irpzvcQAwJYAE6AyFK8hD9lfLcAoSAEBHgrDQCiPcdY0HrD7MU6zKEzVsG2o7h+uS9pWs8wbnJ8ADChIAQHKxBWQY1y/aOvinbyMXBGKE2NY8M7FwIMOajGn3/DSHAAQKEgBAecXqSOr4K1n8v+a4nkWws/qYIhRZOoeR+i9A/Iu/Zz+ABQoSAEBwLwm5Uey6iIGJ9PifbSXU8cHk7HL4jPeZbCRWeuPvHIAFShIAQGqWL/ZPmD9wOC1butJ0zbkCcW4NbO4mCXgMZLGpgeq5QAXKEgBAVtS27/eOLwtYVWxS0d8zkZ94CVGNHFHaFvO6Zn5UDJUABkoSAEBOCsW8AxTELrth9Wtfx0GfnCzwOhxw7/npgcWWP0PicAAHCJzwAYG2oNl6kMwKlZ/p7hMYERCvWhV0UFWtrWGhaYEzg+xwhiCGcMhSpj4AACE4BYzRw2INDDwnkyTQKCfKEgBATSTTv6zIMNhS6ljIyo9l6Dw2TQ6QRE+qW2FK+Hj3iFKAAEoSAEBlJTRzI7fEvBWcaGpugmSEJbrUIEeGSTsZcPGKfu4CBIABAATvgAAA7yE+MJA0ABrsEAAAAAAAAAAANlj4IAAEJwbF/7hbb/iheSOQ+JJqT9hvTpXuFuz61gKPN+oAs/1LEePPEpAIxMBAJVmbSfYGfN4z6WkKEgBAT6FZvX18rkB8AC7g6PivCJByqd21885qflpQfuAgXmcAAAiEwEAV2yxAMITdUinpihIAQGggxo341fgvkQKy3tnb2FOymbihPqgx8XXa1uwuk/xdgBeIhEA7TM/3Y+mXqipqChIAQHekhfgIk36qC9gwNk/4lpJwJJlrZ+6mgm0xNEwIMuhxAAqIhEA59yPjAX5k4irqihIAQHLtFsOh+u3y+guD+3i0xwpF5AAgcz8NYv3QPwJ8GZ+XAAsIhEA4Cr5LN7CVEitrChIAQHIF3gFICgSZ5FN5CQLsqXEHdeKjdl2VTk72mko9KkK5gAeIg8AzWCdNaJ/yM6uIg8AxY7gUWxqyM2vIg8Aw4SY6ENdyLGwKEgBAcNf5HCvff88cYOGfq4hMLsZQ4rpmN3p5TESjIZeHYfdABoiDwDCZ2Z2tBvos7IoSAEBzB2qFVwzmJ0RM8aZixilBpPTlGx0GtCUi57FA+izvrAAGyIPAMCzJWeOfojMtCIPAMBFCYK15mjLtSIPAMAg1Wr7VCi3tihIAQFwNwR3atIjdJf2/elobh7DuB75ni/SufuFCxxWOBzdhwAUIg0Av3Tp42bIubgoSAEBRX2kAc8o5m/8t/t3sEEMmGqq5/W7d7/F9FIduN6duNkADyINAL1zxdOtSMq6Ig0AoEEzYarovLsoSAEB6XW8yt4T58ElUyuuyJ54dMGtFU0CexVUycIVI3a8c2YADSINAKA/svOcSL69KEgBAUK7MUSjrXWVXuZBYUKlHUKrroQGX+yfWhtNhz7lN8n6AAsiDQCgIp0q6YjJvyINAKAiTlVsyMHAKEgBAXxNBe3bbHX79cjVPvcm8cvZKtPEGQqLP9IzrRkbIfjWAAkiDQCgIc5VbMjIwiILAJ0/bP0ox8Mhl7pq3nHfz1xzdatoBby/27+0c2BLTReghLn+sIgW60BOakUIU2cW4pkwRo4fmBiqLnIN0T3nBDCG562XX7sdD2sdnIrIAAEJRAgoXgzEIm/ACwzJdW847+euObrVtALeX+3f2jmwJaaL0EJc/1hEC3WiLIWOQyEuC4AAAISiBBQvDTmpFCFTQMbFAFEAAAAHKamjF34U6KK3xtVYfJKAXDfvq96k6gufJtm4qCqODWvc6mJQQChIAQH+tf9oIOL/DZSD5+DWLIF9hGeJ+0rlgMh4hm2VnavVwAAHKEgBAUgdtUNfI6DNuGnT4LxXs0enI/3ZDm/o4GHoKSGDln4+AAkoSAEBPGpn9ZfihdTNKNHBnuCU+UJCqd2zuEnF8cCnicSLziUACChIAQGMKLC8jkc1VDLelznZZQAbKi948QotANztzp+kaw4W7QAIKEgBAVMWIkIDHF47BX2a46BlCEEASbT5onV/U/84xeSJyavbABIoSAEBjEEiz61R0H6dN/31qP+jdNbMpw2LOYRARFnHgWqSWNQAFihIAQH7oZuYMFt25/R/rDYjGn6YHeVcFBL0C+pwhZCqt/bUbQAYKEgBAejgWpiIE/DT5RzO8P3ny8oYPEHblFq5UlxWkXAW5QQUAB0oSAEBHEzwo1WeCo4ej1Vob5/vEp/iY9isaWQiUjPKLXSa2F0AJyhIAQG6AR8M/S/UB23zXmBMm80bjwEVWFYt7N0B/gicRJjr1wBlKEgBAZAkBO+kH7fhtV/nPdXl/YhX9N1x4bZfgSrpmy1eIH/CACQY+N7F'; - const cs = Cell.fromBase64(state); - - let blk = loadBlock(cs.beginParse()); - let builder = beginCell(); - storeBlock(blk)(builder); - - expect(deepEqual(cs.hash(), builder.endCell().hash())).toBeTruthy() - }) -}) diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index e075f97..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "commonjs", /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } -}