@subwallet/extension-base 1.3.31-1 → 1.3.33-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 +94 -3
- package/background/KoniTypes.js +14 -0
- package/background/errors/CardanoProviderError.d.ts +6 -0
- package/background/errors/CardanoProviderError.js +61 -0
- package/background/types.d.ts +2 -2
- package/cjs/background/KoniTypes.js +16 -1
- package/cjs/background/errors/CardanoProviderError.js +67 -0
- package/cjs/constants/environment.js +4 -2
- package/cjs/constants/index.js +4 -1
- package/cjs/core/logic-validation/request.js +50 -3
- package/cjs/koni/api/contract-handler/evm/web3.js +21 -0
- package/cjs/koni/api/staking/bonding/utils.js +24 -3
- package/cjs/koni/background/handlers/Extension.js +141 -107
- package/cjs/koni/background/handlers/State.js +232 -6
- package/cjs/koni/background/handlers/Tabs.js +277 -55
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/cardano/cips/cip30.js +63 -0
- package/cjs/page/cardano/cips/index.js +20 -0
- package/cjs/page/cardano/index.js +41 -0
- package/cjs/page/{SubWalleEvmProvider.js → evm/index.js} +2 -2
- package/cjs/page/index.js +9 -4
- package/cjs/services/balance-service/transfer/xcm/acrossBridge/index.js +6 -2
- package/cjs/services/balance-service/transfer/xcm/index.js +2 -0
- package/cjs/services/chain-service/handler/CardanoApi.js +33 -0
- package/cjs/services/chain-service/index.js +31 -0
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +3 -3
- package/cjs/services/earning-service/handlers/native-staking/dtao.js +2 -2
- package/cjs/services/earning-service/handlers/native-staking/mythos.js +42 -8
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/tao.js +13 -13
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +1 -1
- package/cjs/services/migration-service/scripts/MigrateAuthUrls.js +1 -1
- package/cjs/services/price-service/coingecko.js +22 -3
- package/cjs/services/price-service/index.js +75 -2
- package/cjs/services/request-service/constants.js +3 -1
- package/cjs/services/request-service/handler/AuthRequestHandler.js +38 -5
- package/cjs/services/request-service/handler/CardanoRequestHandler.js +45 -3
- package/cjs/services/request-service/helper/index.js +419 -1
- package/cjs/services/swap-service/handler/asset-hub/handler.js +1 -1
- package/cjs/services/swap-service/handler/base-handler.js +81 -21
- package/cjs/services/swap-service/handler/hydradx-handler.js +1 -1
- package/cjs/services/swap-service/handler/uniswap-handler.js +274 -45
- package/cjs/services/swap-service/index.js +33 -11
- package/cjs/services/swap-service/utils.js +15 -2
- package/cjs/utils/auth.js +2 -1
- package/cjs/utils/cardano.js +20 -0
- package/cjs/utils/index.js +16 -4
- package/cjs/utils/price.js +28 -0
- package/constants/environment.d.ts +1 -0
- package/constants/environment.js +2 -1
- package/constants/index.d.ts +1 -0
- package/constants/index.js +1 -0
- package/core/logic-validation/request.d.ts +6 -2
- package/core/logic-validation/request.js +51 -5
- package/koni/api/contract-handler/evm/web3.d.ts +2 -0
- package/koni/api/contract-handler/evm/web3.js +19 -0
- package/koni/api/staking/bonding/utils.d.ts +2 -1
- package/koni/api/staking/bonding/utils.js +23 -3
- package/koni/background/handlers/Extension.d.ts +2 -0
- package/koni/background/handlers/Extension.js +32 -2
- package/koni/background/handlers/State.d.ts +6 -1
- package/koni/background/handlers/State.js +228 -6
- package/koni/background/handlers/Tabs.d.ts +11 -1
- package/koni/background/handlers/Tabs.js +242 -19
- package/package.json +67 -42
- package/packageInfo.js +1 -1
- package/page/cardano/cips/cip30.d.ts +22 -0
- package/page/cardano/cips/cip30.js +55 -0
- package/page/cardano/cips/index.d.ts +3 -0
- package/page/cardano/cips/index.js +7 -0
- package/page/cardano/index.d.ts +13 -0
- package/page/cardano/index.js +34 -0
- package/page/{SubWalleEvmProvider.d.ts → evm/index.d.ts} +3 -2
- package/page/{SubWalleEvmProvider.js → evm/index.js} +1 -1
- package/page/index.d.ts +3 -2
- package/page/index.js +6 -2
- package/page/{Accounts.d.ts → substrate/Accounts.d.ts} +1 -1
- package/page/{Metadata.d.ts → substrate/Metadata.d.ts} +1 -1
- package/page/{PostMessageProvider.d.ts → substrate/PostMessageProvider.d.ts} +1 -1
- package/page/{Signer.d.ts → substrate/Signer.d.ts} +1 -1
- package/page/{Injected.d.ts → substrate/index.d.ts} +1 -1
- package/services/balance-service/helpers/subscribe/cardano/types.d.ts +14 -0
- package/services/balance-service/transfer/xcm/acrossBridge/index.d.ts +4 -0
- package/services/balance-service/transfer/xcm/acrossBridge/index.js +4 -1
- package/services/balance-service/transfer/xcm/index.js +2 -0
- package/services/chain-service/handler/CardanoApi.d.ts +3 -1
- package/services/chain-service/handler/CardanoApi.js +33 -0
- package/services/chain-service/index.d.ts +5 -1
- package/services/chain-service/index.js +32 -1
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +3 -3
- package/services/earning-service/handlers/native-staking/dtao.js +2 -2
- package/services/earning-service/handlers/native-staking/mythos.js +42 -8
- package/services/earning-service/handlers/native-staking/relay-chain.js +1 -1
- package/services/earning-service/handlers/native-staking/tao.js +14 -14
- package/services/earning-service/handlers/nomination-pool/index.js +1 -1
- package/services/migration-service/scripts/MigrateAuthUrls.js +1 -1
- package/services/price-service/coingecko.d.ts +2 -1
- package/services/price-service/coingecko.js +19 -1
- package/services/price-service/index.d.ts +11 -1
- package/services/price-service/index.js +78 -5
- package/services/request-service/constants.js +3 -1
- package/services/request-service/handler/AuthRequestHandler.js +40 -7
- package/services/request-service/handler/CardanoRequestHandler.d.ts +2 -0
- package/services/request-service/handler/CardanoRequestHandler.js +45 -3
- package/services/request-service/helper/index.d.ts +54 -0
- package/services/request-service/helper/index.js +406 -1
- package/services/request-service/types.d.ts +3 -1
- package/services/swap-service/handler/asset-hub/handler.js +1 -1
- package/services/swap-service/handler/base-handler.d.ts +3 -1
- package/services/swap-service/handler/base-handler.js +82 -22
- package/services/swap-service/handler/hydradx-handler.js +1 -1
- package/services/swap-service/handler/uniswap-handler.d.ts +5 -0
- package/services/swap-service/handler/uniswap-handler.js +275 -46
- package/services/swap-service/index.js +34 -12
- package/services/swap-service/utils.d.ts +3 -2
- package/services/swap-service/utils.js +13 -1
- package/types/swap/index.d.ts +1 -0
- package/types/transaction/process.d.ts +2 -0
- package/utils/auth.js +3 -2
- package/utils/cardano.d.ts +2 -0
- package/utils/cardano.js +12 -0
- package/utils/index.d.ts +2 -1
- package/utils/index.js +2 -1
- package/utils/price.d.ts +3 -0
- package/utils/price.js +20 -0
- package/cjs/utils/canDerive.js +0 -12
- package/utils/canDerive.d.ts +0 -2
- package/utils/canDerive.js +0 -6
- /package/cjs/page/{Accounts.js → substrate/Accounts.js} +0 -0
- /package/cjs/page/{Metadata.js → substrate/Metadata.js} +0 -0
- /package/cjs/page/{PostMessageProvider.js → substrate/PostMessageProvider.js} +0 -0
- /package/cjs/page/{Signer.js → substrate/Signer.js} +0 -0
- /package/cjs/page/{Injected.js → substrate/index.js} +0 -0
- /package/page/{Accounts.js → substrate/Accounts.js} +0 -0
- /package/page/{Metadata.js → substrate/Metadata.js} +0 -0
- /package/page/{PostMessageProvider.js → substrate/PostMessageProvider.js} +0 -0
- /package/page/{Signer.js → substrate/Signer.js} +0 -0
- /package/page/{Injected.js → substrate/index.js} +0 -0
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
+
var CardanoWasm = _interopRequireWildcard(require("@emurgo/cardano-serialization-lib-nodejs"));
|
|
9
|
+
var _CardanoProviderError = require("@subwallet/extension-base/background/errors/CardanoProviderError");
|
|
8
10
|
var _EvmProviderError = require("@subwallet/extension-base/background/errors/EvmProviderError");
|
|
9
11
|
var _helpers = require("@subwallet/extension-base/background/handlers/helpers");
|
|
10
12
|
var _subscriptions = require("@subwallet/extension-base/background/handlers/subscriptions");
|
|
@@ -33,6 +35,7 @@ var _NotificationService = _interopRequireDefault(require("@subwallet/extension-
|
|
|
33
35
|
var _priceService = require("@subwallet/extension-base/services/price-service");
|
|
34
36
|
var _requestService = _interopRequireDefault(require("@subwallet/extension-base/services/request-service"));
|
|
35
37
|
var _PopupHandler = require("@subwallet/extension-base/services/request-service/handler/PopupHandler");
|
|
38
|
+
var _helper = require("@subwallet/extension-base/services/request-service/helper");
|
|
36
39
|
var _SettingService = _interopRequireDefault(require("@subwallet/extension-base/services/setting-service/SettingService"));
|
|
37
40
|
var _DatabaseService = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/DatabaseService"));
|
|
38
41
|
var _subscanService = require("@subwallet/extension-base/services/subscan-service");
|
|
@@ -42,6 +45,7 @@ var _walletConnectService = _interopRequireDefault(require("@subwallet/extension
|
|
|
42
45
|
var _storage = require("@subwallet/extension-base/storage");
|
|
43
46
|
var _types2 = require("@subwallet/extension-base/types");
|
|
44
47
|
var _utils3 = require("@subwallet/extension-base/utils");
|
|
48
|
+
var _cardano = require("@subwallet/extension-base/utils/cardano");
|
|
45
49
|
var _promise = require("@subwallet/extension-base/utils/promise");
|
|
46
50
|
var _subwalletApiSdk = _interopRequireDefault(require("@subwallet/subwallet-api-sdk"));
|
|
47
51
|
var _uiKeyring = require("@subwallet/ui-keyring");
|
|
@@ -52,6 +56,8 @@ var _util = require("@polkadot/util");
|
|
|
52
56
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
53
57
|
var _cron = require("../cron");
|
|
54
58
|
var _subscription = require("../subscription");
|
|
59
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
60
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
55
61
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
56
62
|
// SPDX-License-Identifier: Apache-2.0
|
|
57
63
|
|
|
@@ -92,7 +98,10 @@ class KoniState {
|
|
|
92
98
|
constructor() {
|
|
93
99
|
let providers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
94
100
|
// Init subwallet api sdk
|
|
95
|
-
_subwalletApiSdk.default.init(
|
|
101
|
+
_subwalletApiSdk.default.init({
|
|
102
|
+
url: _constants.BACKEND_API_URL,
|
|
103
|
+
priceHistoryUrl: _constants.BACKEND_PRICE_HISTORY_URL
|
|
104
|
+
});
|
|
96
105
|
this.providers = providers;
|
|
97
106
|
this.eventService = new _eventService.EventService();
|
|
98
107
|
this.dbService = new _DatabaseService.default(this.eventService);
|
|
@@ -440,7 +449,7 @@ class KoniState {
|
|
|
440
449
|
if (chainInfo && !(0, _utils._isChainEnabled)(chainState)) {
|
|
441
450
|
await this.enableChainWithPriorityAssets(networkKey);
|
|
442
451
|
}
|
|
443
|
-
authUrls[shortenUrl].
|
|
452
|
+
authUrls[shortenUrl].currentNetworkMap.evm = networkKey;
|
|
444
453
|
this.setAuthorize(authUrls);
|
|
445
454
|
} else {
|
|
446
455
|
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INTERNAL_ERROR, (0, _i18next.t)('Not found {{shortenUrl}} in auth list', {
|
|
@@ -895,6 +904,7 @@ class KoniState {
|
|
|
895
904
|
}
|
|
896
905
|
const payloadValidation = {
|
|
897
906
|
address,
|
|
907
|
+
type: 'evm',
|
|
898
908
|
payloadAfterValidated: payload,
|
|
899
909
|
method,
|
|
900
910
|
errors: [],
|
|
@@ -950,6 +960,7 @@ class KoniState {
|
|
|
950
960
|
async evmSendTransaction(id, url, transactionParams, networkKeyInit, topic) {
|
|
951
961
|
const payloadValidation = {
|
|
952
962
|
errors: [],
|
|
963
|
+
type: 'evm',
|
|
953
964
|
networkKey: networkKeyInit || '',
|
|
954
965
|
payloadAfterValidated: transactionParams,
|
|
955
966
|
address: transactionParams.from
|
|
@@ -1027,6 +1038,221 @@ class KoniState {
|
|
|
1027
1038
|
});
|
|
1028
1039
|
});
|
|
1029
1040
|
}
|
|
1041
|
+
async cardanoGetBalance(id, url, address) {
|
|
1042
|
+
const authInfoMap = await this.getAuthList();
|
|
1043
|
+
const authInfo = authInfoMap[(0, _utils3.stripUrl)(url)];
|
|
1044
|
+
let networkKey = authInfo === null || authInfo === void 0 ? void 0 : authInfo.currentNetworkMap.cardano;
|
|
1045
|
+
const autoActiveChain = (authInfo === null || authInfo === void 0 ? void 0 : authInfo.isAllowed) || false;
|
|
1046
|
+
const chainInfo = this.requestService.getDAppChainInfo({
|
|
1047
|
+
autoActive: autoActiveChain,
|
|
1048
|
+
accessType: 'cardano',
|
|
1049
|
+
defaultChain: networkKey,
|
|
1050
|
+
url
|
|
1051
|
+
});
|
|
1052
|
+
networkKey = (chainInfo === null || chainInfo === void 0 ? void 0 : chainInfo.slug) || 'cardano';
|
|
1053
|
+
const cardanoApi = this.chainService.getCardanoApi(networkKey);
|
|
1054
|
+
const networkAddress = (0, _utils3.reformatAddress)(address, chainInfo !== null && chainInfo !== void 0 && chainInfo.isTestnet ? 0 : 1);
|
|
1055
|
+
const balances = await cardanoApi.getBalanceMap(networkAddress);
|
|
1056
|
+
return (0, _helper.convertAssetToValue)(balances);
|
|
1057
|
+
}
|
|
1058
|
+
async cardanoSignData(id, url, params, currentAddress) {
|
|
1059
|
+
const {
|
|
1060
|
+
address: addressHex,
|
|
1061
|
+
payload
|
|
1062
|
+
} = params;
|
|
1063
|
+
const address = (0, _cardano.convertCardanoHexToBech32)(addressHex);
|
|
1064
|
+
const payloadValidation = {
|
|
1065
|
+
address,
|
|
1066
|
+
type: 'cardano',
|
|
1067
|
+
payloadAfterValidated: payload,
|
|
1068
|
+
errors: [],
|
|
1069
|
+
networkKey: ''
|
|
1070
|
+
};
|
|
1071
|
+
const validationSteps = [_logicValidation.validationAuthMiddleware, _logicValidation.validationCardanoSignDataMiddleware];
|
|
1072
|
+
const result = await (0, _logicValidation.generateValidationProcess)(this, url, payloadValidation, validationSteps);
|
|
1073
|
+
if (!(0, _utils3.isSameAddress)(address, currentAddress)) {
|
|
1074
|
+
throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.ACCOUNT_CHANGED);
|
|
1075
|
+
}
|
|
1076
|
+
const errorsFormated = (0, _logicValidation.convertErrorFormat)(result.errors);
|
|
1077
|
+
const payloadAfterValidated = {
|
|
1078
|
+
...result.payloadAfterValidated,
|
|
1079
|
+
errors: errorsFormated,
|
|
1080
|
+
id
|
|
1081
|
+
};
|
|
1082
|
+
return this.requestService.addConfirmationCardano(id, url, 'cardanoSignatureRequest', payloadAfterValidated, {}).then(_ref7 => {
|
|
1083
|
+
let {
|
|
1084
|
+
isApproved,
|
|
1085
|
+
payload
|
|
1086
|
+
} = _ref7;
|
|
1087
|
+
if (isApproved) {
|
|
1088
|
+
if (payload) {
|
|
1089
|
+
return payload;
|
|
1090
|
+
} else {
|
|
1091
|
+
throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST, (0, _i18next.t)('Not found signature'));
|
|
1092
|
+
}
|
|
1093
|
+
} else {
|
|
1094
|
+
throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.SIGN_DATA_DECLINED);
|
|
1095
|
+
}
|
|
1096
|
+
});
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
// Todo: Add validate for this method
|
|
1100
|
+
async cardanoSignTx(id, url, param, currentAddress) {
|
|
1101
|
+
const {
|
|
1102
|
+
partialSign,
|
|
1103
|
+
tx: txHex
|
|
1104
|
+
} = param;
|
|
1105
|
+
const tx = CardanoWasm.Transaction.from_hex(txHex);
|
|
1106
|
+
const inputs = tx.body().inputs();
|
|
1107
|
+
const outputs = tx.body().outputs();
|
|
1108
|
+
const estimateCardanoFee = tx.body().fee().to_str();
|
|
1109
|
+
const authInfoMap = await this.getAuthList();
|
|
1110
|
+
const authInfo = authInfoMap[(0, _utils3.stripUrl)(url)];
|
|
1111
|
+
if (!authInfo) {
|
|
1112
|
+
throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.REFUSED_REQUEST, (0, _i18next.t)('Not found auth info'));
|
|
1113
|
+
}
|
|
1114
|
+
let requireKeyHashes = [];
|
|
1115
|
+
let networkKey = authInfo === null || authInfo === void 0 ? void 0 : authInfo.currentNetworkMap.cardano;
|
|
1116
|
+
let autoActiveChain = false;
|
|
1117
|
+
if (authInfo !== null && authInfo !== void 0 && authInfo.isAllowed) {
|
|
1118
|
+
autoActiveChain = true;
|
|
1119
|
+
}
|
|
1120
|
+
const currentEvmNetwork = this.requestService.getDAppChainInfo({
|
|
1121
|
+
autoActive: autoActiveChain,
|
|
1122
|
+
accessType: 'cardano',
|
|
1123
|
+
defaultChain: networkKey,
|
|
1124
|
+
url
|
|
1125
|
+
});
|
|
1126
|
+
networkKey = (currentEvmNetwork === null || currentEvmNetwork === void 0 ? void 0 : currentEvmNetwork.slug) || 'cardano';
|
|
1127
|
+
const allUtxos = await this.chainService.getUtxosByAddress(currentAddress, networkKey);
|
|
1128
|
+
const outputTransactionUnSpend = CardanoWasm.TransactionOutputs.new();
|
|
1129
|
+
inputs.to_js_value().forEach(input => {
|
|
1130
|
+
const availableUtxo = allUtxos.find(utxo => {
|
|
1131
|
+
const txIn = utxo.input();
|
|
1132
|
+
return txIn.transaction_id().to_hex() === input.transaction_id && txIn.index() === input.index;
|
|
1133
|
+
});
|
|
1134
|
+
if (availableUtxo) {
|
|
1135
|
+
var _availableUtxo$output, _availableUtxo$output2;
|
|
1136
|
+
const keyHash = (_availableUtxo$output = availableUtxo.output().address().payment_cred()) === null || _availableUtxo$output === void 0 ? void 0 : (_availableUtxo$output2 = _availableUtxo$output.to_keyhash()) === null || _availableUtxo$output2 === void 0 ? void 0 : _availableUtxo$output2.to_hex();
|
|
1137
|
+
if (keyHash) {
|
|
1138
|
+
requireKeyHashes.push(keyHash);
|
|
1139
|
+
}
|
|
1140
|
+
outputTransactionUnSpend.add(availableUtxo.output());
|
|
1141
|
+
}
|
|
1142
|
+
});
|
|
1143
|
+
const addressInputMap = (0, _helper.getBalanceAddressMap)(outputTransactionUnSpend);
|
|
1144
|
+
const addressOutputMap = (0, _helper.getBalanceAddressMap)(outputs);
|
|
1145
|
+
const addressInputAmountMap = {};
|
|
1146
|
+
const addressOutputAmountMap = {};
|
|
1147
|
+
let transactionValue = CardanoWasm.Value.new(CardanoWasm.BigNum.from_str('0'));
|
|
1148
|
+
for (const address in addressInputMap) {
|
|
1149
|
+
var _addressOutputMap$add;
|
|
1150
|
+
const output = (_addressOutputMap$add = addressOutputMap[address]) !== null && _addressOutputMap$add !== void 0 ? _addressOutputMap$add : CardanoWasm.Value.new(CardanoWasm.BigNum.from_str('0'));
|
|
1151
|
+
const input = addressInputMap[address];
|
|
1152
|
+
const amount = input.checked_sub(output);
|
|
1153
|
+
if (amount.is_zero()) {
|
|
1154
|
+
continue;
|
|
1155
|
+
}
|
|
1156
|
+
addressInputAmountMap[address] = {
|
|
1157
|
+
values: (0, _helper.convertValueToAsset)(input)
|
|
1158
|
+
};
|
|
1159
|
+
addressOutputAmountMap[address] = {
|
|
1160
|
+
values: (0, _helper.convertValueToAsset)(output)
|
|
1161
|
+
};
|
|
1162
|
+
if ((0, _utils3.isSameAddress)(currentAddress, address)) {
|
|
1163
|
+
transactionValue = transactionValue.checked_add(amount);
|
|
1164
|
+
addressInputAmountMap[address].isOwner = true;
|
|
1165
|
+
addressOutputAmountMap[address].isOwner = true;
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
for (const address in addressOutputMap) {
|
|
1169
|
+
if (!addressInputAmountMap[address] && !addressOutputMap[address].is_zero()) {
|
|
1170
|
+
addressOutputAmountMap[address] = {
|
|
1171
|
+
values: (0, _helper.convertValueToAsset)(addressOutputMap[address]),
|
|
1172
|
+
isRecipient: true
|
|
1173
|
+
};
|
|
1174
|
+
}
|
|
1175
|
+
}
|
|
1176
|
+
transactionValue = transactionValue.checked_sub(CardanoWasm.Value.new(tx.body().fee()));
|
|
1177
|
+
const transactionBody = tx.body();
|
|
1178
|
+
const getSpecificUtxo = this.chainService.getSpecificUtxo.bind(this);
|
|
1179
|
+
requireKeyHashes.push(...(0, _helper.extractKeyHashFromCertificate)(transactionBody.certs()));
|
|
1180
|
+
requireKeyHashes.push(...(0, _helper.extractKeyHashesFromWithdrawals)(transactionBody.withdrawals()));
|
|
1181
|
+
requireKeyHashes.push(...(0, _helper.extractKeyHashesFromRequiredSigners)(transactionBody.required_signers()));
|
|
1182
|
+
requireKeyHashes.push(...(await (0, _helper.extractKeyHashesFromCollaterals)(transactionBody.collateral(), getSpecificUtxo(networkKey))));
|
|
1183
|
+
requireKeyHashes.push(...(0, _helper.extractKeyHashesFromScripts)(tx.witness_set().native_scripts()));
|
|
1184
|
+
requireKeyHashes = [...new Set(requireKeyHashes)];
|
|
1185
|
+
const addressRequireKeyTypes = [];
|
|
1186
|
+
const keyHashAddressMap = {};
|
|
1187
|
+
const pair = _uiKeyring.keyring.getPair(currentAddress);
|
|
1188
|
+
if (pair) {
|
|
1189
|
+
const publicKey = CardanoWasm.Bip32PublicKey.from_bytes(pair.publicKey);
|
|
1190
|
+
const paymentPubKey = publicKey.derive(0).derive(0).to_raw_key().hash().to_hex();
|
|
1191
|
+
const stakePubKey = publicKey.derive(2).derive(0).to_raw_key().hash().to_hex();
|
|
1192
|
+
keyHashAddressMap[paymentPubKey] = 'payment';
|
|
1193
|
+
keyHashAddressMap[stakePubKey] = 'stake';
|
|
1194
|
+
} else {
|
|
1195
|
+
throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST);
|
|
1196
|
+
}
|
|
1197
|
+
const needForeignKeyHash = requireKeyHashes.some(key => {
|
|
1198
|
+
const ownKeyHash = keyHashAddressMap[key];
|
|
1199
|
+
if (ownKeyHash) {
|
|
1200
|
+
addressRequireKeyTypes.push(ownKeyHash);
|
|
1201
|
+
return false;
|
|
1202
|
+
}
|
|
1203
|
+
return true;
|
|
1204
|
+
});
|
|
1205
|
+
const needOwnerKeyHash = requireKeyHashes.some(key => {
|
|
1206
|
+
const ownKeyHash = keyHashAddressMap[key];
|
|
1207
|
+
if (ownKeyHash) {
|
|
1208
|
+
addressRequireKeyTypes.push(ownKeyHash);
|
|
1209
|
+
return true;
|
|
1210
|
+
}
|
|
1211
|
+
return false;
|
|
1212
|
+
});
|
|
1213
|
+
if (!needOwnerKeyHash) {
|
|
1214
|
+
throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.PROOF_GENERATION_FAILED, (0, _i18next.t)('Not found owner key hash'));
|
|
1215
|
+
}
|
|
1216
|
+
if (needForeignKeyHash && !partialSign) {
|
|
1217
|
+
throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST, 'Not support foreign key hash yet');
|
|
1218
|
+
}
|
|
1219
|
+
const result = {
|
|
1220
|
+
id,
|
|
1221
|
+
txInputs: addressInputAmountMap,
|
|
1222
|
+
txOutputs: addressOutputAmountMap,
|
|
1223
|
+
addressRequireKeyTypes,
|
|
1224
|
+
value: (0, _helper.convertValueToAsset)(transactionValue),
|
|
1225
|
+
estimateCardanoFee,
|
|
1226
|
+
from: currentAddress,
|
|
1227
|
+
cardanoPayload: txHex,
|
|
1228
|
+
networkKey
|
|
1229
|
+
};
|
|
1230
|
+
return this.requestService.addConfirmationCardano(id, url, 'cardanoSignTransactionRequest', result, {}).then(_ref8 => {
|
|
1231
|
+
let {
|
|
1232
|
+
isApproved,
|
|
1233
|
+
payload
|
|
1234
|
+
} = _ref8;
|
|
1235
|
+
if (isApproved) {
|
|
1236
|
+
if (payload) {
|
|
1237
|
+
return payload;
|
|
1238
|
+
} else {
|
|
1239
|
+
throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST, (0, _i18next.t)('Not found signature'));
|
|
1240
|
+
}
|
|
1241
|
+
} else {
|
|
1242
|
+
throw new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.SIGN_TRANSACTION_DECLINED);
|
|
1243
|
+
}
|
|
1244
|
+
});
|
|
1245
|
+
}
|
|
1246
|
+
async cardanoSubmitTx(id, url, txHex) {
|
|
1247
|
+
const currentNetwork = this.requestService.getDAppChainInfo({
|
|
1248
|
+
autoActive: true,
|
|
1249
|
+
accessType: 'cardano',
|
|
1250
|
+
url
|
|
1251
|
+
});
|
|
1252
|
+
const networkKey = (currentNetwork === null || currentNetwork === void 0 ? void 0 : currentNetwork.slug) || 'cardano_preproduction';
|
|
1253
|
+
const cardanoApi = this.chainService.getCardanoApi(networkKey);
|
|
1254
|
+
return await cardanoApi.sendCardanoTxReturnHash(txHex);
|
|
1255
|
+
}
|
|
1030
1256
|
getConfirmationsQueueSubject() {
|
|
1031
1257
|
return this.requestService.confirmationsQueueSubject;
|
|
1032
1258
|
}
|
|
@@ -1121,11 +1347,11 @@ class KoniState {
|
|
|
1121
1347
|
const subscription = this.keyringService.context.observable.currentAccount.subscribe(handleRemind);
|
|
1122
1348
|
}
|
|
1123
1349
|
}
|
|
1124
|
-
async setStorageFromWS(
|
|
1350
|
+
async setStorageFromWS(_ref9) {
|
|
1125
1351
|
let {
|
|
1126
1352
|
key,
|
|
1127
1353
|
value
|
|
1128
|
-
} =
|
|
1354
|
+
} = _ref9;
|
|
1129
1355
|
try {
|
|
1130
1356
|
const jsonData = JSON.stringify(value);
|
|
1131
1357
|
await _storage.SWStorage.instance.setItem(key, jsonData);
|
|
@@ -1553,12 +1779,12 @@ class KoniState {
|
|
|
1553
1779
|
|
|
1554
1780
|
/* Metadata */
|
|
1555
1781
|
|
|
1556
|
-
getCrowdloanContributions(
|
|
1782
|
+
getCrowdloanContributions(_ref10) {
|
|
1557
1783
|
let {
|
|
1558
1784
|
address,
|
|
1559
1785
|
page,
|
|
1560
1786
|
relayChain
|
|
1561
|
-
} =
|
|
1787
|
+
} = _ref10;
|
|
1562
1788
|
return this.subscanService.getCrowdloanContributions(relayChain, address, page);
|
|
1563
1789
|
}
|
|
1564
1790
|
}
|