Initialize Working Environment

In this step, we will initialize a basic Javascript project, where we can start building our simple client script.

Make sure you have installed Node.js in your machine.

NPM init

  1. Create a new directory for your project:
mkdir scripts/generate-signature
cd scripts/generate-signature
  1. In that folder, run the following command to initialize a new Node.js project:
npm init -y

You'll see the package.json file created in your project directory. This file contains metadata about your project, such as its name, version, description, author, and dependencies.

  1. Install necessary dependencies
npm install @polkadot/api @polkadot/keyring @polkadot/types @polkadot/util @polkadot/wasm-crypto
{
  "name": "generate-signature",
  "version": "1.0.0",
  "lockfileVersion": 3,
  "requires": true,
  "packages": {
    "": {
      "name": "generate-signature",
      "version": "1.0.0",
      "license": "ISC",
      "dependencies": {
        "@polkadot/api": "^15.5.2",
        "@polkadot/keyring": "^13.3.1",
        "@polkadot/types": "^15.5.2",
        "@polkadot/util": "^13.3.1",
        "@polkadot/wasm-crypto": "^7.4.1"
      }
    },
    "node_modules/@noble/curves": {
      "version": "1.8.1",
      "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz",
      "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==",
      "license": "MIT",
      "dependencies": {
        "@noble/hashes": "1.7.1"
      },
      "engines": {
        "node": "^14.21.3 || >=16"
      },
      "funding": {
        "url": "https://paulmillr.com/funding/"
      }
    },
    "node_modules/@noble/hashes": {
      "version": "1.7.1",
      "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz",
      "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==",
      "license": "MIT",
      "engines": {
        "node": "^14.21.3 || >=16"
      },
      "funding": {
        "url": "https://paulmillr.com/funding/"
      }
    },
    "node_modules/@polkadot-api/json-rpc-provider": {
      "version": "0.0.1",
      "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.0.1.tgz",
      "integrity": "sha512-/SMC/l7foRjpykLTUTacIH05H3mr9ip8b5xxfwXlVezXrNVLp3Cv0GX6uItkKd+ZjzVPf3PFrDF2B2/HLSNESA==",
      "license": "MIT",
      "optional": true
    },
    "node_modules/@polkadot-api/json-rpc-provider-proxy": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.1.0.tgz",
      "integrity": "sha512-8GSFE5+EF73MCuLQm8tjrbCqlgclcHBSRaswvXziJ0ZW7iw3UEMsKkkKvELayWyBuOPa2T5i1nj6gFOeIsqvrg==",
      "license": "MIT",
      "optional": true
    },
    "node_modules/@polkadot-api/metadata-builders": {
      "version": "0.3.2",
      "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.3.2.tgz",
      "integrity": "sha512-TKpfoT6vTb+513KDzMBTfCb/ORdgRnsS3TDFpOhAhZ08ikvK+hjHMt5plPiAX/OWkm1Wc9I3+K6W0hX5Ab7MVg==",
      "license": "MIT",
      "optional": true,
      "dependencies": {
        "@polkadot-api/substrate-bindings": "0.6.0",
        "@polkadot-api/utils": "0.1.0"
      }
    },
    "node_modules/@polkadot-api/observable-client": {
      "version": "0.3.2",
      "resolved": "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.3.2.tgz",
      "integrity": "sha512-HGgqWgEutVyOBXoGOPp4+IAq6CNdK/3MfQJmhCJb8YaJiaK4W6aRGrdQuQSTPHfERHCARt9BrOmEvTXAT257Ug==",
      "license": "MIT",
      "optional": true,
      "dependencies": {
        "@polkadot-api/metadata-builders": "0.3.2",
        "@polkadot-api/substrate-bindings": "0.6.0",
        "@polkadot-api/utils": "0.1.0"
      },
      "peerDependencies": {
        "@polkadot-api/substrate-client": "0.1.4",
        "rxjs": ">=7.8.0"
      }
    },
    "node_modules/@polkadot-api/substrate-bindings": {
      "version": "0.6.0",
      "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.6.0.tgz",
      "integrity": "sha512-lGuhE74NA1/PqdN7fKFdE5C1gNYX357j1tWzdlPXI0kQ7h3kN0zfxNOpPUN7dIrPcOFZ6C0tRRVrBylXkI6xPw==",
      "license": "MIT",
      "optional": true,
      "dependencies": {
        "@noble/hashes": "^1.3.1",
        "@polkadot-api/utils": "0.1.0",
        "@scure/base": "^1.1.1",
        "scale-ts": "^1.6.0"
      }
    },
    "node_modules/@polkadot-api/substrate-client": {
      "version": "0.1.4",
      "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.1.4.tgz",
      "integrity": "sha512-MljrPobN0ZWTpn++da9vOvt+Ex+NlqTlr/XT7zi9sqPtDJiQcYl+d29hFAgpaeTqbeQKZwz3WDE9xcEfLE8c5A==",
      "license": "MIT",
      "optional": true,
      "dependencies": {
        "@polkadot-api/json-rpc-provider": "0.0.1",
        "@polkadot-api/utils": "0.1.0"
      }
    },
    "node_modules/@polkadot-api/utils": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.1.0.tgz",
      "integrity": "sha512-MXzWZeuGxKizPx2Xf/47wx9sr/uxKw39bVJUptTJdsaQn/TGq+z310mHzf1RCGvC1diHM8f593KrnDgc9oNbJA==",
      "license": "MIT",
      "optional": true
    },
    "node_modules/@polkadot/api": {
      "version": "15.5.2",
      "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-15.5.2.tgz",
      "integrity": "sha512-TZPJlnoYr5kAfINooSmbvUcUCQnKDmTdLKNJmMh7CvCOYqQSJjFnMyfxhjM1bBTIcqnP9nFIGkldy19ErZHtcQ==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/api-augment": "15.5.2",
        "@polkadot/api-base": "15.5.2",
        "@polkadot/api-derive": "15.5.2",
        "@polkadot/keyring": "^13.3.1",
        "@polkadot/rpc-augment": "15.5.2",
        "@polkadot/rpc-core": "15.5.2",
        "@polkadot/rpc-provider": "15.5.2",
        "@polkadot/types": "15.5.2",
        "@polkadot/types-augment": "15.5.2",
        "@polkadot/types-codec": "15.5.2",
        "@polkadot/types-create": "15.5.2",
        "@polkadot/types-known": "15.5.2",
        "@polkadot/util": "^13.3.1",
        "@polkadot/util-crypto": "^13.3.1",
        "eventemitter3": "^5.0.1",
        "rxjs": "^7.8.1",
        "tslib": "^2.8.1"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/api-augment": {
      "version": "15.5.2",
      "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-15.5.2.tgz",
      "integrity": "sha512-EuE13KeifPj6PBfR3qMtqCq+Clbly/VX5adh53ljw7XTtHt8MKTlvhTK9pO9WHnixL6hUVH1f/Ekuzt8ROhpAg==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/api-base": "15.5.2",
        "@polkadot/rpc-augment": "15.5.2",
        "@polkadot/types": "15.5.2",
        "@polkadot/types-augment": "15.5.2",
        "@polkadot/types-codec": "15.5.2",
        "@polkadot/util": "^13.3.1",
        "tslib": "^2.8.1"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/api-base": {
      "version": "15.5.2",
      "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-15.5.2.tgz",
      "integrity": "sha512-e8W2KRwn6pkI/JIOrOCT2RsVil072vxQ95X2HCqu5eMmn5vwyOHB2OaMWezXikMegnCF3XEDeIzSP/VxGWW+zA==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/rpc-core": "15.5.2",
        "@polkadot/types": "15.5.2",
        "@polkadot/util": "^13.3.1",
        "rxjs": "^7.8.1",
        "tslib": "^2.8.1"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/api-derive": {
      "version": "15.5.2",
      "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-15.5.2.tgz",
      "integrity": "sha512-eSSPE0O9LE9jsRJIBqrPfHa7vCjE3NR+3ATdwAKBwK9LUfeCEEWud7c53njW8wLMSOiczxcX3JS2J9Rb0q7HCA==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/api": "15.5.2",
        "@polkadot/api-augment": "15.5.2",
        "@polkadot/api-base": "15.5.2",
        "@polkadot/rpc-core": "15.5.2",
        "@polkadot/types": "15.5.2",
        "@polkadot/types-codec": "15.5.2",
        "@polkadot/util": "^13.3.1",
        "@polkadot/util-crypto": "^13.3.1",
        "rxjs": "^7.8.1",
        "tslib": "^2.8.1"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/keyring": {
      "version": "13.3.1",
      "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-13.3.1.tgz",
      "integrity": "sha512-PT3uG9MqciPyoEz/f23RRMSlht77fo1hZaA1Vbcs1Rz7h7qFC0+7jFI9Ak30EJh9V0I2YugfzqAe3NjjyDxlvw==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/util": "13.3.1",
        "@polkadot/util-crypto": "13.3.1",
        "tslib": "^2.8.0"
      },
      "engines": {
        "node": ">=18"
      },
      "peerDependencies": {
        "@polkadot/util": "13.3.1",
        "@polkadot/util-crypto": "13.3.1"
      }
    },
    "node_modules/@polkadot/networks": {
      "version": "13.3.1",
      "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-13.3.1.tgz",
      "integrity": "sha512-g/0OmCMUrbbW4RQ/xajTYd2SMJvFKY4kmMvpxtNN57hWQpY7c5oDXSz57jGH2uwvcBWeDfaNokcS+9hJL1RBcA==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/util": "13.3.1",
        "@substrate/ss58-registry": "^1.51.0",
        "tslib": "^2.8.0"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/rpc-augment": {
      "version": "15.5.2",
      "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-15.5.2.tgz",
      "integrity": "sha512-eDCcmgrb/csOcav/RRBPFkOdPRvRXVYlksCGlQuzobYkPZfPz5tIKmgenip/5qnviR6gag6tK9ara+8kZ/7tpw==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/rpc-core": "15.5.2",
        "@polkadot/types": "15.5.2",
        "@polkadot/types-codec": "15.5.2",
        "@polkadot/util": "^13.3.1",
        "tslib": "^2.8.1"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/rpc-core": {
      "version": "15.5.2",
      "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-15.5.2.tgz",
      "integrity": "sha512-a4Xq3iEJvRA9gHE+QxMaIEOkgjuZUfW+uI3XLDtPgtxu2yF3hceyRl/K1m6E4AXR383VaxQ45wvDS1odPbmwaw==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/rpc-augment": "15.5.2",
        "@polkadot/rpc-provider": "15.5.2",
        "@polkadot/types": "15.5.2",
        "@polkadot/util": "^13.3.1",
        "rxjs": "^7.8.1",
        "tslib": "^2.8.1"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/rpc-provider": {
      "version": "15.5.2",
      "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-15.5.2.tgz",
      "integrity": "sha512-LHDG4mY5moFdVyUuEyuF9hMVWgA+DoLeNYZjtOL88gSALpfjhBLt1Hjbm3R6VwvcxeVNTkteVGvCo0AlH123JQ==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/keyring": "^13.3.1",
        "@polkadot/types": "15.5.2",
        "@polkadot/types-support": "15.5.2",
        "@polkadot/util": "^13.3.1",
        "@polkadot/util-crypto": "^13.3.1",
        "@polkadot/x-fetch": "^13.3.1",
        "@polkadot/x-global": "^13.3.1",
        "@polkadot/x-ws": "^13.3.1",
        "eventemitter3": "^5.0.1",
        "mock-socket": "^9.3.1",
        "nock": "^13.5.5",
        "tslib": "^2.8.1"
      },
      "engines": {
        "node": ">=18"
      },
      "optionalDependencies": {
        "@substrate/connect": "0.8.11"
      }
    },
    "node_modules/@polkadot/types": {
      "version": "15.5.2",
      "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-15.5.2.tgz",
      "integrity": "sha512-TANrhfovLgbG00ldFvZbOuwyzqibOOMAU9egGqnoFwz4x4vTNTBgNJRvQGF5w4+FhjcEepdxlLU/3yqFM98yzA==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/keyring": "^13.3.1",
        "@polkadot/types-augment": "15.5.2",
        "@polkadot/types-codec": "15.5.2",
        "@polkadot/types-create": "15.5.2",
        "@polkadot/util": "^13.3.1",
        "@polkadot/util-crypto": "^13.3.1",
        "rxjs": "^7.8.1",
        "tslib": "^2.8.1"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/types-augment": {
      "version": "15.5.2",
      "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-15.5.2.tgz",
      "integrity": "sha512-Za5ifsiu2gSQkOBjwcCtCr5nz+PojsBoptdHKjMm0JHLgilNn0kNqriqRRrCiPkUO1656UXRQNCHpP6Vs8tncg==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/types": "15.5.2",
        "@polkadot/types-codec": "15.5.2",
        "@polkadot/util": "^13.3.1",
        "tslib": "^2.8.1"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/types-codec": {
      "version": "15.5.2",
      "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-15.5.2.tgz",
      "integrity": "sha512-caQNGQ+QHVZV4hGSolYN9L9pMRZeo9rJzYoybT5LMIxX8QVdW3RM5HDesj1SKGSrgIJmooN4/5JzPjrFZ4C7Vw==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/util": "^13.3.1",
        "@polkadot/x-bigint": "^13.3.1",
        "tslib": "^2.8.1"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/types-create": {
      "version": "15.5.2",
      "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-15.5.2.tgz",
      "integrity": "sha512-PbrT2mP5x7VTpwCZa/BCl8jl3y/s6UOwrjBL+pq8TErLEbkackn5a3cR4GaH9toeP5qlEaLbSWRFm24YcW8FOg==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/types-codec": "15.5.2",
        "@polkadot/util": "^13.3.1",
        "tslib": "^2.8.1"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/types-known": {
      "version": "15.5.2",
      "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-15.5.2.tgz",
      "integrity": "sha512-4yk1DnIeAy4uImFf4yDyRRdgkf5nAagQzPZWO61uxhEA+Q2MxLHLDeLbUwFiLxLLvpM09Xke8rGbem/vPRg9nA==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/networks": "^13.3.1",
        "@polkadot/types": "15.5.2",
        "@polkadot/types-codec": "15.5.2",
        "@polkadot/types-create": "15.5.2",
        "@polkadot/util": "^13.3.1",
        "tslib": "^2.8.1"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/types-support": {
      "version": "15.5.2",
      "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-15.5.2.tgz",
      "integrity": "sha512-PT3MTSy69euAPtRQ3c2I7vM0OfAIQXU1yIWpYTcEkG+spTn4d0fcYeJjfxvAmcROJlpJoXf10YMsXKwx+gvOig==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/util": "^13.3.1",
        "tslib": "^2.8.1"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/util": {
      "version": "13.3.1",
      "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-13.3.1.tgz",
      "integrity": "sha512-5crLP/rUZOJzuo/W8t73J8PxpibJ5vrxY57rR6V+mIpCZd1ORiw0wxeHcV5F9Adpn7yJyuGBwxPbueNR5Rr1Zw==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/x-bigint": "13.3.1",
        "@polkadot/x-global": "13.3.1",
        "@polkadot/x-textdecoder": "13.3.1",
        "@polkadot/x-textencoder": "13.3.1",
        "@types/bn.js": "^5.1.6",
        "bn.js": "^5.2.1",
        "tslib": "^2.8.0"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/util-crypto": {
      "version": "13.3.1",
      "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-13.3.1.tgz",
      "integrity": "sha512-FU6yf3IY++DKlf0eqO9/obe2y1zuZ5rbqRs75fyOME/5VXio1fA3GIpW7aFphyneFRd78G8QLh8kn0oIwBGMNg==",
      "license": "Apache-2.0",
      "dependencies": {
        "@noble/curves": "^1.3.0",
        "@noble/hashes": "^1.3.3",
        "@polkadot/networks": "13.3.1",
        "@polkadot/util": "13.3.1",
        "@polkadot/wasm-crypto": "^7.4.1",
        "@polkadot/wasm-util": "^7.4.1",
        "@polkadot/x-bigint": "13.3.1",
        "@polkadot/x-randomvalues": "13.3.1",
        "@scure/base": "^1.1.7",
        "tslib": "^2.8.0"
      },
      "engines": {
        "node": ">=18"
      },
      "peerDependencies": {
        "@polkadot/util": "13.3.1"
      }
    },
    "node_modules/@polkadot/wasm-bridge": {
      "version": "7.4.1",
      "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.4.1.tgz",
      "integrity": "sha512-tdkJaV453tezBxhF39r4oeG0A39sPKGDJmN81LYLf+Fihb7astzwju+u75BRmDrHZjZIv00un3razJEWCxze6g==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/wasm-util": "7.4.1",
        "tslib": "^2.7.0"
      },
      "engines": {
        "node": ">=18"
      },
      "peerDependencies": {
        "@polkadot/util": "*",
        "@polkadot/x-randomvalues": "*"
      }
    },
    "node_modules/@polkadot/wasm-crypto": {
      "version": "7.4.1",
      "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.4.1.tgz",
      "integrity": "sha512-kHN/kF7hYxm1y0WeFLWeWir6oTzvcFmR4N8fJJokR+ajYbdmrafPN+6iLgQVbhZnDdxyv9jWDuRRsDnBx8tPMQ==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/wasm-bridge": "7.4.1",
        "@polkadot/wasm-crypto-asmjs": "7.4.1",
        "@polkadot/wasm-crypto-init": "7.4.1",
        "@polkadot/wasm-crypto-wasm": "7.4.1",
        "@polkadot/wasm-util": "7.4.1",
        "tslib": "^2.7.0"
      },
      "engines": {
        "node": ">=18"
      },
      "peerDependencies": {
        "@polkadot/util": "*",
        "@polkadot/x-randomvalues": "*"
      }
    },
    "node_modules/@polkadot/wasm-crypto-asmjs": {
      "version": "7.4.1",
      "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.4.1.tgz",
      "integrity": "sha512-pwU8QXhUW7IberyHJIQr37IhbB6DPkCG5FhozCiNTq4vFBsFPjm9q8aZh7oX1QHQaiAZa2m2/VjIVE+FHGbvHQ==",
      "license": "Apache-2.0",
      "dependencies": {
        "tslib": "^2.7.0"
      },
      "engines": {
        "node": ">=18"
      },
      "peerDependencies": {
        "@polkadot/util": "*"
      }
    },
    "node_modules/@polkadot/wasm-crypto-init": {
      "version": "7.4.1",
      "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.4.1.tgz",
      "integrity": "sha512-AVka33+f7MvXEEIGq5U0dhaA2SaXMXnxVCQyhJTaCnJ5bRDj0Xlm3ijwDEQUiaDql7EikbkkRtmlvs95eSUWYQ==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/wasm-bridge": "7.4.1",
        "@polkadot/wasm-crypto-asmjs": "7.4.1",
        "@polkadot/wasm-crypto-wasm": "7.4.1",
        "@polkadot/wasm-util": "7.4.1",
        "tslib": "^2.7.0"
      },
      "engines": {
        "node": ">=18"
      },
      "peerDependencies": {
        "@polkadot/util": "*",
        "@polkadot/x-randomvalues": "*"
      }
    },
    "node_modules/@polkadot/wasm-crypto-wasm": {
      "version": "7.4.1",
      "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.4.1.tgz",
      "integrity": "sha512-PE1OAoupFR0ZOV2O8tr7D1FEUAwaggzxtfs3Aa5gr+yxlSOaWUKeqsOYe1KdrcjmZVV3iINEAXxgrbzCmiuONg==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/wasm-util": "7.4.1",
        "tslib": "^2.7.0"
      },
      "engines": {
        "node": ">=18"
      },
      "peerDependencies": {
        "@polkadot/util": "*"
      }
    },
    "node_modules/@polkadot/wasm-util": {
      "version": "7.4.1",
      "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.4.1.tgz",
      "integrity": "sha512-RAcxNFf3zzpkr+LX/ItAsvj+QyM56TomJ0xjUMo4wKkHjwsxkz4dWJtx5knIgQz/OthqSDMR59VNEycQeNuXzA==",
      "license": "Apache-2.0",
      "dependencies": {
        "tslib": "^2.7.0"
      },
      "engines": {
        "node": ">=18"
      },
      "peerDependencies": {
        "@polkadot/util": "*"
      }
    },
    "node_modules/@polkadot/x-bigint": {
      "version": "13.3.1",
      "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-13.3.1.tgz",
      "integrity": "sha512-ewc708a7LUdrT92v9DsSAIbcJQBn3aR9/LavF/iyMOq5lZJyPXDSjAnskfMs818R3RLCrKVKfs+aKkxt2eqo8g==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/x-global": "13.3.1",
        "tslib": "^2.8.0"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/x-fetch": {
      "version": "13.3.1",
      "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-13.3.1.tgz",
      "integrity": "sha512-J+HM42j0KGqdC/eo7vmsdLPz74MR7+0My4km6TG9HGjKqqztwygtenpopPod2SbRnL4nHiEG0wZzpVOW6HN2gw==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/x-global": "13.3.1",
        "node-fetch": "^3.3.2",
        "tslib": "^2.8.0"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/x-global": {
      "version": "13.3.1",
      "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-13.3.1.tgz",
      "integrity": "sha512-861TeIw49a3JvkwlUWrddfG+JaUqtFZDsemYxxZIjjcRJLrKOsoKNqHbiHi2OPrwlX8PwAA/wc5I9Q4XRQ7KEg==",
      "license": "Apache-2.0",
      "dependencies": {
        "tslib": "^2.8.0"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/x-randomvalues": {
      "version": "13.3.1",
      "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-13.3.1.tgz",
      "integrity": "sha512-GIb0au3vIX2U/DRH0PRckM+1I4EIbU8PLX1roGJgN1MAYKWiylJTKPVoBMafMM87o8qauOevJ46uYB/qlfbiWg==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/x-global": "13.3.1",
        "tslib": "^2.8.0"
      },
      "engines": {
        "node": ">=18"
      },
      "peerDependencies": {
        "@polkadot/util": "13.3.1",
        "@polkadot/wasm-util": "*"
      }
    },
    "node_modules/@polkadot/x-textdecoder": {
      "version": "13.3.1",
      "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-13.3.1.tgz",
      "integrity": "sha512-g2R9O1p0ZsNDhZ3uEBZh6fQaVLlo3yFr0YNqt15v7e9lBI4APvTJ202EINlo2jB5lz/R438/BdjEA3AL+0zUtQ==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/x-global": "13.3.1",
        "tslib": "^2.8.0"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/x-textencoder": {
      "version": "13.3.1",
      "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-13.3.1.tgz",
      "integrity": "sha512-DnHLUdoKDYxekfxopuUuPB+j5Mu7Jemejcduu5gz3/89GP/sYPAu0CAVbq9B+hK1yGjBBj31eA4wkAV1oktYmg==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/x-global": "13.3.1",
        "tslib": "^2.8.0"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@polkadot/x-ws": {
      "version": "13.3.1",
      "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-13.3.1.tgz",
      "integrity": "sha512-ytqkC7FwVs4BlzNFAmPMFp+xD1KIdMMP/mvCSOrnxjlsyM5DVGop4x4c2ZgDUBmrFqmIiVkWDfMIZeOxui2OLQ==",
      "license": "Apache-2.0",
      "dependencies": {
        "@polkadot/x-global": "13.3.1",
        "tslib": "^2.8.0",
        "ws": "^8.18.0"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/@scure/base": {
      "version": "1.2.4",
      "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.4.tgz",
      "integrity": "sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==",
      "license": "MIT",
      "funding": {
        "url": "https://paulmillr.com/funding/"
      }
    },
    "node_modules/@substrate/connect": {
      "version": "0.8.11",
      "resolved": "https://registry.npmjs.org/@substrate/connect/-/connect-0.8.11.tgz",
      "integrity": "sha512-ofLs1PAO9AtDdPbdyTYj217Pe+lBfTLltdHDs3ds8no0BseoLeAGxpz1mHfi7zB4IxI3YyAiLjH6U8cw4pj4Nw==",
      "deprecated": "versions below 1.x are no longer maintained",
      "license": "GPL-3.0-only",
      "optional": true,
      "dependencies": {
        "@substrate/connect-extension-protocol": "^2.0.0",
        "@substrate/connect-known-chains": "^1.1.5",
        "@substrate/light-client-extension-helpers": "^1.0.0",
        "smoldot": "2.0.26"
      }
    },
    "node_modules/@substrate/connect-extension-protocol": {
      "version": "2.2.1",
      "resolved": "https://registry.npmjs.org/@substrate/connect-extension-protocol/-/connect-extension-protocol-2.2.1.tgz",
      "integrity": "sha512-GoafTgm/Jey9E4Xlj4Z5ZBt/H4drH2CNq8VrAro80rtoznrXnFDNVivLQzZN0Xaj2g8YXSn9pC9Oc9IovYZJXw==",
      "license": "GPL-3.0-only",
      "optional": true
    },
    "node_modules/@substrate/connect-known-chains": {
      "version": "1.9.1",
      "resolved": "https://registry.npmjs.org/@substrate/connect-known-chains/-/connect-known-chains-1.9.1.tgz",
      "integrity": "sha512-dWNf5x3hjrY4s+WEovPKL0jH58pyIaIiAM918aAdnp/VKkAMqOfhKzRWL7BqJDKCm95bL4fqnOfaXZ3SQpVoYw==",
      "license": "GPL-3.0-only",
      "optional": true
    },
    "node_modules/@substrate/light-client-extension-helpers": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/@substrate/light-client-extension-helpers/-/light-client-extension-helpers-1.0.0.tgz",
      "integrity": "sha512-TdKlni1mBBZptOaeVrKnusMg/UBpWUORNDv5fdCaJklP4RJiFOzBCrzC+CyVI5kQzsXBisZ+2pXm+rIjS38kHg==",
      "license": "MIT",
      "optional": true,
      "dependencies": {
        "@polkadot-api/json-rpc-provider": "^0.0.1",
        "@polkadot-api/json-rpc-provider-proxy": "^0.1.0",
        "@polkadot-api/observable-client": "^0.3.0",
        "@polkadot-api/substrate-client": "^0.1.2",
        "@substrate/connect-extension-protocol": "^2.0.0",
        "@substrate/connect-known-chains": "^1.1.5",
        "rxjs": "^7.8.1"
      },
      "peerDependencies": {
        "smoldot": "2.x"
      }
    },
    "node_modules/@substrate/ss58-registry": {
      "version": "1.51.0",
      "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.51.0.tgz",
      "integrity": "sha512-TWDurLiPxndFgKjVavCniytBIw+t4ViOi7TYp9h/D0NMmkEc9klFTo+827eyEJ0lELpqO207Ey7uGxUa+BS1jQ==",
      "license": "Apache-2.0"
    },
    "node_modules/@types/bn.js": {
      "version": "5.1.6",
      "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz",
      "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==",
      "license": "MIT",
      "dependencies": {
        "@types/node": "*"
      }
    },
    "node_modules/@types/node": {
      "version": "22.13.1",
      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz",
      "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==",
      "license": "MIT",
      "dependencies": {
        "undici-types": "~6.20.0"
      }
    },
    "node_modules/bn.js": {
      "version": "5.2.1",
      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
      "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
      "license": "MIT"
    },
    "node_modules/data-uri-to-buffer": {
      "version": "4.0.1",
      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
      "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
      "license": "MIT",
      "engines": {
        "node": ">= 12"
      }
    },
    "node_modules/debug": {
      "version": "4.4.0",
      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
      "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
      "license": "MIT",
      "dependencies": {
        "ms": "^2.1.3"
      },
      "engines": {
        "node": ">=6.0"
      },
      "peerDependenciesMeta": {
        "supports-color": {
          "optional": true
        }
      }
    },
    "node_modules/eventemitter3": {
      "version": "5.0.1",
      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
      "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
      "license": "MIT"
    },
    "node_modules/fetch-blob": {
      "version": "3.2.0",
      "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
      "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
      "funding": [
        {
          "type": "github",
          "url": "https://github.com/sponsors/jimmywarting"
        },
        {
          "type": "paypal",
          "url": "https://paypal.me/jimmywarting"
        }
      ],
      "license": "MIT",
      "dependencies": {
        "node-domexception": "^1.0.0",
        "web-streams-polyfill": "^3.0.3"
      },
      "engines": {
        "node": "^12.20 || >= 14.13"
      }
    },
    "node_modules/formdata-polyfill": {
      "version": "4.0.10",
      "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
      "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
      "license": "MIT",
      "dependencies": {
        "fetch-blob": "^3.1.2"
      },
      "engines": {
        "node": ">=12.20.0"
      }
    },
    "node_modules/json-stringify-safe": {
      "version": "5.0.1",
      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
      "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
      "license": "ISC"
    },
    "node_modules/mock-socket": {
      "version": "9.3.1",
      "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.3.1.tgz",
      "integrity": "sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==",
      "license": "MIT",
      "engines": {
        "node": ">= 8"
      }
    },
    "node_modules/ms": {
      "version": "2.1.3",
      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
      "license": "MIT"
    },
    "node_modules/nock": {
      "version": "13.5.6",
      "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.6.tgz",
      "integrity": "sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==",
      "license": "MIT",
      "dependencies": {
        "debug": "^4.1.0",
        "json-stringify-safe": "^5.0.1",
        "propagate": "^2.0.0"
      },
      "engines": {
        "node": ">= 10.13"
      }
    },
    "node_modules/node-domexception": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
      "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
      "funding": [
        {
          "type": "github",
          "url": "https://github.com/sponsors/jimmywarting"
        },
        {
          "type": "github",
          "url": "https://paypal.me/jimmywarting"
        }
      ],
      "license": "MIT",
      "engines": {
        "node": ">=10.5.0"
      }
    },
    "node_modules/node-fetch": {
      "version": "3.3.2",
      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
      "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
      "license": "MIT",
      "dependencies": {
        "data-uri-to-buffer": "^4.0.0",
        "fetch-blob": "^3.1.4",
        "formdata-polyfill": "^4.0.10"
      },
      "engines": {
        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
      },
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/node-fetch"
      }
    },
    "node_modules/propagate": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz",
      "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
      "license": "MIT",
      "engines": {
        "node": ">= 8"
      }
    },
    "node_modules/rxjs": {
      "version": "7.8.1",
      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
      "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
      "license": "Apache-2.0",
      "dependencies": {
        "tslib": "^2.1.0"
      }
    },
    "node_modules/scale-ts": {
      "version": "1.6.1",
      "resolved": "https://registry.npmjs.org/scale-ts/-/scale-ts-1.6.1.tgz",
      "integrity": "sha512-PBMc2AWc6wSEqJYBDPcyCLUj9/tMKnLX70jLOSndMtcUoLQucP/DM0vnQo1wJAYjTrQiq8iG9rD0q6wFzgjH7g==",
      "license": "MIT",
      "optional": true
    },
    "node_modules/smoldot": {
      "version": "2.0.26",
      "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-2.0.26.tgz",
      "integrity": "sha512-F+qYmH4z2s2FK+CxGj8moYcd1ekSIKH8ywkdqlOz88Dat35iB1DIYL11aILN46YSGMzQW/lbJNS307zBSDN5Ig==",
      "license": "GPL-3.0-or-later WITH Classpath-exception-2.0",
      "optional": true,
      "dependencies": {
        "ws": "^8.8.1"
      }
    },
    "node_modules/tslib": {
      "version": "2.8.1",
      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
      "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
      "license": "0BSD"
    },
    "node_modules/undici-types": {
      "version": "6.20.0",
      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
      "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
      "license": "MIT"
    },
    "node_modules/web-streams-polyfill": {
      "version": "3.3.3",
      "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
      "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
      "license": "MIT",
      "engines": {
        "node": ">= 8"
      }
    },
    "node_modules/ws": {
      "version": "8.18.0",
      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
      "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
      "license": "MIT",
      "engines": {
        "node": ">=10.0.0"
      },
      "peerDependencies": {
        "bufferutil": "^4.0.1",
        "utf-8-validate": ">=5.0.2"
      },
      "peerDependenciesMeta": {
        "bufferutil": {
          "optional": true
        },
        "utf-8-validate": {
          "optional": true
        }
      }
    }
  }
}
{
  "name": "generate-signature",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
    "@polkadot/api": "^15.5.2",
    "@polkadot/keyring": "^13.3.1",
    "@polkadot/types": "^15.5.2",
    "@polkadot/util": "^13.3.1",
    "@polkadot/wasm-crypto": "^7.4.1"
  }
}
diff --git a/scripts/generate-signature/package-lock.json b/scripts/generate-signature/package-lock.json
new file mode 100644
index 0000000..86de335
--- /dev/null
+++ b/scripts/generate-signature/package-lock.json
@@ -0,0 +1,929 @@
+{
+  "name": "generate-signature",
+  "version": "1.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "generate-signature",
+      "version": "1.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "@polkadot/api": "^15.5.2",
+        "@polkadot/keyring": "^13.3.1",
+        "@polkadot/types": "^15.5.2",
+        "@polkadot/util": "^13.3.1",
+        "@polkadot/wasm-crypto": "^7.4.1"
+      }
+    },
+    "node_modules/@noble/curves": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz",
+      "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@noble/hashes": "1.7.1"
+      },
+      "engines": {
+        "node": "^14.21.3 || >=16"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/@noble/hashes": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz",
+      "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==",
+      "license": "MIT",
+      "engines": {
+        "node": "^14.21.3 || >=16"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/@polkadot-api/json-rpc-provider": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.0.1.tgz",
+      "integrity": "sha512-/SMC/l7foRjpykLTUTacIH05H3mr9ip8b5xxfwXlVezXrNVLp3Cv0GX6uItkKd+ZjzVPf3PFrDF2B2/HLSNESA==",
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/@polkadot-api/json-rpc-provider-proxy": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.1.0.tgz",
+      "integrity": "sha512-8GSFE5+EF73MCuLQm8tjrbCqlgclcHBSRaswvXziJ0ZW7iw3UEMsKkkKvELayWyBuOPa2T5i1nj6gFOeIsqvrg==",
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/@polkadot-api/metadata-builders": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.3.2.tgz",
+      "integrity": "sha512-TKpfoT6vTb+513KDzMBTfCb/ORdgRnsS3TDFpOhAhZ08ikvK+hjHMt5plPiAX/OWkm1Wc9I3+K6W0hX5Ab7MVg==",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "@polkadot-api/substrate-bindings": "0.6.0",
+        "@polkadot-api/utils": "0.1.0"
+      }
+    },
+    "node_modules/@polkadot-api/observable-client": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.3.2.tgz",
+      "integrity": "sha512-HGgqWgEutVyOBXoGOPp4+IAq6CNdK/3MfQJmhCJb8YaJiaK4W6aRGrdQuQSTPHfERHCARt9BrOmEvTXAT257Ug==",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "@polkadot-api/metadata-builders": "0.3.2",
+        "@polkadot-api/substrate-bindings": "0.6.0",
+        "@polkadot-api/utils": "0.1.0"
+      },
+      "peerDependencies": {
+        "@polkadot-api/substrate-client": "0.1.4",
+        "rxjs": ">=7.8.0"
+      }
+    },
+    "node_modules/@polkadot-api/substrate-bindings": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.6.0.tgz",
+      "integrity": "sha512-lGuhE74NA1/PqdN7fKFdE5C1gNYX357j1tWzdlPXI0kQ7h3kN0zfxNOpPUN7dIrPcOFZ6C0tRRVrBylXkI6xPw==",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "@noble/hashes": "^1.3.1",
+        "@polkadot-api/utils": "0.1.0",
+        "@scure/base": "^1.1.1",
+        "scale-ts": "^1.6.0"
+      }
+    },
+    "node_modules/@polkadot-api/substrate-client": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.1.4.tgz",
+      "integrity": "sha512-MljrPobN0ZWTpn++da9vOvt+Ex+NlqTlr/XT7zi9sqPtDJiQcYl+d29hFAgpaeTqbeQKZwz3WDE9xcEfLE8c5A==",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "@polkadot-api/json-rpc-provider": "0.0.1",
+        "@polkadot-api/utils": "0.1.0"
+      }
+    },
+    "node_modules/@polkadot-api/utils": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.1.0.tgz",
+      "integrity": "sha512-MXzWZeuGxKizPx2Xf/47wx9sr/uxKw39bVJUptTJdsaQn/TGq+z310mHzf1RCGvC1diHM8f593KrnDgc9oNbJA==",
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/@polkadot/api": {
+      "version": "15.5.2",
+      "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-15.5.2.tgz",
+      "integrity": "sha512-TZPJlnoYr5kAfINooSmbvUcUCQnKDmTdLKNJmMh7CvCOYqQSJjFnMyfxhjM1bBTIcqnP9nFIGkldy19ErZHtcQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/api-augment": "15.5.2",
+        "@polkadot/api-base": "15.5.2",
+        "@polkadot/api-derive": "15.5.2",
+        "@polkadot/keyring": "^13.3.1",
+        "@polkadot/rpc-augment": "15.5.2",
+        "@polkadot/rpc-core": "15.5.2",
+        "@polkadot/rpc-provider": "15.5.2",
+        "@polkadot/types": "15.5.2",
+        "@polkadot/types-augment": "15.5.2",
+        "@polkadot/types-codec": "15.5.2",
+        "@polkadot/types-create": "15.5.2",
+        "@polkadot/types-known": "15.5.2",
+        "@polkadot/util": "^13.3.1",
+        "@polkadot/util-crypto": "^13.3.1",
+        "eventemitter3": "^5.0.1",
+        "rxjs": "^7.8.1",
+        "tslib": "^2.8.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/api-augment": {
+      "version": "15.5.2",
+      "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-15.5.2.tgz",
+      "integrity": "sha512-EuE13KeifPj6PBfR3qMtqCq+Clbly/VX5adh53ljw7XTtHt8MKTlvhTK9pO9WHnixL6hUVH1f/Ekuzt8ROhpAg==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/api-base": "15.5.2",
+        "@polkadot/rpc-augment": "15.5.2",
+        "@polkadot/types": "15.5.2",
+        "@polkadot/types-augment": "15.5.2",
+        "@polkadot/types-codec": "15.5.2",
+        "@polkadot/util": "^13.3.1",
+        "tslib": "^2.8.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/api-base": {
+      "version": "15.5.2",
+      "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-15.5.2.tgz",
+      "integrity": "sha512-e8W2KRwn6pkI/JIOrOCT2RsVil072vxQ95X2HCqu5eMmn5vwyOHB2OaMWezXikMegnCF3XEDeIzSP/VxGWW+zA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/rpc-core": "15.5.2",
+        "@polkadot/types": "15.5.2",
+        "@polkadot/util": "^13.3.1",
+        "rxjs": "^7.8.1",
+        "tslib": "^2.8.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/api-derive": {
+      "version": "15.5.2",
+      "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-15.5.2.tgz",
+      "integrity": "sha512-eSSPE0O9LE9jsRJIBqrPfHa7vCjE3NR+3ATdwAKBwK9LUfeCEEWud7c53njW8wLMSOiczxcX3JS2J9Rb0q7HCA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/api": "15.5.2",
+        "@polkadot/api-augment": "15.5.2",
+        "@polkadot/api-base": "15.5.2",
+        "@polkadot/rpc-core": "15.5.2",
+        "@polkadot/types": "15.5.2",
+        "@polkadot/types-codec": "15.5.2",
+        "@polkadot/util": "^13.3.1",
+        "@polkadot/util-crypto": "^13.3.1",
+        "rxjs": "^7.8.1",
+        "tslib": "^2.8.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/keyring": {
+      "version": "13.3.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-13.3.1.tgz",
+      "integrity": "sha512-PT3uG9MqciPyoEz/f23RRMSlht77fo1hZaA1Vbcs1Rz7h7qFC0+7jFI9Ak30EJh9V0I2YugfzqAe3NjjyDxlvw==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/util": "13.3.1",
+        "@polkadot/util-crypto": "13.3.1",
+        "tslib": "^2.8.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@polkadot/util": "13.3.1",
+        "@polkadot/util-crypto": "13.3.1"
+      }
+    },
+    "node_modules/@polkadot/networks": {
+      "version": "13.3.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-13.3.1.tgz",
+      "integrity": "sha512-g/0OmCMUrbbW4RQ/xajTYd2SMJvFKY4kmMvpxtNN57hWQpY7c5oDXSz57jGH2uwvcBWeDfaNokcS+9hJL1RBcA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/util": "13.3.1",
+        "@substrate/ss58-registry": "^1.51.0",
+        "tslib": "^2.8.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/rpc-augment": {
+      "version": "15.5.2",
+      "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-15.5.2.tgz",
+      "integrity": "sha512-eDCcmgrb/csOcav/RRBPFkOdPRvRXVYlksCGlQuzobYkPZfPz5tIKmgenip/5qnviR6gag6tK9ara+8kZ/7tpw==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/rpc-core": "15.5.2",
+        "@polkadot/types": "15.5.2",
+        "@polkadot/types-codec": "15.5.2",
+        "@polkadot/util": "^13.3.1",
+        "tslib": "^2.8.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/rpc-core": {
+      "version": "15.5.2",
+      "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-15.5.2.tgz",
+      "integrity": "sha512-a4Xq3iEJvRA9gHE+QxMaIEOkgjuZUfW+uI3XLDtPgtxu2yF3hceyRl/K1m6E4AXR383VaxQ45wvDS1odPbmwaw==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/rpc-augment": "15.5.2",
+        "@polkadot/rpc-provider": "15.5.2",
+        "@polkadot/types": "15.5.2",
+        "@polkadot/util": "^13.3.1",
+        "rxjs": "^7.8.1",
+        "tslib": "^2.8.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/rpc-provider": {
+      "version": "15.5.2",
+      "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-15.5.2.tgz",
+      "integrity": "sha512-LHDG4mY5moFdVyUuEyuF9hMVWgA+DoLeNYZjtOL88gSALpfjhBLt1Hjbm3R6VwvcxeVNTkteVGvCo0AlH123JQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/keyring": "^13.3.1",
+        "@polkadot/types": "15.5.2",
+        "@polkadot/types-support": "15.5.2",
+        "@polkadot/util": "^13.3.1",
+        "@polkadot/util-crypto": "^13.3.1",
+        "@polkadot/x-fetch": "^13.3.1",
+        "@polkadot/x-global": "^13.3.1",
+        "@polkadot/x-ws": "^13.3.1",
+        "eventemitter3": "^5.0.1",
+        "mock-socket": "^9.3.1",
+        "nock": "^13.5.5",
+        "tslib": "^2.8.1"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "optionalDependencies": {
+        "@substrate/connect": "0.8.11"
+      }
+    },
+    "node_modules/@polkadot/types": {
+      "version": "15.5.2",
+      "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-15.5.2.tgz",
+      "integrity": "sha512-TANrhfovLgbG00ldFvZbOuwyzqibOOMAU9egGqnoFwz4x4vTNTBgNJRvQGF5w4+FhjcEepdxlLU/3yqFM98yzA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/keyring": "^13.3.1",
+        "@polkadot/types-augment": "15.5.2",
+        "@polkadot/types-codec": "15.5.2",
+        "@polkadot/types-create": "15.5.2",
+        "@polkadot/util": "^13.3.1",
+        "@polkadot/util-crypto": "^13.3.1",
+        "rxjs": "^7.8.1",
+        "tslib": "^2.8.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/types-augment": {
+      "version": "15.5.2",
+      "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-15.5.2.tgz",
+      "integrity": "sha512-Za5ifsiu2gSQkOBjwcCtCr5nz+PojsBoptdHKjMm0JHLgilNn0kNqriqRRrCiPkUO1656UXRQNCHpP6Vs8tncg==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/types": "15.5.2",
+        "@polkadot/types-codec": "15.5.2",
+        "@polkadot/util": "^13.3.1",
+        "tslib": "^2.8.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/types-codec": {
+      "version": "15.5.2",
+      "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-15.5.2.tgz",
+      "integrity": "sha512-caQNGQ+QHVZV4hGSolYN9L9pMRZeo9rJzYoybT5LMIxX8QVdW3RM5HDesj1SKGSrgIJmooN4/5JzPjrFZ4C7Vw==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/util": "^13.3.1",
+        "@polkadot/x-bigint": "^13.3.1",
+        "tslib": "^2.8.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/types-create": {
+      "version": "15.5.2",
+      "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-15.5.2.tgz",
+      "integrity": "sha512-PbrT2mP5x7VTpwCZa/BCl8jl3y/s6UOwrjBL+pq8TErLEbkackn5a3cR4GaH9toeP5qlEaLbSWRFm24YcW8FOg==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/types-codec": "15.5.2",
+        "@polkadot/util": "^13.3.1",
+        "tslib": "^2.8.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/types-known": {
+      "version": "15.5.2",
+      "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-15.5.2.tgz",
+      "integrity": "sha512-4yk1DnIeAy4uImFf4yDyRRdgkf5nAagQzPZWO61uxhEA+Q2MxLHLDeLbUwFiLxLLvpM09Xke8rGbem/vPRg9nA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/networks": "^13.3.1",
+        "@polkadot/types": "15.5.2",
+        "@polkadot/types-codec": "15.5.2",
+        "@polkadot/types-create": "15.5.2",
+        "@polkadot/util": "^13.3.1",
+        "tslib": "^2.8.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/types-support": {
+      "version": "15.5.2",
+      "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-15.5.2.tgz",
+      "integrity": "sha512-PT3MTSy69euAPtRQ3c2I7vM0OfAIQXU1yIWpYTcEkG+spTn4d0fcYeJjfxvAmcROJlpJoXf10YMsXKwx+gvOig==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/util": "^13.3.1",
+        "tslib": "^2.8.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/util": {
+      "version": "13.3.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-13.3.1.tgz",
+      "integrity": "sha512-5crLP/rUZOJzuo/W8t73J8PxpibJ5vrxY57rR6V+mIpCZd1ORiw0wxeHcV5F9Adpn7yJyuGBwxPbueNR5Rr1Zw==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/x-bigint": "13.3.1",
+        "@polkadot/x-global": "13.3.1",
+        "@polkadot/x-textdecoder": "13.3.1",
+        "@polkadot/x-textencoder": "13.3.1",
+        "@types/bn.js": "^5.1.6",
+        "bn.js": "^5.2.1",
+        "tslib": "^2.8.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/util-crypto": {
+      "version": "13.3.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-13.3.1.tgz",
+      "integrity": "sha512-FU6yf3IY++DKlf0eqO9/obe2y1zuZ5rbqRs75fyOME/5VXio1fA3GIpW7aFphyneFRd78G8QLh8kn0oIwBGMNg==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@noble/curves": "^1.3.0",
+        "@noble/hashes": "^1.3.3",
+        "@polkadot/networks": "13.3.1",
+        "@polkadot/util": "13.3.1",
+        "@polkadot/wasm-crypto": "^7.4.1",
+        "@polkadot/wasm-util": "^7.4.1",
+        "@polkadot/x-bigint": "13.3.1",
+        "@polkadot/x-randomvalues": "13.3.1",
+        "@scure/base": "^1.1.7",
+        "tslib": "^2.8.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@polkadot/util": "13.3.1"
+      }
+    },
+    "node_modules/@polkadot/wasm-bridge": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.4.1.tgz",
+      "integrity": "sha512-tdkJaV453tezBxhF39r4oeG0A39sPKGDJmN81LYLf+Fihb7astzwju+u75BRmDrHZjZIv00un3razJEWCxze6g==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/wasm-util": "7.4.1",
+        "tslib": "^2.7.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@polkadot/util": "*",
+        "@polkadot/x-randomvalues": "*"
+      }
+    },
+    "node_modules/@polkadot/wasm-crypto": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.4.1.tgz",
+      "integrity": "sha512-kHN/kF7hYxm1y0WeFLWeWir6oTzvcFmR4N8fJJokR+ajYbdmrafPN+6iLgQVbhZnDdxyv9jWDuRRsDnBx8tPMQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/wasm-bridge": "7.4.1",
+        "@polkadot/wasm-crypto-asmjs": "7.4.1",
+        "@polkadot/wasm-crypto-init": "7.4.1",
+        "@polkadot/wasm-crypto-wasm": "7.4.1",
+        "@polkadot/wasm-util": "7.4.1",
+        "tslib": "^2.7.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@polkadot/util": "*",
+        "@polkadot/x-randomvalues": "*"
+      }
+    },
+    "node_modules/@polkadot/wasm-crypto-asmjs": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.4.1.tgz",
+      "integrity": "sha512-pwU8QXhUW7IberyHJIQr37IhbB6DPkCG5FhozCiNTq4vFBsFPjm9q8aZh7oX1QHQaiAZa2m2/VjIVE+FHGbvHQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "tslib": "^2.7.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@polkadot/util": "*"
+      }
+    },
+    "node_modules/@polkadot/wasm-crypto-init": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.4.1.tgz",
+      "integrity": "sha512-AVka33+f7MvXEEIGq5U0dhaA2SaXMXnxVCQyhJTaCnJ5bRDj0Xlm3ijwDEQUiaDql7EikbkkRtmlvs95eSUWYQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/wasm-bridge": "7.4.1",
+        "@polkadot/wasm-crypto-asmjs": "7.4.1",
+        "@polkadot/wasm-crypto-wasm": "7.4.1",
+        "@polkadot/wasm-util": "7.4.1",
+        "tslib": "^2.7.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@polkadot/util": "*",
+        "@polkadot/x-randomvalues": "*"
+      }
+    },
+    "node_modules/@polkadot/wasm-crypto-wasm": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.4.1.tgz",
+      "integrity": "sha512-PE1OAoupFR0ZOV2O8tr7D1FEUAwaggzxtfs3Aa5gr+yxlSOaWUKeqsOYe1KdrcjmZVV3iINEAXxgrbzCmiuONg==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/wasm-util": "7.4.1",
+        "tslib": "^2.7.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@polkadot/util": "*"
+      }
+    },
+    "node_modules/@polkadot/wasm-util": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.4.1.tgz",
+      "integrity": "sha512-RAcxNFf3zzpkr+LX/ItAsvj+QyM56TomJ0xjUMo4wKkHjwsxkz4dWJtx5knIgQz/OthqSDMR59VNEycQeNuXzA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "tslib": "^2.7.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@polkadot/util": "*"
+      }
+    },
+    "node_modules/@polkadot/x-bigint": {
+      "version": "13.3.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-13.3.1.tgz",
+      "integrity": "sha512-ewc708a7LUdrT92v9DsSAIbcJQBn3aR9/LavF/iyMOq5lZJyPXDSjAnskfMs818R3RLCrKVKfs+aKkxt2eqo8g==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/x-global": "13.3.1",
+        "tslib": "^2.8.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/x-fetch": {
+      "version": "13.3.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-13.3.1.tgz",
+      "integrity": "sha512-J+HM42j0KGqdC/eo7vmsdLPz74MR7+0My4km6TG9HGjKqqztwygtenpopPod2SbRnL4nHiEG0wZzpVOW6HN2gw==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/x-global": "13.3.1",
+        "node-fetch": "^3.3.2",
+        "tslib": "^2.8.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/x-global": {
+      "version": "13.3.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-13.3.1.tgz",
+      "integrity": "sha512-861TeIw49a3JvkwlUWrddfG+JaUqtFZDsemYxxZIjjcRJLrKOsoKNqHbiHi2OPrwlX8PwAA/wc5I9Q4XRQ7KEg==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "tslib": "^2.8.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/x-randomvalues": {
+      "version": "13.3.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-13.3.1.tgz",
+      "integrity": "sha512-GIb0au3vIX2U/DRH0PRckM+1I4EIbU8PLX1roGJgN1MAYKWiylJTKPVoBMafMM87o8qauOevJ46uYB/qlfbiWg==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/x-global": "13.3.1",
+        "tslib": "^2.8.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@polkadot/util": "13.3.1",
+        "@polkadot/wasm-util": "*"
+      }
+    },
+    "node_modules/@polkadot/x-textdecoder": {
+      "version": "13.3.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-13.3.1.tgz",
+      "integrity": "sha512-g2R9O1p0ZsNDhZ3uEBZh6fQaVLlo3yFr0YNqt15v7e9lBI4APvTJ202EINlo2jB5lz/R438/BdjEA3AL+0zUtQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/x-global": "13.3.1",
+        "tslib": "^2.8.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/x-textencoder": {
+      "version": "13.3.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-13.3.1.tgz",
+      "integrity": "sha512-DnHLUdoKDYxekfxopuUuPB+j5Mu7Jemejcduu5gz3/89GP/sYPAu0CAVbq9B+hK1yGjBBj31eA4wkAV1oktYmg==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/x-global": "13.3.1",
+        "tslib": "^2.8.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@polkadot/x-ws": {
+      "version": "13.3.1",
+      "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-13.3.1.tgz",
+      "integrity": "sha512-ytqkC7FwVs4BlzNFAmPMFp+xD1KIdMMP/mvCSOrnxjlsyM5DVGop4x4c2ZgDUBmrFqmIiVkWDfMIZeOxui2OLQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@polkadot/x-global": "13.3.1",
+        "tslib": "^2.8.0",
+        "ws": "^8.18.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@scure/base": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.4.tgz",
+      "integrity": "sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/@substrate/connect": {
+      "version": "0.8.11",
+      "resolved": "https://registry.npmjs.org/@substrate/connect/-/connect-0.8.11.tgz",
+      "integrity": "sha512-ofLs1PAO9AtDdPbdyTYj217Pe+lBfTLltdHDs3ds8no0BseoLeAGxpz1mHfi7zB4IxI3YyAiLjH6U8cw4pj4Nw==",
+      "deprecated": "versions below 1.x are no longer maintained",
+      "license": "GPL-3.0-only",
+      "optional": true,
+      "dependencies": {
+        "@substrate/connect-extension-protocol": "^2.0.0",
+        "@substrate/connect-known-chains": "^1.1.5",
+        "@substrate/light-client-extension-helpers": "^1.0.0",
+        "smoldot": "2.0.26"
+      }
+    },
+    "node_modules/@substrate/connect-extension-protocol": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/@substrate/connect-extension-protocol/-/connect-extension-protocol-2.2.1.tgz",
+      "integrity": "sha512-GoafTgm/Jey9E4Xlj4Z5ZBt/H4drH2CNq8VrAro80rtoznrXnFDNVivLQzZN0Xaj2g8YXSn9pC9Oc9IovYZJXw==",
+      "license": "GPL-3.0-only",
+      "optional": true
+    },
+    "node_modules/@substrate/connect-known-chains": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/@substrate/connect-known-chains/-/connect-known-chains-1.9.1.tgz",
+      "integrity": "sha512-dWNf5x3hjrY4s+WEovPKL0jH58pyIaIiAM918aAdnp/VKkAMqOfhKzRWL7BqJDKCm95bL4fqnOfaXZ3SQpVoYw==",
+      "license": "GPL-3.0-only",
+      "optional": true
+    },
+    "node_modules/@substrate/light-client-extension-helpers": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@substrate/light-client-extension-helpers/-/light-client-extension-helpers-1.0.0.tgz",
+      "integrity": "sha512-TdKlni1mBBZptOaeVrKnusMg/UBpWUORNDv5fdCaJklP4RJiFOzBCrzC+CyVI5kQzsXBisZ+2pXm+rIjS38kHg==",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "@polkadot-api/json-rpc-provider": "^0.0.1",
+        "@polkadot-api/json-rpc-provider-proxy": "^0.1.0",
+        "@polkadot-api/observable-client": "^0.3.0",
+        "@polkadot-api/substrate-client": "^0.1.2",
+        "@substrate/connect-extension-protocol": "^2.0.0",
+        "@substrate/connect-known-chains": "^1.1.5",
+        "rxjs": "^7.8.1"
+      },
+      "peerDependencies": {
+        "smoldot": "2.x"
+      }
+    },
+    "node_modules/@substrate/ss58-registry": {
+      "version": "1.51.0",
+      "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.51.0.tgz",
+      "integrity": "sha512-TWDurLiPxndFgKjVavCniytBIw+t4ViOi7TYp9h/D0NMmkEc9klFTo+827eyEJ0lELpqO207Ey7uGxUa+BS1jQ==",
+      "license": "Apache-2.0"
+    },
+    "node_modules/@types/bn.js": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz",
+      "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/node": {
+      "version": "22.13.1",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz",
+      "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==",
+      "license": "MIT",
+      "dependencies": {
+        "undici-types": "~6.20.0"
+      }
+    },
+    "node_modules/bn.js": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+      "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+      "license": "MIT"
+    },
+    "node_modules/data-uri-to-buffer": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
+      "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 12"
+      }
+    },
+    "node_modules/debug": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+      "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "^2.1.3"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/eventemitter3": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
+      "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
+      "license": "MIT"
+    },
+    "node_modules/fetch-blob": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
+      "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/jimmywarting"
+        },
+        {
+          "type": "paypal",
+          "url": "https://paypal.me/jimmywarting"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "node-domexception": "^1.0.0",
+        "web-streams-polyfill": "^3.0.3"
+      },
+      "engines": {
+        "node": "^12.20 || >= 14.13"
+      }
+    },
+    "node_modules/formdata-polyfill": {
+      "version": "4.0.10",
+      "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
+      "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
+      "license": "MIT",
+      "dependencies": {
+        "fetch-blob": "^3.1.2"
+      },
+      "engines": {
+        "node": ">=12.20.0"
+      }
+    },
+    "node_modules/json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+      "license": "ISC"
+    },
+    "node_modules/mock-socket": {
+      "version": "9.3.1",
+      "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.3.1.tgz",
+      "integrity": "sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+      "license": "MIT"
+    },
+    "node_modules/nock": {
+      "version": "13.5.6",
+      "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.6.tgz",
+      "integrity": "sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^4.1.0",
+        "json-stringify-safe": "^5.0.1",
+        "propagate": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 10.13"
+      }
+    },
+    "node_modules/node-domexception": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+      "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/jimmywarting"
+        },
+        {
+          "type": "github",
+          "url": "https://paypal.me/jimmywarting"
+        }
+      ],
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.5.0"
+      }
+    },
+    "node_modules/node-fetch": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
+      "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
+      "license": "MIT",
+      "dependencies": {
+        "data-uri-to-buffer": "^4.0.0",
+        "fetch-blob": "^3.1.4",
+        "formdata-polyfill": "^4.0.10"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/node-fetch"
+      }
+    },
+    "node_modules/propagate": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz",
+      "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/rxjs": {
+      "version": "7.8.1",
+      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+      "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "tslib": "^2.1.0"
+      }
+    },
+    "node_modules/scale-ts": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/scale-ts/-/scale-ts-1.6.1.tgz",
+      "integrity": "sha512-PBMc2AWc6wSEqJYBDPcyCLUj9/tMKnLX70jLOSndMtcUoLQucP/DM0vnQo1wJAYjTrQiq8iG9rD0q6wFzgjH7g==",
+      "license": "MIT",
+      "optional": true
+    },
+    "node_modules/smoldot": {
+      "version": "2.0.26",
+      "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-2.0.26.tgz",
+      "integrity": "sha512-F+qYmH4z2s2FK+CxGj8moYcd1ekSIKH8ywkdqlOz88Dat35iB1DIYL11aILN46YSGMzQW/lbJNS307zBSDN5Ig==",
+      "license": "GPL-3.0-or-later WITH Classpath-exception-2.0",
+      "optional": true,
+      "dependencies": {
+        "ws": "^8.8.1"
+      }
+    },
+    "node_modules/tslib": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+      "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+      "license": "0BSD"
+    },
+    "node_modules/undici-types": {
+      "version": "6.20.0",
+      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
+      "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
+      "license": "MIT"
+    },
+    "node_modules/web-streams-polyfill": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
+      "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/ws": {
+      "version": "8.18.0",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+      "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    }
+  }
+}
diff --git a/scripts/generate-signature/package.json b/scripts/generate-signature/package.json
new file mode 100644
index 0000000..93be3ba
--- /dev/null
+++ b/scripts/generate-signature/package.json
@@ -0,0 +1,19 @@
+{
+  "name": "generate-signature",
+  "version": "1.0.0",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "keywords": [],
+  "author": "",
+  "license": "ISC",
+  "description": "",
+  "dependencies": {
+    "@polkadot/api": "^15.5.2",
+    "@polkadot/keyring": "^13.3.1",
+    "@polkadot/types": "^15.5.2",
+    "@polkadot/util": "^13.3.1",
+    "@polkadot/wasm-crypto": "^7.4.1"
+  }
+}