@subwallet/extension-base 1.3.7-0 → 1.3.8-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/background/KoniTypes.d.ts +7 -5
- package/background/KoniTypes.js +1 -1
- package/cjs/background/KoniTypes.js +1 -1
- package/cjs/core/substrate/xcm-parser.js +16 -2
- package/cjs/koni/api/contract-handler/utils/index.js +15 -1
- package/cjs/koni/background/handlers/Extension.js +42 -3
- package/cjs/koni/background/handlers/State.js +11 -2
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/transfer/xcm/index.js +31 -1
- package/cjs/services/balance-service/transfer/xcm/polygonBridge.js +108 -0
- package/cjs/services/chain-online-service/constants.js +32 -0
- package/cjs/services/chain-online-service/index.js +190 -0
- package/cjs/services/chain-service/index.js +87 -127
- package/cjs/services/chain-service/utils/index.js +0 -2
- package/cjs/services/chain-service/utils/patch.js +7 -3
- package/cjs/services/fee-service/utils/index.js +14 -0
- package/cjs/services/inapp-notification-service/consts.js +6 -4
- package/cjs/services/inapp-notification-service/index.js +110 -6
- package/cjs/services/inapp-notification-service/interfaces.js +9 -1
- package/cjs/services/inapp-notification-service/utils/avail.js +88 -0
- package/cjs/services/inapp-notification-service/{utils.js → utils/common.js} +1 -84
- package/cjs/services/inapp-notification-service/utils/index.js +38 -0
- package/cjs/services/inapp-notification-service/utils/polygon.js +66 -0
- package/cjs/services/migration-service/scripts/MigrateTransactionHistoryBridge.js +37 -0
- package/cjs/services/migration-service/scripts/index.js +3 -1
- package/cjs/services/setting-service/SettingService.js +8 -0
- package/cjs/services/setting-service/constants.js +2 -1
- package/cjs/services/storage-service/DatabaseService.js +3 -0
- package/cjs/services/transaction-service/index.js +1 -1
- package/cjs/stores/ChainlistStore.js +18 -0
- package/cjs/types/index.js +11 -0
- package/cjs/utils/account/transform.js +1 -1
- package/core/substrate/xcm-parser.d.ts +1 -0
- package/core/substrate/xcm-parser.js +15 -2
- package/koni/api/contract-handler/utils/index.d.ts +2 -0
- package/koni/api/contract-handler/utils/index.js +12 -0
- package/koni/api/contract-handler/utils/polygon_bridge_abi.json +1004 -0
- package/koni/background/handlers/Extension.d.ts +2 -0
- package/koni/background/handlers/Extension.js +43 -4
- package/koni/background/handlers/State.d.ts +2 -0
- package/koni/background/handlers/State.js +11 -2
- package/package.json +56 -14
- package/packageInfo.js +1 -1
- package/services/balance-service/transfer/xcm/index.d.ts +1 -0
- package/services/balance-service/transfer/xcm/index.js +29 -1
- package/services/balance-service/transfer/xcm/polygonBridge.d.ts +22 -0
- package/services/balance-service/transfer/xcm/polygonBridge.js +95 -0
- package/services/chain-online-service/constants.d.ts +4 -0
- package/services/chain-online-service/constants.js +23 -0
- package/services/chain-online-service/index.d.ts +22 -0
- package/services/chain-online-service/index.js +182 -0
- package/services/chain-service/index.d.ts +6 -7
- package/services/chain-service/index.js +78 -116
- package/services/chain-service/utils/index.js +0 -2
- package/services/chain-service/utils/patch.d.ts +16 -1
- package/services/chain-service/utils/patch.js +7 -3
- package/services/fee-service/utils/index.js +14 -0
- package/services/inapp-notification-service/consts.d.ts +3 -1
- package/services/inapp-notification-service/consts.js +6 -4
- package/services/inapp-notification-service/index.d.ts +10 -2
- package/services/inapp-notification-service/index.js +111 -7
- package/services/inapp-notification-service/interfaces.d.ts +27 -3
- package/services/inapp-notification-service/interfaces.js +7 -0
- package/services/inapp-notification-service/utils/avail.d.ts +40 -0
- package/services/inapp-notification-service/utils/avail.js +73 -0
- package/services/inapp-notification-service/utils/common.d.ts +11 -0
- package/services/inapp-notification-service/{utils.js → utils/common.js} +1 -72
- package/services/inapp-notification-service/utils/index.d.ts +3 -0
- package/services/inapp-notification-service/utils/index.js +6 -0
- package/services/inapp-notification-service/utils/polygon.d.ts +71 -0
- package/services/inapp-notification-service/utils/polygon.js +54 -0
- package/services/migration-service/scripts/MigrateTransactionHistoryBridge.d.ts +4 -0
- package/services/migration-service/scripts/MigrateTransactionHistoryBridge.js +29 -0
- package/services/migration-service/scripts/index.js +3 -1
- package/services/setting-service/SettingService.d.ts +4 -0
- package/services/setting-service/SettingService.js +8 -0
- package/services/setting-service/constants.js +2 -1
- package/services/storage-service/DatabaseService.d.ts +1 -0
- package/services/storage-service/DatabaseService.js +3 -0
- package/services/transaction-service/index.js +1 -1
- package/stores/ChainlistStore.d.ts +7 -0
- package/stores/ChainlistStore.js +10 -0
- package/types/{avail-bridge → bridge}/index.d.ts +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.js +1 -0
- package/types/notification/index.d.ts +5 -0
- package/utils/account/transform.js +1 -1
- package/services/inapp-notification-service/utils.d.ts +0 -55
- /package/cjs/types/{avail-bridge → bridge}/index.js +0 -0
- /package/types/{avail-bridge → bridge}/index.js +0 -0
|
@@ -14,8 +14,8 @@ import { CrowdloanContributionsResponse } from '@subwallet/extension-base/servic
|
|
|
14
14
|
import { SWTransactionResponse, SWTransactionResult } from '@subwallet/extension-base/services/transaction-service/types';
|
|
15
15
|
import { WalletConnectNotSupportRequest, WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
|
|
16
16
|
import { AccountJson, AccountsWithCurrentAddress, AddressJson, BalanceJson, BaseRequestSign, BuyServiceInfo, BuyTokenInfo, CommonOptimalPath, CurrentAccountInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, InternalRequestSign, LeavePoolAdditionalData, NominationPoolInfo, OptimalYieldPath, OptimalYieldPathParams, RequestAccountBatchExportV2, RequestAccountCreateSuriV2, RequestAccountNameValidate, RequestAccountProxyEdit, RequestAccountProxyForget, RequestBatchJsonGetAccountInfo, RequestBatchRestoreV2, RequestBounceableValidate, RequestChangeTonWalletContractVersion, RequestCheckCrossChainTransfer, RequestCheckPublicAndSecretKey, RequestCheckTransfer, RequestCrossChainTransfer, RequestDeriveCreateMultiple, RequestDeriveCreateV3, RequestDeriveValidateV2, RequestEarlyValidateYield, RequestExportAccountProxyMnemonic, RequestGetAllTonWalletContractVersion, RequestGetDeriveAccounts, RequestGetDeriveSuggestion, RequestGetYieldPoolTargets, RequestInputAccountSubscribe, RequestJsonGetAccountInfo, RequestJsonRestoreV2, RequestMetadataHash, RequestMnemonicCreateV2, RequestMnemonicValidateV2, RequestPrivateKeyValidateV2, RequestShortenMetadata, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestTransfer, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseAccountBatchExportV2, ResponseAccountCreateSuriV2, ResponseAccountNameValidate, ResponseBatchJsonGetAccountInfo, ResponseCheckPublicAndSecretKey, ResponseDeriveValidateV2, ResponseEarlyValidateYield, ResponseExportAccountProxyMnemonic, ResponseGetAllTonWalletContractVersion, ResponseGetDeriveAccounts, ResponseGetDeriveSuggestion, ResponseGetYieldPoolTargets, ResponseInputAccountSubscribe, ResponseJsonGetAccountInfo, ResponseMetadataHash, ResponseMnemonicCreateV2, ResponseMnemonicValidateV2, ResponsePrivateKeyValidateV2, ResponseShortenMetadata, StorageDataInterface, SubmitYieldStepData, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapSubmitParams, SwapTxData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateSwapProcessParams, ValidateYieldProcessParams, YieldPoolInfo, YieldPositionInfo } from '@subwallet/extension-base/types';
|
|
17
|
-
import {
|
|
18
|
-
import { GetNotificationParams, RequestSwitchStatusParams } from '@subwallet/extension-base/types/notification';
|
|
17
|
+
import { RequestClaimBridge } from '@subwallet/extension-base/types/bridge';
|
|
18
|
+
import { GetNotificationParams, RequestIsClaimedPolygonBridge, RequestSwitchStatusParams } from '@subwallet/extension-base/types/notification';
|
|
19
19
|
import { InjectedAccount, InjectedAccountWithMeta, MetadataDefBase } from '@subwallet/extension-inject/types';
|
|
20
20
|
import { KeyringPair$Meta } from '@subwallet/keyring/types';
|
|
21
21
|
import { KeyringOptions } from '@subwallet/ui-keyring/options/types';
|
|
@@ -395,7 +395,7 @@ export declare enum ExtrinsicType {
|
|
|
395
395
|
UNSTAKE_VMANTA = "earn.unstake_vmanta",
|
|
396
396
|
TOKEN_SPENDING_APPROVAL = "token.spending_approval",
|
|
397
397
|
SWAP = "swap",
|
|
398
|
-
|
|
398
|
+
CLAIM_BRIDGE = "claim.claim_bridge",
|
|
399
399
|
EVM_EXECUTE = "evm.execute",
|
|
400
400
|
UNKNOWN = "unknown"
|
|
401
401
|
}
|
|
@@ -435,7 +435,7 @@ export interface ExtrinsicDataTypeMap {
|
|
|
435
435
|
[ExtrinsicType.REDEEM_STDOT]: RequestYieldLeave;
|
|
436
436
|
[ExtrinsicType.REDEEM_VMANTA]: RequestYieldLeave;
|
|
437
437
|
[ExtrinsicType.TOKEN_SPENDING_APPROVAL]: TokenSpendingApprovalParams;
|
|
438
|
-
[ExtrinsicType.
|
|
438
|
+
[ExtrinsicType.CLAIM_BRIDGE]: RequestClaimBridge;
|
|
439
439
|
[ExtrinsicType.EVM_EXECUTE]: TransactionConfig;
|
|
440
440
|
[ExtrinsicType.CROWDLOAN]: any;
|
|
441
441
|
[ExtrinsicType.SWAP]: SwapTxData;
|
|
@@ -1680,7 +1680,9 @@ export interface KoniRequestSignatures {
|
|
|
1680
1680
|
'pri(inappNotification.switchReadNotificationStatus)': [RequestSwitchStatusParams, null];
|
|
1681
1681
|
'pri(inappNotification.fetch)': [GetNotificationParams, _NotificationInfo[]];
|
|
1682
1682
|
'pri(inappNotification.get)': [string, _NotificationInfo];
|
|
1683
|
-
'pri(
|
|
1683
|
+
'pri(inappNotification.isClaimedPolygonBridge)': [RequestIsClaimedPolygonBridge, boolean];
|
|
1684
|
+
'pri(availBridge.submitClaimAvailBridgeOnAvail)': [RequestClaimBridge, SWTransactionResponse];
|
|
1685
|
+
'pri(polygonBridge.submitClaimPolygonBridge)': [RequestClaimBridge, SWTransactionResponse];
|
|
1684
1686
|
'pri(ledger.generic.allow)': [null, string[], string[]];
|
|
1685
1687
|
}
|
|
1686
1688
|
export interface ApplicationMetadataType {
|
package/background/KoniTypes.js
CHANGED
|
@@ -102,7 +102,7 @@ export let ExtrinsicType;
|
|
|
102
102
|
ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
|
|
103
103
|
ExtrinsicType["TOKEN_SPENDING_APPROVAL"] = "token.spending_approval";
|
|
104
104
|
ExtrinsicType["SWAP"] = "swap";
|
|
105
|
-
ExtrinsicType["
|
|
105
|
+
ExtrinsicType["CLAIM_BRIDGE"] = "claim.claim_bridge";
|
|
106
106
|
ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
|
|
107
107
|
ExtrinsicType["UNKNOWN"] = "unknown";
|
|
108
108
|
})(ExtrinsicType || (ExtrinsicType = {}));
|
|
@@ -117,7 +117,7 @@ exports.ExtrinsicType = ExtrinsicType;
|
|
|
117
117
|
ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
|
|
118
118
|
ExtrinsicType["TOKEN_SPENDING_APPROVAL"] = "token.spending_approval";
|
|
119
119
|
ExtrinsicType["SWAP"] = "swap";
|
|
120
|
-
ExtrinsicType["
|
|
120
|
+
ExtrinsicType["CLAIM_BRIDGE"] = "claim.claim_bridge";
|
|
121
121
|
ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
|
|
122
122
|
ExtrinsicType["UNKNOWN"] = "unknown";
|
|
123
123
|
})(ExtrinsicType || (exports.ExtrinsicType = ExtrinsicType = {}));
|
|
@@ -11,11 +11,13 @@ exports._getXcmMultiLocation = _getXcmMultiLocation;
|
|
|
11
11
|
exports._getXcmUnstableWarning = _getXcmUnstableWarning;
|
|
12
12
|
exports._isAvailBridgeXcm = _isAvailBridgeXcm;
|
|
13
13
|
exports._isMythosFromHydrationToMythos = _isMythosFromHydrationToMythos;
|
|
14
|
+
exports._isPolygonBridgeXcm = _isPolygonBridgeXcm;
|
|
14
15
|
exports._isSnowBridgeXcm = _isSnowBridgeXcm;
|
|
15
16
|
exports._isXcmTransferUnstable = _isXcmTransferUnstable;
|
|
16
17
|
exports._isXcmWithinSameConsensus = _isXcmWithinSameConsensus;
|
|
17
18
|
var _chainList = require("@subwallet/chain-list");
|
|
18
19
|
var _availBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/availBridge");
|
|
20
|
+
var _polygonBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/polygonBridge");
|
|
19
21
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
20
22
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
21
23
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
@@ -64,7 +66,7 @@ function _getXcmMultiLocation(originChainInfo, destChainInfo, version, recipient
|
|
|
64
66
|
};
|
|
65
67
|
}
|
|
66
68
|
function _isXcmTransferUnstable(originChainInfo, destChainInfo, assetSlug) {
|
|
67
|
-
return !_isXcmWithinSameConsensus(originChainInfo, destChainInfo) || _isMythosFromHydrationToMythos(originChainInfo, destChainInfo, assetSlug);
|
|
69
|
+
return !_isXcmWithinSameConsensus(originChainInfo, destChainInfo) || _isMythosFromHydrationToMythos(originChainInfo, destChainInfo, assetSlug) || _isPolygonBridgeXcm(originChainInfo, destChainInfo);
|
|
68
70
|
}
|
|
69
71
|
function getAssetHubBridgeUnstableWarning(originChainInfo) {
|
|
70
72
|
switch (originChainInfo.slug) {
|
|
@@ -92,8 +94,17 @@ function getMythosFromHydrationToMythosWarning() {
|
|
|
92
94
|
function getAvailBridgeWarning() {
|
|
93
95
|
return 'Cross-chain transfer of this token may take up to 90 minutes, and you’ll need to manually claim the funds on the destination network to complete the transfer. Do you still want to continue?';
|
|
94
96
|
}
|
|
97
|
+
function getPolygonBridgeWarning(originChainInfo) {
|
|
98
|
+
if (originChainInfo.slug === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM || originChainInfo.slug === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA) {
|
|
99
|
+
return 'Cross-chain transfer of this token may take up to 40 minutes. Do you still want to continue?';
|
|
100
|
+
} else {
|
|
101
|
+
return 'Cross-chain transfer of this token may take up to 3 hours, and you’ll need to manually claim the funds on the destination network to complete the transfer. Do you still want to continue?';
|
|
102
|
+
}
|
|
103
|
+
}
|
|
95
104
|
function _getXcmUnstableWarning(originChainInfo, destChainInfo, assetSlug) {
|
|
96
|
-
if (
|
|
105
|
+
if (_isPolygonBridgeXcm(originChainInfo, destChainInfo)) {
|
|
106
|
+
return getPolygonBridgeWarning(originChainInfo);
|
|
107
|
+
} else if (_isAvailBridgeXcm(originChainInfo, destChainInfo)) {
|
|
97
108
|
return getAvailBridgeWarning();
|
|
98
109
|
} else if (_isSnowBridgeXcm(originChainInfo, destChainInfo)) {
|
|
99
110
|
return getSnowBridgeUnstableWarning(originChainInfo);
|
|
@@ -117,6 +128,9 @@ function _isAvailBridgeXcm(originChainInfo, destChainInfo) {
|
|
|
117
128
|
function _isMythosFromHydrationToMythos(originChainInfo, destChainInfo, assetSlug) {
|
|
118
129
|
return originChainInfo.slug === 'hydradx_main' && destChainInfo.slug === 'mythos' && assetSlug === 'hydradx_main-LOCAL-MYTH';
|
|
119
130
|
}
|
|
131
|
+
function _isPolygonBridgeXcm(originChainInfo, destChainInfo) {
|
|
132
|
+
return (0, _polygonBridge._isPolygonChainBridge)(originChainInfo.slug, destChainInfo.slug);
|
|
133
|
+
}
|
|
120
134
|
|
|
121
135
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
122
136
|
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports._TEST_ERC721_ABI = exports._SNOWBRIDGE_GATEWAY_ABI = exports._PSP34_ABI = exports._PSP22_ABI = exports._PINK_PSP34_ABI = exports._NEUROGUNS_PSP34_ABI = exports._ERC721_ABI = exports._ERC20_ABI = exports._AZERO_DOMAIN_REGISTRY_ABI = exports._AVAIL_TEST_BRIDGE_GATEWAY_ABI = exports._AVAIL_BRIDGE_GATEWAY_ABI = void 0;
|
|
6
|
+
exports._TEST_ERC721_ABI = exports._SNOWBRIDGE_GATEWAY_ABI = exports._PSP34_ABI = exports._PSP22_ABI = exports._POLYGON_BRIDGE_ABI = exports._PINK_PSP34_ABI = exports._NEUROGUNS_PSP34_ABI = exports._ERC721_ABI = exports._ERC20_ABI = exports._AZERO_DOMAIN_REGISTRY_ABI = exports._AVAIL_TEST_BRIDGE_GATEWAY_ABI = exports._AVAIL_BRIDGE_GATEWAY_ABI = void 0;
|
|
7
7
|
exports.getAvailBridgeGatewayContract = getAvailBridgeGatewayContract;
|
|
8
|
+
exports.getPolygonBridgeContract = getPolygonBridgeContract;
|
|
8
9
|
exports.getSnowBridgeGatewayContract = getSnowBridgeGatewayContract;
|
|
9
10
|
exports.isAvailBridgeGatewayContract = isAvailBridgeGatewayContract;
|
|
10
11
|
exports.isSnowBridgeGatewayContract = isSnowBridgeGatewayContract;
|
|
@@ -44,7 +45,10 @@ const _AVAIL_BRIDGE_GATEWAY_ABI = require('./avail_bridge_abi.json');
|
|
|
44
45
|
// eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment
|
|
45
46
|
exports._AVAIL_BRIDGE_GATEWAY_ABI = _AVAIL_BRIDGE_GATEWAY_ABI;
|
|
46
47
|
const _AVAIL_TEST_BRIDGE_GATEWAY_ABI = require('./avail_test_bridge_abi.json');
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment
|
|
47
49
|
exports._AVAIL_TEST_BRIDGE_GATEWAY_ABI = _AVAIL_TEST_BRIDGE_GATEWAY_ABI;
|
|
50
|
+
const _POLYGON_BRIDGE_ABI = require('./polygon_bridge_abi.json');
|
|
51
|
+
exports._POLYGON_BRIDGE_ABI = _POLYGON_BRIDGE_ABI;
|
|
48
52
|
const SNOWBRIDGE_GATEWAY_ETHEREUM_CONTRACT_ADDRESS = '0x27ca963C279c93801941e1eB8799c23f407d68e7';
|
|
49
53
|
const SNOWBRIDGE_GATEWAY_SEPOLIA_CONTRACT_ADDRESS = '0x5B4909cE6Ca82d2CE23BD46738953c7959E710Cd';
|
|
50
54
|
function getSnowBridgeGatewayContract(chain) {
|
|
@@ -66,4 +70,14 @@ function getAvailBridgeGatewayContract(chain) {
|
|
|
66
70
|
}
|
|
67
71
|
function isAvailBridgeGatewayContract(contractAddress) {
|
|
68
72
|
return [AVAILBRIDGE_GATEWAY_ETHEREUM_CONTRACT_ADDRESS, AVAILBRIDGE_GATEWAY_SEPOLIA_CONTRACT_ADDRESS].includes(contractAddress);
|
|
73
|
+
}
|
|
74
|
+
const POLYGONBRIDGE_GATEWAY_ETHEREUM_CONTRACT_ADDRESS = '0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe';
|
|
75
|
+
const POLYGONBRIDGE_GATEWAY_SEPOLIA_CONTRACT_ADDRESS = '0x528e26b25a34a4A5d0dbDa1d57D318153d2ED582';
|
|
76
|
+
function getPolygonBridgeContract(chain) {
|
|
77
|
+
if (chain === 'polygonzkEvm_cardona' || chain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA) {
|
|
78
|
+
return POLYGONBRIDGE_GATEWAY_SEPOLIA_CONTRACT_ADDRESS;
|
|
79
|
+
} else if (chain === 'polygonZkEvm' || chain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM) {
|
|
80
|
+
return POLYGONBRIDGE_GATEWAY_ETHEREUM_CONTRACT_ADDRESS;
|
|
81
|
+
}
|
|
82
|
+
throw new Error('Invalid chain');
|
|
69
83
|
}
|
|
@@ -33,6 +33,7 @@ var _token = require("@subwallet/extension-base/services/balance-service/transfe
|
|
|
33
33
|
var _tonTransfer = require("@subwallet/extension-base/services/balance-service/transfer/ton-transfer");
|
|
34
34
|
var _xcm = require("@subwallet/extension-base/services/balance-service/transfer/xcm");
|
|
35
35
|
var _availBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/availBridge");
|
|
36
|
+
var _polygonBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/polygonBridge");
|
|
36
37
|
var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
|
|
37
38
|
var _types2 = require("@subwallet/extension-base/services/chain-service/types");
|
|
38
39
|
var _utils4 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
@@ -1295,6 +1296,7 @@ class KoniExtension {
|
|
|
1295
1296
|
const isAvailBridgeFromEvm = (0, _utils4._isPureEvmChain)(chainInfoMap[originNetworkKey]) && (0, _availBridge.isAvailChainBridge)(destinationNetworkKey);
|
|
1296
1297
|
const isAvailBridgeFromAvail = (0, _availBridge.isAvailChainBridge)(originNetworkKey) && (0, _utils4._isPureEvmChain)(chainInfoMap[destinationNetworkKey]);
|
|
1297
1298
|
const isSnowBridgeEvmTransfer = (0, _utils4._isPureEvmChain)(chainInfoMap[originNetworkKey]) && (0, _xcmParser._isSnowBridgeXcm)(chainInfoMap[originNetworkKey], chainInfoMap[destinationNetworkKey]) && !isAvailBridgeFromEvm;
|
|
1299
|
+
const isPolygonBridgeTransfer = (0, _polygonBridge._isPolygonChainBridge)(originNetworkKey, destinationNetworkKey);
|
|
1298
1300
|
let additionalValidator;
|
|
1299
1301
|
let eventsHandler;
|
|
1300
1302
|
if (fromKeyPair && destinationTokenInfo) {
|
|
@@ -1311,7 +1313,9 @@ class KoniExtension {
|
|
|
1311
1313
|
evmApi
|
|
1312
1314
|
};
|
|
1313
1315
|
let funcCreateExtrinsic;
|
|
1314
|
-
if (
|
|
1316
|
+
if (isPolygonBridgeTransfer) {
|
|
1317
|
+
funcCreateExtrinsic = _xcm.createPolygonBridgeExtrinsic;
|
|
1318
|
+
} else if (isSnowBridgeEvmTransfer) {
|
|
1315
1319
|
funcCreateExtrinsic = _xcm.createSnowBridgeExtrinsic;
|
|
1316
1320
|
} else if (isAvailBridgeFromEvm) {
|
|
1317
1321
|
funcCreateExtrinsic = _xcm.createAvailBridgeTxFromEth;
|
|
@@ -1376,7 +1380,7 @@ class KoniExtension {
|
|
|
1376
1380
|
transaction: extrinsic,
|
|
1377
1381
|
data: inputData,
|
|
1378
1382
|
extrinsicType: _KoniTypes.ExtrinsicType.TRANSFER_XCM,
|
|
1379
|
-
chainType: !isSnowBridgeEvmTransfer && !isAvailBridgeFromEvm ? _KoniTypes.ChainType.SUBSTRATE : _KoniTypes.ChainType.EVM,
|
|
1383
|
+
chainType: !isSnowBridgeEvmTransfer && !isAvailBridgeFromEvm && !isPolygonBridgeTransfer ? _KoniTypes.ChainType.SUBSTRATE : _KoniTypes.ChainType.EVM,
|
|
1380
1384
|
transferNativeAmount: (0, _utils4._isNativeToken)(originTokenInfo) ? value : '0',
|
|
1381
1385
|
ignoreWarnings,
|
|
1382
1386
|
isTransferAll: transferAll,
|
|
@@ -3452,7 +3456,7 @@ class KoniExtension {
|
|
|
3452
3456
|
chain,
|
|
3453
3457
|
notification
|
|
3454
3458
|
} = data;
|
|
3455
|
-
const extrinsicType = _KoniTypes.ExtrinsicType.
|
|
3459
|
+
const extrinsicType = _KoniTypes.ExtrinsicType.CLAIM_BRIDGE;
|
|
3456
3460
|
let transaction = null;
|
|
3457
3461
|
let chainType;
|
|
3458
3462
|
if ((0, _keyring.isSubstrateAddress)(address)) {
|
|
@@ -3473,6 +3477,32 @@ class KoniExtension {
|
|
|
3473
3477
|
chainType
|
|
3474
3478
|
});
|
|
3475
3479
|
}
|
|
3480
|
+
async getIsClaimedPolygonBridge(data) {
|
|
3481
|
+
const evmApi = this.#koniState.getEvmApi(data.chainslug);
|
|
3482
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
3483
|
+
const isClaimed = await (0, _polygonBridge.isClaimedPolygonBridge)(data.chainslug, data.counter, data.sourceNetwork, evmApi);
|
|
3484
|
+
return isClaimed;
|
|
3485
|
+
}
|
|
3486
|
+
async submitClaimPolygonBridge(data) {
|
|
3487
|
+
const {
|
|
3488
|
+
address,
|
|
3489
|
+
chain,
|
|
3490
|
+
notification
|
|
3491
|
+
} = data;
|
|
3492
|
+
const extrinsicType = _KoniTypes.ExtrinsicType.CLAIM_BRIDGE;
|
|
3493
|
+
let transaction = null;
|
|
3494
|
+
const evmApi = this.#koniState.getEvmApi(chain);
|
|
3495
|
+
transaction = await (0, _polygonBridge.getClaimPolygonBridge)(chain, notification, evmApi);
|
|
3496
|
+
const chainType = _KoniTypes.ChainType.EVM;
|
|
3497
|
+
return await this.#koniState.transactionService.handleTransaction({
|
|
3498
|
+
address,
|
|
3499
|
+
chain,
|
|
3500
|
+
transaction,
|
|
3501
|
+
data,
|
|
3502
|
+
extrinsicType,
|
|
3503
|
+
chainType
|
|
3504
|
+
});
|
|
3505
|
+
}
|
|
3476
3506
|
|
|
3477
3507
|
/* Ledger */
|
|
3478
3508
|
|
|
@@ -4060,6 +4090,8 @@ class KoniExtension {
|
|
|
4060
4090
|
return this.fetchInappNotifications(request);
|
|
4061
4091
|
case 'pri(inappNotification.get)':
|
|
4062
4092
|
return this.getInappNotification(request);
|
|
4093
|
+
case 'pri(inappNotification.isClaimedPolygonBridge)':
|
|
4094
|
+
return this.getIsClaimedPolygonBridge(request);
|
|
4063
4095
|
/* Notification service */
|
|
4064
4096
|
|
|
4065
4097
|
/* Avail Bridge */
|
|
@@ -4067,6 +4099,13 @@ class KoniExtension {
|
|
|
4067
4099
|
return this.submitClaimAvailBridge(request);
|
|
4068
4100
|
/* Avail Bridge */
|
|
4069
4101
|
|
|
4102
|
+
/* Polygon Bridge */
|
|
4103
|
+
|
|
4104
|
+
case 'pri(polygonBridge.submitClaimPolygonBridge)':
|
|
4105
|
+
return this.submitClaimPolygonBridge(request);
|
|
4106
|
+
|
|
4107
|
+
/* Polygon Bridge */
|
|
4108
|
+
|
|
4070
4109
|
/* Ledger */
|
|
4071
4110
|
case 'pri(ledger.generic.allow)':
|
|
4072
4111
|
return this.subscribeLedgerGenericAllowChains(id, port);
|
|
@@ -15,6 +15,7 @@ var _balanceService = require("@subwallet/extension-base/services/balance-servic
|
|
|
15
15
|
var _types = require("@subwallet/extension-base/services/base/types");
|
|
16
16
|
var _buyService = _interopRequireDefault(require("@subwallet/extension-base/services/buy-service"));
|
|
17
17
|
var _campaignService = _interopRequireDefault(require("@subwallet/extension-base/services/campaign-service"));
|
|
18
|
+
var _chainOnlineService = require("@subwallet/extension-base/services/chain-online-service");
|
|
18
19
|
var _chainService = require("@subwallet/extension-base/services/chain-service");
|
|
19
20
|
var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
|
|
20
21
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
@@ -112,6 +113,7 @@ class KoniState {
|
|
|
112
113
|
this.feeService = new _service2.default(this);
|
|
113
114
|
this.swapService = new _swapService.SwapService(this);
|
|
114
115
|
this.inappNotificationService = new _inappNotificationService.InappNotificationService(this.dbService, this.keyringService, this.eventService, this.chainService);
|
|
116
|
+
this.chainOnlineService = new _chainOnlineService.ChainOnlineService(this.chainService, this.settingService, this.eventService, this.dbService);
|
|
115
117
|
this.subscription = new _subscription.KoniSubscription(this, this.dbService);
|
|
116
118
|
this.cron = new _cron.KoniCron(this, this.subscription, this.dbService);
|
|
117
119
|
this.logger = (0, _util.logger)('State');
|
|
@@ -206,7 +208,6 @@ class KoniState {
|
|
|
206
208
|
async init() {
|
|
207
209
|
await this.eventService.waitCryptoReady;
|
|
208
210
|
await this.chainService.init();
|
|
209
|
-
this.afterChainServiceInit();
|
|
210
211
|
await this.migrationService.run();
|
|
211
212
|
this.campaignService.init();
|
|
212
213
|
this.mktCampaignService.init();
|
|
@@ -222,7 +223,11 @@ class KoniState {
|
|
|
222
223
|
// TODO: consider moving this to a separate service
|
|
223
224
|
await this.dbService.stores.crowdloan.removeEndedCrowdloans();
|
|
224
225
|
await this.startSubscription();
|
|
226
|
+
this.chainOnlineService.checkLatestData();
|
|
225
227
|
this.chainService.checkLatestData();
|
|
228
|
+
this.chainService.subscribeChainInfoMap().subscribe(() => {
|
|
229
|
+
this.afterChainServiceInit();
|
|
230
|
+
});
|
|
226
231
|
}
|
|
227
232
|
async initMantaPay(password) {
|
|
228
233
|
var _this$chainService, _this$chainService$ma;
|
|
@@ -792,6 +797,7 @@ class KoniState {
|
|
|
792
797
|
return this.chainService.stopAllChainApis();
|
|
793
798
|
}
|
|
794
799
|
async resumeAllNetworks() {
|
|
800
|
+
this.chainOnlineService.checkLatestData();
|
|
795
801
|
return this.chainService.resumeAllChainApis();
|
|
796
802
|
}
|
|
797
803
|
publishCrowdloan(reset) {
|
|
@@ -1351,8 +1357,11 @@ class KoniState {
|
|
|
1351
1357
|
this.chainService.resetWallet(resetAll);
|
|
1352
1358
|
await this.walletConnectService.resetWallet(resetAll);
|
|
1353
1359
|
await this.chainService.init();
|
|
1354
|
-
this.
|
|
1360
|
+
this.chainOnlineService.checkLatestData();
|
|
1355
1361
|
this.chainService.checkLatestData();
|
|
1362
|
+
this.chainService.subscribeChainInfoMap().subscribe(() => {
|
|
1363
|
+
this.afterChainServiceInit();
|
|
1364
|
+
});
|
|
1356
1365
|
}
|
|
1357
1366
|
async enableMantaPay(updateStore, address, password, seedPhrase) {
|
|
1358
1367
|
var _this$chainService3, _this$chainService3$m, _this$chainService4, _this$chainService4$m, _this$chainService4$m2, _this$chainService11, _this$chainService11$, _this$chainService11$2;
|
package/cjs/packageInfo.js
CHANGED
|
@@ -4,10 +4,11 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.getXcmMockTxFee = exports.createXcmExtrinsic = exports.createSnowBridgeExtrinsic = exports.createAvailBridgeTxFromEth = exports.createAvailBridgeExtrinsicFromAvail = void 0;
|
|
7
|
+
exports.getXcmMockTxFee = exports.createXcmExtrinsic = exports.createSnowBridgeExtrinsic = exports.createPolygonBridgeExtrinsic = exports.createAvailBridgeTxFromEth = exports.createAvailBridgeExtrinsicFromAvail = void 0;
|
|
8
8
|
var _xcmParser = require("@subwallet/extension-base/core/substrate/xcm-parser");
|
|
9
9
|
var _availBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/availBridge");
|
|
10
10
|
var _polkadotXcm = require("@subwallet/extension-base/services/balance-service/transfer/xcm/polkadotXcm");
|
|
11
|
+
var _polygonBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/polygonBridge");
|
|
11
12
|
var _snowBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/snowBridge");
|
|
12
13
|
var _xcmPallet = require("@subwallet/extension-base/services/balance-service/transfer/xcm/xcmPallet");
|
|
13
14
|
var _xTokens = require("@subwallet/extension-base/services/balance-service/transfer/xcm/xTokens");
|
|
@@ -100,6 +101,35 @@ const createAvailBridgeExtrinsicFromAvail = async _ref4 => {
|
|
|
100
101
|
return await (0, _availBridge.getAvailBridgeExtrinsicFromAvail)(recipient, sendingValue, substrateApi);
|
|
101
102
|
};
|
|
102
103
|
exports.createAvailBridgeExtrinsicFromAvail = createAvailBridgeExtrinsicFromAvail;
|
|
104
|
+
const createPolygonBridgeExtrinsic = async _ref5 => {
|
|
105
|
+
let {
|
|
106
|
+
chainInfoMap,
|
|
107
|
+
destinationTokenInfo,
|
|
108
|
+
evmApi,
|
|
109
|
+
originTokenInfo,
|
|
110
|
+
recipient,
|
|
111
|
+
sender,
|
|
112
|
+
sendingValue
|
|
113
|
+
} = _ref5;
|
|
114
|
+
const originChainInfo = chainInfoMap[originTokenInfo.originChain];
|
|
115
|
+
const destinationChainInfo = chainInfoMap[destinationTokenInfo.originChain];
|
|
116
|
+
if (!(0, _xcmParser._isPolygonBridgeXcm)(originChainInfo, destinationChainInfo)) {
|
|
117
|
+
throw new Error('This is not a valid PolygonBridge transfer');
|
|
118
|
+
}
|
|
119
|
+
if (!evmApi) {
|
|
120
|
+
throw Error('Evm API is not available');
|
|
121
|
+
}
|
|
122
|
+
if (!sender) {
|
|
123
|
+
throw Error('Sender is required');
|
|
124
|
+
}
|
|
125
|
+
const sourceChain = originChainInfo.slug;
|
|
126
|
+
if (sourceChain === 'polygonzkEvm_cardona' || sourceChain === 'polygonZkEvm') {
|
|
127
|
+
return (0, _polygonBridge._createPolygonBridgeL2toL1Extrinsic)(originTokenInfo, originChainInfo, sender, recipient, sendingValue, evmApi);
|
|
128
|
+
} else {
|
|
129
|
+
return (0, _polygonBridge._createPolygonBridgeL1toL2Extrinsic)(originTokenInfo, originChainInfo, sender, recipient, sendingValue, evmApi);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
exports.createPolygonBridgeExtrinsic = createPolygonBridgeExtrinsic;
|
|
103
133
|
const getXcmMockTxFee = async (substrateApi, chainInfoMap, originTokenInfo, destinationTokenInfo) => {
|
|
104
134
|
try {
|
|
105
135
|
var _paymentInfo$partialF;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.POLYGON_PROOF_INDEXER = exports.POLYGON_GAS_INDEXER = void 0;
|
|
7
|
+
exports._createPolygonBridgeL1toL2Extrinsic = _createPolygonBridgeL1toL2Extrinsic;
|
|
8
|
+
exports._createPolygonBridgeL2toL1Extrinsic = _createPolygonBridgeL2toL1Extrinsic;
|
|
9
|
+
exports._isPolygonChainBridge = _isPolygonChainBridge;
|
|
10
|
+
exports.getClaimPolygonBridge = getClaimPolygonBridge;
|
|
11
|
+
exports.isClaimedPolygonBridge = isClaimedPolygonBridge;
|
|
12
|
+
var _chainList = require("@subwallet/chain-list");
|
|
13
|
+
var _web = require("@subwallet/extension-base/koni/api/contract-handler/evm/web3");
|
|
14
|
+
var _utils = require("@subwallet/extension-base/koni/api/contract-handler/utils");
|
|
15
|
+
var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
16
|
+
var _utils3 = require("@subwallet/extension-base/services/fee-service/utils");
|
|
17
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
18
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
19
|
+
|
|
20
|
+
const POLYGON_PROOF_INDEXER = {
|
|
21
|
+
MAINNET: 'https://api-gateway.polygon.technology/api/v3/proof/mainnet/merkle-proof',
|
|
22
|
+
TESTNET: 'https://api-gateway.polygon.technology/api/v3/proof/testnet/merkle-proof'
|
|
23
|
+
};
|
|
24
|
+
exports.POLYGON_PROOF_INDEXER = POLYGON_PROOF_INDEXER;
|
|
25
|
+
const POLYGON_GAS_INDEXER = {
|
|
26
|
+
MAINNET: 'https://gasstation.polygon.technology/zkevm',
|
|
27
|
+
TESTNET: 'https://gasstation.polygon.technology/zkevm/cardona'
|
|
28
|
+
};
|
|
29
|
+
exports.POLYGON_GAS_INDEXER = POLYGON_GAS_INDEXER;
|
|
30
|
+
async function createPolygonBridgeTransaction(tokenInfo, originChainInfo, sender, recipientAddress, value, destinationNetwork, evmApi) {
|
|
31
|
+
var _priority$maxFeePerGa, _priority$maxPriority;
|
|
32
|
+
const polygonBridgeContractAddress = (0, _utils.getPolygonBridgeContract)(originChainInfo.slug);
|
|
33
|
+
const polygonBridgeContract = (0, _web.getWeb3Contract)(polygonBridgeContractAddress, evmApi, _utils._POLYGON_BRIDGE_ABI);
|
|
34
|
+
const tokenContract = (0, _utils2._getContractAddressOfToken)(tokenInfo) || '0x0000000000000000000000000000000000000000'; // FOR Ethereum: use null address
|
|
35
|
+
|
|
36
|
+
if (tokenContract !== '0x0000000000000000000000000000000000000000') {
|
|
37
|
+
throw new Error('Only native token transfer is supported');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
|
41
|
+
const transferCall = polygonBridgeContract.methods.bridgeAsset(destinationNetwork, recipientAddress, value, tokenContract, true, '0x');
|
|
42
|
+
const transferEncodedCall = transferCall.encodeABI();
|
|
43
|
+
const priority = await (0, _utils3.calculateGasFeeParams)(evmApi, evmApi.chainSlug);
|
|
44
|
+
const transactionConfig = {
|
|
45
|
+
from: sender,
|
|
46
|
+
to: polygonBridgeContractAddress,
|
|
47
|
+
value: value,
|
|
48
|
+
data: transferEncodedCall,
|
|
49
|
+
gasPrice: priority.gasPrice,
|
|
50
|
+
maxFeePerGas: priority === null || priority === void 0 ? void 0 : (_priority$maxFeePerGa = priority.maxFeePerGas) === null || _priority$maxFeePerGa === void 0 ? void 0 : _priority$maxFeePerGa.toString(),
|
|
51
|
+
maxPriorityFeePerGas: priority === null || priority === void 0 ? void 0 : (_priority$maxPriority = priority.maxPriorityFeePerGas) === null || _priority$maxPriority === void 0 ? void 0 : _priority$maxPriority.toString()
|
|
52
|
+
};
|
|
53
|
+
const gasLimit = await evmApi.api.eth.estimateGas(transactionConfig).catch(() => 200000);
|
|
54
|
+
transactionConfig.gas = gasLimit.toString();
|
|
55
|
+
return transactionConfig;
|
|
56
|
+
}
|
|
57
|
+
async function _createPolygonBridgeL1toL2Extrinsic(tokenInfo, originChainInfo, sender, recipientAddress, value, evmApi) {
|
|
58
|
+
return createPolygonBridgeTransaction(tokenInfo, originChainInfo, sender, recipientAddress, value, 1, evmApi);
|
|
59
|
+
}
|
|
60
|
+
async function _createPolygonBridgeL2toL1Extrinsic(tokenInfo, originChainInfo, sender, recipientAddress, value, evmApi) {
|
|
61
|
+
return createPolygonBridgeTransaction(tokenInfo, originChainInfo, sender, recipientAddress, value, 0, evmApi);
|
|
62
|
+
}
|
|
63
|
+
async function getClaimPolygonBridge(chainSlug, notification, evmApi) {
|
|
64
|
+
var _priority$maxFeePerGa2, _priority$maxPriority2;
|
|
65
|
+
const polygonBridgeContractAddress = (0, _utils.getPolygonBridgeContract)(chainSlug);
|
|
66
|
+
const polygonBridgeContract = (0, _web.getWeb3Contract)(polygonBridgeContractAddress, evmApi, _utils._POLYGON_BRIDGE_ABI);
|
|
67
|
+
const metadata = notification.metadata;
|
|
68
|
+
const isTestnet = chainSlug === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA;
|
|
69
|
+
const proofDomain = isTestnet ? POLYGON_PROOF_INDEXER.TESTNET : POLYGON_PROOF_INDEXER.MAINNET;
|
|
70
|
+
const proofResponse = await fetch(`${proofDomain}?networkId=${metadata.sourceNetwork}&depositCount=${metadata.counter}`).then(res => res.json());
|
|
71
|
+
const proof = proofResponse.proof;
|
|
72
|
+
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
|
74
|
+
const transferCall = polygonBridgeContract.methods.claimAsset(proof.merkle_proof, proof.rollup_merkle_proof, metadata.counter, proof.main_exit_root, proof.rollup_exit_root, metadata.originTokenNetwork, metadata.originTokenAddress, metadata.destinationNetwork, metadata.receiver, metadata.amounts[0], '0x');
|
|
75
|
+
const transferEncodedCall = transferCall.encodeABI();
|
|
76
|
+
const priority = await (0, _utils3.calculateGasFeeParams)(evmApi, evmApi.chainSlug);
|
|
77
|
+
const transactionConfig = {
|
|
78
|
+
from: metadata.userAddress,
|
|
79
|
+
to: polygonBridgeContractAddress,
|
|
80
|
+
value: '0',
|
|
81
|
+
data: transferEncodedCall,
|
|
82
|
+
gasPrice: priority.gasPrice,
|
|
83
|
+
maxFeePerGas: (_priority$maxFeePerGa2 = priority.maxFeePerGas) === null || _priority$maxFeePerGa2 === void 0 ? void 0 : _priority$maxFeePerGa2.toString(),
|
|
84
|
+
maxPriorityFeePerGas: (_priority$maxPriority2 = priority.maxPriorityFeePerGas) === null || _priority$maxPriority2 === void 0 ? void 0 : _priority$maxPriority2.toString()
|
|
85
|
+
};
|
|
86
|
+
const gasLimit = await evmApi.api.eth.estimateGas(transactionConfig).catch(() => 200000);
|
|
87
|
+
transactionConfig.gas = gasLimit.toString();
|
|
88
|
+
return transactionConfig;
|
|
89
|
+
}
|
|
90
|
+
async function isClaimedPolygonBridge(chainSlug, counter, sourceNetwork, evmApi) {
|
|
91
|
+
const polygonBridgeContractAddress = (0, _utils.getPolygonBridgeContract)(chainSlug);
|
|
92
|
+
const polygonBridgeContract = (0, _web.getWeb3Contract)(polygonBridgeContractAddress, evmApi, _utils._POLYGON_BRIDGE_ABI);
|
|
93
|
+
|
|
94
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-member-access
|
|
95
|
+
return await polygonBridgeContract.methods.isClaimed(counter, sourceNetwork).call();
|
|
96
|
+
}
|
|
97
|
+
function _isPolygonChainBridge(srcChain, destChain) {
|
|
98
|
+
if (srcChain === 'polygonzkEvm_cardona' && destChain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA) {
|
|
99
|
+
return true;
|
|
100
|
+
} else if (srcChain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA && destChain === 'polygonzkEvm_cardona') {
|
|
101
|
+
return true;
|
|
102
|
+
} else if (srcChain === 'polygonZkEvm' && destChain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM) {
|
|
103
|
+
return true;
|
|
104
|
+
} else if (srcChain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM && destChain === 'polygonZkEvm') {
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.LATEST_CHAIN_PATCH_FETCHING_INTERVAL = void 0;
|
|
7
|
+
exports.md5HashChainAsset = md5HashChainAsset;
|
|
8
|
+
exports.md5HashChainInfo = md5HashChainInfo;
|
|
9
|
+
var _tsMd = require("ts-md5");
|
|
10
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
11
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
12
|
+
|
|
13
|
+
const LATEST_CHAIN_PATCH_FETCHING_INTERVAL = 180000;
|
|
14
|
+
exports.LATEST_CHAIN_PATCH_FETCHING_INTERVAL = LATEST_CHAIN_PATCH_FETCHING_INTERVAL;
|
|
15
|
+
function md5HashChainInfo(data) {
|
|
16
|
+
// todo: use from chain list package later
|
|
17
|
+
const {
|
|
18
|
+
chainStatus,
|
|
19
|
+
icon,
|
|
20
|
+
providers,
|
|
21
|
+
...chainBaseInfo
|
|
22
|
+
} = data;
|
|
23
|
+
return _tsMd.Md5.hashStr(JSON.stringify(chainBaseInfo));
|
|
24
|
+
}
|
|
25
|
+
function md5HashChainAsset(data) {
|
|
26
|
+
// todo: use from chain list package later
|
|
27
|
+
const {
|
|
28
|
+
icon,
|
|
29
|
+
...assetBaseInfo
|
|
30
|
+
} = data;
|
|
31
|
+
return _tsMd.Md5.hashStr(JSON.stringify(assetBaseInfo));
|
|
32
|
+
}
|