@ledgerhq/live-common 25.2.0-next.0 → 26.0.0-next.2
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/lib/__tests__/test-helpers/setup.js +2 -0
- package/lib/__tests__/test-helpers/setup.js.map +1 -1
- package/lib/account/helpers.d.ts.map +1 -1
- package/lib/account/helpers.js +1 -0
- package/lib/account/helpers.js.map +1 -1
- package/lib/account/serialization.d.ts.map +1 -1
- package/lib/account/serialization.js +4 -0
- package/lib/account/serialization.js.map +1 -1
- package/lib/data/icons/react/index.d.ts +1 -0
- package/lib/data/icons/react/index.d.ts.map +1 -1
- package/lib/data/icons/react/index.js +7 -5
- package/lib/data/icons/react/index.js.map +1 -1
- package/lib/data/icons/react/osmo.d.ts +8 -0
- package/lib/data/icons/react/osmo.d.ts.map +1 -0
- package/lib/data/icons/react/osmo.js +39 -0
- package/lib/data/icons/react/osmo.js.map +1 -0
- package/lib/data/icons/reactNative/index.d.ts +1 -0
- package/lib/data/icons/reactNative/index.d.ts.map +1 -1
- package/lib/data/icons/reactNative/index.js +7 -5
- package/lib/data/icons/reactNative/index.js.map +1 -1
- package/lib/data/icons/reactNative/osmo.d.ts +8 -0
- package/lib/data/icons/reactNative/osmo.d.ts.map +1 -0
- package/lib/data/icons/reactNative/osmo.js +40 -0
- package/lib/data/icons/reactNative/osmo.js.map +1 -0
- package/lib/env.d.ts +15 -5
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +10 -0
- package/lib/env.js.map +1 -1
- package/lib/env.react.d.ts +1 -1
- package/lib/env.react.d.ts.map +1 -1
- package/lib/families/cosmos/CosmosValidatorsManager.d.ts +26 -0
- package/lib/families/cosmos/CosmosValidatorsManager.d.ts.map +1 -0
- package/lib/families/cosmos/CosmosValidatorsManager.js +365 -0
- package/lib/families/cosmos/CosmosValidatorsManager.js.map +1 -0
- package/lib/families/cosmos/account.d.ts +2 -2
- package/lib/families/cosmos/account.d.ts.map +1 -1
- package/lib/families/cosmos/account.js +19 -6
- package/lib/families/cosmos/account.js.map +1 -1
- package/lib/families/cosmos/api/Cosmos.d.ts +27 -15
- package/lib/families/cosmos/api/Cosmos.d.ts.map +1 -1
- package/lib/families/cosmos/api/Cosmos.js +418 -410
- package/lib/families/cosmos/api/Cosmos.js.map +1 -1
- package/lib/families/cosmos/bridge/js.d.ts.map +1 -1
- package/lib/families/cosmos/bridge/js.js +5 -5
- package/lib/families/cosmos/bridge/js.js.map +1 -1
- package/lib/families/cosmos/bridge/mock.js +1 -1
- package/lib/families/cosmos/bridge/mock.js.map +1 -1
- package/lib/families/cosmos/bridge.integration.test.js +5 -5
- package/lib/families/cosmos/bridge.integration.test.js.map +1 -1
- package/lib/families/cosmos/cli-transaction.d.ts +3 -3
- package/lib/families/cosmos/cli-transaction.d.ts.map +1 -1
- package/lib/families/cosmos/cli-transaction.js +4 -5
- package/lib/families/cosmos/cli-transaction.js.map +1 -1
- package/lib/families/cosmos/js-buildTransaction.js +3 -3
- package/lib/families/cosmos/js-buildTransaction.js.map +1 -1
- package/lib/families/cosmos/js-createTransaction.js +1 -1
- package/lib/families/cosmos/js-createTransaction.js.map +1 -1
- package/lib/families/cosmos/js-getTransactionStatus.d.ts +17 -3
- package/lib/families/cosmos/js-getTransactionStatus.d.ts.map +1 -1
- package/lib/families/cosmos/js-getTransactionStatus.js +224 -176
- package/lib/families/cosmos/js-getTransactionStatus.js.map +1 -1
- package/lib/families/cosmos/js-prepareTransaction.js +2 -2
- package/lib/families/cosmos/js-prepareTransaction.js.map +1 -1
- package/lib/families/cosmos/js-signOperation.js +3 -3
- package/lib/families/cosmos/js-signOperation.js.map +1 -1
- package/lib/families/cosmos/js-synchronisation.js +2 -2
- package/lib/families/cosmos/js-synchronisation.js.map +1 -1
- package/lib/families/cosmos/logic.js +1 -1
- package/lib/families/cosmos/logic.js.map +1 -1
- package/lib/families/cosmos/mock.js +1 -1
- package/lib/families/cosmos/mock.js.map +1 -1
- package/lib/families/cosmos/react.d.ts +4 -4
- package/lib/families/cosmos/react.d.ts.map +1 -1
- package/lib/families/cosmos/react.js +59 -26
- package/lib/families/cosmos/react.js.map +1 -1
- package/lib/families/cosmos/react.test.js +17 -15
- package/lib/families/cosmos/react.test.js.map +1 -1
- package/lib/families/cosmos/specs.js +2 -2
- package/lib/families/cosmos/specs.js.map +1 -1
- package/lib/families/cosmos/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/cosmos/speculos-deviceActions.js +1 -1
- package/lib/families/cosmos/speculos-deviceActions.js.map +1 -1
- package/lib/families/cosmos/transaction.d.ts +2 -2
- package/lib/families/cosmos/transaction.d.ts.map +1 -1
- package/lib/families/cosmos/transaction.js +4 -4
- package/lib/families/cosmos/transaction.js.map +1 -1
- package/lib/families/cosmos/types.d.ts +31 -13
- package/lib/families/cosmos/types.d.ts.map +1 -1
- package/lib/families/cosmos/utils.d.ts +1 -0
- package/lib/families/cosmos/utils.d.ts.map +1 -1
- package/lib/families/cosmos/utils.js +7 -1
- package/lib/families/cosmos/utils.js.map +1 -1
- package/lib/families/cosmos/validators.d.ts +3 -5
- package/lib/families/cosmos/validators.d.ts.map +1 -1
- package/lib/families/cosmos/validators.js +4 -317
- package/lib/families/cosmos/validators.js.map +1 -1
- package/lib/families/filecoin/bridge/account.d.ts.map +1 -1
- package/lib/families/filecoin/bridge/account.js +11 -5
- package/lib/families/filecoin/bridge/account.js.map +1 -1
- package/lib/families/osmosis/OsmosisSupplyTypes.d.ts +48 -0
- package/lib/families/osmosis/OsmosisSupplyTypes.d.ts.map +1 -0
- package/lib/families/osmosis/OsmosisSupplyTypes.js +3 -0
- package/lib/families/osmosis/OsmosisSupplyTypes.js.map +1 -0
- package/lib/families/osmosis/account.d.ts +14 -0
- package/lib/families/osmosis/account.d.ts.map +1 -0
- package/lib/families/osmosis/account.js +60 -0
- package/lib/families/osmosis/account.js.map +1 -0
- package/lib/families/osmosis/api/sdk.d.ts +35 -0
- package/lib/families/osmosis/api/sdk.d.ts.map +1 -0
- package/lib/families/osmosis/api/sdk.js +478 -0
- package/lib/families/osmosis/api/sdk.js.map +1 -0
- package/lib/families/osmosis/api/sdk.types.d.ts +57 -0
- package/lib/families/osmosis/api/sdk.types.d.ts.map +1 -0
- package/lib/families/osmosis/api/sdk.types.js +15 -0
- package/lib/families/osmosis/api/sdk.types.js.map +1 -0
- package/lib/families/osmosis/api/sdk.unit.test.d.ts +2 -0
- package/lib/families/osmosis/api/sdk.unit.test.d.ts.map +1 -0
- package/lib/families/osmosis/api/sdk.unit.test.js +50 -0
- package/lib/families/osmosis/api/sdk.unit.test.js.map +1 -0
- package/lib/families/osmosis/bridge/js.d.ts +8 -0
- package/lib/families/osmosis/bridge/js.d.ts.map +1 -0
- package/lib/families/osmosis/bridge/js.js +98 -0
- package/lib/families/osmosis/bridge/js.js.map +1 -0
- package/lib/families/osmosis/bridge.integration.test.d.ts +2 -0
- package/lib/families/osmosis/bridge.integration.test.d.ts.map +1 -0
- package/lib/families/osmosis/bridge.integration.test.js +383 -0
- package/lib/families/osmosis/bridge.integration.test.js.map +1 -0
- package/lib/families/osmosis/cli-transaction.d.ts +38 -0
- package/lib/families/osmosis/cli-transaction.d.ts.map +1 -0
- package/lib/families/osmosis/cli-transaction.js +119 -0
- package/lib/families/osmosis/cli-transaction.js.map +1 -0
- package/lib/families/osmosis/deviceTransactionConfig.d.ts +25 -0
- package/lib/families/osmosis/deviceTransactionConfig.d.ts.map +1 -0
- package/lib/families/osmosis/deviceTransactionConfig.js +132 -0
- package/lib/families/osmosis/deviceTransactionConfig.js.map +1 -0
- package/lib/families/osmosis/errors.d.ts +4 -0
- package/lib/families/osmosis/errors.d.ts.map +1 -0
- package/lib/families/osmosis/errors.js +8 -0
- package/lib/families/osmosis/errors.js.map +1 -0
- package/lib/families/osmosis/hw-getAddress.d.ts +4 -0
- package/lib/families/osmosis/hw-getAddress.d.ts.map +1 -0
- package/lib/families/osmosis/hw-getAddress.js +64 -0
- package/lib/families/osmosis/hw-getAddress.js.map +1 -0
- package/lib/families/osmosis/js-buildTransaction.d.ts +14 -0
- package/lib/families/osmosis/js-buildTransaction.d.ts.map +1 -0
- package/lib/families/osmosis/js-buildTransaction.js +303 -0
- package/lib/families/osmosis/js-buildTransaction.js.map +1 -0
- package/lib/families/osmosis/js-estimateMaxSpendable.d.ts +15 -0
- package/lib/families/osmosis/js-estimateMaxSpendable.d.ts.map +1 -0
- package/lib/families/osmosis/js-estimateMaxSpendable.js +67 -0
- package/lib/families/osmosis/js-estimateMaxSpendable.js.map +1 -0
- package/lib/families/osmosis/js-getFeesForTransaction.d.ts +15 -0
- package/lib/families/osmosis/js-getFeesForTransaction.d.ts.map +1 -0
- package/lib/families/osmosis/js-getFeesForTransaction.js +85 -0
- package/lib/families/osmosis/js-getFeesForTransaction.js.map +1 -0
- package/lib/families/osmosis/js-getTransactionStatus.d.ts +3 -0
- package/lib/families/osmosis/js-getTransactionStatus.d.ts.map +1 -0
- package/lib/families/osmosis/js-getTransactionStatus.js +10 -0
- package/lib/families/osmosis/js-getTransactionStatus.js.map +1 -0
- package/lib/families/osmosis/js-signOperation.d.ts +10 -0
- package/lib/families/osmosis/js-signOperation.d.ts.map +1 -0
- package/lib/families/osmosis/js-signOperation.js +211 -0
- package/lib/families/osmosis/js-signOperation.js.map +1 -0
- package/lib/families/osmosis/js-synchronization.d.ts +9 -0
- package/lib/families/osmosis/js-synchronization.d.ts.map +1 -0
- package/lib/families/osmosis/js-synchronization.js +176 -0
- package/lib/families/osmosis/js-synchronization.js.map +1 -0
- package/lib/families/osmosis/js-transaction.d.ts +23 -0
- package/lib/families/osmosis/js-transaction.d.ts.map +1 -0
- package/lib/families/osmosis/js-transaction.js +177 -0
- package/lib/families/osmosis/js-transaction.js.map +1 -0
- package/lib/families/osmosis/logic.d.ts +5 -0
- package/lib/families/osmosis/logic.d.ts.map +1 -0
- package/lib/families/osmosis/logic.js +22 -0
- package/lib/families/osmosis/logic.js.map +1 -0
- package/lib/families/osmosis/preloadedData.d.ts +9 -0
- package/lib/families/osmosis/preloadedData.d.ts.map +1 -0
- package/lib/families/osmosis/preloadedData.js +32 -0
- package/lib/families/osmosis/preloadedData.js.map +1 -0
- package/lib/families/osmosis/serialization.d.ts +7 -0
- package/lib/families/osmosis/serialization.d.ts.map +1 -0
- package/lib/families/osmosis/serialization.js +5 -0
- package/lib/families/osmosis/serialization.js.map +1 -0
- package/lib/families/osmosis/specs.d.ts +7 -0
- package/lib/families/osmosis/specs.d.ts.map +1 -0
- package/lib/families/osmosis/specs.js +402 -0
- package/lib/families/osmosis/specs.js.map +1 -0
- package/lib/families/osmosis/speculos-deviceActions.d.ts +7 -0
- package/lib/families/osmosis/speculos-deviceActions.d.ts.map +1 -0
- package/lib/families/osmosis/speculos-deviceActions.js +120 -0
- package/lib/families/osmosis/speculos-deviceActions.js.map +1 -0
- package/lib/families/osmosis/transaction.d.ts +10 -0
- package/lib/families/osmosis/transaction.d.ts.map +1 -0
- package/lib/families/osmosis/transaction.js +13 -0
- package/lib/families/osmosis/transaction.js.map +1 -0
- package/lib/families/osmosis/types.d.ts +38 -0
- package/lib/families/osmosis/types.d.ts.map +1 -0
- package/lib/families/osmosis/types.js +3 -0
- package/lib/families/osmosis/types.js.map +1 -0
- package/lib/families/osmosis/utils.d.ts +8 -0
- package/lib/families/osmosis/utils.d.ts.map +1 -0
- package/lib/families/osmosis/utils.js +28 -0
- package/lib/families/osmosis/utils.js.map +1 -0
- package/lib/families/osmosis/validators.d.ts +4 -0
- package/lib/families/osmosis/validators.d.ts.map +1 -0
- package/lib/families/osmosis/validators.js +131 -0
- package/lib/families/osmosis/validators.js.map +1 -0
- package/lib/featureFlags/defaultFeatures.d.ts.map +1 -1
- package/lib/featureFlags/defaultFeatures.js +3 -0
- package/lib/featureFlags/defaultFeatures.js.map +1 -1
- package/lib/generated/account.d.ts +7 -1
- package/lib/generated/account.d.ts.map +1 -1
- package/lib/generated/account.js +4 -2
- package/lib/generated/account.js.map +1 -1
- package/lib/generated/bridge/js.d.ts +4 -0
- package/lib/generated/bridge/js.d.ts.map +1 -1
- package/lib/generated/bridge/js.js +14 -12
- package/lib/generated/bridge/js.js.map +1 -1
- package/lib/generated/cli-transaction.d.ts +33 -2
- package/lib/generated/cli-transaction.d.ts.map +1 -1
- package/lib/generated/cli-transaction.js +14 -12
- package/lib/generated/cli-transaction.js.map +1 -1
- package/lib/generated/deviceTransactionConfig.d.ts +4 -1
- package/lib/generated/deviceTransactionConfig.d.ts.map +1 -1
- package/lib/generated/deviceTransactionConfig.js +14 -12
- package/lib/generated/deviceTransactionConfig.js.map +1 -1
- package/lib/generated/hw-getAddress.d.ts +1 -0
- package/lib/generated/hw-getAddress.d.ts.map +1 -1
- package/lib/generated/hw-getAddress.js +14 -12
- package/lib/generated/hw-getAddress.js.map +1 -1
- package/lib/generated/specs.d.ts +3 -0
- package/lib/generated/specs.d.ts.map +1 -1
- package/lib/generated/specs.js +14 -12
- package/lib/generated/specs.js.map +1 -1
- package/lib/generated/speculos-deviceActions.d.ts +3 -0
- package/lib/generated/speculos-deviceActions.d.ts.map +1 -1
- package/lib/generated/speculos-deviceActions.js +14 -12
- package/lib/generated/speculos-deviceActions.js.map +1 -1
- package/lib/generated/transaction.d.ts +9 -1
- package/lib/generated/transaction.d.ts.map +1 -1
- package/lib/generated/transaction.js +14 -12
- package/lib/generated/transaction.js.map +1 -1
- package/lib/generated/types.d.ts +8 -4
- package/lib/generated/types.d.ts.map +1 -1
- package/lib/reconciliation.d.ts.map +1 -1
- package/lib/reconciliation.js +9 -0
- package/lib/reconciliation.js.map +1 -1
- package/package.json +8 -3
- package/src/__tests__/test-helpers/setup.ts +2 -0
- package/src/account/helpers.ts +1 -0
- package/src/account/serialization.ts +6 -0
- package/src/data/icons/react/index.tsx +1 -0
- package/src/data/icons/react/osmo.tsx +14 -0
- package/src/data/icons/reactNative/index.tsx +1 -0
- package/src/data/icons/reactNative/osmo.tsx +15 -0
- package/src/data/icons/svg/OSMO.svg +7 -0
- package/src/env.ts +10 -0
- package/src/families/cosmos/CosmosValidatorsManager.ts +420 -0
- package/src/families/cosmos/account.ts +29 -10
- package/src/families/cosmos/api/Cosmos.ts +267 -257
- package/src/families/cosmos/bridge/js.ts +6 -7
- package/src/families/cosmos/bridge/mock.ts +1 -1
- package/src/families/cosmos/bridge.integration.test.ts +5 -5
- package/src/families/cosmos/cli-transaction.ts +7 -8
- package/src/families/cosmos/js-buildTransaction.ts +4 -4
- package/src/families/cosmos/js-createTransaction.ts +1 -1
- package/src/families/cosmos/js-getTransactionStatus.ts +276 -226
- package/src/families/cosmos/js-prepareTransaction.ts +3 -3
- package/src/families/cosmos/js-signOperation.ts +4 -4
- package/src/families/cosmos/js-synchronisation.ts +3 -3
- package/src/families/cosmos/logic.ts +1 -1
- package/src/families/cosmos/mock.ts +1 -1
- package/src/families/cosmos/react.test.ts +25 -14
- package/src/families/cosmos/react.ts +73 -21
- package/src/families/cosmos/specs.ts +2 -2
- package/src/families/cosmos/speculos-deviceActions.ts +1 -2
- package/src/families/cosmos/transaction.ts +4 -6
- package/src/families/cosmos/types.ts +41 -13
- package/src/families/cosmos/utils.ts +8 -0
- package/src/families/cosmos/validators.ts +5 -363
- package/src/families/filecoin/bridge/account.ts +12 -5
- package/src/families/osmosis/OsmosisSupplyTypes.ts +53 -0
- package/src/families/osmosis/__snapshots__/bridge.integration.test.ts.snap +852 -0
- package/src/families/osmosis/account.ts +65 -0
- package/src/families/osmosis/api/sdk.ts +530 -0
- package/src/families/osmosis/api/sdk.types.ts +65 -0
- package/src/families/osmosis/api/sdk.unit.test.ts +70 -0
- package/src/families/osmosis/bridge/js.ts +64 -0
- package/src/families/osmosis/bridge.integration.test.ts +467 -0
- package/src/families/osmosis/cli-transaction.ts +145 -0
- package/src/families/osmosis/deviceTransactionConfig.ts +174 -0
- package/src/families/osmosis/errors.ts +13 -0
- package/src/families/osmosis/hw-getAddress.ts +14 -0
- package/src/families/osmosis/js-buildTransaction.ts +306 -0
- package/src/families/osmosis/js-estimateMaxSpendable.ts +26 -0
- package/src/families/osmosis/js-getFeesForTransaction.ts +44 -0
- package/src/families/osmosis/js-getTransactionStatus.ts +9 -0
- package/src/families/osmosis/js-signOperation.ts +172 -0
- package/src/families/osmosis/js-synchronization.ts +122 -0
- package/src/families/osmosis/js-transaction.ts +96 -0
- package/src/families/osmosis/logic.ts +26 -0
- package/src/families/osmosis/preloadedData.ts +32 -0
- package/src/families/osmosis/serialization.ts +6 -0
- package/src/families/osmosis/specs.ts +393 -0
- package/src/families/osmosis/speculos-deviceActions.ts +94 -0
- package/src/families/osmosis/transaction.ts +20 -0
- package/src/families/osmosis/types.ts +48 -0
- package/src/families/osmosis/utils.ts +31 -0
- package/src/families/osmosis/validators.ts +79 -0
- package/src/featureFlags/defaultFeatures.ts +3 -0
- package/src/generated/account.ts +3 -0
- package/src/generated/bridge/js.ts +3 -0
- package/src/generated/cli-transaction.ts +3 -0
- package/src/generated/deviceTransactionConfig.ts +5 -0
- package/src/generated/hw-getAddress.ts +3 -0
- package/src/generated/specs.ts +3 -0
- package/src/generated/speculos-deviceActions.ts +3 -0
- package/src/generated/transaction.ts +3 -0
- package/src/generated/types.ts +8 -0
- package/src/reconciliation.ts +16 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
2
|
+
import type { Operation } from "@ledgerhq/types-live";
|
|
3
|
+
import { formatAccountSpecifics } from "../cosmos/account";
|
|
4
|
+
import { CosmosExtraTxInfo } from "../cosmos/types";
|
|
5
|
+
|
|
6
|
+
function formatOperationSpecifics(op: Operation): string {
|
|
7
|
+
const { memo, validators, autoClaimedRewards } = op.extra;
|
|
8
|
+
let str = " ";
|
|
9
|
+
if (validators && validators.length > 0) {
|
|
10
|
+
str += validators
|
|
11
|
+
.map((v) => {
|
|
12
|
+
`\n to ${v.address} ${v.amount}`;
|
|
13
|
+
})
|
|
14
|
+
.join("");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (autoClaimedRewards) {
|
|
18
|
+
str += `\n auto claimed rewards is: ${autoClaimedRewards.toString()}`;
|
|
19
|
+
}
|
|
20
|
+
if (memo) {
|
|
21
|
+
str += `\n Memo: ${memo}`;
|
|
22
|
+
}
|
|
23
|
+
return str;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function fromOperationExtraRaw(
|
|
27
|
+
extra: Record<string, any> | null | undefined
|
|
28
|
+
): CosmosExtraTxInfo | Record<string, any> | null | undefined {
|
|
29
|
+
let e = {};
|
|
30
|
+
if (extra && extra.validators) {
|
|
31
|
+
e = {
|
|
32
|
+
...extra,
|
|
33
|
+
validators: extra.validators.map((o) => ({
|
|
34
|
+
...o,
|
|
35
|
+
amount: new BigNumber(o.amount),
|
|
36
|
+
})),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return e;
|
|
41
|
+
}
|
|
42
|
+
export function toOperationExtraRaw(
|
|
43
|
+
extra: Record<string, any> | null | undefined
|
|
44
|
+
): CosmosExtraTxInfo | Record<string, any> | null | undefined {
|
|
45
|
+
let e = {};
|
|
46
|
+
|
|
47
|
+
if (extra && extra.validators) {
|
|
48
|
+
e = {
|
|
49
|
+
...extra,
|
|
50
|
+
validators: extra.validators.map((o) => ({
|
|
51
|
+
...o,
|
|
52
|
+
amount: o.amount.toString(),
|
|
53
|
+
})),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return e;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export default {
|
|
61
|
+
formatOperationSpecifics,
|
|
62
|
+
fromOperationExtraRaw,
|
|
63
|
+
toOperationExtraRaw,
|
|
64
|
+
formatAccountSpecifics,
|
|
65
|
+
};
|
|
@@ -0,0 +1,530 @@
|
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
2
|
+
import { getEnv } from "../../../env";
|
|
3
|
+
import network from "../../../network";
|
|
4
|
+
import { encodeOperationId } from "../../../operation";
|
|
5
|
+
import { Operation, OperationType } from "@ledgerhq/types-live";
|
|
6
|
+
import { CosmosAPI } from "../../cosmos/api/Cosmos";
|
|
7
|
+
import { CosmosDelegationInfo } from "../../cosmos/types";
|
|
8
|
+
import {
|
|
9
|
+
OsmosisDistributionParams,
|
|
10
|
+
OsmosisPool,
|
|
11
|
+
OsmosisTotalSupply,
|
|
12
|
+
} from "../OsmosisSupplyTypes";
|
|
13
|
+
import {
|
|
14
|
+
OsmosisAccountTransaction,
|
|
15
|
+
OsmosisAmount,
|
|
16
|
+
OsmosisCurrency,
|
|
17
|
+
OsmosisEventNestedContent,
|
|
18
|
+
OsmosisSendEventContent,
|
|
19
|
+
OsmosisStakingEventContent,
|
|
20
|
+
OsmosisTransactionTypeEnum,
|
|
21
|
+
} from "./sdk.types";
|
|
22
|
+
|
|
23
|
+
export const nodeEndpoint = getEnv("API_OSMOSIS_NODE").replace(/\/$/, "");
|
|
24
|
+
const indexerEndpoint = getEnv("API_OSMOSIS_INDEXER").replace(/\/$/, "");
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Returns true if account is the signer
|
|
28
|
+
*/
|
|
29
|
+
function isSender(content: OsmosisEventNestedContent, addr: string): boolean {
|
|
30
|
+
return content.account.id === addr;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Map transaction to an Operation Type
|
|
35
|
+
*/
|
|
36
|
+
function getOperationType(
|
|
37
|
+
eventContent: OsmosisSendEventContent,
|
|
38
|
+
addr: string
|
|
39
|
+
): OperationType {
|
|
40
|
+
return isSender(eventContent.sender[0], addr) ? "OUT" : "IN";
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Map a send transaction as returned by the indexer to a Ledger Live Operation
|
|
45
|
+
*/
|
|
46
|
+
export const convertTransactionToOperation = (
|
|
47
|
+
accountId: string,
|
|
48
|
+
type: OperationType,
|
|
49
|
+
value: BigNumber,
|
|
50
|
+
transaction: OsmosisAccountTransaction,
|
|
51
|
+
senders: string[] = [],
|
|
52
|
+
recipients: string[] = [],
|
|
53
|
+
extra: Record<string, any>
|
|
54
|
+
): Operation => {
|
|
55
|
+
return {
|
|
56
|
+
id: encodeOperationId(accountId, transaction.hash, type),
|
|
57
|
+
accountId,
|
|
58
|
+
fee: new BigNumber(getMicroOsmoAmount(transaction.transaction_fee)),
|
|
59
|
+
value,
|
|
60
|
+
type,
|
|
61
|
+
hash: transaction.hash,
|
|
62
|
+
blockHash: transaction.block_hash,
|
|
63
|
+
blockHeight: transaction.height,
|
|
64
|
+
date: new Date(transaction.time),
|
|
65
|
+
senders,
|
|
66
|
+
recipients,
|
|
67
|
+
hasFailed: transaction.has_errors,
|
|
68
|
+
extra,
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Map transaction to a correct Operation Value (affecting account balance)
|
|
74
|
+
*/
|
|
75
|
+
export function getOperationValue(
|
|
76
|
+
eventContent: OsmosisSendEventContent,
|
|
77
|
+
type: string,
|
|
78
|
+
fee: BigNumber
|
|
79
|
+
): BigNumber {
|
|
80
|
+
let amount: BigNumber;
|
|
81
|
+
switch (type) {
|
|
82
|
+
// Per operation.ts, in "OUT" case, it includes the fees. in "IN" case, it excludes them.
|
|
83
|
+
case "OUT":
|
|
84
|
+
amount = BigNumber.sum(
|
|
85
|
+
getMicroOsmoAmount(eventContent.sender[0]?.amounts),
|
|
86
|
+
fee
|
|
87
|
+
);
|
|
88
|
+
break;
|
|
89
|
+
case "IN":
|
|
90
|
+
amount = getMicroOsmoAmount(eventContent.recipient[0]?.amounts);
|
|
91
|
+
break;
|
|
92
|
+
default:
|
|
93
|
+
// defaults to received funds (i.e. no fee is added)
|
|
94
|
+
// amount = getMicroOsmoAmount(eventContent.recipient[0]?.amounts);
|
|
95
|
+
amount = new BigNumber(0);
|
|
96
|
+
}
|
|
97
|
+
return amount;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Extract only the amount from a list of type OsmosisAmount
|
|
102
|
+
*/
|
|
103
|
+
export const getMicroOsmoAmount = (amounts: OsmosisAmount[]): BigNumber => {
|
|
104
|
+
return amounts.reduce(
|
|
105
|
+
(result, current) =>
|
|
106
|
+
current.currency === OsmosisCurrency
|
|
107
|
+
? result.plus(new BigNumber(current.numeric))
|
|
108
|
+
: result,
|
|
109
|
+
new BigNumber(0)
|
|
110
|
+
);
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export class OsmosisAPI extends CosmosAPI {
|
|
114
|
+
protected _defaultEndpoint: string = nodeEndpoint;
|
|
115
|
+
protected _namespace = "osmosis";
|
|
116
|
+
private _defaultTransactionsLimit = 100;
|
|
117
|
+
|
|
118
|
+
getOperations = async (
|
|
119
|
+
accountId: string,
|
|
120
|
+
address: string,
|
|
121
|
+
startDate: Date | null,
|
|
122
|
+
startAt = 0,
|
|
123
|
+
transactionsLimit: number = this._defaultTransactionsLimit
|
|
124
|
+
): Promise<Operation[]> => {
|
|
125
|
+
const now = new Date().toISOString();
|
|
126
|
+
const operations: Operation[] = [];
|
|
127
|
+
|
|
128
|
+
const { data: accountTransactions } = await network({
|
|
129
|
+
method: "POST",
|
|
130
|
+
url: `${indexerEndpoint}/transactions_search/`,
|
|
131
|
+
data: {
|
|
132
|
+
network: "osmosis",
|
|
133
|
+
// type: [OsmosisTransactionTypeEnum.Redelegate], // if no type is specified, all transaction types will be returned
|
|
134
|
+
account: [address],
|
|
135
|
+
before_time: now,
|
|
136
|
+
after_time: startDate !== null ? startDate.toISOString() : null,
|
|
137
|
+
limit: transactionsLimit,
|
|
138
|
+
offset: startAt,
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
if (!accountTransactions || !accountTransactions.length) {
|
|
143
|
+
return operations;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
for (let i = 0; i < accountTransactions.length; i++) {
|
|
147
|
+
const events = accountTransactions[i].events;
|
|
148
|
+
const memo: string = accountTransactions[i].memo || "";
|
|
149
|
+
for (let j = 0; j < events.length; j++) {
|
|
150
|
+
const transactionType = events[j].kind ? events[j].kind : "n/a";
|
|
151
|
+
switch (
|
|
152
|
+
// Example: "send". See: OsmosisTransactionTypeEnum.
|
|
153
|
+
// Note: "send" means all transactions where some party was sending some OSMO,
|
|
154
|
+
// which means it shouldn't be interpreted as OUT transactions. See isSender()
|
|
155
|
+
// for context on how we determine if a "send" transaction is IN or OUT.
|
|
156
|
+
transactionType
|
|
157
|
+
) {
|
|
158
|
+
case OsmosisTransactionTypeEnum.Send: {
|
|
159
|
+
const operation = await this.convertSendTransactionToOperation(
|
|
160
|
+
accountId,
|
|
161
|
+
address,
|
|
162
|
+
events[j],
|
|
163
|
+
accountTransactions[i],
|
|
164
|
+
memo
|
|
165
|
+
);
|
|
166
|
+
if (operation != null) {
|
|
167
|
+
operations.push(operation);
|
|
168
|
+
}
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
case OsmosisTransactionTypeEnum.Delegate: {
|
|
173
|
+
const ops = await this.convertDelegateTransactionToOperation(
|
|
174
|
+
accountId,
|
|
175
|
+
events[j],
|
|
176
|
+
accountTransactions[i],
|
|
177
|
+
memo
|
|
178
|
+
);
|
|
179
|
+
if (ops.length > 0) {
|
|
180
|
+
ops.forEach((op) => operations.push(op));
|
|
181
|
+
}
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
case OsmosisTransactionTypeEnum.Redelegate: {
|
|
186
|
+
const ops = await this.convertRedelegateTransactionToOperation(
|
|
187
|
+
accountId,
|
|
188
|
+
events[j],
|
|
189
|
+
accountTransactions[i],
|
|
190
|
+
memo
|
|
191
|
+
);
|
|
192
|
+
if (ops.length > 0) {
|
|
193
|
+
ops.forEach((op) => operations.push(op));
|
|
194
|
+
}
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
case OsmosisTransactionTypeEnum.Undelegate: {
|
|
198
|
+
const ops = await this.convertUndelegateTransactionToOperation(
|
|
199
|
+
accountId,
|
|
200
|
+
events[j],
|
|
201
|
+
accountTransactions[i],
|
|
202
|
+
memo
|
|
203
|
+
);
|
|
204
|
+
if (ops.length > 0) {
|
|
205
|
+
ops.forEach((op) => operations.push(op));
|
|
206
|
+
}
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
case OsmosisTransactionTypeEnum.Reward: {
|
|
210
|
+
// For the time being we'll be creating duplicate ops for the edge case of
|
|
211
|
+
// rewards txs that contain multiple claim messages.
|
|
212
|
+
// The idea is that a few duplicate operations won't affect performance
|
|
213
|
+
// significantly, and the duplicate will be removed anyways by mergeOps in js-sync.
|
|
214
|
+
// If this doesn't work then simply add a check here to see if there's already
|
|
215
|
+
// an operation in the operations[] array with the current tx hash.
|
|
216
|
+
|
|
217
|
+
const ops = await this.convertRewardTransactionToOperation(
|
|
218
|
+
accountId,
|
|
219
|
+
accountTransactions[i],
|
|
220
|
+
memo
|
|
221
|
+
);
|
|
222
|
+
if (ops.length > 0) {
|
|
223
|
+
ops.forEach((op) => operations.push(op));
|
|
224
|
+
}
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
default:
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
return operations;
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
convertSendTransactionToOperation = async (
|
|
237
|
+
accountId: string,
|
|
238
|
+
address: string,
|
|
239
|
+
event: any,
|
|
240
|
+
tx: OsmosisAccountTransaction,
|
|
241
|
+
memo: string
|
|
242
|
+
): Promise<Operation | undefined> => {
|
|
243
|
+
// Check "sub" array exists. The "sub" array contains transactions messages. If there isn't one, skip the tx
|
|
244
|
+
if (!Object.prototype.hasOwnProperty.call(event, "sub")) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
const eventContent: OsmosisSendEventContent[] = event.sub;
|
|
249
|
+
// Check that sub array is not empty
|
|
250
|
+
if (!(eventContent.length > 0)) return;
|
|
251
|
+
|
|
252
|
+
// Check eventContent contains at least one entry of type "send" using find() and retrieve it.
|
|
253
|
+
// find() retrieves the (first) message, which contains sender, recipient and amount info
|
|
254
|
+
// We get get the first message because typically "send" transactions only have one sender and one recipient
|
|
255
|
+
// If no messages are found, skip the tx
|
|
256
|
+
const sendEvent = eventContent.find(
|
|
257
|
+
(event) => event.type[0] === OsmosisTransactionTypeEnum.Send
|
|
258
|
+
);
|
|
259
|
+
if (sendEvent == null) return;
|
|
260
|
+
const type = getOperationType(sendEvent, address);
|
|
261
|
+
const senders = sendEvent.sender[0]?.account?.id
|
|
262
|
+
? [sendEvent.sender[0]?.account?.id]
|
|
263
|
+
: [];
|
|
264
|
+
const recipients = sendEvent.recipient[0]?.account?.id
|
|
265
|
+
? [sendEvent.recipient[0]?.account?.id]
|
|
266
|
+
: [];
|
|
267
|
+
const fee = new BigNumber(getMicroOsmoAmount(tx.transaction_fee));
|
|
268
|
+
return convertTransactionToOperation(
|
|
269
|
+
accountId,
|
|
270
|
+
type,
|
|
271
|
+
getOperationValue(sendEvent, type, fee),
|
|
272
|
+
tx,
|
|
273
|
+
senders,
|
|
274
|
+
recipients,
|
|
275
|
+
{ memo }
|
|
276
|
+
);
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
convertDelegateTransactionToOperation = async (
|
|
280
|
+
accountId: string,
|
|
281
|
+
event: any,
|
|
282
|
+
tx: OsmosisAccountTransaction,
|
|
283
|
+
memo: string
|
|
284
|
+
): Promise<Operation[]> => {
|
|
285
|
+
const ops: Operation[] = [];
|
|
286
|
+
|
|
287
|
+
if (!Object.prototype.hasOwnProperty.call(event, "sub")) {
|
|
288
|
+
return ops;
|
|
289
|
+
}
|
|
290
|
+
const eventContent: OsmosisStakingEventContent[] = event.sub;
|
|
291
|
+
if (!(eventContent.length > 0)) return ops;
|
|
292
|
+
const delegateEvent = eventContent.find(
|
|
293
|
+
(event) => event.type[0] === OsmosisTransactionTypeEnum.Delegate
|
|
294
|
+
);
|
|
295
|
+
if (delegateEvent == null) return ops;
|
|
296
|
+
const type = "DELEGATE";
|
|
297
|
+
const extra = {
|
|
298
|
+
memo: memo,
|
|
299
|
+
validators: [
|
|
300
|
+
{
|
|
301
|
+
address: delegateEvent.node.validator[0].id,
|
|
302
|
+
amount: new BigNumber(
|
|
303
|
+
getMicroOsmoAmount([delegateEvent.amount.delegate])
|
|
304
|
+
),
|
|
305
|
+
},
|
|
306
|
+
],
|
|
307
|
+
autoClaimedRewards: this.calculateAutoClaimedRewards(tx).toString(),
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
ops.push(
|
|
311
|
+
convertTransactionToOperation(
|
|
312
|
+
accountId,
|
|
313
|
+
type,
|
|
314
|
+
extra.validators[0].amount,
|
|
315
|
+
tx,
|
|
316
|
+
[],
|
|
317
|
+
[],
|
|
318
|
+
extra
|
|
319
|
+
)
|
|
320
|
+
);
|
|
321
|
+
return ops;
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
calculateAutoClaimedRewards = (tx: OsmosisAccountTransaction): BigNumber => {
|
|
325
|
+
// These types are the only types for which auto claim rewards are supported
|
|
326
|
+
const SUPPORTED_TYPES = [
|
|
327
|
+
OsmosisTransactionTypeEnum.Delegate,
|
|
328
|
+
OsmosisTransactionTypeEnum.Redelegate,
|
|
329
|
+
OsmosisTransactionTypeEnum.Undelegate,
|
|
330
|
+
];
|
|
331
|
+
let totalRewardsAmount = new BigNumber(0);
|
|
332
|
+
tx.events.forEach((event) => {
|
|
333
|
+
if (Object.prototype.hasOwnProperty.call(event, "sub")) {
|
|
334
|
+
const eventContent: OsmosisStakingEventContent[] =
|
|
335
|
+
event.sub as OsmosisStakingEventContent[];
|
|
336
|
+
if (eventContent.length > 0) {
|
|
337
|
+
const rewardEvent = eventContent[0];
|
|
338
|
+
if (
|
|
339
|
+
rewardEvent != null &&
|
|
340
|
+
SUPPORTED_TYPES.includes(rewardEvent.type[0])
|
|
341
|
+
) {
|
|
342
|
+
let amount = new BigNumber(0);
|
|
343
|
+
if (rewardEvent.transfers != null) {
|
|
344
|
+
if (rewardEvent.transfers.reward) {
|
|
345
|
+
amount = getMicroOsmoAmount(
|
|
346
|
+
rewardEvent.transfers.reward[0].amounts
|
|
347
|
+
);
|
|
348
|
+
totalRewardsAmount = totalRewardsAmount.plus(amount);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
return totalRewardsAmount;
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
convertRedelegateTransactionToOperation = async (
|
|
359
|
+
accountId: string,
|
|
360
|
+
event: any,
|
|
361
|
+
tx: OsmosisAccountTransaction,
|
|
362
|
+
memo: string
|
|
363
|
+
): Promise<Operation[]> => {
|
|
364
|
+
const ops: Operation[] = [];
|
|
365
|
+
|
|
366
|
+
if (!Object.prototype.hasOwnProperty.call(event, "sub")) {
|
|
367
|
+
return ops;
|
|
368
|
+
}
|
|
369
|
+
const eventContent: OsmosisStakingEventContent[] = event.sub;
|
|
370
|
+
if (!(eventContent.length > 0)) return ops;
|
|
371
|
+
const redelegEvent = eventContent.find(
|
|
372
|
+
(event) => event.type[0] === OsmosisTransactionTypeEnum.Redelegate
|
|
373
|
+
);
|
|
374
|
+
if (redelegEvent == null) return ops;
|
|
375
|
+
const type = "REDELEGATE";
|
|
376
|
+
const extra = {
|
|
377
|
+
memo: memo,
|
|
378
|
+
validators: [
|
|
379
|
+
{
|
|
380
|
+
address: redelegEvent.node.validator_destination[0].id,
|
|
381
|
+
amount: new BigNumber(
|
|
382
|
+
getMicroOsmoAmount([redelegEvent.amount.delegate])
|
|
383
|
+
),
|
|
384
|
+
},
|
|
385
|
+
],
|
|
386
|
+
sourceValidator: redelegEvent.node.validator_source[0].id,
|
|
387
|
+
autoClaimedRewards: this.calculateAutoClaimedRewards(tx).toString(),
|
|
388
|
+
};
|
|
389
|
+
|
|
390
|
+
ops.push(
|
|
391
|
+
convertTransactionToOperation(
|
|
392
|
+
accountId,
|
|
393
|
+
type,
|
|
394
|
+
extra.validators[0].amount,
|
|
395
|
+
tx,
|
|
396
|
+
[],
|
|
397
|
+
[],
|
|
398
|
+
extra
|
|
399
|
+
)
|
|
400
|
+
);
|
|
401
|
+
return ops;
|
|
402
|
+
};
|
|
403
|
+
|
|
404
|
+
convertUndelegateTransactionToOperation = async (
|
|
405
|
+
accountId: string,
|
|
406
|
+
event: any,
|
|
407
|
+
tx: OsmosisAccountTransaction,
|
|
408
|
+
memo: string
|
|
409
|
+
): Promise<Operation[]> => {
|
|
410
|
+
const ops: Operation[] = [];
|
|
411
|
+
|
|
412
|
+
if (!Object.prototype.hasOwnProperty.call(event, "sub")) {
|
|
413
|
+
return ops;
|
|
414
|
+
}
|
|
415
|
+
const eventContent: OsmosisStakingEventContent[] = event.sub;
|
|
416
|
+
if (!(eventContent.length > 0)) return ops;
|
|
417
|
+
const undelegEvent = eventContent.find(
|
|
418
|
+
(event) => event.type[0] === OsmosisTransactionTypeEnum.Undelegate
|
|
419
|
+
);
|
|
420
|
+
if (undelegEvent == null) return ops;
|
|
421
|
+
const type = "UNDELEGATE";
|
|
422
|
+
const extra = {
|
|
423
|
+
memo: memo,
|
|
424
|
+
validators: [
|
|
425
|
+
{
|
|
426
|
+
address: undelegEvent.node.validator[0].id,
|
|
427
|
+
amount: new BigNumber(
|
|
428
|
+
getMicroOsmoAmount([undelegEvent.amount.undelegate])
|
|
429
|
+
),
|
|
430
|
+
},
|
|
431
|
+
],
|
|
432
|
+
autoClaimedRewards: this.calculateAutoClaimedRewards(tx).toString(),
|
|
433
|
+
};
|
|
434
|
+
|
|
435
|
+
ops.push(
|
|
436
|
+
convertTransactionToOperation(
|
|
437
|
+
accountId,
|
|
438
|
+
type,
|
|
439
|
+
extra.validators[0].amount,
|
|
440
|
+
tx,
|
|
441
|
+
[],
|
|
442
|
+
[],
|
|
443
|
+
extra
|
|
444
|
+
)
|
|
445
|
+
);
|
|
446
|
+
return ops;
|
|
447
|
+
};
|
|
448
|
+
|
|
449
|
+
convertRewardTransactionToOperation = async (
|
|
450
|
+
accountId: string,
|
|
451
|
+
tx: OsmosisAccountTransaction,
|
|
452
|
+
memo: string
|
|
453
|
+
): Promise<Operation[]> => {
|
|
454
|
+
const ops: Operation[] = [];
|
|
455
|
+
|
|
456
|
+
let totalRewardsAmount = new BigNumber(0);
|
|
457
|
+
const rewardValidators: CosmosDelegationInfo[] = [];
|
|
458
|
+
tx.events.forEach((event) => {
|
|
459
|
+
if (!Object.prototype.hasOwnProperty.call(event, "sub")) {
|
|
460
|
+
return ops;
|
|
461
|
+
}
|
|
462
|
+
const eventContent: OsmosisStakingEventContent[] =
|
|
463
|
+
event.sub as OsmosisStakingEventContent[];
|
|
464
|
+
if (!(eventContent.length > 0)) return ops;
|
|
465
|
+
const rewardEvent = eventContent.find(
|
|
466
|
+
(event) => event.type[0] === OsmosisTransactionTypeEnum.Reward
|
|
467
|
+
);
|
|
468
|
+
if (rewardEvent == null) return ops;
|
|
469
|
+
let amount = new BigNumber(0);
|
|
470
|
+
if (rewardEvent.transfers != null) {
|
|
471
|
+
if (rewardEvent.transfers.reward) {
|
|
472
|
+
amount = getMicroOsmoAmount(rewardEvent.transfers.reward[0].amounts);
|
|
473
|
+
totalRewardsAmount = totalRewardsAmount.plus(amount);
|
|
474
|
+
rewardValidators.push({
|
|
475
|
+
address: rewardEvent.node.validator[0].id,
|
|
476
|
+
amount,
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
const type = "REWARD";
|
|
482
|
+
const extra = {
|
|
483
|
+
memo: memo,
|
|
484
|
+
validators: rewardValidators,
|
|
485
|
+
};
|
|
486
|
+
ops.push(
|
|
487
|
+
convertTransactionToOperation(
|
|
488
|
+
accountId,
|
|
489
|
+
type,
|
|
490
|
+
totalRewardsAmount,
|
|
491
|
+
tx,
|
|
492
|
+
[],
|
|
493
|
+
[],
|
|
494
|
+
extra
|
|
495
|
+
)
|
|
496
|
+
);
|
|
497
|
+
return ops;
|
|
498
|
+
};
|
|
499
|
+
|
|
500
|
+
queryTotalSupply = async (
|
|
501
|
+
minDenomUnit: string
|
|
502
|
+
): Promise<OsmosisTotalSupply> => {
|
|
503
|
+
const { data } = await network({
|
|
504
|
+
method: "GET",
|
|
505
|
+
url: `${this._defaultEndpoint}/cosmos/bank/v1beta1/supply/${minDenomUnit}`,
|
|
506
|
+
});
|
|
507
|
+
const { amount } = data;
|
|
508
|
+
return { ...amount };
|
|
509
|
+
};
|
|
510
|
+
|
|
511
|
+
queryPool = async (): Promise<OsmosisPool> => {
|
|
512
|
+
const { data } = await network({
|
|
513
|
+
method: "GET",
|
|
514
|
+
url: `${this._defaultEndpoint}/cosmos/staking/v1beta1/pool`,
|
|
515
|
+
});
|
|
516
|
+
const { pool } = data;
|
|
517
|
+
return { ...pool };
|
|
518
|
+
};
|
|
519
|
+
|
|
520
|
+
queryDistributionParams = async (): Promise<OsmosisDistributionParams> => {
|
|
521
|
+
const { data } = await network({
|
|
522
|
+
method: "GET",
|
|
523
|
+
url: `${this._defaultEndpoint}/cosmos/distribution/v1beta1/params`,
|
|
524
|
+
});
|
|
525
|
+
const { params } = data;
|
|
526
|
+
return { ...params };
|
|
527
|
+
};
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
export const osmosisAPI = new OsmosisAPI();
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export const OsmosisTransactionTypeEnum = {
|
|
2
|
+
// See https://docs.figment.io/network-documentation/cosmos/enriched-apis/transaction-search
|
|
3
|
+
// for help on these types.
|
|
4
|
+
Send: "send",
|
|
5
|
+
MultiSend: "multisend",
|
|
6
|
+
Delegate: "delegate",
|
|
7
|
+
Redelegate: "begin_redelegate",
|
|
8
|
+
Undelegate: "undelegate",
|
|
9
|
+
Reward: "withdraw_delegator_reward",
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const OsmosisCurrency = "uosmo";
|
|
13
|
+
|
|
14
|
+
// This type describes what a Transaction looks like as returned by the indexer
|
|
15
|
+
export interface OsmosisAccountTransaction {
|
|
16
|
+
id: string;
|
|
17
|
+
hash: string;
|
|
18
|
+
block_hash: string;
|
|
19
|
+
height: number;
|
|
20
|
+
chain_id: string;
|
|
21
|
+
time: Date;
|
|
22
|
+
transaction_fee: OsmosisAmount[];
|
|
23
|
+
gas_wanted: number;
|
|
24
|
+
gas_used: number;
|
|
25
|
+
version: string;
|
|
26
|
+
events: OsmosisEvent[];
|
|
27
|
+
has_errors: boolean;
|
|
28
|
+
memo?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface OsmosisAmount {
|
|
31
|
+
text: string;
|
|
32
|
+
currency: string;
|
|
33
|
+
numeric: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface CosmosAmount {
|
|
37
|
+
amount: string;
|
|
38
|
+
denom: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface OsmosisEventNestedContent {
|
|
42
|
+
account: any;
|
|
43
|
+
amounts: OsmosisAmount[];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface OsmosisSendEventContent {
|
|
47
|
+
type: string[];
|
|
48
|
+
module: string;
|
|
49
|
+
sender: OsmosisEventNestedContent[];
|
|
50
|
+
recipient: OsmosisEventNestedContent[];
|
|
51
|
+
transfers: any[];
|
|
52
|
+
}
|
|
53
|
+
export interface OsmosisStakingEventContent {
|
|
54
|
+
type: string[];
|
|
55
|
+
module: string;
|
|
56
|
+
node: any;
|
|
57
|
+
amount: any;
|
|
58
|
+
transfers: any;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface OsmosisEvent {
|
|
62
|
+
id: string;
|
|
63
|
+
kind: typeof OsmosisTransactionTypeEnum;
|
|
64
|
+
sub: OsmosisSendEventContent[] | OsmosisStakingEventContent[];
|
|
65
|
+
}
|