@subwallet/extension-base 1.3.41-0 → 1.3.42-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 +121 -4
- package/background/KoniTypes.js +18 -0
- package/background/errors/BitcoinProviderError.d.ts +6 -0
- package/background/errors/BitcoinProviderError.js +47 -0
- package/cjs/background/KoniTypes.js +20 -1
- package/cjs/background/errors/BitcoinProviderError.js +54 -0
- package/cjs/constants/bitcoin.js +22 -0
- package/cjs/constants/index.js +16 -1
- package/cjs/core/logic-validation/recipientAddress.js +9 -0
- package/cjs/core/logic-validation/transfer.js +25 -5
- package/cjs/core/types.js +1 -0
- package/cjs/core/utils.js +15 -1
- package/cjs/koni/background/handlers/Extension.js +59 -3
- package/cjs/koni/background/handlers/State.js +52 -11
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/bitcoin.js +94 -0
- package/cjs/services/balance-service/helpers/subscribe/index.js +19 -7
- package/cjs/services/balance-service/index.js +32 -4
- package/cjs/services/balance-service/transfer/bitcoin-transfer.js +119 -0
- package/cjs/services/balance-service/transfer/token.js +2 -0
- package/cjs/services/base/types.js +2 -0
- package/cjs/services/chain-service/constants.js +14 -3
- package/cjs/services/chain-service/handler/bitcoin/BitcoinApi.js +105 -0
- package/cjs/services/chain-service/handler/bitcoin/BitcoinChainHandler.js +78 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.js +371 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.js +19 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.js +368 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.js +302 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/types.js +1 -0
- package/cjs/services/chain-service/index.js +27 -3
- package/cjs/services/chain-service/utils/index.js +57 -4
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/event-service/index.js +4 -0
- package/cjs/services/fee-service/service.js +8 -3
- package/cjs/services/hiro-service/index.js +96 -0
- package/cjs/services/hiro-service/utils/index.js +85 -0
- package/cjs/services/history-service/bitcoin-history.js +58 -0
- package/cjs/services/history-service/helpers/recoverHistoryStatus.js +96 -4
- package/cjs/services/history-service/index.js +41 -3
- package/cjs/services/keyring-service/context/handlers/Derive.js +1 -1
- package/cjs/services/keyring-service/context/handlers/Migration.js +2 -2
- package/cjs/services/keyring-service/context/handlers/Mnemonic.js +4 -3
- package/cjs/services/migration-service/scripts/MigrateNewUnifiedAccount.js +29 -0
- package/cjs/services/migration-service/scripts/index.js +3 -1
- package/cjs/services/request-service/handler/BitcoinRequestHandler.js +440 -0
- package/cjs/services/request-service/index.js +29 -3
- package/cjs/services/rune-service/index.js +105 -0
- package/cjs/services/transaction-service/helpers/index.js +7 -1
- package/cjs/services/transaction-service/index.js +136 -15
- package/cjs/services/transaction-service/utils.js +6 -3
- package/cjs/strategy/api-request-strategy/context/base.js +31 -0
- package/cjs/strategy/api-request-strategy/index.js +90 -0
- package/cjs/strategy/api-request-strategy/types.js +1 -0
- package/cjs/strategy/api-request-strategy/utils/index.js +33 -0
- package/cjs/types/account/info/keyring.js +1 -1
- package/cjs/types/bitcoin.js +24 -0
- package/cjs/types/fee/bitcoin.js +1 -0
- package/cjs/types/fee/index.js +11 -0
- package/cjs/types/index.js +11 -0
- package/cjs/utils/account/analyze.js +3 -3
- package/cjs/utils/account/common.js +16 -6
- package/cjs/utils/account/derive/info/solo.js +68 -19
- package/cjs/utils/account/derive/info/unified.js +2 -0
- package/cjs/utils/account/derive/validate.js +70 -2
- package/cjs/utils/account/transform.js +11 -5
- package/cjs/utils/bitcoin/common.js +98 -0
- package/cjs/utils/bitcoin/fee.js +21 -0
- package/cjs/utils/bitcoin/index.js +38 -0
- package/cjs/utils/bitcoin/utxo-management.js +281 -0
- package/cjs/utils/fee/transfer.js +48 -0
- package/cjs/utils/index.js +15 -1
- package/constants/bitcoin.d.ts +3 -0
- package/constants/bitcoin.js +13 -0
- package/constants/index.d.ts +2 -0
- package/constants/index.js +3 -1
- package/core/logic-validation/recipientAddress.js +10 -1
- package/core/logic-validation/transfer.d.ts +2 -2
- package/core/logic-validation/transfer.js +27 -7
- package/core/types.d.ts +1 -0
- package/core/types.js +1 -0
- package/core/utils.d.ts +1 -0
- package/core/utils.js +15 -2
- package/koni/background/handlers/Extension.d.ts +2 -0
- package/koni/background/handlers/Extension.js +58 -4
- package/koni/background/handlers/State.d.ts +7 -3
- package/koni/background/handlers/State.js +52 -12
- package/package.json +144 -8
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/bitcoin.d.ts +2 -0
- package/services/balance-service/helpers/subscribe/bitcoin.js +87 -0
- package/services/balance-service/helpers/subscribe/index.d.ts +2 -2
- package/services/balance-service/helpers/subscribe/index.js +20 -8
- package/services/balance-service/index.d.ts +2 -0
- package/services/balance-service/index.js +32 -4
- package/services/balance-service/transfer/bitcoin-transfer.d.ts +14 -0
- package/services/balance-service/transfer/bitcoin-transfer.js +112 -0
- package/services/balance-service/transfer/token.js +2 -0
- package/services/base/types.d.ts +2 -0
- package/services/base/types.js +2 -0
- package/services/chain-service/constants.d.ts +6 -0
- package/services/chain-service/constants.js +8 -2
- package/services/chain-service/handler/bitcoin/BitcoinApi.d.ts +31 -0
- package/services/chain-service/handler/bitcoin/BitcoinApi.js +98 -0
- package/services/chain-service/handler/bitcoin/BitcoinChainHandler.d.ts +16 -0
- package/services/chain-service/handler/bitcoin/BitcoinChainHandler.js +70 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.d.ts +28 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.js +362 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.d.ts +2 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.js +5 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.d.ts +28 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.js +359 -0
- package/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.d.ts +28 -0
- package/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.js +293 -0
- package/services/chain-service/handler/bitcoin/strategy/types.d.ts +291 -0
- package/services/chain-service/handler/bitcoin/strategy/types.js +1 -0
- package/services/chain-service/index.d.ts +3 -0
- package/services/chain-service/index.js +31 -5
- package/services/chain-service/types.d.ts +20 -0
- package/services/chain-service/utils/index.d.ts +4 -0
- package/services/chain-service/utils/index.js +50 -4
- package/services/chain-service/utils/patch.js +1 -1
- package/services/event-service/index.d.ts +3 -0
- package/services/event-service/index.js +4 -0
- package/services/event-service/types.d.ts +3 -0
- package/services/fee-service/service.js +8 -3
- package/services/hiro-service/index.d.ts +17 -0
- package/services/hiro-service/index.js +88 -0
- package/services/hiro-service/utils/index.d.ts +6 -0
- package/services/hiro-service/utils/index.js +72 -0
- package/services/history-service/bitcoin-history.d.ts +4 -0
- package/services/history-service/bitcoin-history.js +52 -0
- package/services/history-service/helpers/recoverHistoryStatus.d.ts +3 -1
- package/services/history-service/helpers/recoverHistoryStatus.js +96 -4
- package/services/history-service/index.d.ts +1 -0
- package/services/history-service/index.js +42 -4
- package/services/keyring-service/context/handlers/Derive.js +2 -2
- package/services/keyring-service/context/handlers/Migration.js +2 -2
- package/services/keyring-service/context/handlers/Mnemonic.js +4 -3
- package/services/migration-service/scripts/MigrateNewUnifiedAccount.d.ts +4 -0
- package/services/migration-service/scripts/MigrateNewUnifiedAccount.js +21 -0
- package/services/migration-service/scripts/index.js +3 -1
- package/services/request-service/handler/BitcoinRequestHandler.d.ts +23 -0
- package/services/request-service/handler/BitcoinRequestHandler.js +427 -0
- package/services/request-service/index.d.ts +9 -2
- package/services/request-service/index.js +25 -3
- package/services/rune-service/index.d.ts +17 -0
- package/services/rune-service/index.js +97 -0
- package/services/transaction-service/helpers/index.d.ts +3 -1
- package/services/transaction-service/helpers/index.js +5 -0
- package/services/transaction-service/index.d.ts +3 -5
- package/services/transaction-service/index.js +135 -16
- package/services/transaction-service/types.d.ts +12 -2
- package/services/transaction-service/utils.js +7 -4
- package/strategy/api-request-strategy/context/base.d.ts +15 -0
- package/strategy/api-request-strategy/context/base.js +24 -0
- package/strategy/api-request-strategy/index.d.ts +15 -0
- package/strategy/api-request-strategy/index.js +83 -0
- package/strategy/api-request-strategy/types.d.ts +22 -0
- package/strategy/api-request-strategy/types.js +1 -0
- package/strategy/api-request-strategy/utils/index.d.ts +2 -0
- package/strategy/api-request-strategy/utils/index.js +23 -0
- package/types/account/info/keyring.d.ts +1 -1
- package/types/account/info/keyring.js +1 -1
- package/types/balance/index.d.ts +4 -1
- package/types/balance/transfer.d.ts +17 -0
- package/types/bitcoin.d.ts +93 -0
- package/types/bitcoin.js +17 -0
- package/types/fee/base.d.ts +4 -1
- package/types/fee/bitcoin.d.ts +18 -0
- package/types/fee/bitcoin.js +1 -0
- package/types/fee/index.d.ts +1 -0
- package/types/fee/index.js +2 -1
- package/types/fee/subscription.d.ts +4 -3
- package/types/index.d.ts +1 -0
- package/types/index.js +1 -0
- package/utils/account/analyze.js +4 -4
- package/utils/account/common.d.ts +7 -8
- package/utils/account/common.js +16 -6
- package/utils/account/derive/info/solo.js +70 -21
- package/utils/account/derive/info/unified.js +2 -0
- package/utils/account/derive/validate.d.ts +1 -0
- package/utils/account/derive/validate.js +68 -1
- package/utils/account/transform.d.ts +1 -1
- package/utils/account/transform.js +11 -5
- package/utils/bitcoin/common.d.ts +22 -0
- package/utils/bitcoin/common.js +88 -0
- package/utils/bitcoin/fee.d.ts +2 -0
- package/utils/bitcoin/fee.js +14 -0
- package/utils/bitcoin/index.d.ts +3 -0
- package/utils/bitcoin/index.js +6 -0
- package/utils/bitcoin/utxo-management.d.ts +33 -0
- package/utils/bitcoin/utxo-management.js +266 -0
- package/utils/fee/transfer.d.ts +3 -1
- package/utils/fee/transfer.js +47 -1
- package/utils/index.d.ts +1 -0
- package/utils/index.js +6 -3
|
@@ -7,6 +7,7 @@ import { RequestOptimalTransferProcess } from '@subwallet/extension-base/service
|
|
|
7
7
|
import { CardanoBalanceItem } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/cardano/types';
|
|
8
8
|
import { CardanoTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/cardano-transfer';
|
|
9
9
|
import { TonTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer';
|
|
10
|
+
import { BitcoinApiStrategy } from '@subwallet/extension-base/services/chain-service/handler/bitcoin/strategy/types';
|
|
10
11
|
import { _CHAIN_VALIDATION_ERROR } from '@subwallet/extension-base/services/chain-service/handler/types';
|
|
11
12
|
import { _ChainState, _EvmApi, _NetworkUpsertParams, _SubstrateApi, _ValidateCustomAssetRequest, _ValidateCustomAssetResponse, EnableChainParams, EnableMultiChainParams } from '@subwallet/extension-base/services/chain-service/types';
|
|
12
13
|
import { TokenPayFeeInfo } from '@subwallet/extension-base/services/fee-service/interfaces';
|
|
@@ -14,10 +15,10 @@ import { _NotificationInfo, NotificationSetup } from '@subwallet/extension-base/
|
|
|
14
15
|
import { AppBannerData, AppConfirmationData, AppPopupData } from '@subwallet/extension-base/services/mkt-campaign-service/types';
|
|
15
16
|
import { AuthUrls } from '@subwallet/extension-base/services/request-service/types';
|
|
16
17
|
import { CrowdloanContributionsResponse } from '@subwallet/extension-base/services/subscan-service/types';
|
|
17
|
-
import { SWTransactionResponse, SWTransactionResult } from '@subwallet/extension-base/services/transaction-service/types';
|
|
18
|
+
import { BitcoinTransactionData, SWTransactionResponse, SWTransactionResult } from '@subwallet/extension-base/services/transaction-service/types';
|
|
18
19
|
import { WalletConnectNotSupportRequest, WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
|
|
19
20
|
import { AccountChainType, AccountJson, AccountsWithCurrentAddress, AddressJson, BalanceJson, BaseRequestSign, BuyServiceInfo, BuyTokenInfo, CommonOptimalTransferPath, CurrentAccountInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, InternalRequestSign, LeavePoolAdditionalData, NominationPoolInfo, OptimalYieldPath, OptimalYieldPathParams, RequestAccountBatchExportV2, RequestAccountCreateSuriV2, RequestAccountNameValidate, RequestAccountProxyEdit, RequestAccountProxyForget, RequestBatchJsonGetAccountInfo, RequestBatchRestoreV2, RequestBounceableValidate, RequestChangeAllowOneSign, RequestChangeTonWalletContractVersion, RequestCheckCrossChainTransfer, RequestCheckPublicAndSecretKey, RequestCheckTransfer, RequestCrossChainTransfer, RequestDeriveCreateMultiple, RequestDeriveCreateV3, RequestDeriveValidateV2, RequestEarlyValidateYield, RequestEarningSlippage, RequestExportAccountProxyMnemonic, RequestGetAllTonWalletContractVersion, RequestGetAmountForPair, RequestGetDeriveAccounts, RequestGetDeriveSuggestion, RequestGetTokensCanPayFee, RequestGetYieldPoolTargets, RequestInputAccountSubscribe, RequestJsonGetAccountInfo, RequestJsonRestoreV2, RequestMetadataHash, RequestMnemonicCreateV2, RequestMnemonicValidateV2, RequestPrivateKeyValidateV2, RequestShortenMetadata, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestSubmitProcessTransaction, RequestSubscribeProcessById, 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, ResponseSubscribeProcessAlive, ResponseSubscribeProcessById, StorageDataInterface, SubmitYieldStepData, SubnetYieldPositionInfo, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapRequestV2, SwapSubmitParams, SwapTxData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateSwapProcessParams, ValidateYieldProcessParams, YieldPoolInfo, YieldPoolType, YieldPositionInfo } from '@subwallet/extension-base/types';
|
|
20
|
-
import { RequestSubmitTransfer, RequestSubscribeTransfer, ResponseSubscribeTransfer } from '@subwallet/extension-base/types/balance/transfer';
|
|
21
|
+
import { RequestSubmitSignPsbtTransfer, RequestSubmitTransfer, RequestSubmitTransferWithId, RequestSubscribeTransfer, ResponseSubscribeTransfer } from '@subwallet/extension-base/types/balance/transfer';
|
|
21
22
|
import { RequestClaimBridge } from '@subwallet/extension-base/types/bridge';
|
|
22
23
|
import { GetNotificationParams, RequestIsClaimedPolygonBridge, RequestSwitchStatusParams } from '@subwallet/extension-base/types/notification';
|
|
23
24
|
import { InjectedAccount, InjectedAccountWithMeta, MetadataDefBase } from '@subwallet/extension-inject/types';
|
|
@@ -25,6 +26,8 @@ import { KeyringPair$Meta } from '@subwallet/keyring/types';
|
|
|
25
26
|
import { KeyringOptions } from '@subwallet/ui-keyring/options/types';
|
|
26
27
|
import { KeyringAddress } from '@subwallet/ui-keyring/types';
|
|
27
28
|
import { SessionTypes } from '@walletconnect/types/dist/types/sign-client/session';
|
|
29
|
+
import { Psbt } from 'bitcoinjs-lib';
|
|
30
|
+
import BN from 'bn.js';
|
|
28
31
|
import { DexieExportJsonStructure } from 'dexie-export-import';
|
|
29
32
|
import Web3 from 'web3';
|
|
30
33
|
import { RequestArguments, TransactionConfig } from 'web3-core';
|
|
@@ -566,7 +569,7 @@ export declare type TransactionAdditionalInfo = {
|
|
|
566
569
|
[ExtrinsicType.STAKING_UNBOND]: Pick<SubmitYieldStepData, 'inputTokenSlug' | 'exchangeRate'>;
|
|
567
570
|
};
|
|
568
571
|
export interface TransactionHistoryItem<ET extends ExtrinsicType = ExtrinsicType.TRANSFER_BALANCE> {
|
|
569
|
-
origin?: 'app' | 'migration' | 'subsquid' | 'subscan';
|
|
572
|
+
origin?: 'app' | 'migration' | 'subsquid' | 'subscan' | 'blockstream';
|
|
570
573
|
callhash?: string;
|
|
571
574
|
signature?: string;
|
|
572
575
|
chain: string;
|
|
@@ -582,6 +585,7 @@ export interface TransactionHistoryItem<ET extends ExtrinsicType = ExtrinsicType
|
|
|
582
585
|
status: ExtrinsicStatus;
|
|
583
586
|
transactionId?: string;
|
|
584
587
|
extrinsicHash: string;
|
|
588
|
+
blockTime?: number;
|
|
585
589
|
time: number;
|
|
586
590
|
data?: string;
|
|
587
591
|
blockNumber: number;
|
|
@@ -595,6 +599,7 @@ export interface TransactionHistoryItem<ET extends ExtrinsicType = ExtrinsicType
|
|
|
595
599
|
nonce?: number;
|
|
596
600
|
addressPrefix?: number;
|
|
597
601
|
processId?: string;
|
|
602
|
+
apiTxIndex?: number;
|
|
598
603
|
}
|
|
599
604
|
export interface SWWarning {
|
|
600
605
|
errorType: string;
|
|
@@ -855,6 +860,15 @@ export declare enum EvmProviderErrorType {
|
|
|
855
860
|
INVALID_PARAMS = "INVALID_PARAMS",
|
|
856
861
|
INTERNAL_ERROR = "INTERNAL_ERROR"
|
|
857
862
|
}
|
|
863
|
+
export declare enum BitcoinProviderErrorType {
|
|
864
|
+
USER_REJECTED_REQUEST = "USER_REJECTED_REQUEST",
|
|
865
|
+
UNAUTHORIZED = "UNAUTHORIZED",
|
|
866
|
+
UNSUPPORTED_METHOD = "UNSUPPORTED_METHOD",
|
|
867
|
+
DISCONNECTED = "DISCONNECTED",
|
|
868
|
+
CHAIN_DISCONNECTED = "CHAIN_DISCONNECTED",
|
|
869
|
+
INVALID_PARAMS = "INVALID_PARAMS",
|
|
870
|
+
INTERNAL_ERROR = "INTERNAL_ERROR"
|
|
871
|
+
}
|
|
858
872
|
export interface EvmSendTransactionParams {
|
|
859
873
|
from: string;
|
|
860
874
|
to?: string;
|
|
@@ -871,6 +885,47 @@ export interface EvmSignRequest {
|
|
|
871
885
|
hashPayload: string;
|
|
872
886
|
canSign: boolean;
|
|
873
887
|
}
|
|
888
|
+
export interface BitcoinSignRequest {
|
|
889
|
+
account: AccountJson;
|
|
890
|
+
hashPayload: string;
|
|
891
|
+
canSign: boolean;
|
|
892
|
+
}
|
|
893
|
+
export interface BitcoinRecipientTransactionParams {
|
|
894
|
+
address: string;
|
|
895
|
+
amount: string;
|
|
896
|
+
}
|
|
897
|
+
export interface BitcoinSendTransactionParams {
|
|
898
|
+
account: string;
|
|
899
|
+
network: 'mainnet' | 'testnet';
|
|
900
|
+
recipients: BitcoinRecipientTransactionParams[];
|
|
901
|
+
}
|
|
902
|
+
export interface PsbtTransactionArg {
|
|
903
|
+
address?: string;
|
|
904
|
+
amount?: string;
|
|
905
|
+
}
|
|
906
|
+
export interface BitcoinSignPsbtPayload extends Omit<BitcoinSignPsbtRawRequest, 'psbt'> {
|
|
907
|
+
txInput: PsbtTransactionArg[];
|
|
908
|
+
txOutput: PsbtTransactionArg[];
|
|
909
|
+
to: string;
|
|
910
|
+
value: string;
|
|
911
|
+
psbt: Psbt;
|
|
912
|
+
tokenSlug: string;
|
|
913
|
+
}
|
|
914
|
+
declare enum SignatureHash {
|
|
915
|
+
DEFAULT = 0,
|
|
916
|
+
ALL = 1,
|
|
917
|
+
NONE = 2,
|
|
918
|
+
SINGLE = 3,
|
|
919
|
+
ANYONECANPAY = 128
|
|
920
|
+
}
|
|
921
|
+
export interface BitcoinSignPsbtRawRequest {
|
|
922
|
+
psbt: string;
|
|
923
|
+
allowedSighash?: SignatureHash[];
|
|
924
|
+
signAtIndex?: number | number[];
|
|
925
|
+
broadcast?: boolean;
|
|
926
|
+
network: string;
|
|
927
|
+
account: string;
|
|
928
|
+
}
|
|
874
929
|
export interface TonSignRequest {
|
|
875
930
|
account: AccountJson;
|
|
876
931
|
hashPayload: string;
|
|
@@ -971,18 +1026,51 @@ export interface CardanoTransactionDappConfig {
|
|
|
971
1026
|
id: string;
|
|
972
1027
|
}
|
|
973
1028
|
export declare type ResponseCardanoSignTransaction = Cbor;
|
|
1029
|
+
export declare type BitcoinSendTransactionRequest = BitcoinSignRequest;
|
|
1030
|
+
export interface BitcoinSignatureRequest extends BitcoinSignRequest {
|
|
1031
|
+
id: string;
|
|
1032
|
+
payload: unknown;
|
|
1033
|
+
payloadJson: any;
|
|
1034
|
+
}
|
|
1035
|
+
export interface BitcoinAppState {
|
|
1036
|
+
networkKey?: string;
|
|
1037
|
+
isConnected?: boolean;
|
|
1038
|
+
strategy?: BitcoinApiStrategy;
|
|
1039
|
+
listenEvents?: string[];
|
|
1040
|
+
}
|
|
974
1041
|
export declare type TonSendTransactionRequest = TonTransactionConfig;
|
|
975
1042
|
export declare type CardanoSendTransactionRequest = CardanoTransactionConfig;
|
|
976
1043
|
export declare type CardanoSignTransactionRequest = CardanoTransactionDappConfig;
|
|
977
1044
|
export declare type EvmWatchTransactionRequest = EvmSendTransactionRequest;
|
|
978
1045
|
export declare type TonWatchTransactionRequest = TonSendTransactionRequest;
|
|
979
1046
|
export declare type CardanoWatchTransactionRequest = CardanoSendTransactionRequest;
|
|
1047
|
+
export declare type BitcoinWatchTransactionRequest = BitcoinSendTransactionRequest;
|
|
1048
|
+
export declare type BitcoinSignPsbtRequest = BitcoinSignRequest & {
|
|
1049
|
+
payload: BitcoinSignPsbtPayload;
|
|
1050
|
+
};
|
|
980
1051
|
export interface ConfirmationsQueueItemOptions {
|
|
981
1052
|
requiredPassword?: boolean;
|
|
982
1053
|
address?: string;
|
|
983
1054
|
networkKey?: string;
|
|
984
1055
|
isPassConfirmation?: boolean;
|
|
985
1056
|
}
|
|
1057
|
+
export interface BitcoinTransactionConfig {
|
|
1058
|
+
id?: string;
|
|
1059
|
+
from?: string | number;
|
|
1060
|
+
to?: BitcoinRecipientTransactionParams[];
|
|
1061
|
+
value?: number | string | BN;
|
|
1062
|
+
networkKey?: string;
|
|
1063
|
+
tokenSlug?: string;
|
|
1064
|
+
}
|
|
1065
|
+
export interface SignMessageBitcoinResult {
|
|
1066
|
+
signature: string;
|
|
1067
|
+
message: string;
|
|
1068
|
+
address: string;
|
|
1069
|
+
}
|
|
1070
|
+
export interface SignPsbtBitcoinResult {
|
|
1071
|
+
psbt: string;
|
|
1072
|
+
txid?: string;
|
|
1073
|
+
}
|
|
986
1074
|
export interface ConfirmationsQueueItem<T> extends ConfirmationsQueueItemOptions, ConfirmationRequestBase {
|
|
987
1075
|
payload: T;
|
|
988
1076
|
payloadJson: string;
|
|
@@ -1040,9 +1128,17 @@ export interface ConfirmationDefinitionsCardano {
|
|
|
1040
1128
|
cardanoSignTransactionRequest: [ConfirmationsQueueItem<CardanoSignTransactionRequest>, ConfirmationResult<string>];
|
|
1041
1129
|
cardanoWatchTransactionRequest: [ConfirmationsQueueItem<CardanoWatchTransactionRequest>, ConfirmationResult<string>];
|
|
1042
1130
|
}
|
|
1131
|
+
export interface ConfirmationDefinitionsBitcoin {
|
|
1132
|
+
bitcoinSignatureRequest: [ConfirmationsQueueItem<BitcoinSignatureRequest>, ConfirmationResult<SignMessageBitcoinResult>];
|
|
1133
|
+
bitcoinSendTransactionRequest: [ConfirmationsQueueItem<BitcoinSendTransactionRequest>, ConfirmationResult<string>];
|
|
1134
|
+
bitcoinSendTransactionRequestAfterConfirmation: [ConfirmationsQueueItem<BitcoinSendTransactionRequest>, ConfirmationResult<string>];
|
|
1135
|
+
bitcoinWatchTransactionRequest: [ConfirmationsQueueItem<BitcoinWatchTransactionRequest>, ConfirmationResult<string>];
|
|
1136
|
+
bitcoinSignPsbtRequest: [ConfirmationsQueueItem<BitcoinSignPsbtRequest>, ConfirmationResult<SignPsbtBitcoinResult>];
|
|
1137
|
+
}
|
|
1043
1138
|
export declare type ConfirmationType = keyof ConfirmationDefinitions;
|
|
1044
1139
|
export declare type ConfirmationTypeTon = keyof ConfirmationDefinitionsTon;
|
|
1045
1140
|
export declare type ConfirmationTypeCardano = keyof ConfirmationDefinitionsCardano;
|
|
1141
|
+
export declare type ConfirmationTypeBitcoin = keyof ConfirmationDefinitionsBitcoin;
|
|
1046
1142
|
export declare type ConfirmationsQueue = {
|
|
1047
1143
|
[CT in ConfirmationType]: Record<string, ConfirmationDefinitions[CT][0]>;
|
|
1048
1144
|
};
|
|
@@ -1052,12 +1148,19 @@ export declare type ConfirmationsQueueTon = {
|
|
|
1052
1148
|
export declare type ConfirmationsQueueCardano = {
|
|
1053
1149
|
[CT in ConfirmationTypeCardano]: Record<string, ConfirmationDefinitionsCardano[CT][0]>;
|
|
1054
1150
|
};
|
|
1151
|
+
export declare type ConfirmationsQueueBitcoin = {
|
|
1152
|
+
[CT in ConfirmationTypeBitcoin]: Record<string, ConfirmationDefinitionsBitcoin[CT][0]>;
|
|
1153
|
+
};
|
|
1055
1154
|
export declare type RequestConfirmationsSubscribe = null;
|
|
1056
1155
|
export declare type RequestConfirmationsSubscribeTon = null;
|
|
1057
1156
|
export declare type RequestConfirmationsSubscribeCardano = null;
|
|
1157
|
+
export declare type RequestConfirmationsSubscribeBitcoin = null;
|
|
1058
1158
|
export declare type RequestConfirmationComplete = {
|
|
1059
1159
|
[CT in ConfirmationType]?: ConfirmationDefinitions[CT][1];
|
|
1060
1160
|
};
|
|
1161
|
+
export declare type RequestConfirmationCompleteBitcoin = {
|
|
1162
|
+
[CT in ConfirmationTypeBitcoin]?: ConfirmationDefinitionsBitcoin[CT][1];
|
|
1163
|
+
};
|
|
1061
1164
|
export declare type RequestConfirmationCompleteTon = {
|
|
1062
1165
|
[CT in ConfirmationTypeTon]?: ConfirmationDefinitionsTon[CT][1];
|
|
1063
1166
|
};
|
|
@@ -1636,7 +1739,16 @@ export interface ExtrinsicsDataResponse {
|
|
|
1636
1739
|
}[];
|
|
1637
1740
|
}
|
|
1638
1741
|
export declare type _Address = string;
|
|
1639
|
-
export declare type _BalanceMetadata = unknown;
|
|
1742
|
+
export declare type _BalanceMetadata = BitcoinBalanceMetadata | unknown;
|
|
1743
|
+
export declare type BitcoinBalanceMetadata = {
|
|
1744
|
+
inscriptionCount: number;
|
|
1745
|
+
runeBalance: string;
|
|
1746
|
+
inscriptionBalance: string;
|
|
1747
|
+
};
|
|
1748
|
+
export interface AddressBalanceResult {
|
|
1749
|
+
balance: string;
|
|
1750
|
+
bitcoinBalanceMetadata: BitcoinBalanceMetadata;
|
|
1751
|
+
}
|
|
1640
1752
|
export interface KoniRequestSignatures {
|
|
1641
1753
|
'pri(staking.submitTuringCancelCompound)': [RequestTuringCancelStakeCompound, SWTransactionResponse];
|
|
1642
1754
|
'pri(staking.submitTuringCompound)': [RequestTuringStakeCompound, SWTransactionResponse];
|
|
@@ -1813,6 +1925,9 @@ export interface KoniRequestSignatures {
|
|
|
1813
1925
|
'pri(freeBalance.subscribe)': [RequestFreeBalance, AmountDataWithId, AmountDataWithId];
|
|
1814
1926
|
'pri(accounts.checkTransfer)': [RequestCheckTransfer, ValidateTransactionResponse];
|
|
1815
1927
|
'pri(accounts.transfer)': [RequestSubmitTransfer, SWTransactionResponse];
|
|
1928
|
+
'pri(accounts.bitcoin.dapp.transfer.confirmation)': [RequestSubmitTransferWithId, SWTransactionResponse];
|
|
1929
|
+
'pri(accounts.psbt.transfer.confirmation)': [RequestSubmitSignPsbtTransfer, SWTransactionResponse];
|
|
1930
|
+
'pri(accounts.getBitcoinTransactionData)': [RequestSubmitTransfer, BitcoinTransactionData];
|
|
1816
1931
|
'pri(accounts.getOptimalTransferProcess)': [RequestOptimalTransferProcess, CommonOptimalTransferPath];
|
|
1817
1932
|
'pri(accounts.approveSpending)': [TokenSpendingApprovalParams, SWTransactionResponse];
|
|
1818
1933
|
'pri(accounts.checkCrossChainTransfer)': [RequestCheckCrossChainTransfer, ValidateTransactionResponse];
|
|
@@ -1822,9 +1937,11 @@ export interface KoniRequestSignatures {
|
|
|
1822
1937
|
'pri(confirmations.subscribe)': [RequestConfirmationsSubscribe, ConfirmationsQueue, ConfirmationsQueue];
|
|
1823
1938
|
'pri(confirmationsTon.subscribe)': [RequestConfirmationsSubscribeTon, ConfirmationsQueueTon, ConfirmationsQueueTon];
|
|
1824
1939
|
'pri(confirmationsCardano.subscribe)': [RequestConfirmationsSubscribeCardano, ConfirmationsQueueCardano, ConfirmationsQueueCardano];
|
|
1940
|
+
'pri(confirmationsBitcoin.subscribe)': [RequestConfirmationsSubscribeBitcoin, ConfirmationsQueueBitcoin, ConfirmationsQueueBitcoin];
|
|
1825
1941
|
'pri(confirmations.complete)': [RequestConfirmationComplete, boolean];
|
|
1826
1942
|
'pri(confirmationsTon.complete)': [RequestConfirmationCompleteTon, boolean];
|
|
1827
1943
|
'pri(confirmationsCardano.complete)': [RequestConfirmationCompleteCardano, boolean];
|
|
1944
|
+
'pri(confirmationsBitcoin.complete)': [RequestConfirmationCompleteBitcoin, boolean];
|
|
1828
1945
|
'pub(utils.getRandom)': [RandomTestRequest, number];
|
|
1829
1946
|
'pub(accounts.listV2)': [RequestAccountList, InjectedAccount[]];
|
|
1830
1947
|
'pub(accounts.subscribeV2)': [RequestAccountSubscribe, string, InjectedAccount[]];
|
package/background/KoniTypes.js
CHANGED
|
@@ -185,6 +185,24 @@ export let EvmProviderErrorType;
|
|
|
185
185
|
EvmProviderErrorType["INVALID_PARAMS"] = "INVALID_PARAMS";
|
|
186
186
|
EvmProviderErrorType["INTERNAL_ERROR"] = "INTERNAL_ERROR";
|
|
187
187
|
})(EvmProviderErrorType || (EvmProviderErrorType = {}));
|
|
188
|
+
export let BitcoinProviderErrorType;
|
|
189
|
+
(function (BitcoinProviderErrorType) {
|
|
190
|
+
BitcoinProviderErrorType["USER_REJECTED_REQUEST"] = "USER_REJECTED_REQUEST";
|
|
191
|
+
BitcoinProviderErrorType["UNAUTHORIZED"] = "UNAUTHORIZED";
|
|
192
|
+
BitcoinProviderErrorType["UNSUPPORTED_METHOD"] = "UNSUPPORTED_METHOD";
|
|
193
|
+
BitcoinProviderErrorType["DISCONNECTED"] = "DISCONNECTED";
|
|
194
|
+
BitcoinProviderErrorType["CHAIN_DISCONNECTED"] = "CHAIN_DISCONNECTED";
|
|
195
|
+
BitcoinProviderErrorType["INVALID_PARAMS"] = "INVALID_PARAMS";
|
|
196
|
+
BitcoinProviderErrorType["INTERNAL_ERROR"] = "INTERNAL_ERROR";
|
|
197
|
+
})(BitcoinProviderErrorType || (BitcoinProviderErrorType = {}));
|
|
198
|
+
var SignatureHash;
|
|
199
|
+
(function (SignatureHash) {
|
|
200
|
+
SignatureHash[SignatureHash["DEFAULT"] = 0] = "DEFAULT";
|
|
201
|
+
SignatureHash[SignatureHash["ALL"] = 1] = "ALL";
|
|
202
|
+
SignatureHash[SignatureHash["NONE"] = 2] = "NONE";
|
|
203
|
+
SignatureHash[SignatureHash["SINGLE"] = 3] = "SINGLE";
|
|
204
|
+
SignatureHash[SignatureHash["ANYONECANPAY"] = 128] = "ANYONECANPAY";
|
|
205
|
+
})(SignatureHash || (SignatureHash = {}));
|
|
188
206
|
// Cardano Request Dapp Input
|
|
189
207
|
export let CardanoProviderErrorType;
|
|
190
208
|
(function (CardanoProviderErrorType) {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SWError } from '@subwallet/extension-base/background/errors/SWError';
|
|
2
|
+
import { BitcoinProviderErrorType } from '@subwallet/extension-base/background/KoniTypes';
|
|
3
|
+
export declare class BitcoinProviderError extends SWError {
|
|
4
|
+
errorType: BitcoinProviderErrorType;
|
|
5
|
+
constructor(errorType: BitcoinProviderErrorType, errMessage?: string, data?: unknown);
|
|
6
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
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 { detectTranslate } from '@subwallet/extension-base/utils';
|
|
6
|
+
import { t } from 'i18next';
|
|
7
|
+
const defaultErrorMap = {
|
|
8
|
+
USER_REJECTED_REQUEST: {
|
|
9
|
+
message: detectTranslate('User Rejected Request'),
|
|
10
|
+
code: 4001
|
|
11
|
+
},
|
|
12
|
+
UNAUTHORIZED: {
|
|
13
|
+
message: detectTranslate('Failed to sign'),
|
|
14
|
+
code: 4100
|
|
15
|
+
},
|
|
16
|
+
UNSUPPORTED_METHOD: {
|
|
17
|
+
message: detectTranslate('Unsupported Method'),
|
|
18
|
+
code: 4200
|
|
19
|
+
},
|
|
20
|
+
DISCONNECTED: {
|
|
21
|
+
message: detectTranslate('Network is disconnected'),
|
|
22
|
+
code: 4900
|
|
23
|
+
},
|
|
24
|
+
CHAIN_DISCONNECTED: {
|
|
25
|
+
message: detectTranslate('Network is disconnected'),
|
|
26
|
+
code: 4901
|
|
27
|
+
},
|
|
28
|
+
INVALID_PARAMS: {
|
|
29
|
+
message: detectTranslate('Undefined error. Please contact SubWallet support'),
|
|
30
|
+
code: -32602
|
|
31
|
+
},
|
|
32
|
+
INTERNAL_ERROR: {
|
|
33
|
+
message: detectTranslate('Undefined error. Please contact SubWallet support'),
|
|
34
|
+
code: -32603
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
export class BitcoinProviderError extends SWError {
|
|
38
|
+
constructor(errorType, errMessage, data) {
|
|
39
|
+
const {
|
|
40
|
+
code,
|
|
41
|
+
message
|
|
42
|
+
} = defaultErrorMap[errorType];
|
|
43
|
+
const finalMessage = errMessage || t(message || '') || errorType;
|
|
44
|
+
super(errorType, finalMessage, code, data);
|
|
45
|
+
this.errorType = errorType;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -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.CardanoProviderErrorType = 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.BitcoinProviderErrorType = 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,25 @@ exports.EvmProviderErrorType = EvmProviderErrorType;
|
|
|
199
199
|
EvmProviderErrorType["INVALID_PARAMS"] = "INVALID_PARAMS";
|
|
200
200
|
EvmProviderErrorType["INTERNAL_ERROR"] = "INTERNAL_ERROR";
|
|
201
201
|
})(EvmProviderErrorType || (exports.EvmProviderErrorType = EvmProviderErrorType = {}));
|
|
202
|
+
let BitcoinProviderErrorType;
|
|
203
|
+
exports.BitcoinProviderErrorType = BitcoinProviderErrorType;
|
|
204
|
+
(function (BitcoinProviderErrorType) {
|
|
205
|
+
BitcoinProviderErrorType["USER_REJECTED_REQUEST"] = "USER_REJECTED_REQUEST";
|
|
206
|
+
BitcoinProviderErrorType["UNAUTHORIZED"] = "UNAUTHORIZED";
|
|
207
|
+
BitcoinProviderErrorType["UNSUPPORTED_METHOD"] = "UNSUPPORTED_METHOD";
|
|
208
|
+
BitcoinProviderErrorType["DISCONNECTED"] = "DISCONNECTED";
|
|
209
|
+
BitcoinProviderErrorType["CHAIN_DISCONNECTED"] = "CHAIN_DISCONNECTED";
|
|
210
|
+
BitcoinProviderErrorType["INVALID_PARAMS"] = "INVALID_PARAMS";
|
|
211
|
+
BitcoinProviderErrorType["INTERNAL_ERROR"] = "INTERNAL_ERROR";
|
|
212
|
+
})(BitcoinProviderErrorType || (exports.BitcoinProviderErrorType = BitcoinProviderErrorType = {}));
|
|
213
|
+
var SignatureHash;
|
|
214
|
+
(function (SignatureHash) {
|
|
215
|
+
SignatureHash[SignatureHash["DEFAULT"] = 0] = "DEFAULT";
|
|
216
|
+
SignatureHash[SignatureHash["ALL"] = 1] = "ALL";
|
|
217
|
+
SignatureHash[SignatureHash["NONE"] = 2] = "NONE";
|
|
218
|
+
SignatureHash[SignatureHash["SINGLE"] = 3] = "SINGLE";
|
|
219
|
+
SignatureHash[SignatureHash["ANYONECANPAY"] = 128] = "ANYONECANPAY";
|
|
220
|
+
})(SignatureHash || (SignatureHash = {}));
|
|
202
221
|
// Cardano Request Dapp Input
|
|
203
222
|
let CardanoProviderErrorType;
|
|
204
223
|
exports.CardanoProviderErrorType = CardanoProviderErrorType;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.BitcoinProviderError = void 0;
|
|
7
|
+
var _SWError = require("@subwallet/extension-base/background/errors/SWError");
|
|
8
|
+
var _utils = require("@subwallet/extension-base/utils");
|
|
9
|
+
var _i18next = require("i18next");
|
|
10
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
11
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
12
|
+
|
|
13
|
+
const defaultErrorMap = {
|
|
14
|
+
USER_REJECTED_REQUEST: {
|
|
15
|
+
message: (0, _utils.detectTranslate)('User Rejected Request'),
|
|
16
|
+
code: 4001
|
|
17
|
+
},
|
|
18
|
+
UNAUTHORIZED: {
|
|
19
|
+
message: (0, _utils.detectTranslate)('Failed to sign'),
|
|
20
|
+
code: 4100
|
|
21
|
+
},
|
|
22
|
+
UNSUPPORTED_METHOD: {
|
|
23
|
+
message: (0, _utils.detectTranslate)('Unsupported Method'),
|
|
24
|
+
code: 4200
|
|
25
|
+
},
|
|
26
|
+
DISCONNECTED: {
|
|
27
|
+
message: (0, _utils.detectTranslate)('Network is disconnected'),
|
|
28
|
+
code: 4900
|
|
29
|
+
},
|
|
30
|
+
CHAIN_DISCONNECTED: {
|
|
31
|
+
message: (0, _utils.detectTranslate)('Network is disconnected'),
|
|
32
|
+
code: 4901
|
|
33
|
+
},
|
|
34
|
+
INVALID_PARAMS: {
|
|
35
|
+
message: (0, _utils.detectTranslate)('Undefined error. Please contact SubWallet support'),
|
|
36
|
+
code: -32602
|
|
37
|
+
},
|
|
38
|
+
INTERNAL_ERROR: {
|
|
39
|
+
message: (0, _utils.detectTranslate)('Undefined error. Please contact SubWallet support'),
|
|
40
|
+
code: -32603
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
class BitcoinProviderError extends _SWError.SWError {
|
|
44
|
+
constructor(errorType, errMessage, data) {
|
|
45
|
+
const {
|
|
46
|
+
code,
|
|
47
|
+
message
|
|
48
|
+
} = defaultErrorMap[errorType];
|
|
49
|
+
const finalMessage = errMessage || (0, _i18next.t)(message || '') || errorType;
|
|
50
|
+
super(errorType, finalMessage, code, data);
|
|
51
|
+
this.errorType = errorType;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.BitcoinProviderError = BitcoinProviderError;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.BTC_DUST_AMOUNT = exports.BITCOIN_DECIMAL = void 0;
|
|
7
|
+
var _types = require("@subwallet/keyring/types");
|
|
8
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
9
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
10
|
+
|
|
11
|
+
// https://bitcoin.stackexchange.com/a/41082/139277
|
|
12
|
+
|
|
13
|
+
const BTC_DUST_AMOUNT = {
|
|
14
|
+
[_types.BitcoinAddressType.p2pkh]: 546,
|
|
15
|
+
[_types.BitcoinAddressType.p2sh]: 540,
|
|
16
|
+
[_types.BitcoinAddressType.p2tr]: 330,
|
|
17
|
+
[_types.BitcoinAddressType.p2wpkh]: 294,
|
|
18
|
+
[_types.BitcoinAddressType.p2wsh]: 330
|
|
19
|
+
};
|
|
20
|
+
exports.BTC_DUST_AMOUNT = BTC_DUST_AMOUNT;
|
|
21
|
+
const BITCOIN_DECIMAL = 8;
|
|
22
|
+
exports.BITCOIN_DECIMAL = BITCOIN_DECIMAL;
|
package/cjs/constants/index.js
CHANGED
|
@@ -11,6 +11,7 @@ var _exportNames = {
|
|
|
11
11
|
CRON_AUTO_RECOVER_WEB3_INTERVAL: true,
|
|
12
12
|
ACALA_REFRESH_CROWDLOAN_INTERVAL: true,
|
|
13
13
|
ASTAR_REFRESH_BALANCE_INTERVAL: true,
|
|
14
|
+
BITCOIN_REFRESH_BALANCE_INTERVAL: true,
|
|
14
15
|
SUB_TOKEN_REFRESH_BALANCE_INTERVAL: true,
|
|
15
16
|
CRON_REFRESH_NFT_INTERVAL: true,
|
|
16
17
|
CRON_REFRESH_MKT_CAMPAIGN_INTERVAL: true,
|
|
@@ -45,7 +46,7 @@ var _exportNames = {
|
|
|
45
46
|
getSupportTokenPayFeeChain: true,
|
|
46
47
|
isChainSupportTokenPayFee: true
|
|
47
48
|
};
|
|
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;
|
|
49
|
+
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.BITCOIN_REFRESH_BALANCE_INTERVAL = 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;
|
|
49
50
|
var _blockedActions = require("./blocked-actions");
|
|
50
51
|
Object.keys(_blockedActions).forEach(function (key) {
|
|
51
52
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -118,6 +119,18 @@ Object.keys(_remindNotificationTime).forEach(function (key) {
|
|
|
118
119
|
}
|
|
119
120
|
});
|
|
120
121
|
});
|
|
122
|
+
var _bitcoin = require("./bitcoin");
|
|
123
|
+
Object.keys(_bitcoin).forEach(function (key) {
|
|
124
|
+
if (key === "default" || key === "__esModule") return;
|
|
125
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
126
|
+
if (key in exports && exports[key] === _bitcoin[key]) return;
|
|
127
|
+
Object.defineProperty(exports, key, {
|
|
128
|
+
enumerable: true,
|
|
129
|
+
get: function () {
|
|
130
|
+
return _bitcoin[key];
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
});
|
|
121
134
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
122
135
|
// SPDX-License-Identifier: Apache-2.0
|
|
123
136
|
|
|
@@ -135,6 +148,8 @@ const ACALA_REFRESH_CROWDLOAN_INTERVAL = 300000;
|
|
|
135
148
|
exports.ACALA_REFRESH_CROWDLOAN_INTERVAL = ACALA_REFRESH_CROWDLOAN_INTERVAL;
|
|
136
149
|
const ASTAR_REFRESH_BALANCE_INTERVAL = 60000;
|
|
137
150
|
exports.ASTAR_REFRESH_BALANCE_INTERVAL = ASTAR_REFRESH_BALANCE_INTERVAL;
|
|
151
|
+
const BITCOIN_REFRESH_BALANCE_INTERVAL = 600000;
|
|
152
|
+
exports.BITCOIN_REFRESH_BALANCE_INTERVAL = BITCOIN_REFRESH_BALANCE_INTERVAL;
|
|
138
153
|
const SUB_TOKEN_REFRESH_BALANCE_INTERVAL = 60000;
|
|
139
154
|
exports.SUB_TOKEN_REFRESH_BALANCE_INTERVAL = SUB_TOKEN_REFRESH_BALANCE_INTERVAL;
|
|
140
155
|
const CRON_REFRESH_NFT_INTERVAL = 7200000;
|
|
@@ -9,6 +9,7 @@ var _utils = require("@subwallet/extension-base/core/utils");
|
|
|
9
9
|
var _types2 = require("@subwallet/extension-base/types");
|
|
10
10
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
11
11
|
var _keyring = require("@subwallet/keyring");
|
|
12
|
+
var _validate = require("@subwallet/keyring/utils/address/validate");
|
|
12
13
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
13
14
|
// SPDX-License-Identifier: Apache-2.0
|
|
14
15
|
|
|
@@ -36,6 +37,9 @@ function getConditions(validateRecipientParams) {
|
|
|
36
37
|
if ((0, _keyring.isCardanoAddress)(toAddress)) {
|
|
37
38
|
conditions.push(_types.ValidationCondition.IS_VALID_CARDANO_ADDRESS_FORMAT);
|
|
38
39
|
}
|
|
40
|
+
if ((0, _validate.isBitcoinAddress)(toAddress)) {
|
|
41
|
+
conditions.push(_types.ValidationCondition.IS_VALID_BITCOIN_ADDRESS_FORMAT);
|
|
42
|
+
}
|
|
39
43
|
if (srcChain === destChainInfo.slug && isSendAction && !destChainInfo.tonInfo && !destChainInfo.cardanoInfo) {
|
|
40
44
|
conditions.push(_types.ValidationCondition.IS_NOT_DUPLICATE_ADDRESS);
|
|
41
45
|
}
|
|
@@ -81,6 +85,11 @@ function getValidationFunctions(conditions) {
|
|
|
81
85
|
validationFunctions.push(_utils._isValidCardanoAddressFormat);
|
|
82
86
|
break;
|
|
83
87
|
}
|
|
88
|
+
case _types.ValidationCondition.IS_VALID_BITCOIN_ADDRESS_FORMAT:
|
|
89
|
+
{
|
|
90
|
+
validationFunctions.push(_utils._isValidBitcoinAddressFormat);
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
84
93
|
case _types.ValidationCondition.IS_NOT_DUPLICATE_ADDRESS:
|
|
85
94
|
{
|
|
86
95
|
validationFunctions.push(_utils._isNotDuplicateAddress);
|
|
@@ -328,6 +328,11 @@ async function estimateFeeForTransaction(validationResponse, transaction, chainI
|
|
|
328
328
|
} = (0, _utils3._getChainNativeTokenBasicInfo)(chainInfo);
|
|
329
329
|
estimateFee.decimals = decimals;
|
|
330
330
|
estimateFee.symbol = symbol;
|
|
331
|
+
const {
|
|
332
|
+
address,
|
|
333
|
+
feeCustom,
|
|
334
|
+
feeOption
|
|
335
|
+
} = validationResponse;
|
|
331
336
|
if (transaction) {
|
|
332
337
|
try {
|
|
333
338
|
if ((0, _helpers.isSubstrateTransaction)(transaction)) {
|
|
@@ -337,13 +342,28 @@ async function estimateFeeForTransaction(validationResponse, transaction, chainI
|
|
|
337
342
|
estimateFee.value = transaction.estimateFee; // todo: might need to update logic estimate fee inside for future actions excluding normal transfer Ton and Jetton
|
|
338
343
|
} else if ((0, _helpers.isCardanoTransaction)(transaction)) {
|
|
339
344
|
estimateFee.value = transaction.estimateCardanoFee;
|
|
345
|
+
} else if ((0, _helpers.isBitcoinTransaction)(transaction)) {
|
|
346
|
+
const feeCombine = (0, _utils5.combineBitcoinFee)(feeInfo, feeOption, feeCustom);
|
|
347
|
+
const recipients = [];
|
|
348
|
+
for (const txOutput of transaction.txOutputs) {
|
|
349
|
+
txOutput.address && recipients.push(txOutput.address);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// TODO: Need review
|
|
353
|
+
const sizeInfo = (0, _utils5.getSizeInfo)({
|
|
354
|
+
inputLength: transaction.inputCount,
|
|
355
|
+
recipients: recipients,
|
|
356
|
+
sender: address
|
|
357
|
+
});
|
|
358
|
+
estimateFee.value = Math.ceil(feeCombine.feeRate * sizeInfo.txVBytes).toString();
|
|
340
359
|
} else {
|
|
341
|
-
const
|
|
360
|
+
const _transaction = transaction;
|
|
361
|
+
const gasLimit = _transaction.gas || (await evmApi.api.eth.estimateGas(_transaction));
|
|
342
362
|
const feeCombine = (0, _utils5.combineEthFee)(feeInfo, validationResponse.feeOption, validationResponse.feeCustom);
|
|
343
|
-
if (
|
|
344
|
-
estimateFee.value = new _bignumber.default(
|
|
345
|
-
} else if (
|
|
346
|
-
estimateFee.value = new _bignumber.default(
|
|
363
|
+
if (_transaction.maxFeePerGas) {
|
|
364
|
+
estimateFee.value = new _bignumber.default(_transaction.maxFeePerGas.toString()).multipliedBy(gasLimit).toFixed(0);
|
|
365
|
+
} else if (_transaction.gasPrice) {
|
|
366
|
+
estimateFee.value = new _bignumber.default(_transaction.gasPrice.toString()).multipliedBy(gasLimit).toFixed(0);
|
|
347
367
|
} else {
|
|
348
368
|
if (feeCombine.maxFeePerGas) {
|
|
349
369
|
const maxFee = new _bignumber.default(feeCombine.maxFeePerGas); // TODO: Need review
|
package/cjs/core/types.js
CHANGED
|
@@ -15,6 +15,7 @@ exports.ValidationCondition = ValidationCondition;
|
|
|
15
15
|
ValidationCondition["IS_VALID_SUBSTRATE_ADDRESS_FORMAT"] = "IS_VALID_SUBSTRATE_ADDRESS_FORMAT";
|
|
16
16
|
ValidationCondition["IS_VALID_TON_ADDRESS_FORMAT"] = "IS_VALID_TON_ADDRESS_FORMAT";
|
|
17
17
|
ValidationCondition["IS_VALID_CARDANO_ADDRESS_FORMAT"] = "IS_VALID_CARDANO_ADDRESS_FORMAT";
|
|
18
|
+
ValidationCondition["IS_VALID_BITCOIN_ADDRESS_FORMAT"] = "IS_VALID_BITCOIN_ADDRESS_FORMAT";
|
|
18
19
|
ValidationCondition["IS_NOT_DUPLICATE_ADDRESS"] = "IS_NOT_DUPLICATE_ADDRESS";
|
|
19
20
|
ValidationCondition["IS_SUPPORT_LEDGER_ACCOUNT"] = "IS_SUPPORT_LEDGER_ACCOUNT";
|
|
20
21
|
})(ValidationCondition || (exports.ValidationCondition = ValidationCondition = {}));
|
package/cjs/core/utils.js
CHANGED
|
@@ -10,6 +10,7 @@ exports._isNotNull = _isNotNull;
|
|
|
10
10
|
exports._isSufficientToken = void 0;
|
|
11
11
|
exports._isSupportLedgerAccount = _isSupportLedgerAccount;
|
|
12
12
|
exports._isValidAddressForEcosystem = _isValidAddressForEcosystem;
|
|
13
|
+
exports._isValidBitcoinAddressFormat = _isValidBitcoinAddressFormat;
|
|
13
14
|
exports._isValidCardanoAddressFormat = _isValidCardanoAddressFormat;
|
|
14
15
|
exports._isValidSubstrateAddressFormat = _isValidSubstrateAddressFormat;
|
|
15
16
|
exports._isValidTonAddressFormat = _isValidTonAddressFormat;
|
|
@@ -23,6 +24,7 @@ var _utils = require("@subwallet/extension-base/services/balance-service/helpers
|
|
|
23
24
|
var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
24
25
|
var _utils3 = require("@subwallet/extension-base/utils");
|
|
25
26
|
var _keyring = require("@subwallet/keyring");
|
|
27
|
+
var _utils4 = require("@subwallet/keyring/utils");
|
|
26
28
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
27
29
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
28
30
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -73,7 +75,7 @@ function _isValidAddressForEcosystem(validateRecipientParams) {
|
|
|
73
75
|
toAddress
|
|
74
76
|
} = validateRecipientParams;
|
|
75
77
|
if (!(0, _utils3.isAddressAndChainCompatible)(toAddress, destChainInfo)) {
|
|
76
|
-
if ((0, _utils2._isChainEvmCompatible)(destChainInfo) || (0, _utils2._isChainSubstrateCompatible)(destChainInfo) || (0, _utils2._isChainTonCompatible)(destChainInfo) || (0, _utils2._isChainCardanoCompatible)(destChainInfo)) {
|
|
78
|
+
if ((0, _utils2._isChainEvmCompatible)(destChainInfo) || (0, _utils2._isChainSubstrateCompatible)(destChainInfo) || (0, _utils2._isChainTonCompatible)(destChainInfo) || (0, _utils2._isChainCardanoCompatible)(destChainInfo) || (0, _utils2._isChainBitcoinCompatible)(destChainInfo)) {
|
|
77
79
|
return 'Recipient address must be the same type as sender address';
|
|
78
80
|
}
|
|
79
81
|
return 'Unknown chain type';
|
|
@@ -114,6 +116,18 @@ function _isValidCardanoAddressFormat(validateRecipientParams) {
|
|
|
114
116
|
}
|
|
115
117
|
return '';
|
|
116
118
|
}
|
|
119
|
+
function _isValidBitcoinAddressFormat(validateRecipientParams) {
|
|
120
|
+
var _destChainInfo$bitcoi;
|
|
121
|
+
const {
|
|
122
|
+
destChainInfo,
|
|
123
|
+
toAddress
|
|
124
|
+
} = validateRecipientParams;
|
|
125
|
+
const addressInfo = (0, _utils4.validateBitcoinAddress)(toAddress) ? (0, _utils4.getBitcoinAddressInfo)(toAddress) : null;
|
|
126
|
+
if ((addressInfo === null || addressInfo === void 0 ? void 0 : addressInfo.network) !== ((_destChainInfo$bitcoi = destChainInfo.bitcoinInfo) === null || _destChainInfo$bitcoi === void 0 ? void 0 : _destChainInfo$bitcoi.bitcoinNetwork)) {
|
|
127
|
+
return `Recipient address must be a valid ${destChainInfo.name} address`;
|
|
128
|
+
}
|
|
129
|
+
return '';
|
|
130
|
+
}
|
|
117
131
|
function _isNotDuplicateAddress(validateRecipientParams) {
|
|
118
132
|
const {
|
|
119
133
|
fromAddress,
|