Initial commit: Pezkuwi SDK UI

Comprehensive web interface for interacting with Pezkuwi blockchain.

Features:
- Blockchain explorer
- Wallet management
- Staking interface
- Governance participation
- Developer tools

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-19 13:55:36 +03:00
commit d949863789
5831 changed files with 327739 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
node_modules
build
.git
+10
View File
@@ -0,0 +1,10 @@
root = true
[*]
indent_style=space
indent_size=2
tab_width=2
end_of_line=lf
charset=utf-8
trim_trailing_whitespace=true
max_line_length=120
insert_final_newline=true
+4
View File
@@ -0,0 +1,4 @@
# You can define all your ENV in such a file and run docker as:
# docker run ... --env-file .env ...
WS_URL=ws://localhost:9944
POLKADOT_UI_SAMPLE=42
+32
View File
@@ -0,0 +1,32 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 10
groups:
pezkuwi-packages:
patterns:
- "@pezkuwi/*"
react:
patterns:
- "react"
- "react-dom"
- "@types/react"
- "@types/react-dom"
testing:
patterns:
- "@testing-library/*"
- "jest"
- "@types/jest"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-patch"]
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
+104
View File
@@ -0,0 +1,104 @@
name: CI
on:
push:
branches: [main, master, develop]
pull_request:
branches: [main, master, develop]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Enable Corepack
run: corepack enable
- name: Install dependencies
run: yarn install --immutable
- name: Run linter
run: yarn lint
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Enable Corepack
run: corepack enable
- name: Install dependencies
run: yarn install --immutable
- name: Build
run: yarn build
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Enable Corepack
run: corepack enable
- name: Install dependencies
run: yarn install --immutable
- name: Run tests
run: yarn test
build-web:
name: Build Web
runs-on: ubuntu-latest
needs: [lint, build]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Enable Corepack
run: corepack enable
- name: Install dependencies
run: yarn install --immutable
- name: Build web application
run: yarn build:www
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: web-build
path: packages/apps/build
retention-days: 7
+76
View File
@@ -0,0 +1,76 @@
name: Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
release:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Enable Corepack
run: corepack enable
- name: Install dependencies
run: yarn install --immutable
- name: Build web application
run: yarn build:www
- name: Create release archive
run: |
cd packages/apps/build
tar -czvf ../../../pezkuwi-sdk-ui-${{ github.ref_name }}.tar.gz .
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
files: pezkuwi-sdk-ui-${{ github.ref_name }}.tar.gz
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-electron:
name: Build Electron Apps
runs-on: ${{ matrix.os }}
needs: release
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Enable Corepack
run: corepack enable
- name: Install dependencies
run: yarn install --immutable
- name: Build Electron app
run: yarn build:release:electron
- name: Upload Electron artifacts
uses: actions/upload-artifact@v4
with:
name: electron-${{ matrix.os }}
path: packages/apps-electron/release
retention-days: 30
+25
View File
@@ -0,0 +1,25 @@
build/
build-*/
coverage/
node_modules/
tmp/
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
.npmrc
.yarn/*
!.yarn/releases
!.yarn/plugins
.pnp.*
cc-test-reporter
package-lock.json
npm-debug.log*
tsconfig.*buildinfo
yarn-debug.log*
yarn-error.log*
.idea/
.log
env-config.js
NOTES.md
+3
View File
@@ -0,0 +1,3 @@
Jaco <jacogr@gmail.com>
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> <action@github.com>
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Github Actions <action@github.com>
View File
+1
View File
@@ -0,0 +1 @@
18.15
+6
View File
@@ -0,0 +1,6 @@
build
coverage
docker
jest
packages
scripts
+4
View File
@@ -0,0 +1,4 @@
// Copyright 2017-2025 @polkadot/apps authors & contributors
// SPDX-License-Identifier: Apache-2.0
module.exports = require('@polkadot/dev/config/prettier.cjs');
+934
View File
File diff suppressed because one or more lines are too long
+15
View File
@@ -0,0 +1,15 @@
compressionLevel: mixed
enableGlobalCache: false
enableImmutableInstalls: false
enableProgressBars: false
logFilters:
- code: YN0013
level: discard
nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-4.6.0.cjs
+19
View File
@@ -0,0 +1,19 @@
# Bounties
From time-to-time we will add bounties for features.
These are generously provided by the [Web3 Foundation](https://web3.foundation/) and as such employees of Parity or those of the W3F are ineligible for them. (This includes people being by either Party for development or community work, related or un-related to polkadot-js).
The idea is that these bounties should be left open to community participation, so only if there is no outside interest for a specific issue, should those directly or indirectly paid by the W3F for work, attempt to close an issue. (in which case it will be "un-bountied")
Current bounties are tracked by the [!bounty](https://github.com/polkadot-js/apps/labels/%21bounty) label.
## Process
Once listed, the normal [Gitcoin](https://gitcoin.co/) process kicks in. This means application, work and payment is managed by this tool. The values for bounties are determined by the size estimation done by the team.
## Some small requests
Please don't start work on an issue until you have been approved via the gitcoin interface. We generally love enthusiasm and code in the repo, however short-cutting the process does create some issues for the management of the bounties. We certainly don't want to be playing favorites if 2 PRs for the same issue are created at the same time. And in cases where somebody else has been approved and an unapproved PR comes in... well, it gets really murky.
When making changes, please do not force push in your PRs, especially not after a review has been started. We will clone your repo and work from that, doing a simple `pull` on a force-pushed branch ends up being, well, less than simple. We squash merge all PRs, so you do not clutter up the history by using stock-standard pushes to your branch.
+4607
View File
File diff suppressed because it is too large Load Diff
+45
View File
@@ -0,0 +1,45 @@
# Contributing
## What?
Individuals making significant and valuable contributions are given commit-access to a project to contribute as they see fit.
A project is more like an open wiki than a standard guarded open source project.
## Rules
There are a few basic ground-rules for contributors (including the maintainer(s) of the project):
1. **No `--force` pushes** or modifying the Git history in any way. If you need to rebase, ensure you do it in your own repo.
2. **Non-master branches**, prefixed with a short name moniker (e.g. `<initials>-<feature>`) must be used for ongoing work.
3. **All modifications** must be made in a **pull-request** to solicit feedback from other contributors.
4. A pull-request *must not be merged until CI* has finished successfully.
#### Merging pull requests once CI is successful:
- A pull request with no large change to logic that is an urgent fix may be merged after a non-author contributor has reviewed it well.
- No PR should be merged until all reviews' comments are addressed.
#### Reviewing pull requests:
When reviewing a pull request, the end-goal is to suggest useful changes to the author. Reviews should finish with approval unless there are issues that would result in:
- Buggy behaviour.
- Undue maintenance burden.
- Breaking with house coding style.
- Pessimisation (i.e. reduction of speed as measured in the projects benchmarks).
- Feature reduction (i.e. it removes some aspect of functionality that a significant minority of users rely on).
- Uselessness (i.e. it does not strictly add a feature or fix a known issue).
#### Reviews may not be used as an effective veto for a PR because:
- There exists a somewhat cleaner/better/faster way of accomplishing the same feature/fix.
- It does not fit well with some other contributors' longer-term vision for the project.
## Releases
Declaring formal releases remains the prerogative of the project maintainer(s).
## Changes to this arrangement
This is an experiment and feedback is welcome! This document may also be subject to pull-requests or changes by contributors where you believe you have something valuable to add or change.
## Heritage
These contributing guidelines are modified from the "OPEN Open Source Project" guidelines for the Level project: [https://github.com/Level/community/blob/master/CONTRIBUTING.md](https://github.com/Level/community/blob/master/CONTRIBUTING.md)
+611
View File
@@ -0,0 +1,611 @@
4364 Jaco Disable unreachable endpoints (#10221)
157 Arjun Porwal feat: add browser check alert for Firefox 145.0 compatibility (#12000)
112 Tarik Gul Support for Extension Ethereum Signing (#11592)
81 Thibaut Sardan update overrides (#10090)
62 kwingram25 iadd fix (#2911)
49 pan update Bifrost kusama on Subsquare (#9752)
46 Antoine Estienne Update moonbeam endpoints and moonbase logo and color (#6890)
41 MiZiet Apply styles to the unbonding icon (#6314)
39 Joakim Nyman Clean up and renaming of Dwellir endpoints (#11609)
39 RadiumBlock Re-adding RadiumBlock as Shiden and Bifrost Polkadot Endpoint provider (#11112)
35 Yongfeng LI Update subsquare external links (#11985)
32 brenzi reactivate Integritee Paseo endpoint (#11831)
31 Stefanie Doll Set higher default gas limit, switch from bitlength u32 to u128 for input fields (#2743)
29 Ewa Kowalska Style badges in accounts list (#6208)
28 Daria CoretimeTypes is an enum, and Reservation type has index 0 (#11567)
27 Yiwei Li Re-add OnFinality endpoints for Parallel and Unique (#9641)
25 Aleksandr Krupenkin Added Shiden Crowdloan 2 (#7426)
25 Krzysztof Jelski Increase UI test timeouts and mark interBTC unreachable (#6247)
25 Luke Schoen fix typo kusama (#3083)
24 sxlwar crab config (#6995)
24 WoeOm feat: subscan support fellowship, referenda v2 (#8987)
20 Nikita Update icon and colors for Realis.Network (#6336)
18 fomod-in Update translation.json (#5942)
18 Wei Tang Re-enable Neatcoin endpoint (#8271)
18 William Freudenberger re-activate centrifuge fullnodes (#9377)
17 Frank Liu Add Onfinality endpoint for Statemint (#6513)
17 rajk93 chore: disable unreachable endpoints (#11993)
16 Sam Elamin update to a more stable enpoint behind load balancers (#9897)
16 Stefan Popov Use archive nodes for SORA Kusama and Polkadot parachains (#10215)
16 Xiliang Chen allow submit from Decod page (#5759)
15 albertov19 fix urls (#11848)
15 Eliott Teissonniere add nodle parachain colors (#7353)
15 Jonathan Udd Removing Dwellir Bifrost endpoints (#11399)
15 Jun Jiang Update and fix Khala typedef (#8272)
15 lumir-mrkva moved HydraDX rococo RPC (#9732)
15 Nikos Kontakis Remove the dev notification for 1 month (#11400)
14 Gabriel Facco de Arruda Update InvArch logo and color (#9998)
14 Jakob Add Dwellir Coretime Westend endpoint (#10656)
13 Alex D reenable nodes (#10125)
13 Bulat Saifullin add polkadot coretime parachain (#10857)
13 Cedric Decoster Updated to load balanced RPC bajun (#11114)
13 Miguel Hervas Adding Centrifuge OnFinality Service (#7328)
13 Milos Kriz Add `passet-hub` Paseo endpoint by IBP (#11618)
13 Zombieliu Update Web3Games Chain Network (#8685)
12 Alejandro Martinez Andres chore: add Paseo Collectives endpoint (#11954)
12 Cheng JIANG switch to load balanced endpoints for parallel (#6056)
12 Kun [Substrate Files] New files module (#6106)
12 Oleh Mell Add new chains for Sub.ID external link (#9540)
11 Daniel Savu Change InterBTC network name to Interlay (#6700)
11 Gérard Dethier Archive Logion solochain and switch testnet (#10496)
11 Jay Remove Crab Dwellir endpoint (#10222)
11 JelliedOwl (Paul) Remove some JelliedOwl node - cutting costs (#11686)
11 Kodeist add robonomics and integritee ksm endpoints (#8087)
11 lumir-mrkva refactored lbp types updated (#6504)
11 qwer951123 update acala types (#8394)
11 Ross Bulat Substrate tab theme adjustment (#939)
11 Stakeworld Stakeworld endpoints for polkadot coretime and polkadot people (#11505)
10 Greg Zaitsev Update Unique Network and Quartz by Unique endpoints (#7689)
10 Kai Update Heima parachain endpoints (#11366)
10 Nantian add karura (#5441)
10 NZT48 Add NeuroWeb Testnet endpoint for Paseo (#11151)
10 Pierre Besson Add bridge hub teleport destination for Polkadot and Kusama (#10404)
10 zzcwoshizz rm elara endpoint (#6778)
9 Alessandro Siniscalchi [LAOS] update bootnodes and hosting name (#11452)
9 Chevdor Add doc related to IPFS and pinning (#2788)
9 José Molina Colmenero Add proof size summary (#10639)
9 Justin Pham Add extra metaverse network pioneer RPC (#9935)
9 Nikhil Ranjan Identity fix. Username has been introduced in identity pallet. (#10491)
9 Tom Activate IBP2 Passet Hub Paseo (#11722)
8 Ayush Mishra Updated Invo Network Testnet URL (#10419)
8 Carl chore: update Subscan links for paseo chains (#11535)
8 Eugene Way Change vara endpoint (#10763)
8 FiveKG Added onfinality endpoints (#11664)
8 frank Add Live Network Odyssey (#7866)
8 Gonza Montiel make pendulum reachable (#9014)
8 Greg Hill split interlay and kintsugi testnets (#7927)
8 Hging Add MathChain mainnet support (#6214)
8 illlefr4u new additions to Russian translation (#2948)
8 Jakub Jóźwiak Code signing and Notarization (#2794)
8 James Bayly Add Ajuna OnFinality (#9409)
8 Pavel Sheremetev Add DAO IPCI endpoint (#8223)
8 Qiwei Yang fix local fork cannot recover from failure (#10835)
8 serkixenos Fix distribution map type definition (#11715)
8 Wil Wade Re-enabled back online OnFinality for 2091 (#10929)
8 Will Ryan Update Creditcoin logos (#7573)
8 Xing Added equilibrium OnFinality API back (#9831)
7 2075 Update Zero Canary Endpoints for productionRelayKusama.ts (#10982)
7 abhath-labs [fix] Update Bitgreen urls (#8866)
7 alanchang124 add onfinality endpoint for acala mandala tc7 (#7615)
7 Drew Stone Update production.ts (#5757)
7 helixstreet Kusama People Chain -> Helixstreet RPC Endpoint added (#11497)
7 icodezjb Update OmniBTC wss url (#8678)
7 Kutsal Kaan Bilgin Remove Permanence DAO Westend Asset Hub RPC endpoint. (#11982)
7 Logan Saether Add Zeitgeist para config (#6628)
7 Masterdubs Add Innovatorchain (#10058)
7 Rob Thijssen new (Manta Network) load balanced provider url (#9343)
7 Will | Paradox | ParaNodes.io Enable LuckyFriday Bridgehub (#10306)
6 benjichat Remove Dwellir from Pendulum (#10429)
6 Daniel Yamuza Swap yes/no (voting) to Toggle (#2519)
6 Dominik Harz refactor: update testnet URL (#7013)
6 Eric Update `paraId` for long-term slot on Rococo (#8129)
6 Harald Heckmann Change Zeitgeist endpoint on Polkadot (#9256)
6 hoangnl update polkasmith title (#5560)
6 Hoon Kim remove dusty test network (#6912)
6 Ivan Rukhavets Update README.md for electron apps (#3362)
6 Jakub Pánik Fix explorer links for Hydration (#11120)
6 Joshy Orndorff clarify conviction locking (#6008)
6 kaioh33 add dwellir laos endpoint to polkadot.js (#10897)
6 mateuszaaa replace outdate mangata testnet with rococo testnet (#7710)
6 Nizar L Firmansyah Update Bahasa Indonesia Translation (#3823)
6 Pablo Andrés Dorado Suárez Add Kreivo testnet endpoint to `testingRelayPaseo.ts` (#11519)
6 pangwa update clover types (#6852)
6 stanly-johnson Update rocfinity paraId (#7094)
6 SURF Onfinality remove Kilt (#10885)
6 vol4tim updated paraId for Robonomics crowdloan 2 (#8607)
6 WBH feat: update logo of omnibtc (#7880)
6 YJ change button ordering (#345)
6 zxchen Add litentry for kusama crowdloan (#6849)
6 战神西红柿 add: bifrost-paseo providers (#11987)
5 1devNdogs Fix extractAuthor on genesis block. (#7345)
5 Alan Sapede Adds moonbeam parachain (#6490)
5 Alex use interfaces package for jamton (#11538)
5 Amaury Martiny Restrict attest to accounts, allow claimAttest for all (#2848)
5 Antonio Bump KILT dep (#10953)
5 chenwei Add logo to SubDAO. (#5020)
5 Christian Groeschel DataHighway mainnet westlake (#5066)
5 fewensa Add Subquery rpc (#11030)
5 FreePoi remove support of karura by elara (#6639)
5 Ganesh adding xcav into polkadot (#11463)
5 imstar15 Remove the Turing Network endpoint provided by the provider Dwellir (#10370)
5 Ismail Mbarack (Nas) updated Darwinia crab RPC (#9166)
5 Lovesh Harchandani Update types (#5499)
5 Marko Petrlić Update Ternoa logo and mainnet name (#7758)
5 Marni trying to get mapping of nominators correct (#346)
5 Marta Adamczyk Fix SubQuery endpoint for Polkadot (#10681)
5 Masterdubs update and clean galital standalone chain specs and type (#5225)
5 Michael Müller Rename `Canvas` to `Contracts` (#7633)
5 Min-seong Kwon Update chain text. (thebifrost network) (#9966)
5 mosonyi Add new OnFinality endpoint for Integritee and remove Solo (#7628)
5 Myron [Crust] Add crust shadow crowdloan 2 (#8185)
5 Nazar Mokrynskyi Remove extra Subspace Gemini 2a RPC endpoints (#8438)
5 Przemek Rzad Change the rendering of chains' Sovereign Accounts (#10791)
5 Rbdude25 Update productionRelayKusama.ts - Added Encointer Kusama RPC endpoint for Luckyfriday.io (#11361)
5 Robert Sprunk Change logo and color of Energy Web X network (#10171)
5 sebastianmontero Updated endpoints for Hashed Systems 1 and 2 providers. (#10464)
5 Shamilkhan Add CereStats as an externalLink for Cere Mainnet. (#9887)
5 Shankar D. Warang feat: add edgscan.ink explorer (#10186)
5 xnorly trying to improve the filtering options for target validators (#7080)
4 1xstj fix : Update tangle testnet url/images (#9885)
4 Abhishek Update the provider Phyken Network (#10399)
4 Adedayo Akinpelu Add blockops assethub rpc endpoint (#11266)
4 Alberto Nicolas Penayo fix(bug): user can input invalid lifetime for tx (#10862)
4 Arneil Paul Polican Update: Change XODE rpc on Kusama and Paseo (#11761)
4 Arsenii Medoev Unique Network - remove OnFinality endpoints (#9181)
4 Ashi Add end points for Jur-mainnet (#9586)
4 billjhlee Update Unorthodox Kusama Parachain / Standard Westend Test Network Chain Logo (#6192)
4 Caio Update Parachain ID of Zeitgeist (#5798)
4 Calvin Job Puram remove public endpoint support for Kusama and Westend (#10694)
4 Cameron Fairchild Add bittensor nakamoto (#8618)
4 Dee Evans DotScanner Kusama Support (#5843)
4 Fredrik Simonsson Update CI checkout, and setup_node to v4 (#10433)
4 Gautham Update Polkadex's parade (#7303)
4 irsal Remove onfinality from Turing rpc selection (#7959)
4 Jegor Sidorenko Support ipfs://ipfs/ links (#9772)
4 Jeremy Frank add autonomys-mainnet-evm endpoint (#11750)
4 Jianping Deng Update calamari crowdloan UI and Dropdown menu (#6021)
4 John Whitton Update EAVE Parachain id for Rococo (#5286)
4 Juan Girini add ideal network consumer chain (#11790)
4 Kami Fixes #9260 (#10002)
4 lavish0000 Update krest network providers (#10046)
4 Leemo Updated Robonomics RPCs (#8329)
4 Luke Sugiura Refactor Backup component with hooks (#1927)
4 Marcin Wachulski Account row collapsible row details (#5894)
4 marco Update Zero Canary Endpoints for productionRelayKusama.ts (#10982)
4 Max Gravitt adding Hashed Network endpoint back and removing Luhn Network (#9100)
4 Michal Danco feat: update mangata type definitons to new major version (#9976)
4 Mikhail Fedosov fix: update 3dpass rpc endpoint (#11442)
4 MinjieTian Add onfinaliy Aleph zero endpoint (#9926)
4 mn13 update actual equilibrium version (#6836)
4 nahuseyoum Enable Aventus provider (#10277)
4 philipstanislaus Upgrade Centrifuge types (#2428)
4 Radha Increase Alice Balance - Chopsticks (#10675)
4 Rishi Karthikeyan Removed pinknode enpoints. (#9018)
4 Rodrigo Quelhas update acurast rococo provider (#9916)
4 toxotguo Add ChainX endpoints hosted by Patract Elara (#4582)
4 Yashiro Add crust parachain endpoint (#8770)
3 3ierratango [feat] add qpn kusama chain (#9771)
3 A Ahmad Remove Dwellir Zeitgeist endpoint (#10715)
3 Adam Dossa Fix `Option<Bytes>` encoding (#8336)
3 Alex Siman Add name, color and url of Subsocial parachain (#5006)
3 alexdniep added Genshiro as kusama parachain; fixed colors and logos (#5417)
3 alexkdefi Endpoint change picasso (#8412)
3 Andreea Eftene change chain name (#7114)
3 Andy Smith Enable appPromotion RPC for Unique Network (#9188)
3 Anthony Lazam Add Polkadot Bridgehub (#8985)
3 Aten Jin add altlayer's ethereum dev chain to `ethereumChains` (#10019)
3 bari remote uniarts's isUnreachable (#6027)
3 Benjamin Lau Added Pinknode Endpoints (#5935)
3 Bhanu Teja P Display extrinsic meta documentation on hover (#1247)
3 Bill Laboon Remove Automata 1RPC from Kusama (#10425)
3 Bruno Škvorc Clarify signed message input (#3303)
3 Caos Update NFTMart logo (#5815)
3 Chris D'Costa Add Totem Stagex & remove Totem Lego & Wapex networks #8144 (#8145)
3 Dmitry Selikhov Update pontem-types-bundle from 1.0.14 to 1.0.15 (#6191)
3 drgora Add VFlow Testnet (#11754)
3 dushaobindoudou fix: translate to chinese (#3091)
3 Emmanuel feat: enable zondax paseo rpc node (#11110)
3 Eswara Sai Added parser to extract i18n strings (#1710)
3 Gregory Luneau Astar first wss bootnode (#8330)
3 h4x3rotab Update Khala logo, color, and types (#5299)
3 Hyungsuk Kang Update opportunity types (#5574)
3 iiiiiiii update jupiter (#5018)
3 jasonberger0 update logo (#4612)
3 Jhon added validator/nominator flags (#4546)
3 Jiacheng Add metadata for Phala Network (#7290)
3 kotlarmilos Update OriginTrail Parachain on polkadotjs (#7416)
3 Lay Hunt Update Uniarts Chain types & logo & main net (#5253)
3 Leonardo Custodio Updates Rocfinity to use Rocfinity logo instead of Efinity (#8111)
3 Leszek Wiesner Joystream mainnet released (#8513)
3 limichange Bump @phala/typedefs version (#5709)
3 Mario Pino update PolkaStats logo (#3600)
3 Mike James Li Update bit country pioneer logo for nodes (#7980)
3 Misha Kolesnik Feat: Reenable Mangata's project rococo endpoint (#10155)
3 Mrigesh patni Update testingRelayPaseo.ts for Xode (#11264)
3 Natacha De la Rosa Add Subspace gemini 3h endpoints (#10237)
3 Ramsey R Update domain of RPC nodes for Edgeware and Kabocha (#8168)
3 Raphael Flechtner [KILT] Design change and node operator rename (#11271)
3 RossAtOnfinality add OnFinality endpoint for Nodle Network (#6850)
3 RyuH1 Update automata-network type definitions (#7321)
3 Sam re-enable dock testnet endpoint (#6472)
3 Serban Iorga Add XCM encoder utility (#10350)
3 Sergej Sakac Add RegionX Kusama (#11752)
3 Seun Ayodele Fix typos in comment (#11733)
3 shareven Change ipse specName (#5158)
3 Shawn-Eng-888 Remove Pinknode Shibuya (#8559)
3 Squirrel Teleports to statemint are open (#7519)
3 Steve Degosserie Add DataHaven Testnet & Mainnet to Ethereum Chains (#11934)
3 timorl Add Aleph Zero mainnet (#6531)
3 Vedhavyas Singareddi Add Subspace Gemini-3g Nova testing rpc (#10054)
3 Vincent Geddes Update @snowfork/snowbridge-types to v0.2.6 (#6255)
3 Vitaliy Add sorting for accounts view (#5923)
3 Vladislav Update peerplays types bundle (#11550)
3 Wasif Shah Fintra Logo Updates (#11800)
3 Will add ethtransaction type for legacy (#9578)
3 xtony77 feat: update SubGame types (#6674)
2 1devNdogs Subspace farmers network (#11) (#6675)
2 Adrian Wennström [endpoints] Adjusted some Dwellir endpoints. (#10643)
2 AgoL5866 Adding RockX phala/khala endpoints (#10406)
2 akashi6824 fix PolkaFoundry color (#4985)
2 Albrecht chore: update WILT paraID & KILT types (#6005)
2 Alexander Popiak Add extra Input types to the UI (#2324)
2 Alistair Singh Add new Snowbridge forks (#9837)
2 André Silva Fix typo in chain specifications (#5659)
2 Anoymous Hentai Update Phala's type definition (#5131)
2 Antonio feat: re-introduce support for chain names (#8594)
2 BoBin Update subscan.ts, change the host of some networks (#10402)
2 Bobo Rename StakeTechnologies to Astar (#9813)
2 Bradley Olson Add New Creditcoin Mainnet (#10855)
2 Branan Riley Re-enable Altair endpoint (#5739)
2 Branislav Kontur Added one more Bulletin (#11869)
2 Btwiuse Arch Add NFTMart mainnet staking params (#6405)
2 Buddy Glass Change endpoints for the Unique Network chains: Unique, Quartz, Opal (#11937)
2 carumusan Update commonwealth.ts (#3697)
2 ccubu Remove klaos (#10765)
2 Chris Li Modify OAK Testnet wss endpoint (#5446)
2 chrissoso Add Prism parachain (#5287)
2 composabledev added picasso logo (#6043)
2 CrabGopher Refactor provider names for Autonomys Chronos networks (#11942)
2 Dan Shields Update ED and reaping info in app (#4771)
2 Daniel Magro Updated Simply Staking endpoint for Polkadot in productionRelayPolkadot.ts (#11778)
2 Daniel Olano Restore Virto provider for Kreivo in Kusama (#10363)
2 dansoft update manta network logo (#6972)
2 Danylo Kyrieiev update karmachain endpoints (#9883)
2 david-rio feat: add RioChain live network config (#5076)
2 DDB Update RPC endpoints for zkVerify and VFlow (#11783)
2 Dean update wss endpoint (#5093)
2 Dmitriy Zagrebin Return DAO IPCI endpoint (#11906)
2 Ed feat: Add Torus Network Chain (#11175)
2 Faraz Ahmad update the title and logo for elysium (#10600)
2 firke fix: Opportunity chain re-enabled (#7022)
2 Florian Franzen add analog mainnet (#11179)
2 Francisco Gamundi Get isEthereum from chain properties (#9667)
2 Frank Bell refactor(apps-config): refresh pop network colour and logo (#10859)
2 Gera chore: reenable peregrine RPC (#11557)
2 gianfra-t Remove rococoAmplitude and add paseoAmplitude. (#10956)
2 Gilles Barnier Fix display issues on the democracy dashboard page (#7360)
2 Hanwen Cheng feat: support import with mini secret key (#2944)
2 Harold Glenn Minerva Change Xode RPC address (#10340)
2 Hayden Update Zenlink types (#4835)
2 hellotrongo fix typing error (#5140)
2 Ignacio Palacios Add Watr Polkadot (#9061)
2 Irman Nur Muhammad Alamsyah feat: add DeBio Network endpoint (#8478)
2 Jared Norris Fix Sora configuration (#6677)
2 Jay Pan Peaq rpc add (#9547)
2 jimmy-tudeski Update add-accounts.json (#4759)
2 JimYam fix the bug that have no icon for listen in https://polkadot.js.org/apps (#7241)
2 Justin Zhou currently unreachable (#8130)
2 kaichao not enable identify for failed set identity txs. (#10747)
2 Krishna Singh Updated Polkadex mainnet and parachain endpoints (#9765)
2 Kyilkhor Moonsama listing + types (#9682)
2 Leonardo Razovic Polimec: add new RPC provider and change color (#10371)
2 LL change riodefi network (#8446)
2 Lohsea Add new color and logo (#6004)
2 Loïs update allfeat testnet (#11214)
2 Maciej Nemś Change Aleph Zero Testnet name (#6145)
2 maestro779 Update translation.json (#3903)
2 marcin New t1rn blockchain on Kusama (#9995)
2 Marian Vanderka add rest of types and rpcs for mangata chain (#9269)
2 maxwellfoley Allow custom node URLs in settings (issue #644) (#657)
2 Michael (GP) Updating gamepower types (#5251)
2 Michele d'Amico Avoid to add Relay Chain Genesis Hash for Ethereum chain even if they are system parachain (#11884)
2 mikolajsobolewski Fixed urls for genshiro & equilibrium (#10166)
2 momo200e add new types to SubGame network (#5954)
2 mosonyi Add integritee to polkadot (#7846)
2 MOZGIII Fix multisig when the proxy pallet is not available (#11435)
2 Muhammad Yahya Fix/display oli logo (#7886)
2 Muhammad Zoaib activating arctic again with correct endpoint (#7791)
2 Nikita Polyakov update type defenitions to 1.8.30 (#7488)
2 NingBo Wang Update bifrost rococo paraId (#8232)
2 Nisheeth Barthwal display discord identity in profile sidebar (#9185)
2 qinghuan add chainx rococo node (#4772)
2 Robert Gabriel Jakabosky Support BTreeSet. (#9206)
2 Saka-Aiyedun Segun chore: add blockops kusama endpoint (#11811)
2 Salman Pathan Add tangle to live networks (#10448)
2 sander2 fix: add account derive (#8683)
2 sharkygg add subdao test and polkadot parachain network; (#6515)
2 Shawn Tabrizi allow dissolve by anyone when ended (#7184)
2 Shumo Chu Manta crowdloan (#6493)
2 Shunsuke Watanabe Added Astar/Shiden WS endpoint (#7960)
2 Skedley fix: updating the democracy proposal modal (#10296)
2 Sonal Banerjii Add bengali translation (#7422)
2 soufiane-capsule Ternoa is a live network (#10180)
2 Sourabh Niyogi disable polkaholic (#10360)
2 superpw minor fix for button/sliders colors (#4715)
2 Teodorus Nathaniel Set provider for subsocial to only para.subsocial.network (#8868)
2 Toney change chainid from 128 to 2048 for apron (#5081)
2 usetech-llc Fix unique types import (#4764)
2 Vladimir Pouzanov Add dracones mainnet & test to ethereumChains.ts (#9246)
2 VladSemenik change Equilibrium production relay polkadot provider (#7323)
2 Web3 Philosopher Adds support for hyperbridge (#10585)
2 Wenfeng Wang Add Phala to Rococo (#9461)
2 Witek Make Efinity reachable productionRelayPolkadot.ts (#6580)
2 Xavier Lau New Koi testnet to replace Pangolin (#10637)
2 Yakio Update subscan.ts - add heima network (#11388)
2 Yashiro Add crust mainnet endpoint (#5929)
2 Yuri Gii update singular url to singular v2 (#7888)
2 zhenfei updating `Manta Network` parachain ID (#5149)
1 ||ȼhaiɳ Add Kinera logo and wss (#10664)
1 0xrust Add snow to kusama endpoint option array (#7893)
1 0xSamsara Added Samsara RPC to Robonomics parachain (#8240)
1 0xverin Add litentry testnet to Paseo (#10999)
1 Abdulaziz Kamil Update index.tsx (#10035)
1 Abdulrahim Al Methiab chore: Bump Kilt dep (#11679)
1 abhi fix text and isUnreachable properties for SNOW Network (#8252)
1 Abhishek Shah Add mythical-devnet to ethereumChains (#9642)
1 Adam new edeware logo and color (#6249)
1 Adam Steeber Fix MAX_SIGNATORIES (#10387)
1 Adedamola Restore blockops rpcs endpoint (#10170)
1 Agustinus Theodorus Add Myriad Social testnet to Paseo (#10936)
1 Aidan Starke Add `Root Network` types (#8034)
1 Albert Apply Nunito fonts globally (#3882)
1 Albrecht Rename KILT Protocol to "BOTLabs" (#10032)
1 Alex Sedighi Update URL for Nodle Testing Parachain on Rococo (#7810)
1 Alex Won support ethereum compatibility for bifrost network (#8733)
1 Alexander Wilke add t3rn parachain (#9195)
1 Alexey Rename SORA-staging Node to Sora (#5084)
1 AlexLgn Fix: Rename 'Quantum Fusion' to 'QF Network' (#11789)
1 Anakorn Tata Kyavatanakij fix SummaryBar (#1981)
1 Andrew Jones Fix upload and deploy contract(s) after rename (#1346)
1 Andy Bell Dali to Picasso (#9102)
1 Anthony Chan fix the cess testnet logo wrong bug (#8649)
1 armin-x86 Add Shibuya Chain (#11879)
1 Arsham Teymouri add paseo-people-lite parachain (#11974)
1 Assem chore: update `chainflip-perseverance` archive endpoint 🚀 (#10352)
1 augustocollado Enables identity on Tanssi and Dancelight (#11924)
1 Bart200c add kylin network (#7865)
1 Beqa Abuladze Rename Creditcoin Classic to CC Enterprise (#10878)
1 blackjooohn NFTMart is available (#11606)
1 Blake Byrnes Add Argon Protocol Testnet (#10871)
1 BOBOKaa update ipfs endpoint domain (#8686)
1 Bojian Ho Added fantour network config (#5764)
1 Boyquotes Fix FR translation (#7817)
1 Brandon Kite Support for optional usage of pallet_balance (#2578)
1 Brendon Votteler feat: add derives mapping and spec records for testnet-interlay and testnet-kintsugi (#8000)
1 Brian Wu Add additional RPC endpoints for Crust Mainnet, Crust-Parachain, Crust-Shadow (#10703)
1 Burnww WeTEE added to Paseo (#11254)
1 Carl Update Subscan link config (#6194)
1 CCBro add `armonia-eva` and `armonia-wall-e` for ethereumChains (#7732)
1 Charly docs(readme): install dependencies faster (#11822)
1 CherryLiang show play/stop button (#1804)
1 chiefbiiko Add t0rn Rococo parachain (#7443)
1 Chralt add zeitgeist onfinality provider to production relay polkadot (#11558)
1 Chris Ganga use selected theme in the validator stats page (#5391)
1 Claire Olmstead Clark update frequency svgs (mainnet and testnet paseo). update ui colors. (#11624)
1 clangenb Add custom signed extension for the enconter chains and update encointer types. (#8425)
1 Code Slinger chore: fix spelling issues (#11656)
1 composerpeter Added Composable Finance (#6685)
1 cr4pt0 Update Pendulum chain logo (#8530)
1 crownsterlingllc Add Production Crown Sterling blockchain (#6097)
1 cuardaigh add virto-network parachain to rococo (#7582)
1 Damian Straszak change aleph testnet name to make it unique (#9329)
1 Dan Forbes Add block number to events on explorer page (#2759)
1 Daniel Maricic add idiyanale to testing relay rococo (#9000)
1 dastan Update ethereumChains.ts (#10367)
1 ddorgan Fix container build (#1456)
1 ddorgan Initial commit of kubernetes deployment (#616)
1 Dean mybank.network (#5024)
1 Denis Drozhzhin Genshiro on Rococo Testnet (#7423)
1 Derek Colley Update productionRelayPolkadot.ts (#11509)
1 Dino Pačandi Allow identity on Shibuya (#11081)
1 dio Add the official RPC for parallel network (#10980)
1 divdeploy remove repetitive words in comment (#10438)
1 dm4 Add Geminis parachain information (#7034)
1 Dmytro Filippov Targets page: fix validators sorting (#6886)
1 Dominik Fedor Search/filter functionality of selection dropdowns (#9766)
1 DorianSternVukotic Add Liberland network (#10266)
1 Douglas Acosta Update new testnet wss url for Nodle - testingRelayRococo.ts (#10005)
1 Eddie Machado not truncating the address (#4311)
1 Edvin Dzidic Update Joystream staking inflation parameters (#11206)
1 Eericxu Fix Files(IPFS) module status link and download link (#10181)
1 Emil Fattakhov Update testing.ts (#11839)
1 Emilio Silva Schlenker [#943] Make hash/number query available globally to explorer (#1111)
1 Emmanuel Thomas add kaizen endpoint to apps-ui (#9022)
1 equilibrium-de updates genshiro info (#6412)
1 Ernesto chore: fixed bug on chart and ui issue in sale page (#11354)
1 fadomire Fix translations loading for ever (#5282)
1 falconexe return DAO IPCI endpoint (#10194)
1 Femi Olah Adds new Hyperbridge logo (#10822)
1 fewForce Update Mandala testnet config (#11621)
1 fixxxedpoint Changed THRESHOLD in useBlockTime so chains that uses values smaller than 1s for the MinimumPeriod (pallet_timestamp) parameter are displayed correctly (#6045)
1 FOB Fix Polymesh types bundle to use correct specNames and update branding (#9182)
1 Fr4ctalbit Turn Submit proposal tab into a modal (#1698)
1 Francesco Occhipinti [CI Skip] update the remote server location, closes #487 (#492)
1 Francisco Aguirre Add westend penpal to list of networks (#11171)
1 gabriel klawitter CI: add file for substrate-ui and substrate-ui-light domains (#767)
1 George Angelopoulos typo fix (#5704)
1 Georgi Zlatarev Dolphin parachain on Rococo (#7401)
1 Giovanni Petrantoni Add Fragnova mainnet and testnet (#9198)
1 gojazdev feat(apps-config): introduce Jaz node (#7805)
1 goldsteinsveta Style bug fix: Balances asset selector (#6668)
1 green-jay add hydradx rococo (#8154)
1 Guenit remove apron config `isDisabled` flag (#5151)
1 gupnik Adds null check before accessing multisigs (#10603)
1 h4x3rotab Update Phala's websocket endpoint (#4241)
1 Hanonycash Added hanonycash Network logos & endpoints (#3911)
1 hapham Add parachain Lavender by SingNetwork (#6067)
1 Harjyot Singh Update translation.json (#3570)
1 Harry Liu Update README.md (#1437)
1 Hector Bulgarini Adding RPCs to Paseo Network. (#10530)
1 Henry Bump moonbeam-types-bundle version in apps-config to fix some missing types (#8008)
1 Ian He add onfinality endpoint for polkadot and kusama (#4070)
1 igorgogo Add Spanner (#6058)
1 imam hermawan add myriad endpoint (#7792)
1 Ivan Cholakov Added Aventus to paseo frontend (#10798)
1 Jake Naviasky Bump edgeware types version for new testnet. (#3825)
1 Jakob Dwellir: update Neuroweb endpoint (#10683)
1 Jamie Cheng Fix an important translation error in Chinese (#3938)
1 Jeff Reiner adding in Wiki link to sidebar (#556)
1 Jesse Lurie Add competitors club network (#6754)
1 Jhon Identicon and error red shading adjustments for dark theme (#4483)
1 Jianwei Zhu Add Phala (PoC6) (#9912)
1 Jim Counter Add Subspace Gemini 3h Nova endpoint (#10601)
1 jizer add trustbase infos (#4627)
1 joe petrowski unscrupelous to unscrupulous (#7935)
1 Josep M Sobrepere fix: filter-out non eth accounts from eth chains (#11877)
1 Julien Remove now sunset dotscanner (#9714)
1 Jun Zhang Update translation.json (#4508)
1 Just van Stam Add Polimec Network (#10137)
1 Kai Fix broken contract deployment function (#1643)
1 kamrangul2404 Add krest parachain (kusama) (#9079)
1 Kanishka Rajput Update polkassembly.ts networks (#10740)
1 Ken Truong Add Continuum Metaverse.Network to Polkadot Relay (#10321)
1 Kerwin Zhu fix Chinese translation of 'comm.' (#4464)
1 Kevin Gislason add manta testnet (#5355)
1 Kevin Neilson remove OnFinality public endpoints (#9978)
1 Kian Paimani New command center (#11899)
1 Kirill Shirobokov ru translations for page-accouts are added (#9219)
1 KkenWv Add KICO logo and endpoint (#6906)
1 Klaudiusz Dembler Add joyutils RPC endpoint for Joystream (#10176)
1 KRogLA sub accounts search fix (#2572)
1 L P Update productionRelayKusama.ts for acurast canary (#10688)
1 l1.media Added l1.media RPC for Joystream (#11912)
1 Lauro Gripa Neto Add portuguese translation (#2940)
1 Leechael chore: Remove Phala PoC5 since it going to take down (#10082)
1 legape Add Chainflip networks (#10153)
1 leoonf remove Onfinality's Aleph Zero and Integritee-Kusama endpoint (#11966)
1 Letho Coinversation (#6597)
1 Levi feat: support asset filter (#10423)
1 Liaoyi Remove Automata mainnet and contextfree testnet (#10531)
1 loanMaster fix: issue 9127. teleport reactivated (#9529)
1 lreesby Turing added to Rococo (#7603)
1 lulu Update Ares Protocol parachain ID (#5160)
1 LusWar Update Phala testnet (PoC2 => PoC3) (#4148)
1 Maintain Add masverse node (#10066)
1 Malte Kliemann Move Zeitgeist Battery Station to Paseo (#10888)
1 Marcin Żółkiewski Expose signed transactions (#2203)
1 Marin Petrunić add Vedran westend provider (#4674)
1 mark hayward Accounts typo (#4673)
1 Marvel63 Update translation.json (#10349)
1 Matej Nemček Removed broken link to app-nodeinfo from README (#1392)
1 Matthew Orris Update Frequency Mainnet RPC Node 0 (#9254)
1 Maxim Surkov Update sora library version (#4918)
1 Meghashyam Kodmad updated react-dropzone to 10.1.9 (#1682)
1 Mickaël Canu fix error on validator word (#7110)
1 Mickael Faust Added TerraBioDAO to the GM nodes list (#8010)
1 Mike Godenzi Acurast added to Rococo (#8546)
1 mmaurello add moonbeam apps as external resource for referenda (#9790)
1 Mokhtar Naamani Fix app-accounts Restore feature (#761)
1 motinados fill in all empty values in all languageCaches. (#3606)
1 Mridul Kumar fix: dropdown options not visible for metadata upgradable extensions (#10264)
1 Muhdsodiq Bolarinwa Fix dark mode display hash display result in Fork (#11378)
1 Nantian update acala rpc (#6704)
1 nasa8x Add GeekCash testnet, logo, color (#5265)
1 NightingaleAsh Add loom network kusama (#5591)
1 Nikhil Saboo Add Zeitgeist battery station endpoint (#6265)
1 Nikita Khateev OpenZeppelin runtime template (#10212)
1 Nikolay Pasynkov Enable Opal by Unique (#7833)
1 octavei add aband info (#8929)
1 ok.man update-mandala (#6785)
1 okalenyk *added Societal to Rococo (#9477)
1 Omgzilla Removing Kapex RPC for Dwellir | Update productionRelayPolkadot.ts (#10074)
1 Owen add kico2 (#8374)
1 Pablito Labarta Update Creditcoin WS endpoint (#9942)
1 Paco Yang Fix transfer button disappearance (#10081)
1 paulhealy09 Update Unit Network logo (Thanks to https://github.com/unit-network) (#5027)
1 Pavel Added new community node for SORA (#5600)
1 Peter Chung Align Sig Validity Indicator (#1660) (#1697)
1 Peter White Small fixes to provide council page compatibility (#8791)
1 PG Herveou Add yerbanetwork (#9908)
1 Pierre Krieger Update translation.json (#6266)
1 Pierre-Luc Gagné Added a warning popup at account creation for seed backup (#325)
1 Piotr Mikołajczyk Fix `jsonrpc` attribute (#9576)
1 Pioua typo fix (#10123)
1 Polkassembly Added fellowship refrenda (#9135)
1 Preschian Febryantara add KodaDot logo (#7151)
1 Puneet Saraswat Frequency rococo (#8076)
1 Qinxuan Chen Add frontier template into ethereum chains (#9202)
1 quantpoet chore: fix some typos in comment (#11844)
1 quinn-gao fix: add logo image of collectives (#11467)
1 Radka Gettová Make Block Hash "Hover to Copy"-able (#458)
1 Rajdeep Singh add collectives to polkassembly links (#9595)
1 Raoul Millais Upgrade @substrate/connect@0.3.16 (#5855)
1 Ravi Kumar Add hi_IN translation (#5420)
1 Raymond Zhong Add types for beresheet runtime (#5576)
1 Ricardo Rius Update stable poc types (#3783)
1 robcxyz Add geometry labs endpoints for polkadot and kusama (#6477)
1 Robin Syihab Fix typo in ID translation (#5865)
1 Rocco Musolino italian translation typo fix (#3813)
1 roiLeo fix: update kodadot link & logo (#10060)
1 ROY Add: Energy Web X (PEX) parachain on Paseo Relaychain (#10891)
1 Rui Dos Santos Magalhães changed Aventus public rpc endpoints (#10647)
1 Rusinskiy Vsevolod Add RPC endpoints for Quantum Fusion testnet (replaces #11454) (#11687)
1 RXRD Octopus Provider for Myriad and Debio (#10110)
1 Saad Reskinning Composable Finance/Picasso Portal Colors (#7696)
1 Sam Hellawell Fix dock logos being blurry/low res (#4427)
1 Sasha Gryaznov Add Yerba Network to Kusama (#10203)
1 Satyam Agrawal Add Polymesh ITN Provider (#5242)
1 Sephiroth Add Allnodes endpoints for Polkadot, Kusama, Moonbeam, Moonriver (#10520)
1 Sergei Lonshakov Robonomics ParaID 2077 added (#5706)
1 SesH92 API check for treasury page (#11047)
1 Shailesh B Nair Add KlugDossier (#5456)
1 Shamil Move Vara from Live networks to Test networks (#8295)
1 Shannon Wells update @frequency/api-augment to v1.9.0 (#10062)
1 Shaun Wang Fix spelling: Javascript -> JavaScript. (#4698)
1 Shunfan Zhou Re-enable Phala (PoC 5) Testnet (#7462)
1 shuoer86 Fix typos (#10014)
1 SimonKraus fix(staking): fix typo (#4926)
1 Song Zhou add SkyeKiwi testnet (#7597)
1 Sota Watanabe update (#2949)
1 Spencer Judge Don't crash if there is no tip field in extrinsics (#2466)
1 Sree Charan Polkadex updated end point (#11635)
1 Stéphane P Fix Fr translations typos (#5104)
1 Subsocial Specify the custom types for Subsocial parachain (#5009)
1 sulijia add magnet to rococo (#10670)
1 tarrball Grammar fix in staking tooltip (#6727)
1 Teddy Rogers Add CESS Testnet to TEST NETWORK (#7908)
1 Tim B fix: 🐛 Update `moonbeam-types-bundle` to latest (#11240)
1 Tom Add IBP endpoints to Paseo (#10231)
1 Tommy Remove OnFinality from Efinity providers (#8744)
1 Tore19 Added Stafi Network logos & endpoints (#3683)
1 Torsten Stüber Make disabled input fields selectable (#9299)
1 Toufeeq Pasha Added GIANT parachain to rococo network (#9034)
1 tugy add new IBP endpoints (#10771)
1 tzchenxixi chore: remove redundant word (#11802)
1 Uğur Eren Fix make transfer example (#10094)
1 unitpdw unitlogo changes 1 (#8335)
1 Vadim fix overflow issue in extensions table (#7767)
1 valentunn Fix Kusama name in ru translation (#7498)
1 Vasylenko Yevhen Add Subzero Rococo parachain (#7919)
1 Vlad Proshchavaiev Add Subsocial into apps-config (#3523)
1 Vladyslav Samchuk Enable sub.id link (#7806)
1 Vucomir Ianculov Change Aventus public rpc endpoints (#11220)
1 Wasif-Jamal Add VTB Network Mainnet (#10117)
1 weimeme add tscs network (#11438)
1 willeslau Add Konomi Network chain info to Rococo (#5171)
1 wimel 25 modules translated from ES_es (#2969)
1 Witek Add Efinity parachain (#6571)
1 wooqii Translate_page_account (Ko) (#3474)
1 X5 Engine fix tiny typo (#2399)
1 Xing Added OnFinality CommuneAI endpoint (#10808)
1 xryoshi Update translation: Bahasa Indonesia (#10968)
1 xsteadybcgo feat: update statemine & westmint config (#5476)
1 y Add Phoenix parachain (#4939)
1 YessineAmor add ar translation for page-calendar (#3816)
1 Yin Jiaquan Add Automata private RPC relay (#8167)
1 yooml update parachain id (#5065)
1 zian Add Niskala testnet to paseo (#10760)
1 Илья Петров Add files via upload (#7001)
1 制杖 add trustbase network (#5854)
1 小白 My contacts chinese suggest calling 我的合约账户 (#3288)
1 早晨海风 Confti added to Rococo (#8029)
+24
View File
@@ -0,0 +1,24 @@
# I18N
The apps UI allows all strings to be translated. Additionally it has a basic UI that allows for the creation of the required translation files, which will give an overview on the progress for a specific language.
## Updating translations
To update translations, the following process is required.
- launch the apps UI, either locally or via https://polkadot.js.org/apps
- explicitly navigate to the i18n page, https://polkadot.js.org/apps/#/settings/i18n
Here you will find a dropdown of all the available languages and all the modules that maps to the UI. On a single screen you will be able to see all the available strings for a specific module.
- adjust any strings as required
- once completed with the changes, click the `Generate translation.json` button to download the translation file
- this file can now be added to the repo with a PR to https://github.com/polkadot-js/apps/tree/master/packages/apps/public/locales
## Adding a new language (if not in dropdown above)
The process is similar for the above, but does require a new folder with the language identifier to be added. Create [packages/apps/public/locales/<id>](https://github.com/polkadot-js/apps/tree/master/packages/apps/public/locales) folder with an empty `translation.json` (containing only `{}`). After addition of the folder, run `yarn build:i18n` and then the new language will be available for update as per the process in the previous section.
In addition to the language folder, the language also needs to be added to the dropdown for available languages, this can be found in [packages/apps-config/src/settings/languages.ts](https://github.com/polkadot-js/apps/blob/master/packages/apps-config/src/settings/languages.ts)
+201
View File
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+137
View File
@@ -0,0 +1,137 @@
# Pezkuwi SDK UI
A comprehensive web interface for interacting with the Pezkuwi blockchain network.
## Features
- **Blockchain Explorer** - Browse blocks, transactions, and chain state
- **Wallet Management** - Create and manage accounts securely
- **Staking Interface** - Stake tokens and manage validators
- **Governance** - Participate in on-chain governance and voting
- **Developer Tools** - Extrinsics, RPC calls, and chain state queries
- **Analytics** - View network statistics and metrics
## Quick Start
### Prerequisites
- Node.js >= 18.14
- Yarn >= 4.0
### Installation
```bash
# Clone the repository
git clone https://github.com/pezkuwichain/pezkuwi-sdk-ui.git
cd pezkuwi-sdk-ui
# Install dependencies
yarn install
# Start development server
yarn start
```
The application will be available at [http://localhost:3000](http://localhost:3000)
### Production Build
```bash
# Build web version
yarn build:www
# Build desktop application (Electron)
yarn build:release:electron
```
## Hosted Version
Access the production version at **[https://pezkuwichain.app/sdk](https://pezkuwichain.app/sdk)**
## Project Structure
```
pezkuwi-sdk-ui/
├── packages/
│ ├── apps/ # Main application entry point
│ ├── apps-config/ # Chain configurations and endpoints
│ ├── apps-electron/ # Desktop application (Electron)
│ ├── apps-routing/ # Application routing
│ ├── page-*/ # Individual page components
│ ├── react-api/ # React API hooks and context
│ ├── react-components/ # Reusable UI components
│ ├── react-hooks/ # Custom React hooks
│ ├── react-params/ # Parameter handling components
│ ├── react-query/ # Query components
│ └── react-signer/ # Transaction signing components
├── scripts/ # Build and utility scripts
└── docs/ # Documentation
```
## Configuration
### Network Endpoints
Configure network endpoints in `packages/apps-config/src/endpoints/production.ts`:
```typescript
{
info: 'pezkuwi',
providers: {
Pezkuwi: 'wss://pezkuwichain.app:9944'
}
}
```
### Custom Chain Types
Add custom runtime types in `packages/apps-config/src/api/spec/pezkuwi.ts`
## Branding
### Kurdistan Color Palette
| Color | Hex | Usage |
|-------|-----|-------|
| Kesk (Green) | `#00A94F` | Primary actions, highlights |
| Sor (Red) | `#EE2A35` | Alerts, important actions |
| Zer (Gold) | `#FFD700` | Secondary accents |
| Spi (White) | `#FFFFFF` | Backgrounds |
## Scripts
| Command | Description |
|---------|-------------|
| `yarn start` | Start development server on port 3000 |
| `yarn build` | Build for production |
| `yarn build:www` | Build web version |
| `yarn build:electron` | Build desktop application |
| `yarn lint` | Run ESLint |
| `yarn test` | Run test suite |
## Security
This application handles sensitive blockchain interactions. Please:
- Verify you're on the correct URL before signing transactions
- Keep private keys secure and never share them
- Use hardware wallets for significant amounts
- Report security issues to: security@pezkuwichain.app
## Contributing
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## License
Apache-2.0
## Links
- **Website:** [https://pezkuwichain.app](https://pezkuwichain.app)
- **Documentation:** [https://docs.pezkuwichain.app](https://docs.pezkuwichain.app)
- **Issues:** [GitHub Issues](https://github.com/pezkuwichain/pezkuwi-sdk-ui/issues)
+36
View File
@@ -0,0 +1,36 @@
FROM ubuntu:latest as builder
# Install any needed packages
RUN apt-get update && \
apt-get install --no-install-recommends -y build-essential curl git gnupg ca-certificates
# install nodejs
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash -
RUN apt-get install --no-install-recommends -y nodejs && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN npm install yarn -g
WORKDIR /apps
COPY . .
RUN yarn && NODE_ENV=production yarn build:www
# ===========================================================
FROM nginx:stable-alpine
# The following is mainly for doc purpose to show which ENV is supported
ENV WS_URL=
WORKDIR /usr/share/nginx/html
COPY docker/env.sh .
RUN apk add --no-cache bash; chmod +x env.sh
COPY docker/nginx.conf /etc/nginx/nginx.conf
COPY --from=builder /apps/packages/apps/build /usr/share/nginx/html
EXPOSE 80
CMD ["/bin/bash", "-c", "/usr/share/nginx/html/env.sh && nginx -g \"daemon off;\""]
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env bash
# Copyright 2017-2025 @polkadot/apps authors & contributors
# This software may be modified and distributed under the terms
# of the Apache-2.0 license. See the LICENSE file for details.
# fail fast on any non-zero exits
set -e
# the docker image name and dockerhub repo
NAME="polkadot-js-apps"
REPO="jacogr"
# extract the current npm version from package.json
VERSION=$(cat package.json \
| grep version \
| head -1 \
| awk -F: '{ print $2 }' \
| sed 's/[",]//g' \
| sed 's/ //g')
echo "*** Building $NAME"
docker build -t $NAME -f docker/Dockerfile .
docker login -u $REPO -p $DOCKER_PASS
echo "*** Tagging $REPO/$NAME"
if [[ $VERSION != *"beta"* ]]; then
docker tag $NAME $REPO/$NAME:$VERSION
fi
docker tag $NAME $REPO/$NAME
echo "*** Publishing $NAME"
docker push $REPO/$NAME
+22
View File
@@ -0,0 +1,22 @@
#!/bin/bash
# Copyright 2017-2025 @polkadot/apps authors & contributors
# SPDX-License-Identifier: Apache-2.0
# This script is used when the docker container starts and does the magic to
# bring the ENV variables to the generated static UI.
TARGET=./env-config.js
# Recreate config file
echo -n > $TARGET
declare -a vars=(
"WS_URL"
"SAMPLE"
)
echo "window.process_env = {" >> $TARGET
for VAR in ${vars[@]}; do
echo " $VAR: \"${!VAR}\"," >> $TARGET
done
echo "}" >> $TARGET
+30
View File
@@ -0,0 +1,30 @@
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
add_header X-Frame-Options "DENY" always;
add_header Content-Security-Policy "frame-ancestors 'none'" always;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
gzip on;
include /etc/nginx/conf.d/*.conf;
}
+16
View File
@@ -0,0 +1,16 @@
// Copyright 2017-2025 @polkadot/apps authors & contributors
// SPDX-License-Identifier: Apache-2.0
import baseConfig from '@pezkuwi/dev/config/eslint';
export default [
...baseConfig,
{
rules: {
// add override for any (a metric ton of them, initial conversion)
'@typescript-eslint/no-explicit-any': 'off',
// we generally use this in isFunction, not via calling
'@typescript-eslint/unbound-method': 'off'
}
}
];
+66
View File
@@ -0,0 +1,66 @@
// Copyright 2017-2025 @polkadot/apps authors & contributors
// SPDX-License-Identifier: Apache-2.0
const fs = require('fs');
const path = require('path');
const typescript = require('typescript');
const findPackages = require('./scripts/findPackages.cjs');
function transform (file, enc, done) {
const { ext } = path.parse(file.path);
if (ext === '.tsx') {
const { outputText } = typescript.transpileModule(fs.readFileSync(file.path, enc), {
compilerOptions: { target: 'es2018' },
fileName: path.basename(file.path)
});
this.parser.parseFuncFromString(outputText, (key, options) => {
options.defaultValue = key;
if (process.platform !== 'win32') {
options.ns = /packages\/(.*?)\/src/g.exec(file.path)[1].replace('page-', 'app-');
} else {
options.ns = /packages\\(.*?)\\src/g.exec(file.path)[1].replace('page-', 'app-');
}
this.parser.set(key, options);
});
}
done();
}
module.exports = {
input: [
'packages/*/src/**/*.{ts,tsx}',
// Use ! to filter out files or directories
'!packages/*/src/**/*.spec.{ts,tsx}',
'!packages/*/src/i18n/**',
'!**/node_modules/**'
],
options: {
debug: false, // true to print config
defaultLng: 'en',
func: {
extensions: ['.tsx', '.ts'],
list: ['t', 'i18next.t', 'i18n.t']
},
keySeparator: false, // key separator
lngs: ['en'],
ns: findPackages().map(({ dir }) => dir.replace('page-', 'app-')),
nsSeparator: false, // namespace separator
resource: {
jsonIndent: 2,
lineEnding: '\n',
loadPath: 'packages/apps/public/locales/{{lng}}/{{ns}}.json',
savePath: 'packages/apps/public/locales/{{lng}}/{{ns}}.json'
},
trans: {
component: 'Trans'
}
},
output: './',
transform
};
+133
View File
@@ -0,0 +1,133 @@
{
"author": "Pezkuwi Team <team@pezkuwichain.app>",
"bugs": "https://github.com/pezkuwichain/pezkuwi-web-app-projects/issues",
"description": "Pezkuwi SDK UI - A branded Polkadot.js Apps portal for Pezkuwi blockchain network",
"engines": {
"node": ">=18.14"
},
"homepage": "https://github.com/pezkuwichain/pezkuwi-web-app-projects#readme",
"license": "Apache-2.0",
"name": "pezkuwi-sdk-ui",
"packageManager": "yarn@4.6.0",
"private": true,
"repository": {
"type": "git",
"url": "https://github.com/pezkuwichain/pezkuwi-web-app-projects.git"
},
"sideEffects": false,
"type": "module",
"version": "0.168.2-0-x",
"versions": {
"git": "0.168.2-0-x",
"npm": "0.168.1"
},
"workspaces": [
"packages/*"
],
"main": "packages/apps-electron/build/electron.js",
"scripts": {
"analyze": "yarn clean && BUILD_ANALYZE=1 yarn run build:code && yarn source-map-explorer packages/apps/build/app.*.js",
"build": "yarn run build:i18n && yarn run build:code",
"build:before": "yarn build:images",
"build:code": "NODE_ENV=production yarn pezkuwi-dev-build-ts",
"build:devElectronMain": "cd packages/apps-electron && yarn pezkuwi-exec-webpack --config webpack.main.cjs",
"build:devElectronRenderer": "cd packages/apps-electron && yarn pezkuwi-exec-webpack --config webpack.renderer.cjs",
"build:electron": "yarn clean:electronBuild && yarn build:electronMain && yarn build:electronRenderer",
"build:electronMain": "cd packages/apps-electron && NODE_ENV=production yarn pezkuwi-exec-webpack --config webpack.main.cjs",
"build:electronRenderer": "cd packages/apps-electron && NODE_ENV=production yarn pezkuwi-exec-webpack --config webpack.renderer.cjs",
"build:i18n": "i18next-scanner --config i18next-scanner.config.cjs && node ./scripts/i18nSort.cjs",
"build:images": "node scripts/imgConvert.mjs",
"build:release:electron": "yarn build && yarn build:electron && yarn postinstall:electron",
"build:release:ghpages": "yarn pezkuwi-ci-ghact-docs",
"build:release:ipfs": "node scripts/ipfsUpload.mjs",
"build:release:www": "yarn pezkuwi-ci-ghact-build && yarn build:release:ghpages && yarn build:release:ipfs",
"build:robohash": "node scripts/robohash.cjs",
"build:typesBundle": "pezkuwi-dev-run-test --env node --loader extensionless typesBundle",
"build:www": "rm -rf packages/apps/build && mkdir -p packages/apps/build && yarn run build:i18n && cd packages/apps && yarn pezkuwi-exec-webpack --config webpack.config.cjs",
"ci:chainEndpoints": "pezkuwi-dev-run-test --env node --logfile .github/chain-endpoints.md packages/apps-config/src/ci/chainEndpoints",
"ci:chainTypes": "echo ok",
"clean": "pezkuwi-dev-clean-build",
"clean:electronBuild": "cd packages/apps-electron && pezkuwi-dev-clean-build",
"clean:electronRelease": "cd packages/apps-electron && rm -rf release",
"clean:i18n": "rm -rf packages/apps/public/locales/en && mkdir -p packages/apps/public/locales/en",
"docs": "echo \"skipping docs\"",
"lint": "pezkuwi-dev-run-lint",
"packElectron": "yarn build:release:electron && yarn clean:electronRelease && electron-builder build -mwl",
"packElectron:linux": "yarn build:release:electron && electron-builder build --linux --project packages/apps-electron",
"packElectron:mac": "yarn build:release:electron && electron-builder build --mac --project packages/apps-electron",
"packElectron:test": "yarn build:release:electron && electron-builder --dir --project packages/apps-electron",
"packElectron:win": "yarn build:release:electron && electron-builder build --win --project packages/apps-electron",
"postinstall": "pezkuwi-dev-yarn-only",
"postinstall:electron": "electron-builder install-app-deps",
"start": "yarn clean && cd packages/apps && yarn pezkuwi-exec-webpack serve --config webpack.serve.cjs --port 3000",
"start:electron": "yarn clean:electronBuild && concurrently 'yarn build:devElectronMain && cd packages/apps-electron && electron ./build/electron.js' 'yarn build:devElectronRenderer'",
"test": "pezkuwi-dev-run-test --env browser ^typesBundle ^chainEndpoints ^chainTypes ^page- ^react- ^apps-electron",
"test:all": "pezkuwi-dev-run-test --env browser ^chainEndpoints ^chainTypes",
"test:one": "pezkuwi-dev-run-test --env browser",
"test:skipped": "echo 'tests skipped'"
},
"dependencies": {
"@pezkuwi/extension-dapp": "0.62.20",
"@pezkuwi/ui-shared": "^3.17.2"
},
"devDependencies": {
"@crustio/crust-pin": "^1.0.0",
"@pezkuwi/dev": "^0.85.7",
"@pinata/sdk": "^1.2.1",
"@types/chart.js": "^2.9.41",
"@types/file-saver": "^2.0.7",
"@types/react-beautiful-dnd": "^13.1.7",
"@types/react-copy-to-clipboard": "^5.0.7",
"@types/react-dom": "^18.2.18",
"@types/react-router-dom": "^5.3.3",
"@types/store": "^2.0.5",
"concurrently": "^8.2.2",
"devtron": "^1.4.0",
"dnslink-cloudflare": "^3.0.0",
"electron": "28.0.0",
"electron-builder": "24.10.0",
"electron-builder-notarize": "^1.5.1",
"extensionless": "^1.9.6",
"i18next-scanner": "^4.4.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-is": "^18.2.0",
"source-map-explorer": "^2.5.3"
},
"resolutions": {
"@pezkuwi/api": "^16.5.11",
"@pezkuwi/api-augment": "^16.5.11",
"@pezkuwi/api-base": "^16.5.11",
"@pezkuwi/api-contract": "^16.5.11",
"@pezkuwi/api-derive": "^16.5.11",
"@pezkuwi/extension-dapp": "0.62.20",
"@pezkuwi/extension-inject": "^0.62.20",
"@pezkuwi/hw-ledger": "^14.0.11",
"@pezkuwi/keyring": "^14.0.11",
"@pezkuwi/networks": "^16.5.9",
"@pezkuwi/phishing": "^0.25.28",
"@pezkuwi/rpc-augment": "^16.5.11",
"@pezkuwi/rpc-core": "^16.5.11",
"@pezkuwi/rpc-provider": "^16.5.11",
"@pezkuwi/typegen": "^16.5.11",
"@pezkuwi/types": "^16.5.11",
"@pezkuwi/types-augment": "^16.5.11",
"@pezkuwi/types-codec": "^16.5.11",
"@pezkuwi/types-create": "^16.5.11",
"@pezkuwi/types-known": "^16.5.11",
"@pezkuwi/types-support": "^16.5.11",
"@pezkuwi/util": "^14.0.11",
"@pezkuwi/util-crypto": "^14.0.11",
"@pezkuwi/wasm-crypto": "^7.5.4",
"@pezkuwi/x-bigint": "^14.0.11",
"@pezkuwi/x-fetch": "^14.0.11",
"@pezkuwi/x-global": "^14.0.11",
"@pezkuwi/x-randomvalues": "^14.0.11",
"@pezkuwi/x-textdecoder": "^14.0.11",
"@pezkuwi/x-textencoder": "^14.0.11",
"@pezkuwi/x-ws": "^14.0.11",
"@zondax/ledger-substrate": "1.1.1",
"typescript": "^5.5.4",
"webpack/eslint-scope": "5.1.1"
}
}
+25
View File
@@ -0,0 +1,25 @@
# @polkadot/apps-config
General config for various services, including settings, external links & types. This is a central source of all the configuration settings that can be tweaked. This also means that it can be customized (via PR) to support any additional chains. The internals are split into a number of settings -
- [api](./src/api) - Here you can add any chain or node-type specific types configuration. When added, it means that when the UI connects to either a runtime with a spec name, or a chain with a specific name, the types will be automatically added to the API as used in the app.
- [endpoints](./src/endpoints) - Configuration for specific per-type chain endpoints.
Customization for each of these are discussed next.
## Api
The API config can be done in one of two ways -
- [chain](./src/api/chain) - Here we are mapping to a specific chain name. Generally the next type would be preferred, however if you are supporting multiple chains with individual configs, you would probably want to add the chain-specific information in here.
- [spec](./src/api/spec) - Here we are mapping from the runtime spec name of the chain to specific types. This means that when connected to a specific spec, these types will be injected.
The actual type definitions you should be familiar with, it is exactly the same as you would upload via the settings page in JSON, or as detailed in the [API types pages](https://docs.pezkuwichain.app/api/api/start/types.extend).
## Endpoints
1. Add your chain logo (if available) to either `ui/logos/chains` or `ui/logos/nodes` (the second is generally used)
2. Run the image build command to generate an inline version via `yarn build:images`
3. Add your chain to `endpoints/{production, productionRelay, testing, testingRelay*}` as applicable for your deployment
3. The `ui.color` specifies the chain color, the `ui.logo` (imported from generated), specifies the specific logo
+67
View File
@@ -0,0 +1,67 @@
{
"bugs": "https://github.com/pezkuwichain/pezkuwi-web-app-projects/issues",
"engines": {
"node": ">=18"
},
"homepage": "https://github.com/pezkuwichain/pezkuwi-web-app-projects/tree/master/packages/apps-config#readme",
"license": "Apache-2.0",
"name": "@pezkuwi/apps-config",
"repository": {
"directory": "packages/apps-config",
"type": "git",
"url": "https://github.com/pezkuwichain/pezkuwi-web-app-projects.git"
},
"sideEffects": false,
"type": "module",
"version": "0.168.2-0-x",
"main": "index.js",
"dependencies": {
"@acala-network/type-definitions": "5.1.2",
"@bifrost-finance/type-definitions": "1.11.3",
"@crustio/type-definitions": "1.3.0",
"@darwinia/types": "2.8.10",
"@darwinia/types-known": "2.8.10",
"@digitalnative/type-definitions": "1.1.27",
"@docknetwork/node-types": "0.16.0",
"@edgeware/node-types": "3.6.2-wako",
"@equilab/definitions": "1.4.18",
"@fragnova/api-augment": "0.1.0-spec-1.0.4-mainnet",
"@frequency-chain/api-augment": "1.11.1",
"@interlay/interbtc-types": "1.13.0",
"@jamton/parachain-ts-interfaces": "1.10.4",
"@kiltprotocol/type-definitions": "^1.11502.1",
"@laminar/type-definitions": "0.3.1",
"@logion/node-api": "0.27.0-4",
"@mangata-finance/type-definitions": "^2.1.2",
"@metaverse-network-sdk/type-definitions": "0.0.1-16",
"@moonbeam-network/types-bundle": "1.0.2",
"@parallel-finance/type-definitions": "2.0.1",
"@peaqnetwork/type-definitions": "0.0.4",
"@pendulum-chain/type-definitions": "0.3.8",
"@pezkuwi/api": "^16.5.2",
"@pezkuwi/api-derive": "^16.5.2",
"@pezkuwi/networks": "^14.0.5",
"@pezkuwi/react-identicon": "^3.17.1",
"@pezkuwi/types": "^16.5.2",
"@pezkuwi/types-codec": "^16.5.2",
"@pezkuwi/util": "^14.0.5",
"@pezkuwi/util-crypto": "^14.0.5",
"@pezkuwi/wasm-util": "^7.5.2",
"@pezkuwi/x-fetch": "^14.0.5",
"@pezkuwi/x-ws": "^14.0.5",
"@phala/typedefs": "0.2.33",
"@polymeshassociation/polymesh-types": "5.7.0",
"@snowfork/snowbridge-types": "0.2.7",
"@sora-substrate/type-definitions": "1.27.7",
"@subsocial/definitions": "0.8.14",
"@unique-nft/opal-testnet-types": "1003.70.0",
"@unique-nft/quartz-mainnet-types": "1003.70.0",
"@unique-nft/sapphire-mainnet-types": "1003.70.0",
"@unique-nft/unique-mainnet-types": "1001.63.0",
"@zeitgeistpm/type-defs": "1.0.0",
"@zeroio/type-definitions": "0.0.14",
"pontem-types-bundle": "1.0.15",
"rxjs": "^7.8.1",
"tslib": "^2.8.1"
}
}
@@ -0,0 +1,83 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
minmax: [
266,
281
],
types: {
ChainId: 'u8',
DepositNonce: 'u64',
ResourceId: '[u8; 32]',
ProposalStatus: {
_enum: [
'Initiated',
'Approved',
'Rejected'
]
},
ProposalVotes: {
votes_for: 'Vec<AccountId>',
votes_against: 'Vec<AccountId>',
status: 'ProposalStatus',
expiry: 'BlockNumber'
},
TokenId: 'u256',
Erc721Token: {
id: 'TokenId',
metadata: 'Vec<u8>'
},
Address: 'IndicesLookupSource',
LookupSource: 'IndicesLookupSource',
AccountInfo: 'AccountInfoWithDualRefCount',
ValidatorPrefs: {
commission: 'Compact<Perbill>'
}
}
},
{
minmax: [
282,
294
],
types: {
ChainId: 'u8',
DepositNonce: 'u64',
ResourceId: '[u8; 32]',
ProposalStatus: {
_enum: [
'Initiated',
'Approved',
'Rejected'
]
},
ProposalVotes: {
votes_for: 'Vec<AccountId>',
votes_against: 'Vec<AccountId>',
status: 'ProposalStatus',
expiry: 'BlockNumber'
},
TokenId: 'u256',
Erc721Token: {
id: 'TokenId',
metadata: 'Vec<u8>'
},
Address: 'MultiAddress',
LookupSource: 'MultiAddress',
AccountInfo: 'AccountInfoWithDualRefCount'
}
},
{
minmax: [295, null],
types: {}
}
]
};
export default definitions;
@@ -0,0 +1,13 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
import cere from './cere.js';
// NOTE: The mapping is done from chain name in system.chain
const chain: Record<string, OverrideBundleDefinition> = {
'Cere Mainnet Beta': cere
};
export default chain;
+48
View File
@@ -0,0 +1,48 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@pezkuwi/util/types';
import { knownGenesis } from '@pezkuwi/networks/defaults';
import { assert, BN } from '@pezkuwi/util';
export function getGenesis (name: string): HexString {
const network = Object.entries(knownGenesis).find(([network]) => network === name);
assert(network?.[1][0], `Unable to find genesisHash for ${name}`);
return network[1][0];
}
export const KULUPU_GENESIS = getGenesis('kulupu');
export const KUSAMA_GENESIS = getGenesis('dicle');
export const POLKADOT_GENESIS = getGenesis('pezkuwi');
export const POLKADOT_DENOM_BLOCK = new BN(1248328);
export const PASEO_GENESIS = '0x77afd6190f1554ad45fd0d31aee62aacc33c6db0ea801129acb813f913e0764f';
export const WESTEND_GENESIS = getGenesis('zagros');
export const NEATCOIN_GENESIS = '0xfbb541421d30423c9a753ffa844b64fd44d823f513bf49e3b73b3a656309a595';
export const DOCK_GENESIS = '0x6bfe24dca2a3be10f22212678ac13a6446ec764103c0f3471c71609eac384aae';
export const DOCK_POS_TESTNET_GENESIS = '0x59d93e2ce42abb8aa52ca9a9e820233667104751f8f2980578a47a26a7235027';
export const NFTMART_GENESIS = '0xfcf9074303d8f319ad1bf0195b145871977e7c375883b834247cb01ff22f51f9';
export const CERE_NETWORK_GENESIS = '0x81443836a9a24caaa23f1241897d1235717535711d1d3fe24eae4fdc942c092c';
export const CERE_NETWORK_TESTNET_GENESIS = '0x42b9b44b4950b6c1edae543a7696caf8d0a160e9bc0424ab4ab217f7a8ba30dc';
export const VARA_NETWORK_GENESIS = '0xfe1b4c55fd4d668101126434206571a7838a8b6b93a6d1b95d607e78e6c53763';
export const VARA_NETWORK_TESTNET_GENESIS = '0x525639f713f397dcf839bd022cd821f367ebcf179de7b9253531f8adbe5436d6';
export const JOYSTREAM_GENESIS = '0x6b5e488e0fa8f9821110d5c13f4c468abcd43ce5e297e62b34c53c3346465956';
export const ZKVERIFY_GENESIS = '0x060e3dd3fa2904d031206bb913c954687a2bcc350e5a83d33d9e273ad21460f1';
export const ZKVERIFY_VOLTA_GENESIS = '0xff7fe5a610f15fe7a0c52f94f86313fb7db7d3786e7f8acf2b66c11d5be7c242';
+43
View File
@@ -0,0 +1,43 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition, OverrideBundleType } from '@pezkuwi/types/types';
import equilibrium from './spec/equilibrium.js';
import genshiro from './spec/genshiro.js';
import hyperbridge from './spec/hyperbridge.js';
import interbtc from './spec/interbtc.js';
import mangata from './spec/mangata.js';
import subspace from './spec/subspace.js';
const mapping: [OverrideBundleDefinition, string[]][] = [
[equilibrium, ['Equilibrium', 'Equilibrium-teyrchain']],
[genshiro, ['Genshiro', 'Gens-teyrchain']],
[interbtc, ['interbtc-teyrchain', 'interbtc-standalone', 'interlay-teyrchain', 'kintsugi-teyrchain', 'testnet-kintsugi', 'testnet-interlay']],
[subspace, ['subspace']],
[mangata, ['mangata', 'mangata-teyrchain']]
];
const specMappings: [OverrideBundleDefinition, string[]][] = [
[hyperbridge, ['nexus', 'messier', 'gargantua']]
];
export function applyDerives (typesBundle: OverrideBundleType): OverrideBundleType {
mapping.forEach(([{ derives }, chains]): void => {
chains.forEach((chain): void => {
if (typesBundle.spec?.[chain]) {
typesBundle.spec[chain].derives = derives;
}
});
});
specMappings.forEach(([spec, chains]): void => {
chains.forEach((chain): void => {
if (typesBundle.spec?.[chain]) {
typesBundle.spec[chain] = spec;
}
});
});
return typesBundle;
}
+10
View File
@@ -0,0 +1,10 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { applyDerives } from './derives.js';
import { typesBundle as typesOnlyBundle } from './typesBundle.js';
export * from './constants.js';
export * from './params/index.js';
export const typesBundle = /*#__PURE__*/ applyDerives(typesOnlyBundle);
@@ -0,0 +1,7 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from './inflation.js';
export * from './proposalThresholds.js';
export * from './teleport.js';
export * from './tracks/index.js';
@@ -0,0 +1,61 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ApiPromise } from '@pezkuwi/api';
import { CERE_NETWORK_GENESIS, CERE_NETWORK_TESTNET_GENESIS, DOCK_POS_TESTNET_GENESIS, JOYSTREAM_GENESIS, KUSAMA_GENESIS, NEATCOIN_GENESIS, NFTMART_GENESIS, POLKADOT_GENESIS, VARA_NETWORK_GENESIS, VARA_NETWORK_TESTNET_GENESIS, ZKVERIFY_GENESIS, ZKVERIFY_VOLTA_GENESIS } from '../constants.js';
interface InflationParams {
auctionAdjust: number;
auctionMax: number;
falloff: number;
maxInflation: number;
minInflation: number;
stakeTarget: number;
}
const DEFAULT_PARAMS: InflationParams = {
auctionAdjust: 0,
auctionMax: 0,
// 5% for falloff, as per the defaults, see
// https://github.com/paritytech/polkadot/blob/816cb64ea16102c6c79f6be2a917d832d98df757/runtime/kusama/src/lib.rs#L534
falloff: 0.05,
// 10% max, 0.25% min, see
// https://github.com/paritytech/polkadot/blob/816cb64ea16102c6c79f6be2a917d832d98df757/runtime/kusama/src/lib.rs#L523
maxInflation: 0.1,
minInflation: 0.025,
stakeTarget: 0.5
};
const CERE_NETWORK_INFLATION_PARAMS = { ...DEFAULT_PARAMS, maxInflation: 0.05, minInflation: 0.0001, stakeTarget: 0.2 };
const VARA_NETWORK_INFLATION_PARAMS = { ...DEFAULT_PARAMS, maxInflation: 0, minInflation: 0.0001, stakeTarget: 0.85 };
const JOYSTREAM_INFLATION_PARAMS = { ...DEFAULT_PARAMS, maxInflation: 0.03, minInflation: 0.0075 };
const ZKVERIFY_INFLATION_PARAMS = { ...DEFAULT_PARAMS, auctionAdjust: 0, maxInflation: 0.025, minInflation: 0.025, stakeTarget: 0 };
const ZKVERIFY_VOLTA_INFLATION_PARAMS = { ...DEFAULT_PARAMS, auctionAdjust: 0, maxInflation: 0.025, minInflation: 0.025, stakeTarget: 0 };
const KNOWN_PARAMS: Record<string, InflationParams> = {
[CERE_NETWORK_GENESIS]: CERE_NETWORK_INFLATION_PARAMS,
[CERE_NETWORK_TESTNET_GENESIS]: CERE_NETWORK_INFLATION_PARAMS,
[DOCK_POS_TESTNET_GENESIS]: { ...DEFAULT_PARAMS, stakeTarget: 0.75 },
[JOYSTREAM_GENESIS]: JOYSTREAM_INFLATION_PARAMS,
// 30% for up to 60 slots, see
// https://github.com/paritytech/polkadot/blob/816cb64ea16102c6c79f6be2a917d832d98df757/runtime/kusama/src/lib.rs#L526-L527
// 75% ideal target, see
// https://github.com/paritytech/polkadot/blob/816cb64ea16102c6c79f6be2a917d832d98df757/runtime/kusama/src/lib.rs#L529-L531
[KUSAMA_GENESIS]: { ...DEFAULT_PARAMS, auctionAdjust: (0.3 / 60), auctionMax: 60, stakeTarget: 0.75 },
[NEATCOIN_GENESIS]: { ...DEFAULT_PARAMS, stakeTarget: 0.75 },
[NFTMART_GENESIS]: { ...DEFAULT_PARAMS, falloff: 0.04, stakeTarget: 0.60 },
[POLKADOT_GENESIS]: { ...DEFAULT_PARAMS, stakeTarget: 0.75 },
[VARA_NETWORK_GENESIS]: VARA_NETWORK_INFLATION_PARAMS,
[VARA_NETWORK_TESTNET_GENESIS]: VARA_NETWORK_INFLATION_PARAMS,
[ZKVERIFY_GENESIS]: ZKVERIFY_INFLATION_PARAMS,
[ZKVERIFY_VOLTA_GENESIS]: ZKVERIFY_VOLTA_INFLATION_PARAMS
};
export function getInflationParams (api: ApiPromise): InflationParams {
return KNOWN_PARAMS[api.genesisHash.toHex()] || DEFAULT_PARAMS;
}
@@ -0,0 +1,54 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ApiPromise } from '@pezkuwi/api';
import { KULUPU_GENESIS, KUSAMA_GENESIS, POLKADOT_GENESIS } from '../constants.js';
// normal fast-track proposals
const FAST_TRACK: Record<string, number> = {
default: 2 / 3
};
// in the case where block < fastTrackVotingPeriod
const FAST_TRACK_NO_DELAY: Record<string, number> = {
default: 1
};
const PROPOSE: Record<string, number> = {
[KULUPU_GENESIS]: 1,
[KUSAMA_GENESIS]: 1 / 2,
[POLKADOT_GENESIS]: 3 / 5,
default: 1 / 2
};
const SLASH: Record<string, number> = {
[KUSAMA_GENESIS]: 1 / 2,
[POLKADOT_GENESIS]: 3 / 4,
default: 1 / 2
};
const TREASURY: Record<string, number> = {
[KULUPU_GENESIS]: 1 / 2,
[KUSAMA_GENESIS]: 3 / 5,
[POLKADOT_GENESIS]: 3 / 5,
default: 3 / 5
};
export function getFastTrackThreshold (api: ApiPromise, isDefault: boolean): number {
return isDefault
? (FAST_TRACK[api.genesisHash.toHex()] || FAST_TRACK.default)
: (FAST_TRACK_NO_DELAY[api.genesisHash.toHex()] || FAST_TRACK_NO_DELAY.default);
}
export function getProposalThreshold (api: ApiPromise): number {
return PROPOSE[api.genesisHash.toHex()] || PROPOSE.default;
}
export function getSlashProposalThreshold (api: ApiPromise): number {
return SLASH[api.genesisHash.toHex()] || SLASH.default;
}
export function getTreasuryProposalThreshold (api: ApiPromise): number {
return TREASURY[api.genesisHash.toHex()] || TREASURY.default;
}
@@ -0,0 +1,19 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ApiPromise } from '@pezkuwi/api';
import { KUSAMA_GENESIS } from '../constants.js';
// 4 * BaseXcmWeight on Dicle
const KUSAMA_WEIGHT = 4 * 1_000_000_000;
const DEFAULT_WEIGHT = KUSAMA_WEIGHT;
const KNOWN_WEIGHTS: Record<string, number> = {
[KUSAMA_GENESIS]: KUSAMA_WEIGHT
};
export function getTeleportWeight (api: ApiPromise): number {
return KNOWN_WEIGHTS[api.genesisHash.toHex()] || DEFAULT_WEIGHT;
}
@@ -0,0 +1,35 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ApiPromise } from '@pezkuwi/api';
import type { TrackInfo } from './types.js';
import { KUSAMA_GENESIS, POLKADOT_GENESIS } from '../../constants.js';
import { kusama } from './kusama.js';
import { polkadot } from './polkadot.js';
const KNOWN_GENE_TRACKS: Record<string, Record<string, TrackInfo[]>> = {
[KUSAMA_GENESIS]: kusama,
[POLKADOT_GENESIS]: polkadot
};
const KNOWN_SPEC_TRACKS: Record<string, Record<string, TrackInfo[]>> = {
kusama,
// for kitchensink, we just use the root
node: {
referenda: [
{
id: 0,
name: 'root',
origin: { system: 'Root' }
}
]
},
polkadot
};
export function getGovernanceTracks (api: ApiPromise, specName: string, palletReferenda: string): TrackInfo[] | undefined {
const lookup = KNOWN_GENE_TRACKS[api.genesisHash.toHex()] || KNOWN_SPEC_TRACKS[specName];
return lookup?.[palletReferenda];
}
@@ -0,0 +1,208 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { TrackInfo } from './types.js';
import { BN } from '@pezkuwi/util';
import { compareFellowshipRank, formatSpendFactory } from './util.js';
// hardcoded here since this is static (hopefully no re-denomination anytime...)
const formatSpend = formatSpendFactory({
decimals: 12,
forceUnit: '-',
withSi: true,
withUnit: 'KSM'
});
// https://github.com/paritytech/polkadot/blob/6e3f2c5b4b6e6927915de2f784e1d831717760fa/runtime/kusama/constants/src/lib.rs#L28-L32
const UNITS = new BN(1_000_000_000_000);
const QUID = UNITS.divn(30);
const GRAND = QUID.muln(1_000);
// https://github.com/paritytech/polkadot/blob/6e3f2c5b4b6e6927915de2f784e1d831717760fa/runtime/kusama/src/governance/origins.rs#L170-L179
const SPEND_LIMITS = {
BigSpender: formatSpend(1_000, GRAND),
BigTipper: formatSpend(1, GRAND),
MediumSpender: formatSpend(100, GRAND),
SmallSpender: formatSpend(10, GRAND),
SmallTipper: formatSpend(250, QUID),
Treasurer: formatSpend(10_000, GRAND)
};
export const kusama: Record<string, TrackInfo[]> = {
fellowshipReferenda: [
{
compare: compareFellowshipRank(0),
id: 0,
name: 'candidates',
origin: { Origins: 'FellowshipInitiates' },
text: 'Origin commanded by any members of the Pezkuwi Fellowship (no Dan grade needed)'
},
{
compare: compareFellowshipRank(1),
id: 1,
name: 'members',
origin: { Origins: 'Fellowship1Dan' },
text: 'Origin commanded by rank 1 of the Pezkuwi Fellowship and with a success of 1'
},
{
compare: compareFellowshipRank(2),
id: 2,
name: 'proficients',
origin: { Origins: 'Fellowship2Dan' },
text: 'Origin commanded by rank 2 of the Pezkuwi Fellowship and with a success of 2'
},
{
compare: compareFellowshipRank(3),
id: 3,
name: 'fellows',
origin: [
{ Origins: 'Fellowship3Dan' },
{ Origins: 'Fellows' }
],
text: 'Origin commanded by Polkadot Fellows (3rd Dan fellows or greater)'
},
{
compare: compareFellowshipRank(4),
id: 4,
name: 'senior fellows',
origin: { Origins: 'Fellowship4Dan' },
text: 'Origin commanded by rank 4 of the Pezkuwi Fellowship and with a success of 4'
},
{
compare: compareFellowshipRank(5),
id: 5,
name: 'experts',
origin: [
{ Origins: 'Fellowship5Dan' },
{ Origins: 'FellowshipExperts' }
],
text: 'Origin commanded by Polkadot Experts (5th Dan fellows or greater)'
},
{
compare: compareFellowshipRank(6),
id: 6,
name: 'senior experts',
origin: { Origins: 'Fellowship6Dan' },
text: 'Origin commanded by rank 6 of the Pezkuwi Fellowship and with a success of 6'
},
{
compare: compareFellowshipRank(7),
id: 7,
name: 'masters',
origin: [
{ Origins: 'Fellowship7Dan' },
{ Origins: 'FellowshipMasters' }
],
text: 'Origin commanded by Polkadot Masters (7th Dan fellows of greater)'
},
{
compare: compareFellowshipRank(8),
id: 8,
name: 'senior masters',
origin: { Origins: 'Fellowship8Dan' },
text: 'Origin commanded by rank 8 of the Pezkuwi Fellowship and with a success of 8'
},
{
compare: compareFellowshipRank(9),
id: 9,
name: 'grand masters',
origin: { Origins: 'Fellowship9Dan' },
text: 'Origin commanded by rank 9 of the Pezkuwi Fellowship and with a success of 9'
}
],
referenda: [
{
id: 0,
name: 'root',
origin: { system: 'Root' },
text: 'Origin for the system root'
},
{
id: 1,
name: 'whitelisted_caller',
origin: { Origins: 'WhitelistedCaller' },
text: 'Origin able to dispatch a whitelisted call'
},
{
id: 10,
name: 'staking_admin',
origin: { Origins: 'StakingAdmin' },
text: 'Origin for cancelling slashes'
},
{
id: 11,
name: 'treasurer',
origin: { Origins: 'Treasurer' },
text: 'Origin for spending (any amount of) funds'
},
{
id: 12,
name: 'lease_admin',
origin: { Origins: 'LeaseAdmin' },
text: 'Origin able to force slot leases'
},
{
id: 13,
name: 'fellowship_admin',
origin: { Origins: 'FellowshipAdmin' },
text: 'Origin for managing the composition of the fellowship'
},
{
id: 14,
name: 'general_admin',
origin: { Origins: 'GeneralAdmin' },
text: 'Origin for managing the registrar'
},
{
id: 15,
name: 'auction_admin',
origin: { Origins: 'AuctionAdmin' },
text: 'Origin for starting auctions'
},
{
id: 20,
name: 'referendum_canceller',
origin: { Origins: 'ReferendumCanceller' },
text: 'Origin able to cancel referenda'
},
{
id: 21,
name: 'referendum_killer',
origin: { Origins: 'ReferendumKiller' },
text: 'Origin able to kill referenda'
},
{
id: 30,
name: 'small_tipper',
origin: { Origins: 'SmallTipper' },
text: `Origin able to spend up to ${SPEND_LIMITS.SmallTipper} from the treasury at once`
},
{
id: 31,
name: 'big_tipper',
origin: { Origins: 'BigTipper' },
text: `Origin able to spend up to ${SPEND_LIMITS.BigTipper} from the treasury at once`
},
{
id: 32,
name: 'small_spender',
origin: { Origins: 'SmallSpender' },
text: `Origin able to spend up to ${SPEND_LIMITS.SmallSpender} from the treasury at once`
},
{
id: 33,
name: 'medium_spender',
origin: { Origins: 'MediumSpender' },
text: `Origin able to spend up to ${SPEND_LIMITS.MediumSpender} from the treasury at once`
},
{
id: 34,
name: 'big_spender',
origin: { Origins: 'BigSpender' },
text: `Origin able to spend up to ${SPEND_LIMITS.BigSpender} from the treasury at once`
}
]
};
@@ -0,0 +1,208 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { TrackInfo } from './types.js';
import { BN } from '@pezkuwi/util';
import { compareFellowshipRank, formatSpendFactory } from './util.js';
// hardcoded here since this is static (hopefully no re-denomination anytime...)
const formatSpend = formatSpendFactory({
decimals: 10,
forceUnit: '-',
withSi: true,
withUnit: 'DOT'
});
// https://github.com/paritytech/polkadot/blob/6e3f2c5b4b6e6927915de2f784e1d831717760fa/runtime/kusama/constants/src/lib.rs#L28-L32
const UNITS = new BN(10_000_000_000);
const DOLLARS = UNITS;
const GRAND = DOLLARS.muln(1_000);
// https://github.com/paritytech/polkadot/blob/6e3f2c5b4b6e6927915de2f784e1d831717760fa/runtime/kusama/src/governance/origins.rs#L170-L179
const SPEND_LIMITS = {
BigSpender: formatSpend(1_000, GRAND),
BigTipper: formatSpend(1, GRAND),
MediumSpender: formatSpend(100, GRAND),
SmallSpender: formatSpend(10, GRAND),
SmallTipper: formatSpend(250, DOLLARS),
Treasurer: formatSpend(10_000, GRAND)
};
export const polkadot: Record<string, TrackInfo[]> = {
fellowshipReferenda: [
{
compare: compareFellowshipRank(0),
id: 0,
name: 'candidates',
origin: { Origins: 'FellowshipInitiates' },
text: 'Origin commanded by any members of the Pezkuwi Fellowship (no Dan grade needed)'
},
{
compare: compareFellowshipRank(1),
id: 1,
name: 'members',
origin: { Origins: 'Fellowship1Dan' },
text: 'Origin commanded by rank 1 of the Pezkuwi Fellowship and with a success of 1'
},
{
compare: compareFellowshipRank(2),
id: 2,
name: 'proficients',
origin: { Origins: 'Fellowship2Dan' },
text: 'Origin commanded by rank 2 of the Pezkuwi Fellowship and with a success of 2'
},
{
compare: compareFellowshipRank(3),
id: 3,
name: 'fellows',
origin: [
{ Origins: 'Fellowship3Dan' },
{ Origins: 'Fellows' }
],
text: 'Origin commanded by Polkadot Fellows (3rd Dan fellows or greater)'
},
{
compare: compareFellowshipRank(4),
id: 4,
name: 'senior fellows',
origin: { Origins: 'Fellowship4Dan' },
text: 'Origin commanded by rank 4 of the Pezkuwi Fellowship and with a success of 4'
},
{
compare: compareFellowshipRank(5),
id: 5,
name: 'experts',
origin: [
{ Origins: 'Fellowship5Dan' },
{ Origins: 'FellowshipExperts' }
],
text: 'Origin commanded by Polkadot Experts (5th Dan fellows or greater)'
},
{
compare: compareFellowshipRank(6),
id: 6,
name: 'senior experts',
origin: { Origins: 'Fellowship6Dan' },
text: 'Origin commanded by rank 6 of the Pezkuwi Fellowship and with a success of 6'
},
{
compare: compareFellowshipRank(7),
id: 7,
name: 'masters',
origin: [
{ Origins: 'Fellowship7Dan' },
{ Origins: 'FellowshipMasters' }
],
text: 'Origin commanded by Polkadot Masters (7th Dan fellows of greater)'
},
{
compare: compareFellowshipRank(8),
id: 8,
name: 'senior masters',
origin: { Origins: 'Fellowship8Dan' },
text: 'Origin commanded by rank 8 of the Pezkuwi Fellowship and with a success of 8'
},
{
compare: compareFellowshipRank(9),
id: 9,
name: 'grand masters',
origin: { Origins: 'Fellowship9Dan' },
text: 'Origin commanded by rank 9 of the Pezkuwi Fellowship and with a success of 9'
}
],
referenda: [
{
id: 0,
name: 'root',
origin: { system: 'Root' },
text: 'Origin for the system root'
},
{
id: 1,
name: 'whitelisted_caller',
origin: { Origins: 'WhitelistedCaller' },
text: 'Origin able to dispatch a whitelisted call'
},
{
id: 10,
name: 'staking_admin',
origin: { Origins: 'StakingAdmin' },
text: 'Origin for cancelling slashes'
},
{
id: 11,
name: 'treasurer',
origin: { Origins: 'Treasurer' },
text: 'Origin for spending (any amount of) funds'
},
{
id: 12,
name: 'lease_admin',
origin: { Origins: 'LeaseAdmin' },
text: 'Origin able to force slot leases'
},
{
id: 13,
name: 'fellowship_admin',
origin: { Origins: 'FellowshipAdmin' },
text: 'Origin for managing the composition of the fellowship'
},
{
id: 14,
name: 'general_admin',
origin: { Origins: 'GeneralAdmin' },
text: 'Origin for managing the registrar'
},
{
id: 15,
name: 'auction_admin',
origin: { Origins: 'AuctionAdmin' },
text: 'Origin for starting auctions'
},
{
id: 20,
name: 'referendum_canceller',
origin: { Origins: 'ReferendumCanceller' },
text: 'Origin able to cancel referenda'
},
{
id: 21,
name: 'referendum_killer',
origin: { Origins: 'ReferendumKiller' },
text: 'Origin able to kill referenda'
},
{
id: 30,
name: 'small_tipper',
origin: { Origins: 'SmallTipper' },
text: `Origin able to spend up to ${SPEND_LIMITS.SmallTipper} from the treasury at once`
},
{
id: 31,
name: 'big_tipper',
origin: { Origins: 'BigTipper' },
text: `Origin able to spend up to ${SPEND_LIMITS.BigTipper} from the treasury at once`
},
{
id: 32,
name: 'small_spender',
origin: { Origins: 'SmallSpender' },
text: `Origin able to spend up to ${SPEND_LIMITS.SmallSpender} from the treasury at once`
},
{
id: 33,
name: 'medium_spender',
origin: { Origins: 'MediumSpender' },
text: `Origin able to spend up to ${SPEND_LIMITS.MediumSpender} from the treasury at once`
},
{
id: 34,
name: 'big_spender',
origin: { Origins: 'BigSpender' },
text: `Origin able to spend up to ${SPEND_LIMITS.BigSpender} from the treasury at once`
}
]
};
@@ -0,0 +1,15 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { BN } from '@pezkuwi/util';
export type Origin = { system: string } | { Origins: string };
export interface TrackInfo {
// TODO We would want to make this generic for non-fellowship
compare?: (memberInfo: BN) => boolean;
id: number;
name: string;
origin: Origin | Origin[];
text?: string;
}
@@ -0,0 +1,26 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { BN } from '@pezkuwi/util';
import { formatBalance } from '@pezkuwi/util';
interface FormatOptions {
decimals: number;
forceUnit: '-',
withSi: true,
withUnit: string;
}
export function formatSpendFactory (options: FormatOptions): (mul: number, value: BN) => string {
return (mul: number, value: BN): string => {
// We lose the decimals here... depending on chain config, this could be non-optimal
// (A simple formatBalance(value.muln(mul), FMT_OPTS) formats to 4 decimals)
return `${formatBalance(value.muln(mul), options).split('.')[0]} ${options.withUnit}`;
};
}
export function compareFellowshipRank (trackId: number): (rank: BN) => boolean {
return (rank: BN): boolean =>
rank.gten(trackId);
}
@@ -0,0 +1,6 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { typesBundleForPolkadot } from '@acala-network/type-definitions';
export default typesBundleForPolkadot.spec;
@@ -0,0 +1,20 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'MultiAddress',
LookupSource: 'MultiAddress'
}
}
]
};
export default definitions;
@@ -0,0 +1,20 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
AccountId: 'EthereumAccountId',
Address: 'AccountId',
LookupSource: 'AccountId'
}
}
]
};
export default definitions;
@@ -0,0 +1,35 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
TeyrChainAccountIdOf: 'AccountId',
Proof: {
leafHash: 'Hash',
sortedHashes: 'Vec<Hash>'
},
ProxyType: {
_enum: [
'Any',
'NonTransfer',
'Governance',
'_Staking',
'NonProxy'
]
},
RelayChainAccountId: 'AccountId',
RootHashOf: 'Hash'
}
}
]
};
export default definitions;
@@ -0,0 +1,22 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'AccountId',
LookupSource: 'AccountId'
}
}
]
};
export default definitions;
@@ -0,0 +1,207 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'MultiAddress',
AskPeriodNum: 'u64',
AskPointNum: 'u32',
AuthorityAres: 'AccountId',
AccountParticipateEstimates: {
account: 'AccountId',
end: 'BlockNumber',
estimates: 'Option<u64>',
range_index: 'Option<u8>',
bsc_address: 'Option<Bytes>',
multiplier: 'MultiplierOption',
reward: 'u128'
},
AresPriceData: {
price: 'u64',
account_id: 'AccountId',
create_bn: 'BlockNumber',
fraction_len: 'FractionLength',
raw_number: 'JsonNumberValue',
timestamp: 'u64'
},
BalanceOf: 'Balance',
ChooseWinnersPayload: {
block_number: 'BlockNumber',
winners: 'Vec<AccountParticipateEstimates>',
public: 'AccountId',
estimates_id: 'u64',
symbol: 'Bytes',
price: '(u64, FractionLength)'
},
EstimatesState: {
_enum: [
'InActive',
'Active',
'WaitingPayout',
'Completed'
]
},
EstimatesType: {
_enum: [
'DEVIATION', 'RANGE'
]
},
FractionLength: 'u32',
HttpError: {
_enum: {
IoErr: 'Bytes',
TimeOut: 'Bytes',
StatusErr: '(Bytes,u16)',
ParseErr: 'Bytes'
}
},
HttpErrTracePayload: {
trace_data: 'HttpErrTraceData<BlockNumber, AuthorityId>',
auth: 'AuthorityId',
public: 'MultiSigner'
},
HttpErrTraceData: {
block_number: 'BlockNumber',
err_auth: 'AuthorityId',
err_status: 'HttpError',
tip: 'Bytes'
},
JsonNumberValue: {
integer: 'u64',
fraction: 'u64',
fraction_length: 'u32',
exponent: 'u32'
},
Keys: 'SessionKeys3',
LookupSource: 'MultiAddress',
MultiplierOption: {
_enum: [
'Base1', 'Base2', 'Base5'
]
},
OcwControlData: {
need_verifier_check: 'bool',
open_free_price_reporter: 'bool',
open_paid_price_reporter: 'bool'
},
OffchainSignature: 'MultiSignature',
PaidValue: {
create_bn: 'BlockNumber',
amount: 'BalanceOf',
is_income: 'bool'
},
PurchasedId: 'Bytes',
PriceKey: 'Vec<u8>',
PriceToken: 'Bytes',
PreCheckPayload: {
block_number: 'BlockNumber',
pre_check_stash: 'AccountId',
pre_check_auth: 'AuthorityId',
auth: 'AuthorityId',
public: 'MultiSigner'
},
PreCheckResultPayload: {
block_number: 'BlockNumber',
pre_check_list: 'Vec<PreCheckStruct>',
pre_check_stash: 'AccountId',
pre_check_auth: 'AuthorityId',
public: 'MultiSigner'
},
PreCheckCompareLog: {
chain_avg_price_list: 'BTreeMap<Bytes, (u64, FractionLength)>',
validator_up_price_list: 'BTreeMap<Bytes, (u64, FractionLength)>',
raw_precheck_list: 'Vec<PreCheckStruct>'
},
PreCheckStruct: {
price_key: 'Vec<u8>',
number_val: 'JsonNumberValue',
max_offset: 'Percent',
timestamp: 'u64'
},
PricePayloadSubPrice: '(PriceKey, u64, FractionLength, JsonNumberValue, u64)',
PricePayloadSubJumpBlock: '(PriceKey, RequestInterval)',
PricePayload: {
block_number: 'BlockNumber',
price: 'Vec<PricePayloadSubPrice>',
jump_block: 'Vec<PricePayloadSubJumpBlock>',
auth: 'AuthorityId',
public: 'MultiSigner'
},
PreCheckStatus: {
_enum: [
'Review',
'Prohibit',
'Pass'
]
},
PurchasedRequestData: {
account_id: 'AccountId',
offer: 'BalanceOf',
create_bn: 'BlockNumber',
submit_threshold: 'u8',
max_duration: 'u64',
request_keys: 'Vec<Vec<u8>>'
},
PurchasedPricePayload: {
block_number: 'BlockNumber',
purchase_id: 'Vec<u8>',
price: 'Vec<PricePayloadSubPrice>',
auth: 'AuthorityId',
public: 'MultiSigner'
},
PurchasedAvgPriceData: {
create_bn: 'u64',
reached_type: 'u8',
price_data: '(u64, FractionLength)'
},
PurchasedDefaultData: {
submit_threshold: 'u8',
max_duration: 'u64',
avg_keep_duration: 'u64'
},
PurchasedForceCleanPayload: {
BlockNumber: 'BlockNumber',
purchase_id_list: 'Vec<Vec<u8>>',
auth: 'AuthorityId',
public: 'MultiSigner'
},
PurchaseId: 'Vec<u8>',
Releases: {
_enum: [
'V1_0_0_Ancestral',
'V1_0_1_HttpErrUpgrade',
'V1_1_0_HttpErrUpgrade',
'V1_2_0'
]
},
RequestInterval: 'u8',
StatusErr: '(u16)',
SymbolEstimatesConfig: {
symbol: 'Bytes',
estimates_type: 'EstimatesType',
id: 'u64',
ticket_price: 'Balance',
symbol_completed_price: 'u64',
symbol_fraction: 'FractionLength',
start: 'BlockNumber',
end: 'BlockNumber',
distribute: 'BlockNumber',
deviation: 'Option<Permill>',
range: 'Option<Vec<u64>>',
total_reward: 'Balance',
state: 'EstimatesState'
}
}
}
]
};
export default definitions;
@@ -0,0 +1,208 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'MultiAddress',
AskPeriodNum: 'u64',
AskPointNum: 'u32',
AuthorityAres: 'AccountId',
AccountParticipateEstimates: {
account: 'AccountId',
end: 'BlockNumber',
estimates: 'Option<u64>',
range_index: 'Option<u8>',
eth_address: 'Option<Bytes>',
multiplier: 'MultiplierOption',
reward: 'u128'
},
AresPriceData: {
price: 'u64',
account_id: 'AccountId',
create_bn: 'BlockNumber',
fraction_len: 'FractionLength',
raw_number: 'JsonNumberValue',
timestamp: 'u64'
},
BalanceOf: 'Balance',
ChooseWinnersPayload: {
block_number: 'BlockNumber',
winners: 'Vec<AccountParticipateEstimates>',
public: 'AccountId',
estimates_config: 'Bytes',
symbol: 'Bytes',
price: '(u64, FractionLength)'
},
EstimatesState: {
_enum: [
'InActive',
'Active',
'WaitingPayout',
'Completed'
]
},
EstimatesType: {
_enum: [
'DEVIATION', 'RANGE'
]
},
FractionLength: 'u32',
HttpError: {
_enum: {
IoErr: 'Bytes',
TimeOut: 'Bytes',
StatusErr: '(Bytes,u16)',
ParseErr: 'Bytes'
}
},
HttpErrTracePayload: {
trace_data: 'HttpErrTraceData<BlockNumber, AuthorityId>',
auth: 'AuthorityId',
public: 'MultiSigner'
},
HttpErrTraceData: {
block_number: 'BlockNumber',
err_auth: 'AuthorityId',
err_status: 'HttpError',
tip: 'Bytes'
},
JsonNumberValue: {
integer: 'u64',
fraction: 'u64',
fraction_length: 'u32',
exponent: 'u32'
},
Keys: 'SessionKeys4',
LookupSource: 'MultiAddress',
MultiplierOption: {
_enum: [
'Base1', 'Base2', 'Base5'
]
},
OcwControlData: {
need_verifier_check: 'bool',
open_free_price_reporter: 'bool',
open_paid_price_reporter: 'bool'
},
OffchainSignature: 'MultiSignature',
PaidValue: {
create_bn: 'BlockNumber',
amount: 'BalanceOf',
is_income: 'bool'
},
PurchasedId: 'Bytes',
PriceKey: 'Vec<u8>',
PriceToken: 'Bytes',
PreCheckPayload: {
block_number: 'BlockNumber',
pre_check_stash: 'AccountId',
pre_check_auth: 'AuthorityId',
auth: 'AuthorityId',
public: 'MultiSigner'
},
PreCheckResultPayload: {
block_number: 'BlockNumber',
pre_check_list: 'Vec<PreCheckStruct>',
pre_check_stash: 'AccountId',
pre_check_auth: 'AuthorityId',
public: 'MultiSigner'
},
PreCheckCompareLog: {
chain_avg_price_list: 'BTreeMap<Bytes, (u64, FractionLength)>',
validator_up_price_list: 'BTreeMap<Bytes, (u64, FractionLength)>',
raw_precheck_list: 'Vec<PreCheckStruct>'
},
PreCheckStruct: {
price_key: 'Vec<u8>',
number_val: 'JsonNumberValue',
max_offset: 'Percent',
timestamp: 'u64'
},
PricePayloadSubPrice: '(PriceKey, u64, FractionLength, JsonNumberValue, u64)',
PricePayloadSubJumpBlock: '(PriceKey, RequestInterval)',
PricePayload: {
block_number: 'BlockNumber',
price: 'Vec<PricePayloadSubPrice>',
jump_block: 'Vec<PricePayloadSubJumpBlock>',
auth: 'AuthorityId',
public: 'MultiSigner'
},
PreCheckStatus: {
_enum: [
'Review',
'Prohibit',
'Pass'
]
},
PurchasedRequestData: {
account_id: 'AccountId',
offer: 'BalanceOf',
create_bn: 'BlockNumber',
submit_threshold: 'u8',
max_duration: 'u64',
request_keys: 'Vec<Vec<u8>>'
},
PurchasedPricePayload: {
block_number: 'BlockNumber',
purchase_id: 'Vec<u8>',
price: 'Vec<PricePayloadSubPrice>',
auth: 'AuthorityId',
public: 'MultiSigner'
},
PurchasedAvgPriceData: {
create_bn: 'u64',
reached_type: 'u8',
price_data: '(u64, FractionLength)'
},
PurchasedDefaultData: {
submit_threshold: 'u8',
max_duration: 'u64',
avg_keep_duration: 'u64'
},
PurchasedForceCleanPayload: {
BlockNumber: 'BlockNumber',
purchase_id_list: 'Vec<Vec<u8>>',
auth: 'AuthorityId',
public: 'MultiSigner'
},
PurchaseId: 'Vec<u8>',
Releases: {
_enum: [
'V1_0_0_Ancestral',
'V1_0_1_HttpErrUpgrade',
'V1_1_0_HttpErrUpgrade',
'V1_2_0'
]
},
RequestInterval: 'u8',
StatusErr: '(u16)',
SymbolEstimatesConfig: {
symbol: 'Bytes',
estimates_type: 'EstimatesType',
id: 'u64',
ticket_price: 'Balance',
symbol_completed_price: 'u64',
symbol_fraction: 'FractionLength',
start: 'BlockNumber',
end: 'BlockNumber',
distribute: 'BlockNumber',
deviation: 'Option<Permill>',
range: 'Option<Vec<u64>>',
total_reward: 'Balance',
state: 'EstimatesState'
}
}
}
]
};
export default definitions;
@@ -0,0 +1,60 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Satoshis: 'u64'
}
}
],
runtime: {
MiningSlotApi: [
{
methods: {
next_slot_era: {
description: 'Get the next slot block start and end',
params: [],
type: '(BlockNumber, BlockNumber)'
}
},
version: 1
}
],
BitcoinApis: [
{
methods: {
redemption_rate: {
description: 'Get the current redemption rate for a given number of satoshis',
params: [
{
name: 'satoshis',
type: 'Satoshis'
}
],
type: 'Balance'
},
market_rate: {
description: 'Get the current market rate for a given number of satoshis',
params: [
{
name: 'satoshis',
type: 'Satoshis'
}
],
type: 'Balance'
}
},
version: 1
}
]
}
};
export default definitions;
@@ -0,0 +1,42 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Keys: 'AccountId',
Address: 'MultiAddress',
LookupSource: 'MultiAddress',
AmountOf: 'Amount',
Amount: 'i128',
SmartContract: {
_enum: {
Evm: 'H160',
Wasm: 'AccountId'
}
},
EraStakingPoints: {
total: 'Balance',
stakers: 'BTreeMap<AccountId, Balance>',
formerStakedEra: 'EraIndex',
claimedRewards: 'Balance'
},
EraRewardAndStake: {
rewards: 'Balance',
staked: 'Balance'
},
EraIndex: 'u32'
}
}
]
};
export default definitions;
@@ -0,0 +1,20 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'MultiAddress',
LookupSource: 'MultiAddress'
}
}
]
};
export default definitions;
@@ -0,0 +1,97 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
alias: { tokens: { AccountData: 'OrmlAccountData' } },
types: [
{
// on all versions
minmax: [0, undefined],
types: {
AssetPair: { asset_in: 'AssetId', asset_out: 'AssetId' },
Amount: 'i128',
AmountOf: 'Amount',
Address: 'AccountId',
OrmlAccountData: { free: 'Balance', frozen: 'Balance', reserved: 'Balance' },
Fee: { numerator: 'u32', denominator: 'u32' },
BalanceInfo: { amount: 'Balance', assetId: 'AssetId' },
Chain: { genesisHash: 'Vec<u8>', lastBlockHash: 'Vec<u8>' },
Currency: 'AssetId',
CurrencyId: 'AssetId',
CurrencyIdOf: 'AssetId',
Intention: {
who: 'AccountId',
asset_sell: 'AssetId',
asset_buy: 'AssetId',
amount: 'Balance',
discount: 'bool',
sell_or_buy: 'IntentionType'
},
IntentionId: 'Hash',
IntentionType: { _enum: ['SELL', 'BUY'] },
LookupSource: 'AccountId',
Price: 'Balance',
ClassId: 'u64',
TokenId: 'u64',
ClassData: { is_pool: 'bool' },
TokenData: { locked: 'bool' },
ClassInfo: { metadata: 'Vec<u8>', total_issuance: 'TokenId', owner: 'AccountId', data: 'ClassData' },
TokenInfo: { metadata: 'Vec<u8>', owner: 'AccountId', data: 'TokenData' },
ClassInfoOf: 'ClassInfo',
TokenInfoOf: 'TokenInfo',
ClassIdOf: 'ClassId',
TokenIdOf: 'TokenId',
OrderedSet: 'Vec<AssetId>',
VestingSchedule: {
start: 'BlockNumber',
period: 'BlockNumber',
period_count: 'u32',
per_period: 'Compact<Balance>'
},
VestingScheduleOf: 'VestingSchedule',
LBPWeight: 'u32',
WeightCurveType: { _enum: ['Linear'] },
PoolId: 'AccountId',
BalanceOf: 'Balance',
AssetType: {
_enum: {
Token: 'Null',
PoolShare: '(AssetId,AssetId)'
}
},
Pool: {
owner: 'AccountId',
start: 'BlockNumber',
end: 'BlockNumber',
assets: 'AssetPair',
initial_weights: 'LBPWeight',
final_weights: 'LBPWeight',
weight_curve: 'WeightCurveType',
pausable: 'bool',
paused: 'bool',
fee: 'Fee',
fee_receiver: 'AccountId'
},
AssetDetails: {
name: 'Vec<u8>',
asset_type: 'AssetType',
existential_deposit: 'Balance',
locked: 'bool'
},
AssetDetailsT: 'AssetDetails',
AssetMetadata: { symbol: 'Vec<u8>', decimals: 'u8' },
AssetInstance: 'AssetInstanceV1',
MultiLocation: 'MultiLocationV1',
MultiAsset: 'MultiAssetV1',
Xcm: 'XcmV1',
XcmOrder: 'XcmOrderV1'
}
}
]
};
export default definitions;
@@ -0,0 +1,8 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
import pkg from '@edgeware/node-types';
export default (pkg.spec.typesBundle as { spec: { edgeware: OverrideBundleDefinition } }).spec.edgeware;
@@ -0,0 +1,8 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
import { typesBundleForPolkadot } from '@bifrost-finance/type-definitions';
export default (typesBundleForPolkadot as { spec: { asgard: OverrideBundleDefinition } }).spec.asgard;
@@ -0,0 +1,8 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
import { typesBundleForPolkadot } from '@bifrost-finance/type-definitions';
export default (typesBundleForPolkadot as { spec: { bifrost: OverrideBundleDefinition } }).spec.bifrost;
@@ -0,0 +1,8 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
import { typesBundleForPolkadot } from '@bifrost-finance/type-definitions';
export default (typesBundleForPolkadot as { spec: { bifrost: OverrideBundleDefinition } }).spec.bifrost;
@@ -0,0 +1,6 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { types } from '@metaverse-network-sdk/type-definitions';
export default types;
@@ -0,0 +1,128 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'MultiAddress',
LookupSource: 'MultiAddress',
AssetInfo: {
owner: 'AccountId',
data: 'AssetData'
},
AssetData: {
name: 'Text',
description: 'Text',
properties: 'Text',
supporters: 'Vec<AccountId>'
},
AuctionId: 'u64',
AuctionItem: {
asset_id: 'TokenId',
class_id: 'ClassId',
recipient: 'AccountId',
initial_amount: 'Balance',
amount: 'Balance',
start_time: 'u32',
end_time: 'u32'
},
AuctionInfo: {
bid: 'Option<(AccountId,Balance)>',
start: 'BlockNumber',
end: 'Option<BlockNumber>'
},
RentId: 'u64',
RentalInfo: {
owner: 'AccountId',
start: 'BlockNumber',
end: 'Option<BlockNumber>',
price_per_block: 'Balance'
},
CountryId: 'u64',
CollectionId: 'u64',
ClassId: 'u32',
TokenId: 'u64',
ClassInfoOf: {
metadata: 'Vec<u8>',
total_issuance: 'TokenId',
owner: 'AccountId',
data: 'NftClassData'
},
TokenInfoOf: {
metadata: 'Vec<u8>',
owner: 'AccountId',
data: 'NftAssetData'
},
NftCollectionData: {
name: 'Vec<u8>',
owner: 'AccountId',
properties: 'Vec<u8>'
},
TokenType: {
_enum: [
'Transferrable',
'BoundToAddress'
]
},
NftAssetData: {
name: 'Vec<u8>',
description: 'Vec<u8>',
properties: 'Vec<u8>'
},
NftClassData: {
deposit: 'Balance',
properties: 'Vec<u8>',
token_type: 'TokenType'
},
NetworkId: {
_enum: {
Any: 'Null',
Named: 'Vec<u8>',
Polkadot: 'Null',
Dicle: 'Null'
}
},
CurrencyId: {
_enum: {
Token: 'TokenSymbol'
}
},
TokenSymbol: {
_enum: [
'NUUM',
'AUSD',
'ACA',
'DOT'
]
},
CountryCurrencyId: 'u32',
CurrencyIdOf: 'CurrencyId',
BalanceIdOf: 'Balance',
ChainId: {
_enum: {
RelayChain: 'Null',
ParaChain: 'ParaId'
}
},
XCurrencyId: {
chain_id: 'ChainId',
currency_id: 'CurrencyId'
},
GroupCollectionId: 'u64',
ClassIdOf: 'u32',
TokenIdOf: 'u32',
SpotId: 'u32'
}
}
]
};
export default definitions;
@@ -0,0 +1,82 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'MultiAddress',
LookupSource: 'MultiAddress',
AssetInfo: {
owner: 'AccountId',
data: 'AssetData'
},
AssetData: {
name: 'Text',
description: 'Text',
properties: 'Text',
supporters: 'Vec<AccountId>'
},
AuctionId: 'u64',
AuctionItem: {
asset_id: 'TokenId',
class_id: 'ClassId',
recipient: 'AccountId',
initial_amount: 'Balance',
amount: 'Balance',
start_time: 'u32',
end_time: 'u32'
},
AuctionInfo: {
bid: 'Option<(AccountId,Balance)>',
start: 'BlockNumber',
end: 'Option<BlockNumber>'
},
RentId: 'u64',
RentalInfo: {
owner: 'AccountId',
start: 'BlockNumber',
end: 'Option<BlockNumber>',
price_per_block: 'Balance'
},
CountryId: 'u64',
CountryCurrencyId: 'u32',
CollectionId: 'u64',
ClassId: 'u32',
TokenId: 'u64',
ClassInfoOf: {
metadata: 'Vec<u8>',
total_issuance: 'TokenId',
owner: 'AccountId',
data: 'NftClassData'
},
TokenInfoOf: {
metadata: 'Vec<u8>',
owner: 'AccountId',
data: 'NftAssetData'
},
NftCollectionData: {
name: 'Vec<u8>',
owner: 'AccountId',
properties: 'Vec<u8>'
},
CurrencyId: 'u32',
CurrencyIdOf: 'CurrencyId',
BalanceIdOf: 'Balance',
GroupCollectionId: 'u64',
ClassIdOf: 'u32',
TokenIdOf: 'u32',
SpotId: 'u32'
}
}
]
};
export default definitions;
@@ -0,0 +1,44 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Balance: 'u64',
NeuronMetadata: {
version: 'u32',
ip: 'u128',
port: 'u16',
ipType: 'u8',
uid: 'u32',
netuid: 'u16',
modality: 'u8',
hotkey: 'AccountId',
coldkey: 'AccountId',
active: 'u32',
lastUpdate: 'u64',
priority: 'u64',
stake: 'u64',
rank: 'u64',
trust: 'u64',
consensus: 'u64',
incentive: 'u64',
dividends: 'u64',
emission: 'u64',
bonds: 'Vec<(u32, u64)>',
weights: 'Vec<(u32, u32)>'
}
}
}
]
};
export default definitions;
@@ -0,0 +1,75 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
AnchorData: {
id: 'H256',
docRoot: 'H256',
anchoredBlock: 'u64'
},
Fee: {
key: 'Hash',
price: 'Balance'
},
PreCommitData: {
signingRoot: 'H256',
identity: 'H256',
expirationBlock: 'u64'
},
Proof: {
leafHash: 'H256',
sortedHashes: 'H256'
},
// MultiAccount
MultiAccountData: {
threshold: 'u16',
signatories: 'Vec<AccountId>',
deposit: 'Balance',
depositor: 'AccountId'
},
// Bridge constants
ChainId: 'u8',
ResourceId: '[u8; 32]',
'chainbridge::ChainId': 'u8',
DepositNonce: 'u64',
// NFT
RegistryId: 'H160',
TokenId: 'U256',
AssetId: {
registryId: 'RegistryId',
tokenId: 'TokenId'
},
RegistryInfo: {
ownerCanBurn: 'bool',
fields: 'Vec<Bytes>'
},
AssetInfo: {
metadata: 'Bytes'
},
ProofMint: {
value: 'Bytes',
property: 'Bytes',
salt: '[u8; 32]',
hashes: 'Vec<Hash>'
},
MintInfo: {
anchorId: 'Hash',
staticHashes: '[Hash; 3]',
proofs: 'Vec<ProofMint>'
}
}
}
]
};
export default definitions;
@@ -0,0 +1,53 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
AnchorData: {
id: 'Hash',
docRoot: 'Hash',
anchoredBlock: 'u64'
},
ChainId: 'u8',
'chainbridge::ChainId': 'u8',
DepositNonce: 'u64',
Fee: {
key: 'Hash',
price: 'Balance'
},
TeyrChainAccountIdOf: 'AccountId',
PreCommitData: {
signingRoot: 'Hash',
identity: 'AccountId',
expirationBlock: 'u64'
},
Proof: {
leafHash: 'Hash',
sortedHashes: 'Vec<Hash>'
},
ProxyType: {
_enum: [
'Any',
'NonTransfer',
'Governance',
'_Staking',
'NonProxy'
]
},
ResourceId: '[u8; 32]',
RelayChainAccountId: 'AccountId',
RootHashOf: 'Hash'
}
}
]
};
export default definitions;
+462
View File
@@ -0,0 +1,462 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'AccountId',
LookupSource: 'AccountId',
Chain: {
_enum: [
'ChainX',
'Bitcoin',
'Ethereum',
'Polkadot'
]
},
NetworkType: {
_enum: [
'Mainnet',
'Testnet'
]
},
AssetType: {
_enum: [
'Usable',
'Locked',
'Reserved',
'ReservedWithdrawal',
'ReservedDexSpot'
]
},
OrderType: {
_enum: [
'Limit',
'Market'
]
},
Side: {
_enum: [
'Buy',
'Sell'
]
},
LockedType: {
_enum: [
'Bonded',
'BondedWithdrawal'
]
},
Memo: 'Text',
AssetInfo: {
token: 'String',
tokenName: 'String',
chain: 'Chain',
decimals: 'Decimals',
desc: 'String'
},
TradingPairProfile: {
id: 'TradingPairId',
currencyPair: 'CurrencyPair',
pipDecimals: 'u32',
tickDecimals: 'u32',
tradable: 'bool'
},
Order: {
props: 'OrderProperty',
status: 'OrderStatus',
remaining: 'Balance',
executedIndices: 'Vec<TradingHistoryIndex>',
alreadyFilled: 'Balance',
lastUpdateAt: 'BlockNumber'
},
TradingPairInfo: {
latestPrice: 'Price',
lastUpdated: 'BlockNumber'
},
OrderExecutedInfo: {
tradingHistoryIdx: 'TradingHistoryIndex',
pairId: 'TradingPairId',
price: 'Price',
maker: 'AccountId',
taker: 'AccountId',
makerOrderId: 'OrderId',
takerOrderId: 'OrderId',
turnover: 'Balance',
executedAt: 'BlockNumber'
},
BtcHeaderInfo: {
header: 'BtcHeader',
height: 'u32'
},
BtcParams: {
maxBits: 'u32',
blockMaxFuture: 'u32',
targetTimespanSeconds: 'u32',
targetSpacingSeconds: 'u32',
retargetingFactor: 'u32',
retargetingInterval: 'u32',
minTimespan: 'u32',
maxTimespan: 'u32'
},
MiningAssetInfo: {
assetId: 'AssetId',
miningPower: 'FixedAssetPower',
rewardPot: 'AccountId',
rewardPotBalance: 'RpcBalance',
lastTotalMiningWeight: 'RpcMiningWeight',
lastTotalMiningWeightUpdate: 'BlockNumber'
},
MiningDividendInfo: {
own: 'Balance',
other: 'Balance',
insufficientStake: 'Balance'
},
AssetLedger: {
lastTotalMiningWeight: 'MiningWeight',
lastTotalMiningWeightUpdate: 'BlockNumber'
},
MinerLedger: {
lastMiningWeight: 'MiningWeight',
lastMiningWeightUpdate: 'BlockNumber',
lastClaim: 'Option<BlockNumber>'
},
ClaimRestriction: {
stakingRequirement: 'StakingRequirement',
frequencyLimit: 'BlockNumber'
},
NominatorInfo: {
lastRebond: 'Option<BlockNumber>'
},
BondRequirement: {
selfBonded: 'Balance',
total: 'Balance'
},
Unbonded: {
value: 'Balance',
lockedUntil: 'BlockNumber'
},
ValidatorLedger: {
totalNomination: 'Balance',
lastTotalVoteWeight: 'VoteWeight',
lastTotalVoteWeightUpdate: 'BlockNumber'
},
NominatorLedger: {
nomination: 'Balance',
lastVoteWeight: 'VoteWeight',
lastVoteWeightUpdate: 'BlockNumber',
unbondedChunks: 'Vec<Unbonded>'
},
ValidatorProfile: {
registeredAt: 'BlockNumber',
isChilled: 'bool',
lastChilled: 'Option<BlockNumber>',
referralId: 'ReferralId'
},
GlobalDistribution: {
treasury: 'u32',
mining: 'u32'
},
MiningDistribution: {
asset: 'u32',
staking: 'u32'
},
InclusionFee: {
baseFee: 'Balance',
lenFee: 'Balance',
adjustedWeightFee: 'Balance'
},
FeeDetails: {
inclusionFee: 'Option<InclusionFee<Balance>>',
extraFee: 'Balance',
tip: 'Balance',
finalFee: 'Balance'
},
UnbondedIndex: 'u32',
Token: 'Text',
Desc: 'Text',
AddrStr: 'Text',
HandicapInfo: 'Handicap',
Price: 'u128',
OrderId: 'u64',
TradingPairId: 'u32',
TradingHistoryIndex: 'u64',
PriceFluctuation: 'u32',
BtcAddress: 'Text',
FixedAssetPower: 'u32',
StakingRequirement: 'u32',
Decimals: 'u8',
CurrencyPair: {
base: 'AssetId',
quote: 'AssetId'
},
OrderStatus: {
_enum: [
'Created',
'PartialFill',
'Filled',
'PartialFillAndCanceled',
'Canceled'
]
},
AssetId: 'u32',
MiningWeight: 'u128',
VoteWeight: 'u128',
ReferralId: 'Text',
AssetRestriction: {
_enum: [
'Move',
'Transfer',
'Deposit',
'Withdraw',
'DestroyWithdrawal',
'DestroyFree'
]
},
AssetRestrictions: {
bits: 'u32'
},
BtcHeader: 'Vec<u8>',
BtcNetwork: {
_enum: [
'Mainnet',
'Testnet'
]
},
OrderInfo: 'Order',
Amount: 'i128',
AmountOf: 'Amount',
CurrencyIdOf: 'AssetId',
CurrencyId: 'AssetId',
Handicap: {
highestBid: 'Price',
lowestAsk: 'Price'
},
OrderProperty: {
id: 'OrderId',
side: 'Side',
price: 'Price',
amount: 'Amount',
pairId: 'TradingPairId',
submitter: 'AccountId',
orderType: 'OrderType',
createdAt: 'BlockNumber'
},
TotalAssetInfo: {
info: 'AssetInfo',
balance: 'BTreeMap<AssetType, Balance>',
isOnline: 'bool',
restrictions: 'AssetRestrictions'
},
WithdrawalRecordId: 'u32',
WithdrawalState: {
_enum: [
'Applying',
'Processing',
'NormalFinish',
'RootFinish',
'NormalCancel',
'RootCancel'
]
},
WithdrawalRecord: {
assetId: 'AssetId',
applicant: 'AccountId',
balance: 'Balance',
addr: 'AddrStr',
ext: 'Memo',
height: 'BlockNumber'
},
WithdrawalLimit: {
minimalWithdrawal: 'Balance',
fee: 'Balance'
},
TrusteeInfoConfig: {
minTrusteeCount: 'u32',
maxTrusteeCount: 'u32'
},
GenericTrusteeIntentionProps: {
about: 'Text',
hotEntity: 'Vec<u8>',
coldEntity: 'Vec<u8>'
},
GenericTrusteeSessionInfo: {
trusteeList: 'Vec<AccountId>',
threshold: 'u16',
hotAddress: 'Vec<u8>',
coldAddress: 'Vec<u8>'
},
ChainAddress: 'Vec<u8>',
BtcTrusteeType: 'Vec<u8>',
BtcTrusteeAddrInfo: {
addr: 'BtcAddress',
redeemScript: 'Vec<u8>'
},
BtcTrusteeIntentionProps: {
about: 'Text',
hotEntity: 'BtcTrusteeType',
coldEntity: 'BtcTrusteeType'
},
BtcTrusteeSessionInfo: {
trusteeList: 'Vec<AccountId>',
threshold: 'u16',
hotAddress: 'BtcTrusteeAddrInfo',
coldAddress: 'BtcTrusteeAddrInfo'
},
BtcTransaction: 'Vec<u8>',
BtcPartialMerkleTree: 'Vec<u8>',
BtcRelayedTxInfo: {
blockHash: 'H256',
merkleProof: 'BtcPartialMerkleTree'
},
BtcHeaderIndex: {
hash: 'H256',
height: 'u32'
},
BtcTxResult: {
_enum: [
'Success',
'Failure'
]
},
BtcTxState: {
txType: 'BtcTxType',
result: 'BtcTxResult'
},
BtcTxType: {
_enum: [
'Withdrawal',
'Deposit',
'HotAndCold',
'TrusteeTransition',
'Irrelevance'
]
},
BtcDepositCache: {
txid: 'H256',
balance: 'u64'
},
BtcVoteResult: {
_enum: [
'Unfinish',
'Finish'
]
},
BtcWithdrawalProposal: {
sigState: 'BtcVoteResult',
withdrawalIdList: 'Vec<u32>',
tx: 'BtcTransaction',
trusteeList: 'Vec<(AccountId, bool)>'
},
BtcTxVerifier: {
_enum: [
'Recover',
'RuntimeInterface'
]
},
RpcTotalAssetInfo: {
info: 'AssetInfo',
balance: 'BTreeMap<AssetType, RpcBalance>',
isOnline: 'bool',
restrictions: 'AssetRestrictions'
},
RpcOrder: {
id: 'OrderId',
side: 'Side',
price: 'RpcPrice',
amount: 'RpcBalance',
pairId: 'TradingPairId',
submitter: 'AccountId',
orderType: 'OrderType',
createdAt: 'BlockNumber',
status: 'OrderStatus',
remaining: 'RpcBalance',
executedIndices: 'Vec<TradingHistoryIndex>',
alreadyFilled: 'RpcBalance',
reservedBalance: 'RpcBalance',
lastUpdateAt: 'BlockNumber'
},
RpcWithdrawalRecord: {
assetId: 'AssetId',
applicant: 'AccountId',
balance: 'RpcBalance',
addr: 'String',
ext: 'String',
height: 'BlockNumber',
state: 'WithdrawalState'
},
RpcMiningDividendInfo: {
own: 'RpcBalance',
other: 'RpcBalance',
insufficientStake: 'RpcBalance'
},
RpcInclusionFee: {
baseFee: 'RpcBalance',
lenFee: 'RpcBalance',
adjustedWeightFee: 'RpcBalance'
},
RpcFeeDetails: {
inclusionFee: 'Option<RpcInclusionFee>',
tip: 'RpcBalance',
extraFee: 'RpcBalance',
finalFee: 'RpcBalance'
},
ValidatorInfo: {
account: 'AccountId',
registeredAt: 'BlockNumber',
isChilled: 'bool',
lastChilled: 'Option<BlockNumber>',
totalNomination: 'RpcBalance',
lastTotalVoteWeight: 'RpcVoteWeight',
lastTotalVoteWeightUpdate: 'BlockNumber',
isValidating: 'bool',
selfBonded: 'RpcBalance',
referralId: 'String',
rewardPotAccount: 'AccountId',
rewardPotBalance: 'RpcBalance'
},
FullPairInfo: {
baseCurrency: 'AssetId',
highestBid: 'RpcPrice',
id: 'TradingPairId',
latestPrice: 'RpcPrice',
latestPriceUpdatedAt: 'BlockNumber',
lowestAsk: 'RpcPrice',
maxValidBid: 'RpcPrice',
minValidAsk: 'RpcPrice',
pipDecimals: 'u32',
quoteCurrency: 'AssetId',
tickDecimals: 'u32',
tradable: 'bool'
},
Depth: {
asks: 'Vec<(RpcPrice, RpcBalance)>',
bids: 'Vec<(RpcPrice, RpcBalance)>'
},
Page: {
pageIndex: 'u32',
pageSize: 'u32',
data: 'Vec<RpcOrder>'
},
String: 'Text',
Balance: 'u128',
RpcPrice: 'String',
RpcBalance: 'String',
RpcMiningWeight: 'String',
RpcVoteWeight: 'String',
FullIdentification: 'ValidatorId',
WithdrawalRecordOf: 'WithdrawalRecord'
}
}
]
};
export default definitions;
@@ -0,0 +1,74 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Amount: 'i128',
AmountOf: 'Amount',
Balance: 'u128',
CurrencyId: {
_enum: ['CLV', 'CUSDT', 'DOT', 'CETH']
},
CurrencyIdOf: 'CurrencyId',
CurrencyTypeEnum: {
_enum: ['CLV', 'CUSDT', 'DOT', 'CETH']
},
PairKey: 'u64',
Rate: 'FixedU128',
Ratio: 'FixedU128',
Price: 'FixedU128',
Share: 'u128',
OracleKey: 'CurrencyId',
CurrencyInfo: {
id: 'CurrencyId',
name: 'CurrencyTypeEnum'
},
ExchangeInfo: {
balance: 'Balance',
routes: 'Vec<CurrencyTypeEnum>'
},
PoolId: {
_enum: {
Swap: 'u64'
}
},
EcdsaSignature: '[u8; 65]',
EvmAddress: 'H160',
ExitSucceed: {
_enum: ['Stopped', 'Returned', 'Suicided']
},
ExitRevert: {
_enum: ['Reverted']
},
ExitError: {
_enum: [
'StackUnderflow', 'StackOverflow', 'InvalidJump', 'InvalidRange', 'DesignatedInvalid', 'CallTooDeep',
'CreateCollision', 'CreateContractLimit', 'OutOfOffset', 'OutOfGas', 'OutOfFund', 'PCUnderflow', 'CreateEmpty',
'Other<String>'
]
},
ExitFatal: {
_enum: ['NotSupported', 'UnhandledInterrupt', 'CallErrorAsFatal', 'Other<String>']
},
ExitReason: {
_enum: ['Succeed<ExitSucceed>',
'Error<ExitError>',
'Revert<ExitRevert>',
'Fatal<ExitFatal>'
]
}
}
}
]
};
export default definitions;
@@ -0,0 +1,32 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Amount: 'i128',
Keys: 'SessionKeys4',
AmountOf: 'Amount',
Balance: 'u128',
Rate: 'FixedU128',
Ratio: 'FixedU128',
EcdsaSignature: '[u8; 65]',
EvmAddress: 'H160',
EthereumTxHash: 'H256',
BridgeNetworks: {
_enum: ['BSC', 'Ethereum', 'CloverPara']
}
}
}
]
};
export default definitions;
@@ -0,0 +1,22 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'AccountId',
LookupSource: 'AccountId'
}
}
]
};
export default definitions;
@@ -0,0 +1,44 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Balance: 'u64',
NeuronMetadata: {
version: 'u32',
ip: 'u128',
port: 'u16',
ipType: 'u8',
uid: 'u32',
netuid: 'u16',
modality: 'u8',
hotkey: 'AccountId',
coldkey: 'AccountId',
active: 'u32',
lastUpdate: 'u64',
priority: 'u64',
stake: 'u64',
rank: 'u64',
trust: 'u64',
consensus: 'u64',
incentive: 'u64',
dividends: 'u64',
emission: 'u64',
bonds: 'Vec<(u32, u64)>',
weights: 'Vec<(u32, u32)>'
}
}
}
]
};
export default definitions;
@@ -0,0 +1,82 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'MultiAddress',
LookupSource: 'MultiAddress',
ClassId: 'u64',
ClassInfoOf: 'ClassId',
BalanceOf: 'Balance',
BalanceReservableOf: 'BalanceOf',
Moment: 'u64',
Place: {
spot: 'u32',
payout: 'Balance'
},
Competitor: {
vie_id: '[u8;16]',
staked: 'bool',
submitted_winner: 'bool'
},
Vie: {
operator: 'AccountId',
stake: 'Balance',
places: 'Vec<Place>',
time: 'Moment',
competitors: 'Vec<AccountId>',
memo: 'Vec<u8>'
},
VieOf: 'Vie',
VieReq: {
stake: 'Balance',
places: 'Vec<Place>',
competitors: 'Vec<AccountId>',
memo: 'Vec<u8>'
},
VieRequestOf: 'VieReq',
Participants: {
AccountId: '[u8;16]'
},
Operators: {
AccountId: '[u8;16]'
},
StandingReq: {
competitor: 'AccountId',
spot: 'u32'
},
PodiumReq: {
champion: 'AccountId',
podium: 'Vec<StandingReq>'
},
PodiumReqOf: 'PodiumReq',
Trophy: {
trophy: '[u8; 16]',
competitors: 'Vec<AccountId>',
stake: 'Balance',
memo: 'Vec<u8>',
time: 'u64',
podium: 'Vec<StandingReq>'
},
TokenId: 'u64',
TokenInfo: {
metadata: 'Vec<u8>',
owner: 'AccountId',
data: 'Trophy'
},
TokenInfoOf: 'TokenInfo'
}
}
]
};
export default definitions;
@@ -0,0 +1,30 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
minmax: [0, 8],
types: {
Address: 'AccountId',
Keys: 'SessionKeys2',
LookupSource: 'AccountId',
Schedule: 'ScheduleTo258'
}
},
{
// updated to Bizinikiwi master
minmax: [9, undefined],
types: {
Keys: 'SessionKeys2'
}
}
]
};
export default definitions;
@@ -0,0 +1,53 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'MultiAddress',
LookupSource: 'MultiAddress',
AccountInfo: {
nonce: 'Index',
consumers: 'RefCount',
providers: 'RefCount',
data: 'AccountData'
},
Balance: 'u128',
BalanceOf: 'Balance',
AuthorityOf: 'AccountId',
PaymentId: '[u8;16]',
Payment: {
id: 'PaymentId',
account_id: 'AccountId',
success_url: 'Vec<u8>',
failure_url: 'Vec<u8>',
paid: 'bool',
pay_to: 'AccountId'
},
PeerId: '(Vec<u8>)',
Amendment: {
statement: 'Vec<u8>',
owners: 'Vec<AccountId>'
},
BlockNumber: 'u32',
VestingSchedule: {
start: 'BlockNumber',
period: 'BlockNumber',
period_count: 'BlockNumber',
per_period: 'Compact<Balance>'
},
VestingScheduleOf: 'VestingSchedule'
}
}
]
};
export default definitions;
@@ -0,0 +1,8 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
import { typesBundleForPolkadot } from '@crustio/type-definitions';
export default typesBundleForPolkadot.spec.crust as unknown as OverrideBundleDefinition;
@@ -0,0 +1,22 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'AccountId',
LookupSource: 'AccountId'
}
}
]
};
export default definitions;
@@ -0,0 +1,58 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
StakingRates: {
collatorStakingRate: 'Perquintill',
collatorRewardRate: 'Perquintill',
delegatorStakingRate: 'Perquintill',
delegatorRewardRate: 'Perquintill'
}
}
}
],
runtime: {
Staking: [
{
methods: {
get_staking_rates: {
description: 'Calculate the current staking and reward rates for collators and delegators',
params: [],
type: 'StakingRates'
},
get_unclaimed_staking_rewards: {
description: 'Calculate the claimable staking rewards for a given account address',
params: [
{
name: 'account',
type: 'AccountId32'
}
],
type: 'Balance'
},
get_sorted_proposed_candidates: {
description: 'Provides a sorted list of collators most suited for given delegator\'s stake amount determined with some heuristic algorithm',
params: [
{
name: 'balance',
type: 'Balance'
}
],
type: 'Vec<AccountId32>'
}
},
version: 1
}
]
}
};
export default definitions;
@@ -0,0 +1,238 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Keys: 'SessionKeys2',
Address: 'MultiAddress',
LookupSource: 'MultiAddress',
RoamingOperator: '[u8; 16]',
RoamingOperatorIndex: 'u64',
RoamingNetwork: '[u8; 16]',
RoamingNetworkIndex: 'u64',
RoamingOrganization: '[u8; 16]',
RoamingOrganizationIndex: 'u64',
RoamingNetworkServer: '[u8; 16]',
RoamingNetworkServerIndex: 'u64',
RoamingDevice: '[u8; 16]',
RoamingDeviceIndex: 'u64',
RoamingRoutingProfile: '[u8; 16]',
RoamingRoutingProfileIndex: 'u64',
RoamingRoutingProfileAppServer: 'Text',
RoamingServiceProfile: '[u8; 16]',
RoamingServiceProfileIndex: 'u64',
RoamingServiceProfileUplinkRate: 'u32',
RoamingServiceProfileDownlinkRate: 'u32',
RoamingAccountingPolicy: '[u8; 16]',
RoamingAccountingPolicyIndex: 'u64',
RoamingAccountingPolicyType: 'Text',
RoamingAccountingPolicyUplinkFeeFactor: 'u32',
RoamingAccountingPolicyDownlinkFeeFactor: 'u32',
RoamingAccountingPolicyConfig: {
policy_type: 'Text',
subscription_fee: 'Balance',
uplink_fee_factor: 'u32',
downlink_fee_factor: 'u32'
},
RoamingAgreementPolicy: '[u8; 16]',
RoamingAgreementPolicyIndex: 'u64',
RoamingAgreementPolicyActivationType: 'Text',
RoamingAgreementPolicyConfig: {
policy_activation_type: 'Text',
policy_expiry_block: 'Moment'
},
RoamingNetworkProfile: '[u8; 16]',
RoamingNetworkProfileIndex: 'u64',
RoamingDeviceProfile: '[u8; 16]',
RoamingDeviceProfileIndex: 'u64',
RoamingDeviceProfileDevAddr: 'Text',
RoamingDeviceProfileDevEUI: 'Text',
RoamingDeviceProfileJoinEUI: 'Text',
RoamingDeviceProfileVendorID: 'Text',
RoamingDeviceProfileConfig: {
device_profile_devaddr: 'Text',
device_profile_deveui: 'Text',
device_profile_joineui: 'Text',
device_profile_vendorid: 'Text'
},
RoamingSession: '[u8; 16]',
RoamingSessionIndex: 'u64',
RoamingSessionJoinRequest: {
session_network_server_id: 'Moment',
session_join_requested_at_block: 'Moment'
},
RoamingSessionJoinAccept: {
session_join_request_accept_expiry: 'Moment',
session_join_request_accept_accepted_at_block: 'Moment'
},
RoamingBillingPolicy: '[u8; 16]',
RoamingBillingPolicyIndex: 'u64',
RoamingBillingPolicyConfig: {
policy_next_billing_at_block: 'Moment',
policy_frequency_in_blocks: 'Moment'
},
RoamingChargingPolicy: '[u8; 16]',
RoamingChargingPolicyIndex: 'u64',
RoamingChargingPolicyConfig: {
policy_next_charging_at_block: 'Moment',
policy_delay_after_billing_in_blocks: 'u64'
},
RoamingPacketBundle: '[u8; 16]',
RoamingPacketBundleIndex: 'u64',
RoamingPacketBundleReceivedAtHome: 'bool',
RoamingPacketBundleReceivedPacketsCount: 'u64',
RoamingPacketBundleReceivedPacketsOkCount: 'u64',
RoamingPacketBundleExternalDataStorageHash: 'Hash',
RoamingPacketBundleReceiver: {
packet_bundle_received_at_home: 'bool',
packet_bundle_received_packets_count: 'u64',
packet_bundle_received_packets_ok_count: 'u64',
packet_bundle_received_started_at_block: 'Moment',
packet_bundle_received_ended_at_block: 'Moment',
packet_bundle_external_data_storage_hash: 'Hash'
},
MiningRatesToken: '[u8; 16]',
MiningRatesTokenIndex: 'u64',
MiningRatesTokenTokenDOT: 'u32',
MiningRatesTokenTokenMXC: 'u32',
MiningRatesTokenTokenIOTA: 'u32',
MiningRatesTokenMaxToken: 'u32',
MiningRatesTokenMaxLoyalty: 'u32',
MiningRatesTokenConfig: {
token_token_mxc: 'u32',
token_token_iota: 'u32',
token_token_dot: 'u32',
token_max_token: 'u32',
token_max_loyalty: 'u32'
},
MiningRatesHardware: '[u8; 16]',
MiningRatesHardwareIndex: 'u64',
MiningRatesHardwareSecure: 'u32',
MiningRatesHardwareInsecure: 'u32',
MiningRatesHardwareMaxHardware: 'u32',
MiningRatesHardwareCategory1MaxTokenBonusPerGateway: 'u32',
MiningRatesHardwareCategory2MaxTokenBonusPerGateway: 'u32',
MiningRatesHardwareCategory3MaxTokenBonusPerGateway: 'u32',
MiningRatesHardwareConfig: {
hardware_hardware_secure: 'u32',
hardware_hardware_insecure: 'u32',
hardware_max_hardware: 'u32',
hardware_category_1_max_token_bonus_per_gateway: 'u32',
hardware_category_2_max_token_bonus_per_gateway: 'u32',
hardware_category_3_max_token_bonus_per_gateway: 'u32'
},
MiningConfigToken: '[u8; 16]',
MiningConfigTokenIndex: 'u64',
MiningConfigTokenType: 'Text',
MiningConfigTokenLockAmount: 'u64',
MiningConfigTokenConfig: {
token_type: 'Text',
token_lock_amount: 'u64',
token_lock_start_block: 'Moment',
token_lock_interval_blocks: 'Moment'
},
MiningConfigTokenRequirementsConfig: {
token_type: 'Text',
token_lock_min_amount: 'u64',
token_lock_min_blocks: 'u32'
},
MiningConfigHardware: '[u8; 16]',
MiningConfigHardwareIndex: 'u64',
MiningConfigHardwareSecure: 'bool',
MiningConfigHardwareType: 'Text',
MiningConfigHardwareID: 'u64',
MiningConfigHardwareDevEUI: 'u64',
MiningConfigHardwareConfig: {
hardware_secure: 'bool',
hardware_type: 'Text',
hardware_id: 'u64',
hardware_dev_eui: 'u64',
hardware_lock_start_block: 'Moment',
hardware_lock_interval_blocks: 'Moment'
},
MiningSamplingToken: '[u8; 16]',
MiningSamplingTokenIndex: 'u64',
MiningSamplingTokenSampleLockedAmount: 'u64',
MiningSamplingTokenConfig: {
token_sample_block: 'Moment',
token_sample_locked_amount: 'u64'
},
MiningSamplingHardware: '[u8; 16]',
MiningSamplingHardwareIndex: 'u64',
MiningSamplingHardwareSampleHardwareOnline: 'u64',
MiningSamplingHardwareConfig: {
hardware_sample_block: 'Moment',
hardware_sample_hardware_online: 'bool'
},
MiningEligibilityToken: '[u8; 16]',
MiningEligibilityTokenIndex: 'u64',
MiningEligibilityTokenCalculatedEligibility: 'u64',
MiningEligibilityTokenLockedPercentage: 'u32',
MiningEligibilityTokenAuditorAccountID: 'u64',
MiningEligibilityTokenResult: {
token_calculated_eligibility: 'u64',
token_token_locked_percentage: 'u32',
token_date_audited: 'Moment',
token_auditor_account_id: 'u64'
},
MiningEligibilityHardware: '[u8; 16]',
MiningEligibilityHardwareIndex: 'u64',
MiningEligibilityHardwareCalculatedEligibility: 'u64',
MiningEligibilityHardwareUptimePercentage: 'u32',
MiningEligibilityHardwareAuditorAccountID: 'u64',
MiningEligibilityHardwareResult: {
hardware_calculated_eligibility: 'u64',
hardware_uptime_percentage: 'u32',
hardware_block_audited: 'Moment',
hardware_auditor_account_id: 'u64'
},
MiningClaimsToken: '[u8; 16]',
MiningClaimsTokenIndex: 'u64',
MiningClaimsTokenClaimAmount: 'u64',
MiningClaimsTokenClaimResult: {
token_claim_amount: 'u64',
token_claim_block_redeemed: 'u64'
},
MiningClaimsHardware: '[u8; 16]',
MiningClaimsHardwareIndex: 'u64',
MiningClaimsHardwareClaimAmount: 'u64',
MiningClaimsHardwareClaimResult: {
hardware_claim_amount: 'u64',
hardware_claim_block_redeemed: 'u64'
},
MiningExecutionToken: '[u8; 16]',
MiningExecutionTokenIndex: 'u64',
MiningExecutionTokenExecutorAccountID: 'u64',
MiningExecutionTokenExecutionResult: {
token_execution_exector_account_id: 'u64',
token_execution_started_block: 'Moment',
token_execution_ended_block: 'Moment'
},
ExchangeRateIndex: 'u64',
ExchangeRateConfig: {
hbtc: 'u64',
dot: 'u64',
iota: 'u64',
fil: 'u64',
decimals_after_point: 'u32'
},
HBTCRate: 'u64',
DOTRate: 'u64',
IOTARate: 'u64',
FILRate: 'u64',
DecimalsAfterPoint: 'u32'
}
}
]
};
export default definitions;
@@ -0,0 +1,9 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// @ts-expect-error No definitions provided in package
import { spec } from '@docknetwork/node-types';
export default (spec as { 'dock-main-runtime': OverrideBundleDefinition })['dock-main-runtime'];
@@ -0,0 +1,9 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// @ts-expect-error No definitions provided in package
import { spec } from '@docknetwork/node-types';
export default (spec as { 'dock-test-runtime': OverrideBundleDefinition })['dock-test-runtime'];
@@ -0,0 +1,30 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types:
{
CurrencyId: {
_enum: [
'DOL'
]
},
CurrencyIdOf: 'CurrencyId',
Amount: 'i128',
AmountOf: 'Amount',
AccountInfo: 'AccountInfoWithDualRefCount'
}
}
]
};
export default definitions;
@@ -0,0 +1,81 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'MultiAddress',
LookupSource: 'MultiAddress',
MogwaiStruct: {
id: 'Hash',
dna: 'Hash',
genesis: 'BlockNumber',
price: 'Balance',
gen: 'u32',
rarity: 'RarityType'
},
MogwaiBios: {
mogwai_id: 'Hash',
state: 'u32',
metaxy: 'Vec<[u8;16]>',
intrinsic: 'Balance',
level: 'u8',
phases: 'Vec<BlockNumber>',
adaptations: 'Vec<Hash>'
},
GameEvent: {
id: 'Hash',
begin: 'BlockNumber',
duration: 'u16',
event_type: 'GameEventType',
hashes: 'Vec<Hash>',
value: 'u64'
},
GameEventType: {
_enum: [
'Default',
'Hatch'
]
},
RarityType: {
_enum: [
'Minor',
'Normal',
'Rare',
'Epic',
'Legendary'
]
},
MogwaicoinAddress: {
address: 'Vec<u8>',
account: 'AccountId',
signature: 'Vec<u8>',
state: 'ClaimState',
balance: 'Balance'
},
ClaimState: {
_enum: [
'None',
'Registred',
'Verified',
'Secured',
'Processed',
'Holded',
'Failed',
'Cancelled'
]
}
}
}
]
};
export default definitions;
+430
View File
@@ -0,0 +1,430 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
AccountIdOf: 'AccountId',
Address: 'MultiAddress',
AirDropCurrencyId: {
_enum: [
'ICE',
'EAVE'
]
},
Amount: 'i128',
AmountOf: 'Amount',
AsOriginId: 'AuthoritysOriginId',
AssetId: 'u64',
AssetIdOf: 'AssetId',
AuctionId: 'u32',
AuctionIdOf: 'AuctionId',
AuctionInfo: {
bid: 'Option<(AccountId, Balance)>',
start: 'BlockNumber',
end: 'Option<BlockNumber>'
},
AuthoritysOriginId: {
_enum: [
'Root',
'EaveTreasury',
'CdpTreasury',
'ElpTreasury',
'DSWF'
]
},
BalanceInfo: {
amount: 'Balance'
},
BalanceRequest: {
amount: 'Balance'
},
BalanceWrapper: {
amount: 'Balance'
},
BondingLedger: {
total: 'Compact<Balance>',
active: 'Compact<Balance>',
unlocking: 'Vec<UnlockChunk>'
},
CID: 'Vec<u8>',
CallOf: 'Call',
CallRequest: {
from: 'Option<H160>',
to: 'Option<H160>',
gasLimit: 'Option<u32>',
storageLimit: 'Option<u32>',
value: 'Option<U128>',
data: 'Option<Bytes>'
},
ChainId: {
_enum: {
RelayChain: 'Null',
ParaChain: 'ParaId'
}
},
ChangeBalance: {
_enum: {
NoChange: 'Null',
NewValue: 'Balance'
}
},
ChangeOptionRate: {
_enum: {
NoChange: 'Null',
NewValue: 'OptionRate'
}
},
ChangeOptionRatio: {
_enum: {
NoChange: 'Null',
NewValue: 'OptionRatio'
}
},
ChangeRate: {
_enum: {
NoChange: 'Null',
NewValue: 'Rate'
}
},
ChangeRatio: {
_enum: {
NoChange: 'Null',
NewValue: 'Ratio'
}
},
ClassData: {
deposit: 'Balance',
properties: 'Properties'
},
ClassId: 'u32',
ClassIdOf: 'ClassId',
ClassInfoOf: {
metadata: 'CID',
totalIssuance: 'TokenId',
owner: 'AccountId',
data: 'ClassData'
},
CodeInfo: {
codeSize: 'u32',
refCount: 'u32'
},
CollateralAuctionItem: {
refundRecipient: 'AccountId',
currencyId: 'CurrencyId',
initialAmount: 'Compact<Balance>',
amount: 'Compact<Balance>',
target: 'Compact<Balance>',
startTime: 'BlockNumber'
},
CurrencyId: {
_enum: {
Token: 'TokenSymbol',
DEXShare: '(TokenSymbol, TokenSymbol)',
ERC20: 'EvmAddress'
}
},
CurrencyIdOf: 'CurrencyId',
DataProviderId: {
_enum: [
'Aggregated',
'Eave',
'Band'
]
},
DebitAuctionItem: {
initialAmount: 'Compact<Balance>',
amount: 'Compact<Balance>',
fix: 'Compact<Balance>',
startTime: 'BlockNumber'
},
DelayedDispatchTime: {
_enum: {
At: 'BlockNumber',
After: 'BlockNumber'
}
},
DelayedOrigin: {
delay: 'BlockNumber',
origin: 'PalletsOrigin'
},
DestAddress: 'Vec<u8>',
DispatchId: 'u32',
DispatchTime: {
_enum: {
At: 'BlockNumber',
After: 'BlockNumber'
}
},
ElpUnlockChunk: {
value: 'Compact<Balance>',
era: 'Compact<EraIndex>'
},
EvmAccountInfo: {
nonce: 'Index',
contractInfo: 'Option<EvmContractInfo>',
developerDeposit: 'Option<Balance>'
},
EvmAddress: 'H160',
EvmContractInfo: {
codeHash: 'H256',
maintainer: 'H160',
deployed: 'bool'
},
ExchangeRate: 'FixedU128',
GraduallyUpdate: {
key: 'StorageKey',
targetValue: 'StorageValue',
perBlock: 'StorageValue'
},
Keys: 'SessionKeys2',
Ledger: {
bonded: 'Balance',
unbondingToFree: 'Balance',
freePool: 'Balance',
toUnbondNextEra: '(Balance, Balance)'
},
LiquidationStrategy: {
_enum: [
'Auction',
'Exchange'
]
},
LiquidityPool: {
currency_ids: 'Vec<AssetIdOf>',
lp_token_id: 'AssetId',
pool_config_id: 'u32',
pool_reserves: 'Vec<Balance>'
},
LiquidityPoolConfig_: 'PoolConfig',
LiquidityPool_: 'LiquidityPool',
LookupSource: 'MultiAddress',
NomineeId: 'AccountId',
NFTBalance: 'u128',
OptionRate: 'Option<Rate>',
OptionRatio: 'Option<Ratio>',
OracleKey: 'CurrencyId',
OracleValue: 'Price',
OrderedSet: 'Vec<AccountId>',
OrmlAccountData: {
free: 'Balance',
frozen: 'Balance',
reserved: 'Balance'
},
OrmlBalanceLock: {
amount: 'Balance',
id: 'LockIdentifier'
},
OrmlVestingSchedule: {
start: 'BlockNumber',
period: 'BlockNumber',
periodCount: 'u32',
perPeriod: 'Compact<Balance>'
},
PalletBalanceOf: 'Balance',
PalletsOrigin: {
_enum: {
System: 'SystemOrigin',
Timestamp: 'Null',
RandomnessCollectiveFlip: 'Null',
Balances: 'Null',
Accounts: 'Null',
Currencies: 'Null',
Tokens: 'Null',
Vesting: 'Null',
EaveTreasury: 'Null',
Utility: 'Null',
Multisig: 'Null',
Recovery: 'Null',
Proxy: 'Null',
Scheduler: 'Null',
Indices: 'Null',
GraduallyUpdate: 'Null',
Authorship: 'Null',
Babe: 'Null',
Grandpa: 'Null',
Staking: 'Null',
Session: 'Null',
Historical: 'Null',
GeneralCouncil: 'CollectiveOrigin',
GeneralCouncilMembership: 'Null',
EYECouncil: 'CollectiveOrigin',
EYECouncilMembership: 'Null',
ElpCouncil: 'CollectiveOrigin',
ElpCouncilMembership: 'Null',
TechnicalCommittee: 'CollectiveOrigin',
TechnicalCommitteeMembership: 'Null',
Authority: 'DelayedOrigin',
ElectionsPhragmen: 'Null',
EaveOracle: 'Null',
BandOracle: 'Null',
OperatorMembershipEave: 'Null',
OperatorMembershipBand: 'Null',
Auction: 'Null',
Rewards: 'Null',
OrmlNFT: 'Null',
Prices: 'Null',
Dex: 'Null',
AuctionManager: 'Null',
Loans: 'Null',
EYE: 'Null',
CdpTreasury: 'Null',
CdpEngine: 'Null',
EmergencyShutdown: 'Null',
Elp: 'Null',
NomineesElection: 'Null',
StakingPool: 'Null',
PolkadotBridge: 'Null',
Incentives: 'Null',
AirDrop: 'Null',
NFT: 'Null',
RenVmBridge: 'Null',
Contracts: 'Null',
EVM: 'Null',
Sudo: 'Null',
TransactionPayment: 'Null'
}
},
Params: {
targetMaxFreeUnbondedRatio: 'Ratio',
targetMinFreeUnbondedRatio: 'Ratio',
targetUnbondingToFreeRatio: 'Ratio',
unbondingToFreeAdjustment: 'Ratio',
baseFeeRate: 'Rate'
},
PolkadotAccountId: 'AccountId',
PolkadotAccountIdOf: 'PolkadotAccountId',
PoolId: {
_enum: {
Loans: 'CurrencyId',
DexIncentive: 'CurrencyId',
DexSaving: 'CurrencyId',
Elp: 'Null'
}
},
PoolInfo: {
totalShares: 'Compact<Share>',
totalRewards: 'Compact<Balance>',
totalWithdrawnRewards: 'Compact<Balance>'
},
Position: {
collateral: 'Balance',
debit: 'Balance'
},
Price: 'FixedU128',
Properties: {
_set: {
_bitLength: 8,
Transferable: 1,
Burnable: 2
}
},
PublicKey: '[u8; 20]',
Rate: 'FixedU128',
Ratio: 'FixedU128',
RedeemStrategy: {
_enum: {
Immediately: 'Null',
Target: 'EraIndex',
WaitForUnbonding: 'Null'
}
},
RelaychainAccountId: 'AccountId',
RiskManagementParams: {
maximumTotalDebitValue: 'Balance',
stabilityFee: 'Option<Rate>',
liquidationRatio: 'Option<Rate>',
liquidationPenalty: 'Option<Rate>',
requiredCollateralRatio: 'Option<Rate>'
},
RpcDataProviderId: 'Text',
ScheduleTaskIndex: 'u32',
Share: 'u128',
StorageKeyBytes: 'Vec<u8>',
StorageValue: 'Vec<u8>',
StorageValueBytes: 'Vec<u8>',
SubAccountStatus: {
bonded: 'Balance',
available: 'Balance',
unbonding: 'Vec<(EraIndex,Balance)>',
mockRewardRate: 'Rate'
},
SurplusAuctionItem: {
amount: 'Compact<Balance>',
startTime: 'BlockNumber'
},
TimestampedValue: {
value: 'OracleValue',
timestamp: 'Moment'
},
TimestampedValueOf: 'TimestampedValue',
TokenBalanceOf: 'Balance',
TokenData: {
deposit: 'Balance'
},
TokenId: 'u64',
TokenIdOf: 'TokenId',
TokenInfo: {
name: 'Text',
symbol: 'Text',
decimals: 'u8',
owner: 'AccountId'
},
TokenInfoOf: {
metadata: 'CID',
owner: 'AccountId',
data: 'TokenData'
},
TokenSymbol: {
_enum: {
EAVE: 0,
EUSD: 1,
DOT: 2,
LDOT: 3,
XBTC: 4,
RENBTC: 5,
INTERBTC: 6,
PLM: 7,
PHA: 8,
HDT: 9,
ICE: 128,
IUSD: 129,
KSM: 130,
LKSM: 131,
SDN: 135,
KILT: 138
}
},
TradingPair: '(CurrencyId, CurrencyId)',
TradingPairProvisionParameters: {
minContribution: '(Balance, Balance)',
targetProvision: '(Balance, Balance)',
accumulatedProvision: '(Balance, Balance)',
notBefore: 'BlockNumber'
},
TradingPairStatus: {
_enum: {
NotEnabled: 'Null',
Provisioning: 'TradingPairProvisionParameters',
Enabled: 'Null'
}
},
VestingScheduleOf: 'OrmlVestingSchedule',
XCurrencyId: {
chainId: 'ChainId',
currencyId: 'Vec<u8>'
}
}
}
]
};
export default definitions;
@@ -0,0 +1,8 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
import pkg from '@edgeware/node-types';
export default (pkg.spec.typesBundle as { spec: { edgeware: OverrideBundleDefinition } }).spec.edgeware;
@@ -0,0 +1,38 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'MultiAddress',
LookupSource: 'MultiAddress',
Account: {
nonce: 'U256',
balance: 'U256'
},
Transaction: {
nonce: 'U256',
action: 'String',
gas_price: 'u64',
gas_limit: 'u64',
value: 'U256',
input: 'Vec<u8>',
signature: 'Signature'
},
Signature: {
v: 'u64',
r: 'H256',
s: 'H256'
}
}
}
]
};
export default definitions;
@@ -0,0 +1,254 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// Metadata v14 was introduced here. Hence, we don't need type overrides anymore.
minmax: [9, undefined],
types: {
// Types for the signed extensions still need to be declared.
CommunityIdentifier: {
geohash: 'GeoHash',
digest: 'CidDigest'
},
GeoHash: '[u8; 5]',
// We need to call it `CidDigest` because plain `Digest` is already a substrate type.
CidDigest: '[u8; 4]'
}
},
{
// until v14
minmax: [0, 8],
types: {
ShardIdentifier: 'Hash',
GetterArgs: '(AccountId, CommunityIdentifier)',
Enclave: {
pubkey: 'AccountId',
mrenclave: 'Hash',
timestamp: 'u64',
url: 'Text'
},
PublicGetter: {
_enum: {
total_issuance: 'CommunityIdentifier',
participant_count: 'CommunityIdentifier',
meetup_count: 'CommunityIdentifier',
ceremony_reward: 'CommunityIdentifier',
location_tolerance: 'CommunityIdentifier',
time_tolerance: 'CommunityIdentifier',
scheduler_state: 'CommunityIdentifier'
}
},
TrustedGetter: {
_enum: {
balance: '(AccountId, CommunityIdentifier)',
participant_index: '(AccountId, CommunityIdentifier)',
meetup_index: '(AccountId, CommunityIdentifier)',
attestations: '(AccountId, CommunityIdentifier)',
meetup_registry: '(AccountId, CommunityIdentifier)'
}
},
TrustedGetterSigned: {
getter: 'TrustedGetter',
signature: 'Signature'
},
Getter: {
_enum: {
public: 'PublicGetter',
trusted: 'TrustedGetterSigned'
}
},
ClientRequest: {
_enum: {
PubKeyWorker: null,
MuRaPortWorker: null,
StfState: '(Getter, ShardIdentifier)'
}
},
WorkerEncoded: 'Vec<u8>',
Request: {
shard: 'ShardIdentifier',
cyphertext: 'WorkerEncoded'
},
TrustedCallSigned: {
call: 'TrustedCall',
nonce: 'u32',
signature: 'Signature'
},
TrustedCall: {
_enum: {
balance_transfer: 'BalanceTransferArgs',
ceremonies_register_participant: 'RegisterParticipantArgs',
ceremonies_register_attestations: 'RegisterAttestationsArgs',
ceremonies_grant_reputation: 'GrantReputationArgs'
}
},
BalanceTransferArgs: '(AccountId, AccountId, CommunityIdentifier, BalanceType)',
RegisterParticipantArgs: '(AccountId, CommunityIdentifier, Option<ProofOfAttendance<MultiSignature, AccountId>>)',
RegisterAttestationsArgs: '(AccountId, Vec<Attestation<MultiSignature, AccountId, u64>>)',
GrantReputationArgs: '(AccountId, CommunityIdentifier, AccountId)',
BalanceType: 'i128',
BalanceEntry: {
principal: 'BalanceType',
lastUpdate: 'BlockNumber'
},
Demurrage: 'BalanceType',
BusinessIdentifier: {
communityIdentifier: 'CommunityIdentifier',
controller: 'AccountId'
},
OfferingIdentifier: 'u32',
BusinessData: {
url: 'PalletString',
last_oid: 'u32'
},
OfferingData: {
url: 'PalletString'
},
PalletString: 'Text',
IpfsCid: 'Text',
FixedI64F64: {
bits: 'i128'
},
CeremonyIndexType: 'u32',
CeremonyPhaseType: {
_enum: ['Registering', 'Assigning', 'Attesting']
},
ParticipantIndexType: 'u64',
MeetupIndexType: 'u64',
AttestationIndexType: 'u64',
MeetupAssignment: '(MeetupIndexType, Option<Location>)',
MeetupTimeOffsetType: 'i32',
Reputation: {
_enum: ['Unverified', 'UnverifiedReputable', 'VerifiedUnlinked', 'VerifiedLinked']
},
CommunityReputation: {
communityIdentifier: 'CommunityIdentifier',
reputation: 'Reputation'
},
ClaimOfAttendance: {
claimantPublic: 'AccountId',
ceremonyIndex: 'CeremonyIndexType',
communityIdentifier: 'CommunityIdentifier',
meetupIndex: 'MeetupIndexType',
location: 'Location',
timestamp: 'Moment',
numberOfParticipantsConfirmed: 'u32',
claimantSignature: 'Option<MultiSignature>'
},
ClaimOfAttendanceSigningPayload: {
claimantPublic: 'AccountId',
ceremonyIndex: 'CeremonyIndexType',
communityIdentifier: 'CommunityIdentifier',
meetupIndex: 'MeetupIndexType',
location: 'Location',
timestamp: 'Moment',
numberOfParticipantsConfirmed: 'u32'
},
AssignmentCount: {
bootstrappers: 'ParticipantIndexType',
reputables: 'ParticipantIndexType',
endorsees: 'ParticipantIndexType',
newbies: 'ParticipantIndexType'
},
Assignment: {
bootstrappersReputables: 'AssignmentParams',
endorsees: 'AssignmentParams',
newbies: 'AssignmentParams',
locations: 'AssignmentParams'
},
AssignmentParams: {
m: 'u64',
s1: 'u64',
s2: 'u64'
},
CommunityCeremonyStats: {
communityCeremony: '(CommunityIdentifier, CeremonyIndexType)',
assignment: 'Assignment',
assignmentCount: 'AssignmentCount',
meetupCount: 'MeetupIndexType',
meetups: 'Vec<Meetup>'
},
Meetup: {
index: 'MeetupIndexType',
location: 'LocationRpc',
time: 'Moment',
registrations: 'Vec<(AccountId, ParticipantRegistration)>'
},
ParticipantRegistration: {
index: 'ParticipantIndexType',
registrationType: 'RegistrationType'
},
RegistrationType: {
_enum: ['Bootstrapper', 'Reputable', 'Endorsee', 'Newbie']
},
// Todo: remove this type does no longer exist in ceremonies, but it still exists in the trusted stuff.
Attestation: {
claim: 'ClaimOfAttendance',
signature: 'MultiSignature',
public: 'AccountId'
},
ProofOfAttendance: {
proverPublic: 'AccountId',
ceremonyIndex: 'CeremonyIndexType',
communityIdentifier: 'CommunityIdentifier',
attendeePublic: 'AccountId',
attendeeSignature: 'MultiSignature'
},
CommunityIdentifier: {
geohash: 'GeoHash',
digest: 'CidDigest'
},
GeoHash: '[u8; 5]',
// We need to call it `CidDigest` because plain `Digest` is already a substrate type.
CidDigest: '[u8; 4]',
CommunityCeremony: '(CommunityIdentifier,CeremonyIndexType)',
NominalIncomeType: 'BalanceType',
// This is used when handling fixed-point numbers that have been serialized with `serialize_fixed` on rusts end,
// which is the case when we call any rpc-getters.
DegreeRpc: 'Text',
// This is used when we need to encode fixed-point numbers with scale-codec, e.g., when using it in an extrinsic.
DegreeFixed: 'i128',
Location: {
lat: 'DegreeFixed',
lon: 'DegreeFixed'
},
LocationRpc: {
lat: 'DegreeRpc',
lon: 'DegreeRpc'
},
CidName: {
cid: 'CommunityIdentifier',
name: 'Text'
},
CommunityMetadataType: {
name: 'Text',
symbol: 'Text',
assets: 'Text',
theme: 'Option<Text>',
url: 'Option<Text>'
},
SystemNumber: 'u32',
SchedulerState: '(CeremonyIndexType, CeremonyPhaseType, SystemNumber)'
}
}
],
signedExtensions: {
ChargeAssetTxPayment: {
extrinsic: {
tip: 'Compact<Balance>',
assetId: 'Option<CommunityIdentifier>'
},
payload: {}
}
}
};
export default definitions;
@@ -0,0 +1,54 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'MultiAddress',
LookupSource: 'MultiAddress',
CeremonyPhaseType: {
_enum: [
'Registering',
'Assigning',
'Attesting'
]
},
CeremonyIndexType: 'u32',
CurrencyIdentifier: 'Hash',
CurrencyCeremony: {
cid: 'CurrencyIdentifier',
cindex: 'CeremonyIndexType'
},
Location: {
lat: 'i64',
lon: 'i64'
},
CurrencyPropertiesType: {
name_utf8: 'Text',
demurrage_per_block: 'i128'
},
ShardIdentifier: 'Hash',
Request: {
shard: 'ShardIdentifier',
cyphertext: 'Vec<u8>'
},
Enclave: {
pubkey: 'AccountId',
mrenclave: 'Hash',
timestamp: 'u64',
url: 'Text'
}
}
}
]
};
export default definitions;
@@ -0,0 +1,258 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// metadata v14 was introduced here. Hence, we don't need type overrides anymore.
minmax: [3, undefined],
types: {
CommunityIdentifier: {
geohash: 'GeoHash',
digest: 'CidDigest'
},
GeoHash: '[u8; 5]',
// We need to call it `CidDigest` because plain `Digest` is already a substrate type.
CidDigest: '[u8; 4]'
}
},
{
// until metadata v14
minmax: [0, 2],
types: {
ShardIdentifier: 'Hash',
GetterArgs: '(AccountId, CommunityIdentifier)',
Enclave: {
pubkey: 'AccountId',
mrenclave: 'Hash',
timestamp: 'u64',
url: 'Text'
},
PublicGetter: {
_enum: {
total_issuance: 'CommunityIdentifier',
participant_count: 'CommunityIdentifier',
meetup_count: 'CommunityIdentifier',
ceremony_reward: 'CommunityIdentifier',
location_tolerance: 'CommunityIdentifier',
time_tolerance: 'CommunityIdentifier',
scheduler_state: 'CommunityIdentifier'
}
},
TrustedGetter: {
_enum: {
balance: '(AccountId, CommunityIdentifier)',
participant_index: '(AccountId, CommunityIdentifier)',
meetup_index: '(AccountId, CommunityIdentifier)',
attestations: '(AccountId, CommunityIdentifier)',
meetup_registry: '(AccountId, CommunityIdentifier)'
}
},
TrustedGetterSigned: {
getter: 'TrustedGetter',
signature: 'Signature'
},
Getter: {
_enum: {
public: 'PublicGetter',
trusted: 'TrustedGetterSigned'
}
},
ClientRequest: {
_enum: {
PubKeyWorker: null,
MuRaPortWorker: null,
StfState: '(Getter, ShardIdentifier)'
}
},
WorkerEncoded: 'Vec<u8>',
Request: {
shard: 'ShardIdentifier',
cyphertext: 'WorkerEncoded'
},
TrustedCallSigned: {
call: 'TrustedCall',
nonce: 'u32',
signature: 'Signature'
},
TrustedCall: {
_enum: {
balance_transfer: 'BalanceTransferArgs',
ceremonies_register_participant: 'RegisterParticipantArgs',
ceremonies_register_attestations: 'RegisterAttestationsArgs',
ceremonies_grant_reputation: 'GrantReputationArgs'
}
},
BalanceTransferArgs: '(AccountId, AccountId, CommunityIdentifier, BalanceType)',
RegisterParticipantArgs: '(AccountId, CommunityIdentifier, Option<ProofOfAttendance<MultiSignature, AccountId>>)',
RegisterAttestationsArgs: '(AccountId, Vec<Attestation<MultiSignature, AccountId, u64>>)',
GrantReputationArgs: '(AccountId, CommunityIdentifier, AccountId)',
BalanceType: 'i128',
BalanceEntry: {
principal: 'BalanceType',
lastUpdate: 'BlockNumber'
},
Demurrage: 'BalanceType',
BusinessIdentifier: {
communityIdentifier: 'CommunityIdentifier',
controller: 'AccountId'
},
OfferingIdentifier: 'u32',
BusinessData: {
url: 'PalletString',
last_oid: 'u32'
},
OfferingData: {
url: 'PalletString'
},
PalletString: 'Text',
IpfsCid: 'Text',
FixedI64F64: {
bits: 'i128'
},
CeremonyIndexType: 'u32',
CeremonyPhaseType: {
_enum: ['Registering', 'Assigning', 'Attesting']
},
ParticipantIndexType: 'u64',
MeetupIndexType: 'u64',
AttestationIndexType: 'u64',
MeetupAssignment: '(MeetupIndexType, Option<Location>)',
MeetupTimeOffsetType: 'i32',
Reputation: {
_enum: ['Unverified', 'UnverifiedReputable', 'VerifiedUnlinked', 'VerifiedLinked']
},
CommunityReputation: {
communityIdentifier: 'CommunityIdentifier',
reputation: 'Reputation'
},
ClaimOfAttendance: {
claimantPublic: 'AccountId',
ceremonyIndex: 'CeremonyIndexType',
communityIdentifier: 'CommunityIdentifier',
meetupIndex: 'MeetupIndexType',
location: 'Location',
timestamp: 'Moment',
numberOfParticipantsConfirmed: 'u32',
claimantSignature: 'Option<MultiSignature>'
},
ClaimOfAttendanceSigningPayload: {
claimantPublic: 'AccountId',
ceremonyIndex: 'CeremonyIndexType',
communityIdentifier: 'CommunityIdentifier',
meetupIndex: 'MeetupIndexType',
location: 'Location',
timestamp: 'Moment',
numberOfParticipantsConfirmed: 'u32'
},
AssignmentCount: {
bootstrappers: 'ParticipantIndexType',
reputables: 'ParticipantIndexType',
endorsees: 'ParticipantIndexType',
newbies: 'ParticipantIndexType'
},
Assignment: {
bootstrappersReputables: 'AssignmentParams',
endorsees: 'AssignmentParams',
newbies: 'AssignmentParams',
locations: 'AssignmentParams'
},
AssignmentParams: {
m: 'u64',
s1: 'u64',
s2: 'u64'
},
CommunityCeremonyStats: {
communityCeremony: '(CommunityIdentifier, CeremonyIndexType)',
assignment: 'Assignment',
assignmentCount: 'AssignmentCount',
meetupCount: 'MeetupIndexType',
meetups: 'Vec<Meetup>'
},
Meetup: {
index: 'MeetupIndexType',
location: 'LocationRpc',
time: 'Moment',
registrations: 'Vec<(AccountId, ParticipantRegistration)>'
},
ParticipantRegistration: {
index: 'ParticipantIndexType',
registrationType: 'RegistrationType'
},
RegistrationType: {
_enum: ['Bootstrapper', 'Reputable', 'Endorsee', 'Newbie']
},
// Todo: remove this type does no longer exist in ceremonies, but it still exists in the trusted stuff.
Attestation: {
claim: 'ClaimOfAttendance',
signature: 'MultiSignature',
public: 'AccountId'
},
ProofOfAttendance: {
proverPublic: 'AccountId',
ceremonyIndex: 'CeremonyIndexType',
communityIdentifier: 'CommunityIdentifier',
attendeePublic: 'AccountId',
attendeeSignature: 'MultiSignature'
},
CommunityIdentifier: {
geohash: 'GeoHash',
digest: 'CidDigest'
},
GeoHash: '[u8; 5]',
// We need to call it `CidDigest` because plain `Digest` is already a substrate type.
CidDigest: '[u8; 4]',
CommunityCeremony: '(CommunityIdentifier,CeremonyIndexType)',
NominalIncomeType: 'BalanceType',
// This is used when handling fixed-point numbers that have been serialized with `serialize_fixed` on rusts end,
// which is the case when we call any rpc-getters.
DegreeRpc: 'Text',
// This is used when we need to encode fixed-point numbers with scale-codec, e.g., when using it in an extrinsic.
DegreeFixed: 'i128',
Location: {
lat: 'DegreeFixed',
lon: 'DegreeFixed'
},
LocationRpc: {
lat: 'DegreeRpc',
lon: 'DegreeRpc'
},
CidName: {
cid: 'CommunityIdentifier',
name: 'Text'
},
CommunityMetadataType: {
name: 'Text',
symbol: 'Text',
assets: 'Text',
theme: 'Option<Text>',
url: 'Option<Text>'
},
SystemNumber: 'u32',
SchedulerState: '(CeremonyIndexType, CeremonyPhaseType, SystemNumber)'
}
}
],
signedExtensions: {
ChargeAssetTxPayment: {
extrinsic: {
tip: 'Compact<Balance>',
assetId: 'Option<CommunityIdentifier>'
},
payload: {}
}
}
};
export default definitions;
@@ -0,0 +1,108 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ApiInterfaceRx } from '@pezkuwi/api/types';
import type { Enum } from '@pezkuwi/types';
import type { AccountId, AccountIndex, Address, Balance } from '@pezkuwi/types/interfaces';
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
import type { Struct, u64, u128, Vec } from '@pezkuwi/types-codec';
import type { ITuple } from '@pezkuwi/types-codec/types';
import { map, of } from 'rxjs';
import { memo } from '@pezkuwi/api-derive/util';
import { U8aFixed } from '@pezkuwi/types-codec';
export interface SignedBalance extends Enum {
readonly isPositive: boolean;
readonly asPositive: Balance;
readonly isNegative: boolean;
readonly asNegative: Balance;
}
export const u64FromCurrency = (currency: string): bigint => {
const buf = Buffer.from(currency.toLowerCase());
const size = buf.length;
return buf.reduce((val, digit, i) => {
const exp = BigInt(size - 1 - i);
return BigInt(val) + BigInt(256) ** exp * BigInt(digit);
}, BigInt(0));
};
const TOKENS = ['eq'];
interface EqPrimitivesBalanceAccountData extends Enum {
readonly isV0: boolean;
readonly asV0: {
readonly lock: u128;
readonly balance: Vec<ITuple<[u64, EqPrimitivesSignedBalance]>>;
} & Struct;
readonly type: 'V0';
}
interface EqPrimitivesSignedBalance extends Enum {
readonly isPositive: boolean;
readonly asPositive: u128;
readonly isNegative: boolean;
readonly asNegative: u128;
readonly type: 'Positive' | 'Negative';
}
export const createDerives = (tokens: string[]) => tokens.reduce((prev, token, i) => {
const isNative = !i;
return {
...prev,
[token]: { customAccount: (instanceId: string, api: ApiInterfaceRx) => {
const { registry } = api;
const asset = u64FromCurrency(token);
return memo(instanceId, (address: AccountIndex | AccountId | Address | string) => api.query.system.account(address).pipe(map((v) => {
const data = (v as unknown as { data: EqPrimitivesBalanceAccountData }).data;
const miscFrozen = isNative ? data.asV0.lock : registry.createType('u128', 0);
const feeFrozen = miscFrozen;
const reserved = registry.createType('u128', 0);
const entry = data.asV0.balance.find(([assetId]) => {
return assetId.toBigInt() === asset;
});
const balance = entry?.[1];
const free = balance?.isPositive
? balance.asPositive
: registry.createType('u128', 0);
return {
feeFrozen, free, miscFrozen, reserved
};
})));
},
customLocks: (instanceId: string, api: ApiInterfaceRx) => {
const { registry } = api;
return memo(instanceId, (address: AccountIndex | AccountId | Address | string) => isNative
? api.query.system.account(address).pipe(map((v) => {
const data = (v as unknown as { data: EqPrimitivesBalanceAccountData }).data;
return [{
amount: data.asV0.lock,
id: new U8aFixed(registry),
reasons: ''
}];
}))
: of([]));
} }
};
}, {});
const definitions: OverrideBundleDefinition = {
derives: createDerives(TOKENS),
instances: { balances: TOKENS }
};
export default definitions;
@@ -0,0 +1,69 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
// structs need to be in order
/* eslint-disable sort-keys */
/* eslint-disable camelcase */
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Properties: 'u8',
NFTMetadata: 'Vec<u8>',
BlockNumber: 'u32',
BlockNumberOf: 'BlockNumber',
OrderData: {
currencyId: 'Compact<CurrencyIdOf>',
price: 'Compact<Balance>',
deposit: 'Compact<Balance>',
deadline: 'Compact<BlockNumberOf>',
categoryId: 'Compact<CategoryIdOf>'
},
CategoryId: 'u32',
CategoryIdOf: 'CategoryId',
CategoryData: {
metadata: 'NFTMetadata',
nftCount: 'Compact<Balance>'
},
CurrencyId: 'u32',
CurrencyIdOf: 'CurrencyId',
Amount: 'i128',
AmountOf: 'Amount',
ClassId: 'u32',
ClassIdOf: 'ClassId',
ClassInfoOf: {
metadata: 'NFTMetadata',
totalIssuance: 'TokenId',
owner: 'AccountId',
data: 'ClassData'
},
ClassData: {
deposit: 'Compact<Balance>',
properties: 'Properties',
name: 'Vec<u8>',
description: 'Vec<u8>',
createBlock: 'Compact<BlockNumberOf>'
},
TokenId: 'u64',
TokenIdOf: 'TokenId',
TokenInfoOf: { metadata: 'NFTMetadata', owner: 'AccountId', data: 'TokenData' },
TokenData: {
deposit: 'Compact<Balance>',
createBlock: 'Compact<BlockNumberOf>'
}
}
}
]
};
export default definitions;
@@ -0,0 +1,31 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
AccountId: 'EthereumAccountId',
AccountId20: 'EthereumAccountId',
Address: 'AccountId',
LookupSource: 'AccountId',
Lookup0: 'AccountId',
EthereumSignature: {
r: 'H256',
s: 'H256',
v: 'U8'
},
ExtrinsicSignature: 'EthereumSignature'
}
}
]
};
export default definitions;
@@ -0,0 +1,19 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Not used/included in index.ts as of https://github.com/pezkuwi-js/apps/pull/9243
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
import { options } from '@fragnova/api-augment';
export default {
...options,
types: [
{
// on all versions
minmax: [0, undefined],
types: options.types
}
]
} as OverrideBundleDefinition;
@@ -0,0 +1,19 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
import { rpc, runtime, signedExtensions, types } from '@frequency-chain/api-augment';
export default {
rpc,
runtime,
signedExtensions,
types: [
{
// on all versions
minmax: [0, undefined],
types
}
]
} as OverrideBundleDefinition;
@@ -0,0 +1,70 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'AccountId',
LookupSource: 'AccountId',
Account: {
nonce: 'U256',
balance: 'U256'
},
Transaction: {
nonce: 'U256',
action: 'String',
gas_price: 'u64',
gas_limit: 'u64',
value: 'U256',
input: 'Vec<u8>',
signature: 'Signature'
},
Signature: {
v: 'u64',
r: 'H256',
s: 'H256'
},
ClassId: 'u64',
TokenId: 'u64',
ClassData: 'Vec<u8>',
TokenData: 'Vec<u8>',
ReportReason: {
_enum: [
'None',
'Illigal',
'Plagiarism',
'Duplicate',
'Reported'
]
},
ClassInfoOf: {
metadata: 'Vec<u8>',
total_issuance: 'TokenId',
owner: 'AccountId',
class_data: 'ClassData'
},
ExtendedInfo: {
display_flag: 'bool',
report: 'ReportReason',
frozen: 'bool'
},
TokenInfoOf: {
metadata: 'Vec<u8>',
owner: 'AccountId',
class_data: 'ClassData'
}
}
}
]
};
export default definitions;
@@ -0,0 +1,75 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'MultiAddress',
LookupSource: 'MultiAddress',
AccountInfo: 'AccountInfoWithTripleRefCount',
Account: {
nonce: 'U256',
balance: 'U256'
},
Transaction: {
nonce: 'U256',
action: 'String',
gas_price: 'u64',
gas_limit: 'u64',
value: 'U256',
input: 'Vec<u8>',
signature: 'Signature'
},
ChainId: 'u8',
ResourceId: '[u8; 32]',
DepositNonce: 'u64',
ProposalVotes: {
votes_for: 'Vec<AccountId>',
votes_against: 'Vec<AccountId>',
status: 'u8',
expiry: 'U256'
},
ClassId: 'u64',
TokenId: 'u64',
ClassData: 'Vec<u8>',
TokenData: 'Vec<u8>',
ReportReason: {
_enum: [
'None',
'Illigal',
'Plagiarism',
'Duplicate',
'Reported'
]
},
ClassInfoOf: {
metadata: 'Vec<u8>',
total_issuance: 'TokenId',
owner: 'AccountId',
class_data: 'ClassData'
},
ExtendedInfo: {
display_flag: 'bool',
report: 'ReportReason',
frozen: 'bool'
},
TokenInfoOf: {
metadata: 'Vec<u8>',
owner: 'AccountId',
class_data: 'ClassData'
}
}
}
]
};
export default definitions;
@@ -0,0 +1,52 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'MultiAddress',
LookupSource: 'MultiAddress',
Balance: 'u128',
RefCount: 'u32',
Account: {
nonce: 'U256',
balance: 'U256'
},
AccountServiceEnum: {
_enum: {
Nickname: 'String',
Ethereum: 'H160'
}
},
MultiAddressDetails: {
nickname: 'AccountServiceEnum',
ethereum: 'AccountServiceEnum'
},
Nickname: 'String',
Ethereum: 'H160',
TransferAmountInfo: {
date: 'u64',
daily_info: 'Balance',
monthly_info: 'Balance',
yearly_info: 'Balance'
},
AccountLimit: {
daily_limit: 'Balance',
monthly_limit: 'Balance',
yearly_limit: 'Balance'
},
Keys: 'SessionKeys2'
}
}
]
};
export default definitions;
@@ -0,0 +1,76 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
AccountInfo: 'AccountInfoWithDualRefCount',
AssetId: 'u64',
SeriesId: 'u64',
ClassId: 'u32',
ClassIdOf: 'ClassId',
ClassInfoOf: 'ClassInfo',
TokenId: 'u64',
TokenIdOf: 'TokenId',
TokenInfoOf: 'TokenInfo',
ClassInfo: {
metadata: 'Vec<u8>',
total_issuance: 'TokenId',
owner: 'AccountId',
data: 'NftClassData'
},
TokenInfo: {
metadata: 'Vec<u8>',
owner: 'AccountId',
data: 'NftAssetData'
},
NftSeriesData: {
name: 'Vec<u8>',
owner: 'AccountId',
properties: 'Vec<u8>'
},
NftClassData: {
deposit: 'Balance',
properties: 'Vec<u8>',
token_type: 'TokenType',
collection_type: 'CollectionType',
total_supply: 'u64',
initial_supply: 'u64'
},
NftAssetData: {
deposit: 'Balance',
name: 'Vec<u8>',
description: 'Vec<u8>',
properties: 'Vec<u8>'
},
TokenType: {
_enum: [
'Transferrable',
'BoundToAddress'
]
},
CollectionType: {
_enum: [
'Collectable',
'Wearable',
'Executable'
]
},
ClassProperties: {
Transferrable: 'bool',
Burnable: 'bool'
}
}
}
]
};
export default definitions;
@@ -0,0 +1,15 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
import { createDerives } from './equilibrium.js';
const TOKENS = ['gens'];
const definitions: OverrideBundleDefinition = {
derives: createDerives(TOKENS),
instances: { balances: TOKENS }
};
export default definitions;
@@ -0,0 +1,31 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Difficulty: 'U256',
DifficultyAndTimestamp: {
difficulty: 'Difficulty',
timestamp: 'Moment'
},
Era: {
genesisBlockHash: 'H256',
finalBlockHash: 'H256',
finalStateRoot: 'H256'
},
RefCount: 'u8'
}
}
]
};
export default definitions;
@@ -0,0 +1,22 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Address: 'AccountId',
LookupSource: 'AccountId'
}
}
]
};
export default definitions;
@@ -0,0 +1,60 @@
// Copyright 2017-2026 @pezkuwi/apps-config authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { OverrideBundleDefinition } from '@pezkuwi/types/types';
// structs need to be in order
/* eslint-disable sort-keys */
const definitions: OverrideBundleDefinition = {
types: [
{
// on all versions
minmax: [0, undefined],
types: {
Amount: 'i128',
AmountOf: 'Amount',
Address: 'AccountId',
OrmlAccountData: {
free: 'Balance',
frozen: 'Balance',
reserved: 'Balance'
},
Fee: {
numerator: 'u32',
denominator: 'u32'
},
BalanceInfo: {
amount: 'Balance',
assetId: 'AssetId'
},
CurrencyId: 'AssetId',
CurrencyIdOf: 'AssetId',
Intention: {
who: 'AccountId',
asset_sell: 'AssetId',
asset_buy: 'AssetId',
amount: 'Balance',
discount: 'bool',
sell_or_buy: 'IntentionType'
},
IntentionId: 'u128',
IntentionType: {
_enum: [
'SELL',
'BUY'
]
},
LookupSource: 'AccountId',
OrderedSet: 'Vec<AssetId>',
Price: 'Balance',
Chain: {
genesisHash: 'Vec<u8>',
lastBlockHash: 'Vec<u8>'
}
}
}
]
};
export default definitions;

Some files were not shown because too many files have changed in this diff Show More