feat(xcm): Add Pezkuwi Teyrchain junction support for cross-chain transfers

- Add TEYRCHAIN_INFO constant and TeyrchainInfo pallet lookup
- Add PezkuwiXcm pallet support in xcmPalletName functions
- Update ParachainInfoRepository to query TeyrchainId storage
- Add junctionTypeName to ParachainId for Teyrchain encoding
- Update MultiLocationEncoding to handle both Parachain and Teyrchain
- Detect Pezkuwi chains by genesis hash for correct junction type

Fixes cross-chain transfers between Pezkuwi, Asset Hub, and People chains.
This commit is contained in:
2026-02-09 01:01:48 +03:00
parent 9babf454c9
commit 35ce943f65
9 changed files with 89 additions and 13 deletions
@@ -301,7 +301,7 @@ fun RuntimeMetadata.identity() = module(Modules.IDENTITY)
fun RuntimeMetadata.automationTime() = module(Modules.AUTOMATION_TIME)
fun RuntimeMetadata.parachainInfoOrNull() = moduleOrNull(Modules.PARACHAIN_INFO)
fun RuntimeMetadata.parachainInfoOrNull() = firstExistingModuleOrNull(Modules.PARACHAIN_INFO, Modules.TEYRCHAIN_INFO)
fun RuntimeMetadata.parasOrNull() = moduleOrNull(Modules.PARAS)
fun RuntimeMetadata.referenda() = module(Modules.REFERENDA)
@@ -382,7 +382,9 @@ fun Module.firstExistingCallName(vararg options: String): String {
return options.first(::hasCall)
}
fun RuntimeMetadata.xcmPalletName() = firstExistingModuleName("XcmPallet", "PolkadotXcm")
fun RuntimeMetadata.xcmPalletName() = firstExistingModuleName("XcmPallet", "PolkadotXcm", "PezkuwiXcm")
fun RuntimeMetadata.xcmPalletNameOrNull(): String? = firstExistingModuleOrNull("XcmPallet", "PolkadotXcm", "PezkuwiXcm")?.name
fun RuntimeMetadata.xTokensName() = firstExistingModuleName("XTokens", "Xtokens")
@@ -612,6 +614,7 @@ object Modules {
const val IDENTITY = "Identity"
const val PARACHAIN_INFO = "ParachainInfo"
const val TEYRCHAIN_INFO = "TeyrchainInfo"
const val PARAS = "Paras"
const val AUTOMATION_TIME = "AutomationTime"