@subwallet/extension-base 1.3.31-1 → 1.3.32-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.
Files changed (127) hide show
  1. package/background/KoniTypes.d.ts +70 -3
  2. package/background/KoniTypes.js +14 -0
  3. package/background/errors/CardanoProviderError.d.ts +6 -0
  4. package/background/errors/CardanoProviderError.js +61 -0
  5. package/background/types.d.ts +2 -2
  6. package/cjs/background/KoniTypes.js +16 -1
  7. package/cjs/background/errors/CardanoProviderError.js +67 -0
  8. package/cjs/constants/index.js +4 -1
  9. package/cjs/core/logic-validation/request.js +50 -3
  10. package/cjs/koni/api/contract-handler/evm/web3.js +21 -0
  11. package/cjs/koni/api/staking/bonding/utils.js +24 -3
  12. package/cjs/koni/background/handlers/Extension.js +115 -107
  13. package/cjs/koni/background/handlers/State.js +228 -5
  14. package/cjs/koni/background/handlers/Tabs.js +277 -55
  15. package/cjs/packageInfo.js +1 -1
  16. package/cjs/page/cardano/cips/cip30.js +63 -0
  17. package/cjs/page/cardano/cips/index.js +20 -0
  18. package/cjs/page/cardano/index.js +41 -0
  19. package/cjs/page/{SubWalleEvmProvider.js → evm/index.js} +2 -2
  20. package/cjs/page/index.js +9 -4
  21. package/cjs/services/balance-service/transfer/xcm/acrossBridge/index.js +6 -2
  22. package/cjs/services/balance-service/transfer/xcm/index.js +2 -0
  23. package/cjs/services/chain-service/handler/CardanoApi.js +33 -0
  24. package/cjs/services/chain-service/index.js +31 -0
  25. package/cjs/services/chain-service/utils/patch.js +1 -1
  26. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +3 -3
  27. package/cjs/services/earning-service/handlers/native-staking/dtao.js +2 -2
  28. package/cjs/services/earning-service/handlers/native-staking/mythos.js +42 -8
  29. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +1 -1
  30. package/cjs/services/earning-service/handlers/native-staking/tao.js +13 -13
  31. package/cjs/services/earning-service/handlers/nomination-pool/index.js +1 -1
  32. package/cjs/services/migration-service/scripts/MigrateAuthUrls.js +1 -1
  33. package/cjs/services/request-service/constants.js +3 -1
  34. package/cjs/services/request-service/handler/AuthRequestHandler.js +38 -5
  35. package/cjs/services/request-service/handler/CardanoRequestHandler.js +45 -3
  36. package/cjs/services/request-service/helper/index.js +419 -1
  37. package/cjs/services/swap-service/handler/asset-hub/handler.js +1 -1
  38. package/cjs/services/swap-service/handler/base-handler.js +81 -21
  39. package/cjs/services/swap-service/handler/hydradx-handler.js +1 -1
  40. package/cjs/services/swap-service/handler/uniswap-handler.js +274 -45
  41. package/cjs/services/swap-service/index.js +33 -11
  42. package/cjs/services/swap-service/utils.js +15 -2
  43. package/cjs/utils/auth.js +2 -1
  44. package/cjs/utils/cardano.js +20 -0
  45. package/cjs/utils/index.js +4 -4
  46. package/constants/index.d.ts +1 -0
  47. package/constants/index.js +1 -0
  48. package/core/logic-validation/request.d.ts +6 -2
  49. package/core/logic-validation/request.js +51 -5
  50. package/koni/api/contract-handler/evm/web3.d.ts +2 -0
  51. package/koni/api/contract-handler/evm/web3.js +19 -0
  52. package/koni/api/staking/bonding/utils.d.ts +2 -1
  53. package/koni/api/staking/bonding/utils.js +23 -3
  54. package/koni/background/handlers/Extension.js +7 -2
  55. package/koni/background/handlers/State.d.ts +6 -1
  56. package/koni/background/handlers/State.js +223 -4
  57. package/koni/background/handlers/Tabs.d.ts +11 -1
  58. package/koni/background/handlers/Tabs.js +242 -19
  59. package/package.json +62 -42
  60. package/packageInfo.js +1 -1
  61. package/page/cardano/cips/cip30.d.ts +22 -0
  62. package/page/cardano/cips/cip30.js +55 -0
  63. package/page/cardano/cips/index.d.ts +3 -0
  64. package/page/cardano/cips/index.js +7 -0
  65. package/page/cardano/index.d.ts +13 -0
  66. package/page/cardano/index.js +34 -0
  67. package/page/{SubWalleEvmProvider.d.ts → evm/index.d.ts} +3 -2
  68. package/page/{SubWalleEvmProvider.js → evm/index.js} +1 -1
  69. package/page/index.d.ts +3 -2
  70. package/page/index.js +6 -2
  71. package/page/{Accounts.d.ts → substrate/Accounts.d.ts} +1 -1
  72. package/page/{Metadata.d.ts → substrate/Metadata.d.ts} +1 -1
  73. package/page/{PostMessageProvider.d.ts → substrate/PostMessageProvider.d.ts} +1 -1
  74. package/page/{Signer.d.ts → substrate/Signer.d.ts} +1 -1
  75. package/page/{Injected.d.ts → substrate/index.d.ts} +1 -1
  76. package/services/balance-service/helpers/subscribe/cardano/types.d.ts +14 -0
  77. package/services/balance-service/transfer/xcm/acrossBridge/index.d.ts +4 -0
  78. package/services/balance-service/transfer/xcm/acrossBridge/index.js +4 -1
  79. package/services/balance-service/transfer/xcm/index.js +2 -0
  80. package/services/chain-service/handler/CardanoApi.d.ts +3 -1
  81. package/services/chain-service/handler/CardanoApi.js +33 -0
  82. package/services/chain-service/index.d.ts +5 -1
  83. package/services/chain-service/index.js +32 -1
  84. package/services/chain-service/utils/patch.js +1 -1
  85. package/services/earning-service/handlers/liquid-staking/stella-swap.js +3 -3
  86. package/services/earning-service/handlers/native-staking/dtao.js +2 -2
  87. package/services/earning-service/handlers/native-staking/mythos.js +42 -8
  88. package/services/earning-service/handlers/native-staking/relay-chain.js +1 -1
  89. package/services/earning-service/handlers/native-staking/tao.js +14 -14
  90. package/services/earning-service/handlers/nomination-pool/index.js +1 -1
  91. package/services/migration-service/scripts/MigrateAuthUrls.js +1 -1
  92. package/services/request-service/constants.js +3 -1
  93. package/services/request-service/handler/AuthRequestHandler.js +40 -7
  94. package/services/request-service/handler/CardanoRequestHandler.d.ts +2 -0
  95. package/services/request-service/handler/CardanoRequestHandler.js +45 -3
  96. package/services/request-service/helper/index.d.ts +54 -0
  97. package/services/request-service/helper/index.js +406 -1
  98. package/services/request-service/types.d.ts +3 -1
  99. package/services/swap-service/handler/asset-hub/handler.js +1 -1
  100. package/services/swap-service/handler/base-handler.d.ts +3 -1
  101. package/services/swap-service/handler/base-handler.js +82 -22
  102. package/services/swap-service/handler/hydradx-handler.js +1 -1
  103. package/services/swap-service/handler/uniswap-handler.d.ts +5 -0
  104. package/services/swap-service/handler/uniswap-handler.js +275 -46
  105. package/services/swap-service/index.js +34 -12
  106. package/services/swap-service/utils.d.ts +3 -2
  107. package/services/swap-service/utils.js +13 -1
  108. package/types/swap/index.d.ts +1 -0
  109. package/types/transaction/process.d.ts +2 -0
  110. package/utils/auth.js +3 -2
  111. package/utils/cardano.d.ts +2 -0
  112. package/utils/cardano.js +12 -0
  113. package/utils/index.d.ts +1 -1
  114. package/utils/index.js +1 -1
  115. package/cjs/utils/canDerive.js +0 -12
  116. package/utils/canDerive.d.ts +0 -2
  117. package/utils/canDerive.js +0 -6
  118. /package/cjs/page/{Accounts.js → substrate/Accounts.js} +0 -0
  119. /package/cjs/page/{Metadata.js → substrate/Metadata.js} +0 -0
  120. /package/cjs/page/{PostMessageProvider.js → substrate/PostMessageProvider.js} +0 -0
  121. /package/cjs/page/{Signer.js → substrate/Signer.js} +0 -0
  122. /package/cjs/page/{Injected.js → substrate/index.js} +0 -0
  123. /package/page/{Accounts.js → substrate/Accounts.js} +0 -0
  124. /package/page/{Metadata.js → substrate/Metadata.js} +0 -0
  125. /package/page/{PostMessageProvider.js → substrate/PostMessageProvider.js} +0 -0
  126. /package/page/{Signer.js → substrate/Signer.js} +0 -0
  127. /package/page/{Injected.js → substrate/index.js} +0 -0
@@ -4,6 +4,7 @@ import { Resolver } from '@subwallet/extension-base/background/handlers/State';
4
4
  import { AccountAuthType, AuthorizeRequest, ConfirmationRequestBase, RequestAccountList, RequestAccountSubscribe, RequestAccountUnsubscribe, RequestAuthorizeCancel, RequestAuthorizeReject, RequestAuthorizeSubscribe, RequestAuthorizeTab, RequestCurrentAccountAddress, ResponseAuthorizeList } from '@subwallet/extension-base/background/types';
5
5
  import { AppConfig, BrowserConfig, OSConfig } from '@subwallet/extension-base/constants';
6
6
  import { RequestOptimalTransferProcess } from '@subwallet/extension-base/services/balance-service/helpers';
7
+ import { CardanoBalanceItem } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/cardano/types';
7
8
  import { CardanoTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/cardano-transfer';
8
9
  import { TonTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer';
9
10
  import { _CHAIN_VALIDATION_ERROR } from '@subwallet/extension-base/services/chain-service/handler/types';
@@ -848,7 +849,7 @@ export interface TonSignRequest {
848
849
  canSign: boolean;
849
850
  }
850
851
  export interface CardanoSignRequest {
851
- account: AccountJson;
852
+ address: string;
852
853
  hashPayload: string;
853
854
  canSign: boolean;
854
855
  }
@@ -870,7 +871,7 @@ export interface TonSignatureRequest extends TonSignRequest {
870
871
  }
871
872
  export interface CardanoSignatureRequest extends CardanoSignRequest {
872
873
  id: string;
873
- type: string;
874
+ errors?: ErrorValidation[];
874
875
  payload: unknown;
875
876
  }
876
877
  export interface EvmSendTransactionRequest extends TransactionConfig, EvmSignRequest {
@@ -879,8 +880,64 @@ export interface EvmSendTransactionRequest extends TransactionConfig, EvmSignReq
879
880
  isToContract: boolean;
880
881
  errors?: ErrorValidation[];
881
882
  }
883
+ export declare enum CardanoProviderErrorType {
884
+ INVALID_REQUEST = "INVALID_REQUEST",
885
+ REFUSED_REQUEST = "REFUSED_REQUEST",
886
+ ACCOUNT_CHANGED = "ACCOUNT_CHANGED",
887
+ INTERNAL_ERROR = "INTERNAL_ERROR",
888
+ PROOF_GENERATION_FAILED = "PROOF_GENERATION_FAILED",
889
+ ADDRESS_SIGN_NOT_PK = "ADDRESS_SIGN_NOT_PK",
890
+ SIGN_DATA_DECLINED = "SIGN_DATA_DECLINED",
891
+ SUBMIT_TRANSACTION_REFUSED = "SUBMIT_TRANSACTION_REFUSED",
892
+ SUBMIT_TRANSACTION_FAILURE = "SUBMIT_TRANSACTION_FAILURE",
893
+ SIGN_TRANSACTION_DECLINED = "SIGN_TRANSACTION_DECLINED"
894
+ }
895
+ export declare type Cbor = string;
896
+ export declare type CardanoPaginate = {
897
+ page: number;
898
+ limit: number;
899
+ };
900
+ export interface RequestCardanoGetUtxos {
901
+ amount?: Cbor;
902
+ paginate?: CardanoPaginate;
903
+ }
904
+ export interface RequestCardanoGetCollateral {
905
+ amount: Cbor;
906
+ }
907
+ export interface RequestCardanoSignData {
908
+ address: string;
909
+ payload: string;
910
+ }
911
+ export interface ResponseCardanoSignData {
912
+ signature: Cbor;
913
+ key: Cbor;
914
+ }
915
+ export interface RequestCardanoSignTransaction {
916
+ tx: Cbor;
917
+ partialSign: boolean;
918
+ }
919
+ export interface AddressCardanoTransactionBalance {
920
+ values: CardanoBalanceItem[];
921
+ isOwner?: boolean;
922
+ isRecipient?: boolean;
923
+ }
924
+ export declare type CardanoKeyType = 'stake' | 'payment';
925
+ export interface CardanoTransactionDappConfig {
926
+ txInputs: Record<string, AddressCardanoTransactionBalance>;
927
+ txOutputs: Record<string, AddressCardanoTransactionBalance>;
928
+ networkKey: string;
929
+ from: string;
930
+ addressRequireKeyTypes: CardanoKeyType[];
931
+ value: CardanoBalanceItem[];
932
+ estimateCardanoFee: string;
933
+ cardanoPayload: string;
934
+ errors?: ErrorValidation[];
935
+ id: string;
936
+ }
937
+ export declare type ResponseCardanoSignTransaction = Cbor;
882
938
  export declare type TonSendTransactionRequest = TonTransactionConfig;
883
939
  export declare type CardanoSendTransactionRequest = CardanoTransactionConfig;
940
+ export declare type CardanoSignTransactionRequest = CardanoTransactionDappConfig;
884
941
  export declare type EvmWatchTransactionRequest = EvmSendTransactionRequest;
885
942
  export declare type TonWatchTransactionRequest = TonSendTransactionRequest;
886
943
  export declare type CardanoWatchTransactionRequest = CardanoSendTransactionRequest;
@@ -941,8 +998,9 @@ export interface ConfirmationDefinitionsTon {
941
998
  tonWatchTransactionRequest: [ConfirmationsQueueItem<TonWatchTransactionRequest>, ConfirmationResult<string>];
942
999
  }
943
1000
  export interface ConfirmationDefinitionsCardano {
944
- cardanoSignatureRequest: [ConfirmationsQueueItem<CardanoSignatureRequest>, ConfirmationResult<string>];
1001
+ cardanoSignatureRequest: [ConfirmationsQueueItem<CardanoSignatureRequest>, ConfirmationResult<ResponseCardanoSignData>];
945
1002
  cardanoSendTransactionRequest: [ConfirmationsQueueItem<CardanoSendTransactionRequest>, ConfirmationResult<string>];
1003
+ cardanoSignTransactionRequest: [ConfirmationsQueueItem<CardanoSignTransactionRequest>, ConfirmationResult<string>];
946
1004
  cardanoWatchTransactionRequest: [ConfirmationsQueueItem<CardanoWatchTransactionRequest>, ConfirmationResult<string>];
947
1005
  }
948
1006
  export declare type ConfirmationType = keyof ConfirmationDefinitions;
@@ -1741,6 +1799,15 @@ export interface KoniRequestSignatures {
1741
1799
  'evm(events.subscribe)': [RequestEvmEvents, boolean, EvmEvent];
1742
1800
  'evm(request)': [RequestArguments, unknown];
1743
1801
  'evm(provider.send)': [RequestEvmProviderSend, string | number, ResponseEvmProviderSend];
1802
+ 'cardano(account.get.address)': [null, string[]];
1803
+ 'cardano(account.get.balance)': [null, Cbor];
1804
+ 'cardano(account.get.change.address)': [null, string];
1805
+ 'cardano(account.get.utxos)': [RequestCardanoGetUtxos, Cbor[] | null];
1806
+ 'cardano(account.get.collateral)': [RequestCardanoGetCollateral, Cbor[] | null];
1807
+ 'cardano(network.get.current)': [null, number];
1808
+ 'cardano(data.sign)': [RequestCardanoSignData, ResponseCardanoSignData];
1809
+ 'cardano(transaction.sign)': [RequestCardanoSignTransaction, ResponseCardanoSignTransaction];
1810
+ 'cardano(transaction.submit)': [Cbor, string];
1744
1811
  'pri(evm.transaction.parse.input)': [RequestParseEvmContractInput, ResponseParseEvmContractInput];
1745
1812
  'pri(authorize.subscribe)': [null, AuthUrls, AuthUrls];
1746
1813
  'pri(signing.approve.passwordV2)': [RequestSigningApprovePasswordV2, boolean];
@@ -185,6 +185,20 @@ export let EvmProviderErrorType;
185
185
  EvmProviderErrorType["INVALID_PARAMS"] = "INVALID_PARAMS";
186
186
  EvmProviderErrorType["INTERNAL_ERROR"] = "INTERNAL_ERROR";
187
187
  })(EvmProviderErrorType || (EvmProviderErrorType = {}));
188
+ // Cardano Request Dapp Input
189
+ export let CardanoProviderErrorType;
190
+ (function (CardanoProviderErrorType) {
191
+ CardanoProviderErrorType["INVALID_REQUEST"] = "INVALID_REQUEST";
192
+ CardanoProviderErrorType["REFUSED_REQUEST"] = "REFUSED_REQUEST";
193
+ CardanoProviderErrorType["ACCOUNT_CHANGED"] = "ACCOUNT_CHANGED";
194
+ CardanoProviderErrorType["INTERNAL_ERROR"] = "INTERNAL_ERROR";
195
+ CardanoProviderErrorType["PROOF_GENERATION_FAILED"] = "PROOF_GENERATION_FAILED";
196
+ CardanoProviderErrorType["ADDRESS_SIGN_NOT_PK"] = "ADDRESS_SIGN_NOT_PK";
197
+ CardanoProviderErrorType["SIGN_DATA_DECLINED"] = "SIGN_DATA_DECLINED";
198
+ CardanoProviderErrorType["SUBMIT_TRANSACTION_REFUSED"] = "SUBMIT_TRANSACTION_REFUSED";
199
+ CardanoProviderErrorType["SUBMIT_TRANSACTION_FAILURE"] = "SUBMIT_TRANSACTION_FAILURE";
200
+ CardanoProviderErrorType["SIGN_TRANSACTION_DECLINED"] = "SIGN_TRANSACTION_DECLINED";
201
+ })(CardanoProviderErrorType || (CardanoProviderErrorType = {}));
188
202
  export let NotificationType;
189
203
  (function (NotificationType) {
190
204
  NotificationType["INFO"] = "info";
@@ -0,0 +1,6 @@
1
+ import { SWError } from '@subwallet/extension-base/background/errors/SWError';
2
+ import { CardanoProviderErrorType } from '@subwallet/extension-base/background/KoniTypes';
3
+ export declare class CardanoProviderError extends SWError {
4
+ errorType: CardanoProviderErrorType;
5
+ constructor(errorType: CardanoProviderErrorType, errMessage?: string, data?: unknown, name?: string);
6
+ }
@@ -0,0 +1,61 @@
1
+ // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { SWError } from '@subwallet/extension-base/background/errors/SWError';
5
+ import { t } from 'i18next';
6
+
7
+ // doc: https://github.com/cardano-foundation/CIPs/blob/master/CIP-0030/README.md#error-types
8
+
9
+ const defaultErrorMap = {
10
+ INVALID_REQUEST: {
11
+ message: 'Invalid request',
12
+ code: -1
13
+ },
14
+ REFUSED_REQUEST: {
15
+ message: 'Request refused',
16
+ code: -3
17
+ },
18
+ ACCOUNT_CHANGED: {
19
+ message: 'Account changed',
20
+ code: -4
21
+ },
22
+ INTERNAL_ERROR: {
23
+ message: 'Internal error',
24
+ code: -2
25
+ },
26
+ PROOF_GENERATION_FAILED: {
27
+ message: 'Proof generation failed',
28
+ code: 1
29
+ },
30
+ ADDRESS_SIGN_NOT_PK: {
31
+ message: 'Address sign not PK',
32
+ code: 2
33
+ },
34
+ SIGN_DATA_DECLINED: {
35
+ message: 'User signing declined',
36
+ code: 3
37
+ },
38
+ SUBMIT_TRANSACTION_REFUSED: {
39
+ message: 'Transaction refused',
40
+ code: 1
41
+ },
42
+ SUBMIT_TRANSACTION_FAILURE: {
43
+ message: 'Transaction failure',
44
+ code: 2
45
+ },
46
+ SIGN_TRANSACTION_DECLINED: {
47
+ message: 'Sign transaction declined',
48
+ code: 2
49
+ }
50
+ };
51
+ export class CardanoProviderError extends SWError {
52
+ constructor(errorType, errMessage, data, name) {
53
+ const {
54
+ code,
55
+ message
56
+ } = defaultErrorMap[errorType];
57
+ const finalMessage = errMessage || t(message || '') || errorType;
58
+ super(errorType, finalMessage, code, data, name);
59
+ this.errorType = errorType;
60
+ }
61
+ }
@@ -87,7 +87,7 @@ export interface RequestSignatures extends KoniRequestSignatures {
87
87
  'pub(accounts.list)': [RequestAccountList, InjectedAccount[]];
88
88
  'pub(accounts.subscribe)': [RequestAccountSubscribe, boolean, InjectedAccount[]];
89
89
  'pub(authorize.tab)': [RequestAuthorizeTab, null];
90
- 'pub(authorize.tabV2)': [RequestAuthorizeTab, null];
90
+ 'pub(authorize.tabV2)': [RequestAuthorizeTab, boolean];
91
91
  'pub(bytes.sign)': [SignerPayloadRaw, ResponseSigning];
92
92
  'pub(extrinsic.sign)': [SignerPayloadJSON, ResponseSigning];
93
93
  'pub(metadata.list)': [null, InjectedMetadataKnown[]];
@@ -112,7 +112,7 @@ export interface TransportRequestMessage<TMessageType extends MessageTypes> {
112
112
  origin: 'page' | 'extension' | string;
113
113
  request: RequestTypes[TMessageType];
114
114
  }
115
- export declare type AccountAuthType = 'substrate' | 'evm' | 'ton';
115
+ export declare type AccountAuthType = 'substrate' | 'evm' | 'ton' | 'cardano';
116
116
  export interface RequestAuthorizeTab {
117
117
  origin: string;
118
118
  accountAuthTypes?: AccountAuthType[];
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.WalletUnlockType = exports.TransactionDirection = exports.ThemeNames = exports.StakingType = exports.RuntimeEnvironment = exports.RMRK_VER = exports.ProviderErrorType = exports.NotificationType = exports.NETWORK_STATUS = exports.MobileOS = exports.MantaPayEnableMessage = exports.ExtrinsicType = exports.ExtrinsicStatus = exports.ExternalRequestPromiseStatus = exports.EvmProviderErrorType = exports.CrowdloanParaState = exports.ContractType = exports.ChainType = exports.CampaignDataType = exports.BalanceErrorType = exports.AssetHubNftType = exports.AccountExternalErrorCode = exports.APIItemState = void 0;
6
+ exports.WalletUnlockType = exports.TransactionDirection = exports.ThemeNames = exports.StakingType = exports.RuntimeEnvironment = exports.RMRK_VER = exports.ProviderErrorType = exports.NotificationType = exports.NETWORK_STATUS = exports.MobileOS = exports.MantaPayEnableMessage = exports.ExtrinsicType = exports.ExtrinsicStatus = exports.ExternalRequestPromiseStatus = exports.EvmProviderErrorType = exports.CrowdloanParaState = exports.ContractType = exports.ChainType = exports.CardanoProviderErrorType = exports.CampaignDataType = exports.BalanceErrorType = exports.AssetHubNftType = exports.AccountExternalErrorCode = exports.APIItemState = void 0;
7
7
  // Copyright 2019-2022 @polkadot/extension-koni authors & contributors
8
8
  // SPDX-License-Identifier: Apache-2.0
9
9
  let RuntimeEnvironment;
@@ -199,6 +199,21 @@ exports.EvmProviderErrorType = EvmProviderErrorType;
199
199
  EvmProviderErrorType["INVALID_PARAMS"] = "INVALID_PARAMS";
200
200
  EvmProviderErrorType["INTERNAL_ERROR"] = "INTERNAL_ERROR";
201
201
  })(EvmProviderErrorType || (exports.EvmProviderErrorType = EvmProviderErrorType = {}));
202
+ // Cardano Request Dapp Input
203
+ let CardanoProviderErrorType;
204
+ exports.CardanoProviderErrorType = CardanoProviderErrorType;
205
+ (function (CardanoProviderErrorType) {
206
+ CardanoProviderErrorType["INVALID_REQUEST"] = "INVALID_REQUEST";
207
+ CardanoProviderErrorType["REFUSED_REQUEST"] = "REFUSED_REQUEST";
208
+ CardanoProviderErrorType["ACCOUNT_CHANGED"] = "ACCOUNT_CHANGED";
209
+ CardanoProviderErrorType["INTERNAL_ERROR"] = "INTERNAL_ERROR";
210
+ CardanoProviderErrorType["PROOF_GENERATION_FAILED"] = "PROOF_GENERATION_FAILED";
211
+ CardanoProviderErrorType["ADDRESS_SIGN_NOT_PK"] = "ADDRESS_SIGN_NOT_PK";
212
+ CardanoProviderErrorType["SIGN_DATA_DECLINED"] = "SIGN_DATA_DECLINED";
213
+ CardanoProviderErrorType["SUBMIT_TRANSACTION_REFUSED"] = "SUBMIT_TRANSACTION_REFUSED";
214
+ CardanoProviderErrorType["SUBMIT_TRANSACTION_FAILURE"] = "SUBMIT_TRANSACTION_FAILURE";
215
+ CardanoProviderErrorType["SIGN_TRANSACTION_DECLINED"] = "SIGN_TRANSACTION_DECLINED";
216
+ })(CardanoProviderErrorType || (exports.CardanoProviderErrorType = CardanoProviderErrorType = {}));
202
217
  let NotificationType;
203
218
  exports.NotificationType = NotificationType;
204
219
  (function (NotificationType) {
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CardanoProviderError = void 0;
7
+ var _SWError = require("@subwallet/extension-base/background/errors/SWError");
8
+ var _i18next = require("i18next");
9
+ // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
10
+ // SPDX-License-Identifier: Apache-2.0
11
+
12
+ // doc: https://github.com/cardano-foundation/CIPs/blob/master/CIP-0030/README.md#error-types
13
+
14
+ const defaultErrorMap = {
15
+ INVALID_REQUEST: {
16
+ message: 'Invalid request',
17
+ code: -1
18
+ },
19
+ REFUSED_REQUEST: {
20
+ message: 'Request refused',
21
+ code: -3
22
+ },
23
+ ACCOUNT_CHANGED: {
24
+ message: 'Account changed',
25
+ code: -4
26
+ },
27
+ INTERNAL_ERROR: {
28
+ message: 'Internal error',
29
+ code: -2
30
+ },
31
+ PROOF_GENERATION_FAILED: {
32
+ message: 'Proof generation failed',
33
+ code: 1
34
+ },
35
+ ADDRESS_SIGN_NOT_PK: {
36
+ message: 'Address sign not PK',
37
+ code: 2
38
+ },
39
+ SIGN_DATA_DECLINED: {
40
+ message: 'User signing declined',
41
+ code: 3
42
+ },
43
+ SUBMIT_TRANSACTION_REFUSED: {
44
+ message: 'Transaction refused',
45
+ code: 1
46
+ },
47
+ SUBMIT_TRANSACTION_FAILURE: {
48
+ message: 'Transaction failure',
49
+ code: 2
50
+ },
51
+ SIGN_TRANSACTION_DECLINED: {
52
+ message: 'Sign transaction declined',
53
+ code: 2
54
+ }
55
+ };
56
+ class CardanoProviderError extends _SWError.SWError {
57
+ constructor(errorType, errMessage, data, name) {
58
+ const {
59
+ code,
60
+ message
61
+ } = defaultErrorMap[errorType];
62
+ const finalMessage = errMessage || (0, _i18next.t)(message || '') || errorType;
63
+ super(errorType, finalMessage, code, data, name);
64
+ this.errorType = errorType;
65
+ }
66
+ }
67
+ exports.CardanoProviderError = CardanoProviderError;
@@ -36,6 +36,7 @@ var _exportNames = {
36
36
  XCM_MIN_AMOUNT_RATIO: true,
37
37
  XCM_FEE_RATIO: true,
38
38
  GAS_PRICE_RATIO: true,
39
+ MAX_COLLATERAL_AMOUNT: true,
39
40
  NETWORK_MULTI_GAS_FEE: true,
40
41
  ORDINAL_COLLECTION: true,
41
42
  ORDINAL_METHODS: true,
@@ -44,7 +45,7 @@ var _exportNames = {
44
45
  getSupportTokenPayFeeChain: true,
45
46
  isChainSupportTokenPayFee: true
46
47
  };
47
- exports.isChainSupportTokenPayFee = exports.getSupportTokenPayFeeChain = exports._SUPPORT_TOKEN_PAY_FEE_GROUP = exports.XCM_MIN_AMOUNT_RATIO = exports.XCM_FEE_RATIO = exports.SUB_TOKEN_REFRESH_BALANCE_INTERVAL = exports.PERMISSIONS_TO_REVOKE = exports.ORDINAL_METHODS = exports.ORDINAL_COLLECTION = exports.NETWORK_MULTI_GAS_FEE = exports.MANTA_PAY_BALANCE_INTERVAL = exports.IGNORE_QR_SIGNER = exports.IGNORE_GET_SUBSTRATE_FEATURES_LIST = exports.GAS_PRICE_RATIO = exports.CRON_SYNC_MANTA_PAY = exports.CRON_REFRESH_STAKING_REWARD_INTERVAL = exports.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL = exports.CRON_REFRESH_PRICE_INTERVAL = exports.CRON_REFRESH_NFT_INTERVAL = exports.CRON_REFRESH_MKT_CAMPAIGN_INTERVAL = exports.CRON_REFRESH_HISTORY_INTERVAL = exports.CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL = exports.CRON_REFRESH_CHAIN_STAKING_METADATA = exports.CRON_REFRESH_CHAIN_NOMINATOR_METADATA = exports.CRON_RECOVER_HISTORY_INTERVAL = exports.CRON_LISTEN_AVAIL_BRIDGE_CLAIM = exports.CRON_GET_API_MAP_STATUS = exports.CRON_AUTO_RECOVER_WEB3_INTERVAL = exports.CRON_AUTO_RECOVER_DOTSAMA_INTERVAL = exports.BITTENSOR_REFRESH_STAKE_INFO = exports.BITTENSOR_REFRESH_STAKE_APY = exports.BASE_SECOND_INTERVAL = exports.BASE_MINUTE_INTERVAL = exports.ASTAR_REFRESH_BALANCE_INTERVAL = exports.ALL_NETWORK_KEY = exports.ALL_GENESIS_HASH = exports.ALL_ACCOUNT_KEY = exports.ALL_ACCOUNT_AUTH_TYPES = exports.ACALA_REFRESH_CROWDLOAN_INTERVAL = void 0;
48
+ exports.isChainSupportTokenPayFee = exports.getSupportTokenPayFeeChain = exports._SUPPORT_TOKEN_PAY_FEE_GROUP = exports.XCM_MIN_AMOUNT_RATIO = exports.XCM_FEE_RATIO = exports.SUB_TOKEN_REFRESH_BALANCE_INTERVAL = exports.PERMISSIONS_TO_REVOKE = exports.ORDINAL_METHODS = exports.ORDINAL_COLLECTION = exports.NETWORK_MULTI_GAS_FEE = exports.MAX_COLLATERAL_AMOUNT = exports.MANTA_PAY_BALANCE_INTERVAL = exports.IGNORE_QR_SIGNER = exports.IGNORE_GET_SUBSTRATE_FEATURES_LIST = exports.GAS_PRICE_RATIO = exports.CRON_SYNC_MANTA_PAY = exports.CRON_REFRESH_STAKING_REWARD_INTERVAL = exports.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL = exports.CRON_REFRESH_PRICE_INTERVAL = exports.CRON_REFRESH_NFT_INTERVAL = exports.CRON_REFRESH_MKT_CAMPAIGN_INTERVAL = exports.CRON_REFRESH_HISTORY_INTERVAL = exports.CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL = exports.CRON_REFRESH_CHAIN_STAKING_METADATA = exports.CRON_REFRESH_CHAIN_NOMINATOR_METADATA = exports.CRON_RECOVER_HISTORY_INTERVAL = exports.CRON_LISTEN_AVAIL_BRIDGE_CLAIM = exports.CRON_GET_API_MAP_STATUS = exports.CRON_AUTO_RECOVER_WEB3_INTERVAL = exports.CRON_AUTO_RECOVER_DOTSAMA_INTERVAL = exports.BITTENSOR_REFRESH_STAKE_INFO = exports.BITTENSOR_REFRESH_STAKE_APY = exports.BASE_SECOND_INTERVAL = exports.BASE_MINUTE_INTERVAL = exports.ASTAR_REFRESH_BALANCE_INTERVAL = exports.ALL_NETWORK_KEY = exports.ALL_GENESIS_HASH = exports.ALL_ACCOUNT_KEY = exports.ALL_ACCOUNT_AUTH_TYPES = exports.ACALA_REFRESH_CROWDLOAN_INTERVAL = void 0;
48
49
  var _blockedActions = require("./blocked-actions");
49
50
  Object.keys(_blockedActions).forEach(function (key) {
50
51
  if (key === "default" || key === "__esModule") return;
@@ -184,6 +185,8 @@ const XCM_FEE_RATIO = 2;
184
185
  exports.XCM_FEE_RATIO = XCM_FEE_RATIO;
185
186
  const GAS_PRICE_RATIO = 1 + 2 / 100;
186
187
  exports.GAS_PRICE_RATIO = GAS_PRICE_RATIO;
188
+ const MAX_COLLATERAL_AMOUNT = '5000000';
189
+ exports.MAX_COLLATERAL_AMOUNT = MAX_COLLATERAL_AMOUNT;
187
190
  const NETWORK_MULTI_GAS_FEE = ['*'];
188
191
  exports.NETWORK_MULTI_GAS_FEE = NETWORK_MULTI_GAS_FEE;
189
192
  const ORDINAL_COLLECTION = '__Ordinal__';
@@ -13,10 +13,12 @@ exports.validateTypedSignMessageDataV1 = validateTypedSignMessageDataV1;
13
13
  exports.validateTypedSignMessageDataV3V4 = validateTypedSignMessageDataV3V4;
14
14
  exports.validationAuthMiddleware = validationAuthMiddleware;
15
15
  exports.validationAuthWCMiddleware = validationAuthWCMiddleware;
16
+ exports.validationCardanoSignDataMiddleware = validationCardanoSignDataMiddleware;
16
17
  exports.validationConnectMiddleware = validationConnectMiddleware;
17
18
  exports.validationEvmDataTransactionMiddleware = validationEvmDataTransactionMiddleware;
18
19
  exports.validationEvmSignMessageMiddleware = validationEvmSignMessageMiddleware;
19
20
  var _ethSigUtil = require("@metamask/eth-sig-util");
21
+ var _CardanoProviderError = require("@subwallet/extension-base/background/errors/CardanoProviderError");
20
22
  var _EvmProviderError = require("@subwallet/extension-base/background/errors/EvmProviderError");
21
23
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
22
24
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
@@ -186,7 +188,8 @@ async function validationConnectMiddleware(koni, url, payload) {
186
188
  address,
187
189
  authInfo,
188
190
  errors,
189
- networkKey
191
+ networkKey,
192
+ type
190
193
  } = {
191
194
  ...payload
192
195
  };
@@ -198,8 +201,8 @@ async function validationConnectMiddleware(koni, url, payload) {
198
201
  console.error(error);
199
202
  errors.push(error);
200
203
  };
201
- if (authInfo !== null && authInfo !== void 0 && authInfo.currentEvmNetworkKey) {
202
- currentChain = authInfo === null || authInfo === void 0 ? void 0 : authInfo.currentEvmNetworkKey;
204
+ if (authInfo !== null && authInfo !== void 0 && authInfo.currentNetworkMap[type]) {
205
+ currentChain = authInfo === null || authInfo === void 0 ? void 0 : authInfo.currentNetworkMap[type];
203
206
  }
204
207
  if (authInfo !== null && authInfo !== void 0 && authInfo.isAllowed) {
205
208
  autoActiveChain = true;
@@ -561,6 +564,50 @@ function validationAuthWCMiddleware(koni, url, payload, topic) {
561
564
  });
562
565
  return promise;
563
566
  }
567
+ async function validationCardanoSignDataMiddleware(koni, url, payload_) {
568
+ const {
569
+ address,
570
+ errors,
571
+ pair: pair_
572
+ } = payload_;
573
+ const payload = payload_.payloadAfterValidated;
574
+ const {
575
+ promise,
576
+ resolve
577
+ } = (0, _utils.createPromiseHandler)();
578
+ let canSign = false;
579
+ const handleError = message_ => {
580
+ payload_.errorPosition = 'ui';
581
+ payload_.confirmationType = 'cardanoSignatureRequest';
582
+ const [message, name] = convertErrorMessage(message_);
583
+ const error = new _CardanoProviderError.CardanoProviderError(_KoniTypes.CardanoProviderErrorType.INVALID_REQUEST, message, undefined, name);
584
+ console.error(error);
585
+ errors.push(error);
586
+ };
587
+ if (address === '' || !payload) {
588
+ handleError('Not found address or payload to sign');
589
+ }
590
+ if (!(0, _keyring.isCardanoAddress)(address)) {
591
+ handleError('Not found cardano address');
592
+ }
593
+ const pair = pair_ || _uiKeyring.keyring.getPair(address);
594
+ if (!(pair !== null && pair !== void 0 && pair.meta.isExtneral)) {
595
+ canSign = true;
596
+ }
597
+ const payloadAfterValidated = {
598
+ address,
599
+ payload: payload,
600
+ hashPayload: payload,
601
+ canSign: canSign,
602
+ id: ''
603
+ };
604
+ resolve({
605
+ ...payload_,
606
+ errors,
607
+ payloadAfterValidated
608
+ });
609
+ return promise;
610
+ }
564
611
  function convertErrorMessage(message_, name) {
565
612
  const message = message_.toLowerCase();
566
613
 
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
7
+ exports.estimateTxFee = estimateTxFee;
6
8
  exports.getERC20Allowance = getERC20Allowance;
7
9
  exports.getERC20Contract = void 0;
8
10
  exports.getERC20SpendingApprovalTx = getERC20SpendingApprovalTx;
@@ -10,6 +12,7 @@ exports.getWeb3Contract = getWeb3Contract;
10
12
  var _utils = require("@subwallet/extension-base/koni/api/contract-handler/utils");
11
13
  var _utils2 = require("@subwallet/extension-base/services/fee-service/utils");
12
14
  var _utils3 = require("@subwallet/extension-base/utils");
15
+ var _bignumber = _interopRequireDefault(require("bignumber.js"));
13
16
  // Copyright 2019-2022 @subwallet/extension-base
14
17
  // SPDX-License-Identifier: Apache-2.0
15
18
 
@@ -55,4 +58,22 @@ async function getERC20SpendingApprovalTx(spender, owner, contractAddress, evmAp
55
58
  gasPrice: priority.gasPrice,
56
59
  ...feeCombine
57
60
  };
61
+ }
62
+ async function estimateTxFee(tx, evmApi, feeInfo) {
63
+ const gasLimit = tx.gas || (await evmApi.api.eth.estimateGas(tx));
64
+ const feeCombine = (0, _utils3.combineEthFee)(feeInfo);
65
+ let estimatedFee;
66
+ if (tx.maxFeePerGas) {
67
+ estimatedFee = (0, _bignumber.default)(tx.maxFeePerGas.toString()).multipliedBy(gasLimit).toFixed(0);
68
+ } else if (tx.gasPrice) {
69
+ estimatedFee = (0, _bignumber.default)(tx.gasPrice.toString()).multipliedBy(gasLimit).toFixed(0);
70
+ } else {
71
+ if (feeCombine.maxFeePerGas) {
72
+ estimatedFee = (0, _bignumber.default)(feeCombine.maxFeePerGas).multipliedBy(gasLimit).toFixed(0);
73
+ } else if (feeCombine.gasPrice) {
74
+ estimatedFee = (0, _bignumber.default)(feeCombine.gasPrice).multipliedBy(gasLimit).toFixed(0);
75
+ }
76
+ estimatedFee = '0';
77
+ }
78
+ return estimatedFee;
58
79
  }
@@ -8,6 +8,7 @@ exports.YieldAction = exports.StakingAction = exports.PalletParachainStakingRequ
8
8
  exports.calcInflationRewardCurve = calcInflationRewardCurve;
9
9
  exports.calcInflationUniformEraPayout = calcInflationUniformEraPayout;
10
10
  exports.calculateAlephZeroValidatorReturn = calculateAlephZeroValidatorReturn;
11
+ exports.calculateAnalogChainStakedReturn = calculateAnalogChainStakedReturn;
11
12
  exports.calculateChainStakedReturn = calculateChainStakedReturn;
12
13
  exports.calculateChainStakedReturnV2 = calculateChainStakedReturnV2;
13
14
  exports.calculateInflation = calculateInflation;
@@ -113,10 +114,9 @@ function calculateChainStakedReturn(inflation, totalEraStake, totalIssuance, net
113
114
 
114
115
  return stakedReturn;
115
116
  }
116
- function calculateChainStakedReturnV2(chainInfo, totalIssuance, erasPerDay, lastTotalStaked, validatorEraReward, inflation, isCompound) {
117
+ async function calculateChainStakedReturnV2(chainInfo, totalIssuance, erasPerDay, lastTotalStaked, validatorEraReward, inflation, isCompound) {
117
118
  if (chainInfo.slug === 'analog_timechain') {
118
- // hotfix for analog
119
- return 55;
119
+ return await calculateAnalogChainStakedReturn();
120
120
  }
121
121
  const DAYS_PER_YEAR = 365;
122
122
  const {
@@ -145,6 +145,27 @@ function calculateTernoaValidatorReturn(rewardPerValidator, validatorStake, comm
145
145
  const stakeRatio = rewardForNominators / validatorStake;
146
146
  return stakeRatio * 365 * 100;
147
147
  }
148
+ async function calculateAnalogChainStakedReturn() {
149
+ const url = 'https://explorer-api.analog.one/api/nominations?projection=apy,rewardsClaimed,eraEndsTime';
150
+ try {
151
+ var _apyInfo$data;
152
+ const response = await fetch(url, {
153
+ method: 'GET',
154
+ headers: {
155
+ 'Content-Type': 'application/json'
156
+ }
157
+ });
158
+ if (!response.ok) {
159
+ const errorText = await response.text();
160
+ throw new Error(`API error: ${response.status} - ${errorText}`);
161
+ }
162
+ const apyInfo = await response.json();
163
+ return apyInfo === null || apyInfo === void 0 ? void 0 : (_apyInfo$data = apyInfo.data) === null || _apyInfo$data === void 0 ? void 0 : _apyInfo$data.apy;
164
+ } catch (e) {
165
+ console.error('Fetch error:', e);
166
+ return undefined;
167
+ }
168
+ }
148
169
  function calculateValidatorStakedReturn(chainStakedReturn, totalValidatorStake, avgStake, commission) {
149
170
  const bnAdjusted = avgStake.mul(_util.BN_HUNDRED).div(totalValidatorStake);
150
171
  const adjusted = bnAdjusted.toNumber() * chainStakedReturn;