@ledgerhq/coin-cardano 0.1.0-next.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/.eslintrc.js +20 -0
- package/.turbo/turbo-build.log +4 -0
- package/.unimportedrc.json +35 -0
- package/CHANGELOG.md +19 -0
- package/LICENSE.txt +21 -0
- package/jest.config.js +8 -0
- package/lib/account.d.ts +7 -0
- package/lib/account.d.ts.map +1 -0
- package/lib/account.js +41 -0
- package/lib/account.js.map +1 -0
- package/lib/address.unit.test.d.ts +2 -0
- package/lib/address.unit.test.d.ts.map +1 -0
- package/lib/address.unit.test.js +21 -0
- package/lib/address.unit.test.js.map +1 -0
- package/lib/api/api-types.d.ts +106 -0
- package/lib/api/api-types.d.ts.map +1 -0
- package/lib/api/api-types.js +9 -0
- package/lib/api/api-types.js.map +1 -0
- package/lib/api/getDelegationInfo.d.ts +4 -0
- package/lib/api/getDelegationInfo.d.ts.map +1 -0
- package/lib/api/getDelegationInfo.js +48 -0
- package/lib/api/getDelegationInfo.js.map +1 -0
- package/lib/api/getNetworkInfo.d.ts +5 -0
- package/lib/api/getNetworkInfo.d.ts.map +1 -0
- package/lib/api/getNetworkInfo.js +46 -0
- package/lib/api/getNetworkInfo.js.map +1 -0
- package/lib/api/getPools.d.ts +5 -0
- package/lib/api/getPools.d.ts.map +1 -0
- package/lib/api/getPools.js +45 -0
- package/lib/api/getPools.js.map +1 -0
- package/lib/api/getTransactions.d.ts +10 -0
- package/lib/api/getTransactions.d.ts.map +1 -0
- package/lib/api/getTransactions.js +139 -0
- package/lib/api/getTransactions.js.map +1 -0
- package/lib/api/submitTransaction.d.ts +7 -0
- package/lib/api/submitTransaction.d.ts.map +1 -0
- package/lib/api/submitTransaction.js +34 -0
- package/lib/api/submitTransaction.js.map +1 -0
- package/lib/bridge/index.d.ts +11 -0
- package/lib/bridge/index.d.ts.map +1 -0
- package/lib/bridge/index.js +70 -0
- package/lib/bridge/index.js.map +1 -0
- package/lib/bridge.integration.test.d.ts +4 -0
- package/lib/bridge.integration.test.d.ts.map +1 -0
- package/lib/bridge.integration.test.js +113 -0
- package/lib/bridge.integration.test.js.map +1 -0
- package/lib/broadcast.d.ts +8 -0
- package/lib/broadcast.d.ts.map +1 -0
- package/lib/broadcast.js +28 -0
- package/lib/broadcast.js.map +1 -0
- package/lib/buildOptimisticOperation.d.ts +4 -0
- package/lib/buildOptimisticOperation.d.ts.map +1 -0
- package/lib/buildOptimisticOperation.js +125 -0
- package/lib/buildOptimisticOperation.js.map +1 -0
- package/lib/buildSubAccounts.d.ts +26 -0
- package/lib/buildSubAccounts.d.ts.map +1 -0
- package/lib/buildSubAccounts.js +124 -0
- package/lib/buildSubAccounts.js.map +1 -0
- package/lib/buildTransaction.d.ts +11 -0
- package/lib/buildTransaction.d.ts.map +1 -0
- package/lib/buildTransaction.js +342 -0
- package/lib/buildTransaction.js.map +1 -0
- package/lib/cli-transaction.d.ts +18 -0
- package/lib/cli-transaction.d.ts.map +1 -0
- package/lib/cli-transaction.js +66 -0
- package/lib/cli-transaction.js.map +1 -0
- package/lib/constants.d.ts +8 -0
- package/lib/constants.d.ts.map +1 -0
- package/lib/constants.js +12 -0
- package/lib/constants.js.map +1 -0
- package/lib/createTransaction.d.ts +9 -0
- package/lib/createTransaction.d.ts.map +1 -0
- package/lib/createTransaction.js +23 -0
- package/lib/createTransaction.js.map +1 -0
- package/lib/datasets/rawAccount.1.d.ts +3 -0
- package/lib/datasets/rawAccount.1.d.ts.map +1 -0
- package/lib/datasets/rawAccount.1.js +20 -0
- package/lib/datasets/rawAccount.1.js.map +1 -0
- package/lib/datasets/scanAccounts.d.ts +5 -0
- package/lib/datasets/scanAccounts.d.ts.map +1 -0
- package/lib/datasets/scanAccounts.js +27 -0
- package/lib/datasets/scanAccounts.js.map +1 -0
- package/lib/deviceTransactionConfig.d.ts +11 -0
- package/lib/deviceTransactionConfig.d.ts.map +1 -0
- package/lib/deviceTransactionConfig.js +106 -0
- package/lib/deviceTransactionConfig.js.map +1 -0
- package/lib/errors.d.ts +22 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +18 -0
- package/lib/errors.js.map +1 -0
- package/lib/estimateMaxSpendable.d.ts +9 -0
- package/lib/estimateMaxSpendable.d.ts.map +1 -0
- package/lib/estimateMaxSpendable.js +53 -0
- package/lib/estimateMaxSpendable.js.map +1 -0
- package/lib/getTransactionStatus.d.ts +4 -0
- package/lib/getTransactionStatus.d.ts.map +1 -0
- package/lib/getTransactionStatus.js +214 -0
- package/lib/getTransactionStatus.js.map +1 -0
- package/lib/getTransactionStatus.unit.test.d.ts +2 -0
- package/lib/getTransactionStatus.unit.test.d.ts.map +1 -0
- package/lib/getTransactionStatus.unit.test.js +54 -0
- package/lib/getTransactionStatus.unit.test.js.map +1 -0
- package/lib/hw-getAddress.d.ts +6 -0
- package/lib/hw-getAddress.d.ts.map +1 -0
- package/lib/hw-getAddress.js +37 -0
- package/lib/hw-getAddress.js.map +1 -0
- package/lib/logic.d.ts +88 -0
- package/lib/logic.d.ts.map +1 -0
- package/lib/logic.js +264 -0
- package/lib/logic.js.map +1 -0
- package/lib/logic.unit.test.d.ts +2 -0
- package/lib/logic.unit.test.d.ts.map +1 -0
- package/lib/logic.unit.test.js +40 -0
- package/lib/logic.unit.test.js.map +1 -0
- package/lib/networks.d.ts +3 -0
- package/lib/networks.d.ts.map +1 -0
- package/lib/networks.js +36 -0
- package/lib/networks.js.map +1 -0
- package/lib/postSyncPatch.d.ts +6 -0
- package/lib/postSyncPatch.d.ts.map +1 -0
- package/lib/postSyncPatch.js +35 -0
- package/lib/postSyncPatch.js.map +1 -0
- package/lib/prepareTransaction.d.ts +10 -0
- package/lib/prepareTransaction.d.ts.map +1 -0
- package/lib/prepareTransaction.js +44 -0
- package/lib/prepareTransaction.js.map +1 -0
- package/lib/serialization.d.ts +7 -0
- package/lib/serialization.d.ts.map +1 -0
- package/lib/serialization.js +146 -0
- package/lib/serialization.js.map +1 -0
- package/lib/signOperation.d.ts +9 -0
- package/lib/signOperation.d.ts.map +1 -0
- package/lib/signOperation.js +71 -0
- package/lib/signOperation.js.map +1 -0
- package/lib/signer.d.ts +92 -0
- package/lib/signer.d.ts.map +1 -0
- package/lib/signer.js +3 -0
- package/lib/signer.js.map +1 -0
- package/lib/specs.d.ts +7 -0
- package/lib/specs.d.ts.map +1 -0
- package/lib/specs.js +218 -0
- package/lib/specs.js.map +1 -0
- package/lib/speculos-deviceActions.d.ts +4 -0
- package/lib/speculos-deviceActions.d.ts.map +1 -0
- package/lib/speculos-deviceActions.js +128 -0
- package/lib/speculos-deviceActions.js.map +1 -0
- package/lib/synchronisation.d.ts +6 -0
- package/lib/synchronisation.d.ts.map +1 -0
- package/lib/synchronisation.js +237 -0
- package/lib/synchronisation.js.map +1 -0
- package/lib/synchronisation.unit.test.d.ts +2 -0
- package/lib/synchronisation.unit.test.d.ts.map +1 -0
- package/lib/synchronisation.unit.test.js +129 -0
- package/lib/synchronisation.unit.test.js.map +1 -0
- package/lib/transaction.d.ts +15 -0
- package/lib/transaction.d.ts.map +1 -0
- package/lib/transaction.js +43 -0
- package/lib/transaction.js.map +1 -0
- package/lib/types.d.ts +188 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +18 -0
- package/lib/types.js.map +1 -0
- package/lib/typhonSerializer.d.ts +17 -0
- package/lib/typhonSerializer.d.ts.map +1 -0
- package/lib/typhonSerializer.js +213 -0
- package/lib/typhonSerializer.js.map +1 -0
- package/lib/utils.d.ts +2 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +8 -0
- package/lib/utils.js.map +1 -0
- package/lib-es/account.d.ts +7 -0
- package/lib-es/account.d.ts.map +1 -0
- package/lib-es/account.js +34 -0
- package/lib-es/account.js.map +1 -0
- package/lib-es/address.unit.test.d.ts +2 -0
- package/lib-es/address.unit.test.d.ts.map +1 -0
- package/lib-es/address.unit.test.js +19 -0
- package/lib-es/address.unit.test.js.map +1 -0
- package/lib-es/api/api-types.d.ts +106 -0
- package/lib-es/api/api-types.d.ts.map +1 -0
- package/lib-es/api/api-types.js +6 -0
- package/lib-es/api/api-types.js.map +1 -0
- package/lib-es/api/getDelegationInfo.d.ts +4 -0
- package/lib-es/api/getDelegationInfo.d.ts.map +1 -0
- package/lib-es/api/getDelegationInfo.js +41 -0
- package/lib-es/api/getDelegationInfo.js.map +1 -0
- package/lib-es/api/getNetworkInfo.d.ts +5 -0
- package/lib-es/api/getNetworkInfo.d.ts.map +1 -0
- package/lib-es/api/getNetworkInfo.js +39 -0
- package/lib-es/api/getNetworkInfo.js.map +1 -0
- package/lib-es/api/getPools.d.ts +5 -0
- package/lib-es/api/getPools.d.ts.map +1 -0
- package/lib-es/api/getPools.js +37 -0
- package/lib-es/api/getPools.js.map +1 -0
- package/lib-es/api/getTransactions.d.ts +10 -0
- package/lib-es/api/getTransactions.d.ts.map +1 -0
- package/lib-es/api/getTransactions.js +132 -0
- package/lib-es/api/getTransactions.js.map +1 -0
- package/lib-es/api/submitTransaction.d.ts +7 -0
- package/lib-es/api/submitTransaction.d.ts.map +1 -0
- package/lib-es/api/submitTransaction.js +27 -0
- package/lib-es/api/submitTransaction.js.map +1 -0
- package/lib-es/bridge/index.d.ts +11 -0
- package/lib-es/bridge/index.d.ts.map +1 -0
- package/lib-es/bridge/index.js +61 -0
- package/lib-es/bridge/index.js.map +1 -0
- package/lib-es/bridge.integration.test.d.ts +4 -0
- package/lib-es/bridge.integration.test.d.ts.map +1 -0
- package/lib-es/bridge.integration.test.js +107 -0
- package/lib-es/bridge.integration.test.js.map +1 -0
- package/lib-es/broadcast.d.ts +8 -0
- package/lib-es/broadcast.d.ts.map +1 -0
- package/lib-es/broadcast.js +24 -0
- package/lib-es/broadcast.js.map +1 -0
- package/lib-es/buildOptimisticOperation.d.ts +4 -0
- package/lib-es/buildOptimisticOperation.d.ts.map +1 -0
- package/lib-es/buildOptimisticOperation.js +118 -0
- package/lib-es/buildOptimisticOperation.js.map +1 -0
- package/lib-es/buildSubAccounts.d.ts +26 -0
- package/lib-es/buildSubAccounts.d.ts.map +1 -0
- package/lib-es/buildSubAccounts.js +114 -0
- package/lib-es/buildSubAccounts.js.map +1 -0
- package/lib-es/buildTransaction.d.ts +11 -0
- package/lib-es/buildTransaction.d.ts.map +1 -0
- package/lib-es/buildTransaction.js +335 -0
- package/lib-es/buildTransaction.js.map +1 -0
- package/lib-es/cli-transaction.d.ts +18 -0
- package/lib-es/cli-transaction.d.ts.map +1 -0
- package/lib-es/cli-transaction.js +60 -0
- package/lib-es/cli-transaction.js.map +1 -0
- package/lib-es/constants.d.ts +8 -0
- package/lib-es/constants.d.ts.map +1 -0
- package/lib-es/constants.js +9 -0
- package/lib-es/constants.js.map +1 -0
- package/lib-es/createTransaction.d.ts +9 -0
- package/lib-es/createTransaction.d.ts.map +1 -0
- package/lib-es/createTransaction.js +16 -0
- package/lib-es/createTransaction.js.map +1 -0
- package/lib-es/datasets/rawAccount.1.d.ts +3 -0
- package/lib-es/datasets/rawAccount.1.d.ts.map +1 -0
- package/lib-es/datasets/rawAccount.1.js +17 -0
- package/lib-es/datasets/rawAccount.1.js.map +1 -0
- package/lib-es/datasets/scanAccounts.d.ts +5 -0
- package/lib-es/datasets/scanAccounts.d.ts.map +1 -0
- package/lib-es/datasets/scanAccounts.js +24 -0
- package/lib-es/datasets/scanAccounts.js.map +1 -0
- package/lib-es/deviceTransactionConfig.d.ts +11 -0
- package/lib-es/deviceTransactionConfig.d.ts.map +1 -0
- package/lib-es/deviceTransactionConfig.js +101 -0
- package/lib-es/deviceTransactionConfig.js.map +1 -0
- package/lib-es/errors.d.ts +22 -0
- package/lib-es/errors.d.ts.map +1 -0
- package/lib-es/errors.js +15 -0
- package/lib-es/errors.js.map +1 -0
- package/lib-es/estimateMaxSpendable.d.ts +9 -0
- package/lib-es/estimateMaxSpendable.d.ts.map +1 -0
- package/lib-es/estimateMaxSpendable.js +49 -0
- package/lib-es/estimateMaxSpendable.js.map +1 -0
- package/lib-es/getTransactionStatus.d.ts +4 -0
- package/lib-es/getTransactionStatus.d.ts.map +1 -0
- package/lib-es/getTransactionStatus.js +210 -0
- package/lib-es/getTransactionStatus.js.map +1 -0
- package/lib-es/getTransactionStatus.unit.test.d.ts +2 -0
- package/lib-es/getTransactionStatus.unit.test.d.ts.map +1 -0
- package/lib-es/getTransactionStatus.unit.test.js +49 -0
- package/lib-es/getTransactionStatus.unit.test.js.map +1 -0
- package/lib-es/hw-getAddress.d.ts +6 -0
- package/lib-es/hw-getAddress.d.ts.map +1 -0
- package/lib-es/hw-getAddress.js +35 -0
- package/lib-es/hw-getAddress.js.map +1 -0
- package/lib-es/logic.d.ts +88 -0
- package/lib-es/logic.d.ts.map +1 -0
- package/lib-es/logic.js +236 -0
- package/lib-es/logic.js.map +1 -0
- package/lib-es/logic.unit.test.d.ts +2 -0
- package/lib-es/logic.unit.test.d.ts.map +1 -0
- package/lib-es/logic.unit.test.js +35 -0
- package/lib-es/logic.unit.test.js.map +1 -0
- package/lib-es/networks.d.ts +3 -0
- package/lib-es/networks.d.ts.map +1 -0
- package/lib-es/networks.js +32 -0
- package/lib-es/networks.js.map +1 -0
- package/lib-es/postSyncPatch.d.ts +6 -0
- package/lib-es/postSyncPatch.d.ts.map +1 -0
- package/lib-es/postSyncPatch.js +31 -0
- package/lib-es/postSyncPatch.js.map +1 -0
- package/lib-es/prepareTransaction.d.ts +10 -0
- package/lib-es/prepareTransaction.d.ts.map +1 -0
- package/lib-es/prepareTransaction.js +40 -0
- package/lib-es/prepareTransaction.js.map +1 -0
- package/lib-es/serialization.d.ts +7 -0
- package/lib-es/serialization.d.ts.map +1 -0
- package/lib-es/serialization.js +139 -0
- package/lib-es/serialization.js.map +1 -0
- package/lib-es/signOperation.d.ts +9 -0
- package/lib-es/signOperation.d.ts.map +1 -0
- package/lib-es/signOperation.js +64 -0
- package/lib-es/signOperation.js.map +1 -0
- package/lib-es/signer.d.ts +92 -0
- package/lib-es/signer.d.ts.map +1 -0
- package/lib-es/signer.js +2 -0
- package/lib-es/signer.js.map +1 -0
- package/lib-es/specs.d.ts +7 -0
- package/lib-es/specs.d.ts.map +1 -0
- package/lib-es/specs.js +213 -0
- package/lib-es/specs.js.map +1 -0
- package/lib-es/speculos-deviceActions.d.ts +4 -0
- package/lib-es/speculos-deviceActions.d.ts.map +1 -0
- package/lib-es/speculos-deviceActions.js +125 -0
- package/lib-es/speculos-deviceActions.js.map +1 -0
- package/lib-es/synchronisation.d.ts +6 -0
- package/lib-es/synchronisation.d.ts.map +1 -0
- package/lib-es/synchronisation.js +230 -0
- package/lib-es/synchronisation.js.map +1 -0
- package/lib-es/synchronisation.unit.test.d.ts +2 -0
- package/lib-es/synchronisation.unit.test.d.ts.map +1 -0
- package/lib-es/synchronisation.unit.test.js +124 -0
- package/lib-es/synchronisation.unit.test.js.map +1 -0
- package/lib-es/transaction.d.ts +15 -0
- package/lib-es/transaction.d.ts.map +1 -0
- package/lib-es/transaction.js +37 -0
- package/lib-es/transaction.js.map +1 -0
- package/lib-es/types.d.ts +188 -0
- package/lib-es/types.d.ts.map +1 -0
- package/lib-es/types.js +15 -0
- package/lib-es/types.js.map +1 -0
- package/lib-es/typhonSerializer.d.ts +17 -0
- package/lib-es/typhonSerializer.d.ts.map +1 -0
- package/lib-es/typhonSerializer.js +207 -0
- package/lib-es/typhonSerializer.js.map +1 -0
- package/lib-es/utils.d.ts +2 -0
- package/lib-es/utils.d.ts.map +1 -0
- package/lib-es/utils.js +5 -0
- package/lib-es/utils.js.map +1 -0
- package/package.json +91 -0
- package/src/account.ts +39 -0
- package/src/address.unit.test.ts +32 -0
- package/src/api/api-types.ts +115 -0
- package/src/api/getDelegationInfo.ts +39 -0
- package/src/api/getNetworkInfo.ts +34 -0
- package/src/api/getPools.ts +35 -0
- package/src/api/getTransactions.ts +218 -0
- package/src/api/submitTransaction.ts +24 -0
- package/src/bridge/index.ts +69 -0
- package/src/bridge.integration.test.ts +113 -0
- package/src/broadcast.ts +21 -0
- package/src/buildOptimisticOperation.ts +181 -0
- package/src/buildSubAccounts.ts +170 -0
- package/src/buildTransaction.ts +435 -0
- package/src/cli-transaction.ts +82 -0
- package/src/constants.ts +10 -0
- package/src/createTransaction.ts +18 -0
- package/src/datasets/rawAccount.1.ts +19 -0
- package/src/datasets/scanAccounts.ts +23 -0
- package/src/deviceTransactionConfig.ts +128 -0
- package/src/errors.ts +18 -0
- package/src/estimateMaxSpendable.ts +61 -0
- package/src/getTransactionStatus.ts +251 -0
- package/src/getTransactionStatus.unit.test.ts +45 -0
- package/src/hw-getAddress.ts +37 -0
- package/src/logic.ts +330 -0
- package/src/logic.unit.test.ts +39 -0
- package/src/networks.ts +33 -0
- package/src/postSyncPatch.ts +42 -0
- package/src/prepareTransaction.ts +41 -0
- package/src/serialization.ts +219 -0
- package/src/signOperation.ts +82 -0
- package/src/signer.ts +98 -0
- package/src/specs.ts +253 -0
- package/src/speculos-deviceActions.ts +132 -0
- package/src/synchronisation.ts +347 -0
- package/src/synchronisation.unit.test.ts +137 -0
- package/src/transaction.ts +66 -0
- package/src/types.ts +227 -0
- package/src/typhonSerializer.ts +259 -0
- package/src/utils.ts +4 -0
- package/tsconfig.json +12 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { types as TyphonTypes, address as TyphonAddress } from "@stricahq/typhonjs";
|
|
2
|
+
import { CardanoAccount, BipPath, PaymentChain, PaymentCredential, StakeChain, StakeCredential, Token } from "./types";
|
|
3
|
+
import { Bip32PublicKey } from "@stricahq/bip32ed25519";
|
|
4
|
+
import BigNumber from "bignumber.js";
|
|
5
|
+
import { APITransaction } from "./api/api-types";
|
|
6
|
+
import type { OperationType } from "@ledgerhq/types-live";
|
|
7
|
+
import type { CryptoCurrency } from "@ledgerhq/types-cryptoassets";
|
|
8
|
+
/**
|
|
9
|
+
* returns BipPath object with account, chain and index field for cardano
|
|
10
|
+
*
|
|
11
|
+
* @param {string} path
|
|
12
|
+
*/
|
|
13
|
+
export declare function getBipPathFromString(path: string): BipPath;
|
|
14
|
+
/**
|
|
15
|
+
*
|
|
16
|
+
* @returns true if the account can stake, false otherwise
|
|
17
|
+
*/
|
|
18
|
+
export declare function canStake(account: CardanoAccount): boolean;
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @returns true if account is staked, false otherwise
|
|
22
|
+
*/
|
|
23
|
+
export declare function isAlreadyStaking(account: CardanoAccount): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* returns complete bipPath with purpose, coin, account, chain and index for cardano
|
|
26
|
+
*/
|
|
27
|
+
export declare function getBipPath({ account, chain, index, }: {
|
|
28
|
+
account: number;
|
|
29
|
+
chain: PaymentChain | StakeChain;
|
|
30
|
+
index: number;
|
|
31
|
+
}): BipPath;
|
|
32
|
+
/**
|
|
33
|
+
* returns bipPathString from account, chain and index for cardano
|
|
34
|
+
*/
|
|
35
|
+
export declare function getBipPathString({ account, chain, index, }: {
|
|
36
|
+
account: number;
|
|
37
|
+
chain: number;
|
|
38
|
+
index: number;
|
|
39
|
+
}): string;
|
|
40
|
+
export declare function getExtendedPublicKeyFromHex(keyHex: string): Bip32PublicKey;
|
|
41
|
+
export declare function getCredentialKey(accountKey: Bip32PublicKey, path: BipPath): {
|
|
42
|
+
key: string;
|
|
43
|
+
path: BipPath;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* returns cardano base address by paymentKey and stakeKey
|
|
47
|
+
*/
|
|
48
|
+
export declare function getBaseAddress({ networkId, paymentCred, stakeCred, }: {
|
|
49
|
+
networkId: number;
|
|
50
|
+
paymentCred: PaymentCredential;
|
|
51
|
+
stakeCred: StakeCredential;
|
|
52
|
+
}): TyphonAddress.BaseAddress;
|
|
53
|
+
/**
|
|
54
|
+
* Returns true if address is a valid
|
|
55
|
+
*
|
|
56
|
+
* @param {string} address
|
|
57
|
+
*/
|
|
58
|
+
export declare const isValidAddress: (address: string, networkId: number) => boolean;
|
|
59
|
+
export declare const getAbsoluteSlot: (networkName: string, time: Date) => number;
|
|
60
|
+
/**
|
|
61
|
+
* Returns the time to live for transaction
|
|
62
|
+
*
|
|
63
|
+
* @returns {number}
|
|
64
|
+
*/
|
|
65
|
+
export declare function getTTL(networkName: string): number;
|
|
66
|
+
export declare function getEpoch(networkName: string, time: Date): number;
|
|
67
|
+
export declare function mergeTokens(tokens: Array<TyphonTypes.Token>): Array<TyphonTypes.Token>;
|
|
68
|
+
/**
|
|
69
|
+
* @param { Array<TyphonTypes.Token> } b
|
|
70
|
+
* @param { Array<TyphonTypes.Token> } a
|
|
71
|
+
* @returns a - b
|
|
72
|
+
*/
|
|
73
|
+
export declare function getTokenDiff(a: Array<TyphonTypes.Token>, b: Array<TyphonTypes.Token>): Array<TyphonTypes.Token>;
|
|
74
|
+
export declare function getAccountStakeCredential(xpub: string, index: number): StakeCredential;
|
|
75
|
+
export declare function getOperationType({ valueChange, fees, }: {
|
|
76
|
+
valueChange: BigNumber;
|
|
77
|
+
fees: BigNumber;
|
|
78
|
+
}): OperationType;
|
|
79
|
+
export declare function isTestnet(currency: CryptoCurrency): boolean;
|
|
80
|
+
export declare function getAccountChange(t: APITransaction, accountCredentialsMap: Record<string, PaymentCredential>): {
|
|
81
|
+
ada: BigNumber;
|
|
82
|
+
tokens: Array<Token>;
|
|
83
|
+
};
|
|
84
|
+
export declare function getMemoFromTx(tx: APITransaction): string | undefined;
|
|
85
|
+
export declare function isHexString(value: string): boolean;
|
|
86
|
+
export declare function decodeTokenName(assetName: string): string;
|
|
87
|
+
export declare function getBech32PoolId(poolId: string, networkName: string): string;
|
|
88
|
+
//# sourceMappingURL=logic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"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"}
|
package/lib-es/logic.js
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { CARDANO_COIN_TYPE, CARDANO_PURPOSE, MEMO_LABEL, STAKING_ADDRESS_INDEX, TTL_GAP, } from "./constants";
|
|
2
|
+
import { utils as TyphonUtils, types as TyphonTypes, address as TyphonAddress, } from "@stricahq/typhonjs";
|
|
3
|
+
import { StakeChain, } from "./types";
|
|
4
|
+
import { Bip32PublicKey } from "@stricahq/bip32ed25519";
|
|
5
|
+
import BigNumber from "bignumber.js";
|
|
6
|
+
import { getNetworkParameters } from "./networks";
|
|
7
|
+
import groupBy from "lodash/groupBy";
|
|
8
|
+
import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets";
|
|
9
|
+
import ShelleyTypeAddress from "@stricahq/typhonjs/dist/address/ShelleyTypeAddress";
|
|
10
|
+
import bech32 from "bech32";
|
|
11
|
+
/**
|
|
12
|
+
* returns BipPath object with account, chain and index field for cardano
|
|
13
|
+
*
|
|
14
|
+
* @param {string} path
|
|
15
|
+
*/
|
|
16
|
+
export function getBipPathFromString(path) {
|
|
17
|
+
const regEx = new RegExp(`^${CARDANO_PURPOSE}'/${CARDANO_COIN_TYPE}'/(\\d*)'/([012])/(\\d*)`);
|
|
18
|
+
const result = path.match(regEx);
|
|
19
|
+
if (result == null) {
|
|
20
|
+
throw new Error("Invalid derivation path");
|
|
21
|
+
}
|
|
22
|
+
return getBipPath({
|
|
23
|
+
account: parseInt(result[1]),
|
|
24
|
+
chain: parseInt(result[2]),
|
|
25
|
+
index: parseInt(result[3]),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
* @returns true if the account can stake, false otherwise
|
|
31
|
+
*/
|
|
32
|
+
export function canStake(account) {
|
|
33
|
+
return account.balance.gt(0);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @returns true if account is staked, false otherwise
|
|
38
|
+
*/
|
|
39
|
+
export function isAlreadyStaking(account) {
|
|
40
|
+
var _a, _b;
|
|
41
|
+
return !!((_b = (_a = account.cardanoResources) === null || _a === void 0 ? void 0 : _a.delegation) === null || _b === void 0 ? void 0 : _b.poolId);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* returns complete bipPath with purpose, coin, account, chain and index for cardano
|
|
45
|
+
*/
|
|
46
|
+
export function getBipPath({ account, chain, index, }) {
|
|
47
|
+
return {
|
|
48
|
+
purpose: CARDANO_PURPOSE,
|
|
49
|
+
coin: CARDANO_COIN_TYPE,
|
|
50
|
+
account,
|
|
51
|
+
chain,
|
|
52
|
+
index,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* returns bipPathString from account, chain and index for cardano
|
|
57
|
+
*/
|
|
58
|
+
export function getBipPathString({ account, chain, index, }) {
|
|
59
|
+
return `${CARDANO_PURPOSE}'/${CARDANO_COIN_TYPE}'/${account}'/${chain}/${index}`;
|
|
60
|
+
}
|
|
61
|
+
export function getExtendedPublicKeyFromHex(keyHex) {
|
|
62
|
+
return Bip32PublicKey.fromBytes(Buffer.from(keyHex, "hex"));
|
|
63
|
+
}
|
|
64
|
+
export function getCredentialKey(accountKey, path) {
|
|
65
|
+
const keyBytes = accountKey.derive(path.chain).derive(path.index).toPublicKey().hash();
|
|
66
|
+
const pubKeyHex = keyBytes.toString("hex");
|
|
67
|
+
return {
|
|
68
|
+
key: pubKeyHex,
|
|
69
|
+
path,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* returns cardano base address by paymentKey and stakeKey
|
|
74
|
+
*/
|
|
75
|
+
export function getBaseAddress({ networkId, paymentCred, stakeCred, }) {
|
|
76
|
+
const paymentCredential = {
|
|
77
|
+
hash: paymentCred.key,
|
|
78
|
+
type: TyphonTypes.HashType.ADDRESS,
|
|
79
|
+
bipPath: paymentCred.path,
|
|
80
|
+
};
|
|
81
|
+
const stakeCredential = {
|
|
82
|
+
hash: stakeCred.key,
|
|
83
|
+
type: TyphonTypes.HashType.ADDRESS,
|
|
84
|
+
bipPath: stakeCred.path,
|
|
85
|
+
};
|
|
86
|
+
return new TyphonAddress.BaseAddress(networkId, paymentCredential, stakeCredential);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Returns true if address is a valid
|
|
90
|
+
*
|
|
91
|
+
* @param {string} address
|
|
92
|
+
*/
|
|
93
|
+
export const isValidAddress = (address, networkId) => {
|
|
94
|
+
if (!address)
|
|
95
|
+
return false;
|
|
96
|
+
try {
|
|
97
|
+
const cardanoAddress = TyphonUtils.getAddressFromBech32(address);
|
|
98
|
+
if (cardanoAddress instanceof ShelleyTypeAddress) {
|
|
99
|
+
const addressNetworkId = Number(cardanoAddress.getHex().toLowerCase().charAt(1));
|
|
100
|
+
if (addressNetworkId !== networkId) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
};
|
|
110
|
+
export const getAbsoluteSlot = function (networkName, time) {
|
|
111
|
+
const networkParams = getNetworkParameters(networkName);
|
|
112
|
+
const byronChainEndSlots = networkParams.shelleyStartEpoch * networkParams.byronSlotsPerEpoch;
|
|
113
|
+
const byronChainEndTime = byronChainEndSlots * networkParams.byronSlotDuration;
|
|
114
|
+
const shelleyChainTime = time.getTime() - networkParams.chainStartTime - byronChainEndTime;
|
|
115
|
+
const shelleyChainSlots = Math.floor(shelleyChainTime / networkParams.shelleySlotDuration);
|
|
116
|
+
return byronChainEndSlots + shelleyChainSlots;
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Returns the time to live for transaction
|
|
120
|
+
*
|
|
121
|
+
* @returns {number}
|
|
122
|
+
*/
|
|
123
|
+
export function getTTL(networkName) {
|
|
124
|
+
return getAbsoluteSlot(networkName, new Date()) + TTL_GAP;
|
|
125
|
+
}
|
|
126
|
+
export function getEpoch(networkName, time) {
|
|
127
|
+
const networkParams = getNetworkParameters(networkName);
|
|
128
|
+
const chainTime = time.getTime() - networkParams.chainStartTime;
|
|
129
|
+
const epoch = Math.floor(chainTime / (networkParams.shelleySlotsPerEpoch * networkParams.shelleySlotDuration));
|
|
130
|
+
return epoch;
|
|
131
|
+
}
|
|
132
|
+
export function mergeTokens(tokens) {
|
|
133
|
+
return Object.values(groupBy(tokens, t => `${t.policyId}${t.assetName}`)).map(similarTokens => ({
|
|
134
|
+
policyId: similarTokens[0].policyId,
|
|
135
|
+
assetName: similarTokens[0].assetName,
|
|
136
|
+
amount: similarTokens.reduce((total, token) => total.plus(token.amount), new BigNumber(0)),
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* @param { Array<TyphonTypes.Token> } b
|
|
141
|
+
* @param { Array<TyphonTypes.Token> } a
|
|
142
|
+
* @returns a - b
|
|
143
|
+
*/
|
|
144
|
+
export function getTokenDiff(a, b) {
|
|
145
|
+
return mergeTokens(a.concat(b.map(t => (Object.assign(Object.assign({}, t), { amount: t.amount.negated() }))))).filter(t => !t.amount.eq(0));
|
|
146
|
+
}
|
|
147
|
+
export function getAccountStakeCredential(xpub, index) {
|
|
148
|
+
const accountXPubKey = getExtendedPublicKeyFromHex(xpub);
|
|
149
|
+
const keyPath = getCredentialKey(accountXPubKey, getBipPath({
|
|
150
|
+
account: index,
|
|
151
|
+
chain: StakeChain.stake,
|
|
152
|
+
index: STAKING_ADDRESS_INDEX,
|
|
153
|
+
}));
|
|
154
|
+
return {
|
|
155
|
+
key: keyPath.key,
|
|
156
|
+
path: keyPath.path,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
export function getOperationType({ valueChange, fees, }) {
|
|
160
|
+
return valueChange.isNegative()
|
|
161
|
+
? valueChange.absoluteValue().eq(fees)
|
|
162
|
+
? "FEES"
|
|
163
|
+
: "OUT"
|
|
164
|
+
: valueChange.isPositive()
|
|
165
|
+
? "IN"
|
|
166
|
+
: "NONE";
|
|
167
|
+
}
|
|
168
|
+
export function isTestnet(currency) {
|
|
169
|
+
return getCryptoCurrencyById(currency.id).isTestnetFor ? true : false;
|
|
170
|
+
}
|
|
171
|
+
export function getAccountChange(t, accountCredentialsMap) {
|
|
172
|
+
let accountInputAda = new BigNumber(0);
|
|
173
|
+
const accountInputTokens = [];
|
|
174
|
+
t.inputs.forEach(i => {
|
|
175
|
+
if (accountCredentialsMap[i.paymentKey]) {
|
|
176
|
+
accountInputAda = accountInputAda.plus(i.value);
|
|
177
|
+
accountInputTokens.push(...i.tokens.map(t => ({
|
|
178
|
+
assetName: t.assetName,
|
|
179
|
+
policyId: t.policyId,
|
|
180
|
+
amount: new BigNumber(t.value),
|
|
181
|
+
})));
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
let accountOutputAda = new BigNumber(0);
|
|
185
|
+
const accountOutputTokens = [];
|
|
186
|
+
t.outputs.forEach(o => {
|
|
187
|
+
if (accountCredentialsMap[o.paymentKey]) {
|
|
188
|
+
accountOutputAda = accountOutputAda.plus(o.value);
|
|
189
|
+
accountOutputTokens.push(...o.tokens.map(t => ({
|
|
190
|
+
assetName: t.assetName,
|
|
191
|
+
policyId: t.policyId,
|
|
192
|
+
amount: new BigNumber(t.value),
|
|
193
|
+
})));
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
return {
|
|
197
|
+
ada: accountOutputAda.minus(accountInputAda),
|
|
198
|
+
tokens: getTokenDiff(accountOutputTokens, accountInputTokens),
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
export function getMemoFromTx(tx) {
|
|
202
|
+
var _a;
|
|
203
|
+
let memo;
|
|
204
|
+
const metadataValue = (_a = tx.metadata) === null || _a === void 0 ? void 0 : _a.data.find(m => m.label === MEMO_LABEL.toString());
|
|
205
|
+
if (metadataValue) {
|
|
206
|
+
try {
|
|
207
|
+
const parsedValue = JSON.parse(metadataValue.value);
|
|
208
|
+
if (parsedValue.msg && Array.isArray(parsedValue.msg) && parsedValue.msg.length) {
|
|
209
|
+
memo = parsedValue.msg.join(", ");
|
|
210
|
+
}
|
|
211
|
+
// eslint-disable-next-line no-empty
|
|
212
|
+
}
|
|
213
|
+
catch (e) { }
|
|
214
|
+
}
|
|
215
|
+
return memo;
|
|
216
|
+
}
|
|
217
|
+
export function isHexString(value) {
|
|
218
|
+
const regExp = /^[0-9a-fA-F]+$/;
|
|
219
|
+
return regExp.test(value);
|
|
220
|
+
}
|
|
221
|
+
export function decodeTokenName(assetName) {
|
|
222
|
+
if (assetName.length > 0) {
|
|
223
|
+
const bytes = [...Buffer.from(assetName, "hex")];
|
|
224
|
+
if (bytes.filter(byte => byte <= 32 || byte >= 127).length === 0) {
|
|
225
|
+
return String.fromCharCode(...bytes);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return assetName;
|
|
229
|
+
}
|
|
230
|
+
export function getBech32PoolId(poolId, networkName) {
|
|
231
|
+
const networkParams = getNetworkParameters(networkName);
|
|
232
|
+
const words = bech32.toWords(Buffer.from(poolId, "hex"));
|
|
233
|
+
const encoded = bech32.encode(networkParams.poolIdPrefix, words, 1000);
|
|
234
|
+
return encoded;
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=logic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logic.unit.test.d.ts","sourceRoot":"","sources":["../src/logic.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
2
|
+
import { canStake, isAlreadyStaking } from "./logic";
|
|
3
|
+
describe("canStake", () => {
|
|
4
|
+
it("should return false when acc has no funds", () => {
|
|
5
|
+
const accWithNoFunds = {
|
|
6
|
+
balance: new BigNumber(0),
|
|
7
|
+
};
|
|
8
|
+
expect(canStake(accWithNoFunds)).toEqual(false);
|
|
9
|
+
});
|
|
10
|
+
it("should return true when acc has funds", () => {
|
|
11
|
+
const accWithFunds = {
|
|
12
|
+
balance: new BigNumber(1),
|
|
13
|
+
};
|
|
14
|
+
expect(canStake(accWithFunds)).toEqual(true);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
describe("isAlreadyStaking", () => {
|
|
18
|
+
it("should return false when acc isn't delegating", () => {
|
|
19
|
+
const noResourcesAcc = {};
|
|
20
|
+
expect(isAlreadyStaking(noResourcesAcc)).toEqual(false);
|
|
21
|
+
const noDelegationAcc = {
|
|
22
|
+
cardanoResources: {},
|
|
23
|
+
};
|
|
24
|
+
expect(isAlreadyStaking(noDelegationAcc)).toEqual(false);
|
|
25
|
+
const noPoolIdAcc = { cardanoResources: { delegation: {} } };
|
|
26
|
+
expect(isAlreadyStaking(noPoolIdAcc)).toEqual(false);
|
|
27
|
+
});
|
|
28
|
+
it("should return true when acc is delegating", () => {
|
|
29
|
+
const noResourcesAcc = {
|
|
30
|
+
cardanoResources: { delegation: { poolId: "itspoolid" } },
|
|
31
|
+
};
|
|
32
|
+
expect(isAlreadyStaking(noResourcesAcc)).toEqual(true);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=logic.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logic.unit.test.js","sourceRoot":"","sources":["../src/logic.unit.test.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGrD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,cAAc,GAAG;YACrB,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;SACR,CAAC;QACpB,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,YAAY,GAAG;YACnB,OAAO,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;SACR,CAAC;QACpB,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,cAAc,GAAG,EAAoB,CAAC;QAC5C,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,eAAe,GAAG;YACtB,gBAAgB,EAAE,EAAE;SACH,CAAC;QACpB,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,EAAE,gBAAgB,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAoB,CAAC;QAC/E,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,cAAc,GAAG;YACrB,gBAAgB,EAAE,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;SACxC,CAAC;QACpB,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"networks.d.ts","sourceRoot":"","sources":["../src/networks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAE5D,eAAO,MAAM,oBAAoB,gBAAiB,MAAM,KAAG,4BA8B1D,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const getNetworkParameters = (networkName) => {
|
|
2
|
+
if (networkName === "cardano") {
|
|
3
|
+
return {
|
|
4
|
+
identifier: "cardano",
|
|
5
|
+
networkId: 1,
|
|
6
|
+
chainStartTime: 1506203091000,
|
|
7
|
+
byronSlotDuration: 20000,
|
|
8
|
+
byronSlotsPerEpoch: 21600,
|
|
9
|
+
shelleyStartEpoch: 208,
|
|
10
|
+
shelleySlotDuration: 1000,
|
|
11
|
+
shelleySlotsPerEpoch: 432000,
|
|
12
|
+
addressPrefix: "addr",
|
|
13
|
+
poolIdPrefix: "pool",
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
else if (networkName === "cardano_testnet") {
|
|
17
|
+
return {
|
|
18
|
+
identifier: "cardano_testnet",
|
|
19
|
+
networkId: 0,
|
|
20
|
+
chainStartTime: 1563999616000,
|
|
21
|
+
byronSlotDuration: 20000,
|
|
22
|
+
byronSlotsPerEpoch: 21600,
|
|
23
|
+
shelleyStartEpoch: 74,
|
|
24
|
+
shelleySlotDuration: 1000,
|
|
25
|
+
shelleySlotsPerEpoch: 432000,
|
|
26
|
+
addressPrefix: "addr_test",
|
|
27
|
+
poolIdPrefix: "pool",
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
throw new Error("No network parameters set for " + networkName);
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=networks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"networks.js","sourceRoot":"","sources":["../src/networks.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,WAAmB,EAAgC,EAAE;IACxF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACL,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,aAAa;YAC7B,iBAAiB,EAAE,KAAK;YACxB,kBAAkB,EAAE,KAAK;YACzB,iBAAiB,EAAE,GAAG;YACtB,mBAAmB,EAAE,IAAI;YACzB,oBAAoB,EAAE,MAAM;YAC5B,aAAa,EAAE,MAAM;YACrB,YAAY,EAAE,MAAM;SACrB,CAAC;IACJ,CAAC;SAAM,IAAI,WAAW,KAAK,iBAAiB,EAAE,CAAC;QAC7C,OAAO;YACL,UAAU,EAAE,iBAAiB;YAC7B,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,aAAa;YAC7B,iBAAiB,EAAE,KAAK;YACxB,kBAAkB,EAAE,KAAK;YACzB,iBAAiB,EAAE,EAAE;YACrB,mBAAmB,EAAE,IAAI;YACzB,oBAAoB,EAAE,MAAM;YAC5B,aAAa,EAAE,WAAW;YAC1B,YAAY,EAAE,MAAM;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,WAAW,CAAC,CAAC;AAClE,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code reference taken from src/families/ethereum/postSyncPatch.ts
|
|
3
|
+
*/
|
|
4
|
+
import { CardanoAccount } from "./types";
|
|
5
|
+
export declare const postSyncPatch: (initial: CardanoAccount, synced: CardanoAccount) => CardanoAccount;
|
|
6
|
+
//# sourceMappingURL=postSyncPatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postSyncPatch.d.ts","sourceRoot":"","sources":["../src/postSyncPatch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAsBzC,eAAO,MAAM,aAAa,YAAa,cAAc,UAAU,cAAc,KAAG,cAc/E,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code reference taken from src/families/ethereum/postSyncPatch.ts
|
|
3
|
+
*/
|
|
4
|
+
// we need to preserve ADA pendingOperations because there is no mempool to do this
|
|
5
|
+
// we assume we need to preserve until:
|
|
6
|
+
// - that txid appears in operations
|
|
7
|
+
const postSyncPatchGen = (initial, synced, parentPendingOperation) => {
|
|
8
|
+
const pendingOperations = initial.pendingOperations || [];
|
|
9
|
+
if (pendingOperations.length === 0)
|
|
10
|
+
return synced;
|
|
11
|
+
const { operations } = synced;
|
|
12
|
+
synced.pendingOperations = pendingOperations.filter(op => (!parentPendingOperation || // a child pending parent need to disappear if parent ada op disappear
|
|
13
|
+
parentPendingOperation.some(o => o.hash === op.hash)) &&
|
|
14
|
+
!operations.some(o => o.hash === op.hash));
|
|
15
|
+
return synced;
|
|
16
|
+
};
|
|
17
|
+
export const postSyncPatch = (initial, synced) => {
|
|
18
|
+
const acc = postSyncPatchGen(initial, synced);
|
|
19
|
+
const { subAccounts, pendingOperations } = acc;
|
|
20
|
+
const initialSubAccounts = initial.subAccounts;
|
|
21
|
+
if (subAccounts && initialSubAccounts) {
|
|
22
|
+
acc.subAccounts = subAccounts.map(subAccount => {
|
|
23
|
+
const initialSubAccount = initialSubAccounts.find(a => a.id === subAccount.id);
|
|
24
|
+
if (!initialSubAccount)
|
|
25
|
+
return subAccount;
|
|
26
|
+
return postSyncPatchGen(initialSubAccount, subAccount, pendingOperations);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return acc;
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=postSyncPatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postSyncPatch.js","sourceRoot":"","sources":["../src/postSyncPatch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,mFAAmF;AACnF,uCAAuC;AACvC,oCAAoC;AACpC,MAAM,gBAAgB,GAAG,CACvB,OAAU,EACV,MAAS,EACT,sBAAoC,EACjC,EAAE;IACL,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC;IAC1D,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAClD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CACjD,EAAE,CAAC,EAAE,CACH,CAAC,CAAC,sBAAsB,IAAI,sEAAsE;QAChG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,CAC5C,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAuB,EAAE,MAAsB,EAAkB,EAAE;IAC/F,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC;IAC/C,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAE/C,IAAI,WAAW,IAAI,kBAAkB,EAAE,CAAC;QACtC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC7C,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;YAC/E,IAAI,CAAC,iBAAiB;gBAAE,OAAO,UAAU,CAAC;YAC1C,OAAO,gBAAgB,CAAC,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CardanoAccount, Transaction } from "./types";
|
|
2
|
+
import { AccountBridge } from "@ledgerhq/types-live";
|
|
3
|
+
/**
|
|
4
|
+
* Prepare transaction before checking status
|
|
5
|
+
*
|
|
6
|
+
* @param {Account} account
|
|
7
|
+
* @param {Transaction} transaction
|
|
8
|
+
*/
|
|
9
|
+
export declare const prepareTransaction: AccountBridge<Transaction, CardanoAccount>["prepareTransaction"];
|
|
10
|
+
//# sourceMappingURL=prepareTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareTransaction.d.ts","sourceRoot":"","sources":["../src/prepareTransaction.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAC5C,WAAW,EACX,cAAc,CACf,CAAC,oBAAoB,CAuBrB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { BigNumber } from "bignumber.js";
|
|
11
|
+
import { types as TyphonTypes, address as TyphonAddress } from "@stricahq/typhonjs";
|
|
12
|
+
import { defaultUpdateTransaction } from "@ledgerhq/coin-framework/bridge/jsHelpers";
|
|
13
|
+
import { buildTransaction } from "./buildTransaction";
|
|
14
|
+
/**
|
|
15
|
+
* Prepare transaction before checking status
|
|
16
|
+
*
|
|
17
|
+
* @param {Account} account
|
|
18
|
+
* @param {Transaction} transaction
|
|
19
|
+
*/
|
|
20
|
+
export const prepareTransaction = (account, transaction) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
+
let patch = {};
|
|
22
|
+
try {
|
|
23
|
+
const cardanoTransaction = yield buildTransaction(account, transaction);
|
|
24
|
+
const transactionFees = cardanoTransaction.getFee();
|
|
25
|
+
const transactionAmount = transaction.subAccountId
|
|
26
|
+
? transaction.amount
|
|
27
|
+
: cardanoTransaction
|
|
28
|
+
.getOutputs()
|
|
29
|
+
.filter(o => !(o.address instanceof TyphonAddress.BaseAddress) ||
|
|
30
|
+
!(o.address.paymentCredential.type === TyphonTypes.HashType.ADDRESS) ||
|
|
31
|
+
o.address.paymentCredential.bipPath === undefined)
|
|
32
|
+
.reduce((total, o) => total.plus(o.amount), new BigNumber(0));
|
|
33
|
+
patch = { fees: transactionFees, amount: transactionAmount };
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
patch = { fees: new BigNumber(0), amount: transaction.amount };
|
|
37
|
+
}
|
|
38
|
+
return defaultUpdateTransaction(transaction, patch);
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=prepareTransaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareTransaction.js","sourceRoot":"","sources":["../src/prepareTransaction.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAGrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAGL,CAAO,OAAO,EAAE,WAAW,EAAE,EAAE;IACvD,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACxE,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC;QACpD,MAAM,iBAAiB,GAAG,WAAW,CAAC,YAAY;YAChD,CAAC,CAAC,WAAW,CAAC,MAAM;YACpB,CAAC,CAAC,kBAAkB;iBACf,UAAU,EAAE;iBACZ,MAAM,CACL,CAAC,CAAC,EAAE,CACF,CAAC,CAAC,CAAC,CAAC,OAAO,YAAY,aAAa,CAAC,WAAW,CAAC;gBACjD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,KAAK,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACpE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,KAAK,SAAS,CACpD;iBACA,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpE,KAAK,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IACjE,CAAC;IAED,OAAO,wBAAwB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC,CAAA,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CardanoResources, CardanoResourcesRaw } from "./types";
|
|
2
|
+
import { Account, AccountRaw } from "@ledgerhq/types-live";
|
|
3
|
+
export declare function toCardanoResourceRaw(r: CardanoResources): CardanoResourcesRaw;
|
|
4
|
+
export declare function fromCardanoResourceRaw(r: CardanoResourcesRaw): CardanoResources;
|
|
5
|
+
export declare function assignToAccountRaw(account: Account, accountRaw: AccountRaw): void;
|
|
6
|
+
export declare function assignFromAccountRaw(accountRaw: AccountRaw, account: Account): void;
|
|
7
|
+
//# sourceMappingURL=serialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EASV,gBAAgB,EAChB,mBAAmB,EAOpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAsK3D,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,gBAAgB,GAAG,mBAAmB,CAQ7E;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,mBAAmB,GAAG,gBAAgB,CAQ/E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAOjF;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,QAI5E"}
|