@cardano-sdk/wallet 0.1.4 → 0.1.8
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/LICENSE +201 -0
- package/NOTICE +5 -0
- package/README.md +8 -0
- package/dist/KeyManagement/InMemoryKeyManager.d.ts +9 -0
- package/dist/KeyManagement/InMemoryKeyManager.d.ts.map +1 -0
- package/dist/KeyManagement/InMemoryKeyManager.js +94 -0
- package/dist/KeyManagement/InMemoryKeyManager.js.map +1 -0
- package/dist/KeyManagement/errors/InvalidMnemonic.d.ts +5 -0
- package/dist/KeyManagement/errors/InvalidMnemonic.d.ts.map +1 -0
- package/dist/KeyManagement/errors/InvalidMnemonic.js +13 -0
- package/dist/KeyManagement/errors/InvalidMnemonic.js.map +1 -0
- package/{src/KeyManagement/errors/index.ts → dist/KeyManagement/errors/index.d.ts} +1 -0
- package/dist/KeyManagement/errors/index.d.ts.map +1 -0
- package/dist/KeyManagement/errors/index.js +6 -0
- package/dist/KeyManagement/errors/index.js.map +1 -0
- package/{src/KeyManagement/index.ts → dist/KeyManagement/index.d.ts} +1 -0
- package/dist/KeyManagement/index.d.ts.map +1 -0
- package/dist/KeyManagement/index.js +30 -0
- package/dist/KeyManagement/index.js.map +1 -0
- package/dist/KeyManagement/types.d.ts +30 -0
- package/dist/KeyManagement/types.d.ts.map +1 -0
- package/dist/KeyManagement/types.js +15 -0
- package/dist/KeyManagement/types.js.map +1 -0
- package/dist/KeyManagement/util.d.ts +6 -0
- package/dist/KeyManagement/util.d.ts.map +1 -0
- package/dist/KeyManagement/util.js +31 -0
- package/dist/KeyManagement/util.js.map +1 -0
- package/dist/SingleAddressWallet.d.ts +45 -0
- package/dist/SingleAddressWallet.d.ts.map +1 -0
- package/dist/SingleAddressWallet.js +158 -0
- package/dist/SingleAddressWallet.js.map +1 -0
- package/dist/Transaction/computeImplicitCoin.d.ts +4 -0
- package/dist/Transaction/computeImplicitCoin.d.ts.map +1 -0
- package/dist/Transaction/computeImplicitCoin.js +21 -0
- package/dist/Transaction/computeImplicitCoin.js.map +1 -0
- package/dist/Transaction/createTransactionInternals.d.ts +16 -0
- package/dist/Transaction/createTransactionInternals.d.ts.map +1 -0
- package/dist/Transaction/createTransactionInternals.js +28 -0
- package/dist/Transaction/createTransactionInternals.js.map +1 -0
- package/dist/Transaction/ensureValidityInterval.d.ts +3 -0
- package/dist/Transaction/ensureValidityInterval.d.ts.map +1 -0
- package/dist/Transaction/ensureValidityInterval.js +6 -0
- package/dist/Transaction/ensureValidityInterval.js.map +1 -0
- package/dist/Transaction/index.d.ts +4 -0
- package/dist/Transaction/index.d.ts.map +1 -0
- package/dist/Transaction/index.js +16 -0
- package/dist/Transaction/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/services/AssetsTracker.d.ts +16 -0
- package/dist/services/AssetsTracker.d.ts.map +1 -0
- package/dist/services/AssetsTracker.js +13 -0
- package/dist/services/AssetsTracker.js.map +1 -0
- package/dist/services/BalanceTracker.d.ts +5 -0
- package/dist/services/BalanceTracker.d.ts.map +1 -0
- package/dist/services/BalanceTracker.js +43 -0
- package/dist/services/BalanceTracker.js.map +1 -0
- package/dist/services/DelegationTracker/DelegationTracker.d.ts +26 -0
- package/dist/services/DelegationTracker/DelegationTracker.d.ts.map +1 -0
- package/dist/services/DelegationTracker/DelegationTracker.js +39 -0
- package/dist/services/DelegationTracker/DelegationTracker.js.map +1 -0
- package/dist/services/DelegationTracker/RewardAccounts.d.ts +36 -0
- package/dist/services/DelegationTracker/RewardAccounts.d.ts.map +1 -0
- package/dist/services/DelegationTracker/RewardAccounts.js +86 -0
- package/dist/services/DelegationTracker/RewardAccounts.js.map +1 -0
- package/dist/services/DelegationTracker/RewardsHistory.d.ts +14 -0
- package/dist/services/DelegationTracker/RewardsHistory.d.ts.map +1 -0
- package/dist/services/DelegationTracker/RewardsHistory.js +27 -0
- package/dist/services/DelegationTracker/RewardsHistory.js.map +1 -0
- package/dist/services/DelegationTracker/index.d.ts +5 -0
- package/dist/services/DelegationTracker/index.d.ts.map +1 -0
- package/dist/services/DelegationTracker/index.js +17 -0
- package/dist/services/DelegationTracker/index.js.map +1 -0
- package/dist/services/DelegationTracker/transactionCertificates.d.ts +9 -0
- package/dist/services/DelegationTracker/transactionCertificates.d.ts.map +1 -0
- package/dist/services/DelegationTracker/transactionCertificates.js +33 -0
- package/dist/services/DelegationTracker/transactionCertificates.js.map +1 -0
- package/dist/services/DelegationTracker/types.d.ts +6 -0
- package/dist/services/DelegationTracker/types.d.ts.map +1 -0
- package/dist/services/DelegationTracker/types.js +3 -0
- package/dist/services/DelegationTracker/types.js.map +1 -0
- package/dist/services/TransactionError.d.ts +15 -0
- package/dist/services/TransactionError.d.ts.map +1 -0
- package/dist/services/TransactionError.js +23 -0
- package/dist/services/TransactionError.js.map +1 -0
- package/dist/services/TransactionsTracker.d.ts +22 -0
- package/dist/services/TransactionsTracker.d.ts.map +1 -0
- package/dist/services/TransactionsTracker.js +75 -0
- package/dist/services/TransactionsTracker.js.map +1 -0
- package/dist/services/UtxoTracker.d.ts +18 -0
- package/dist/services/UtxoTracker.d.ts.map +1 -0
- package/dist/services/UtxoTracker.js +20 -0
- package/dist/services/UtxoTracker.js.map +1 -0
- package/dist/services/index.d.ts +9 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +21 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/types.d.ts +81 -0
- package/dist/services/types.d.ts.map +1 -0
- package/dist/services/types.js +16 -0
- package/dist/services/types.js.map +1 -0
- package/dist/services/util/SyncableIntervalTrackerSubject.d.ts +19 -0
- package/dist/services/util/SyncableIntervalTrackerSubject.d.ts.map +1 -0
- package/dist/services/util/SyncableIntervalTrackerSubject.js +30 -0
- package/dist/services/util/SyncableIntervalTrackerSubject.js.map +1 -0
- package/dist/services/util/TrackerSubject.d.ts +14 -0
- package/dist/services/util/TrackerSubject.d.ts.map +1 -0
- package/dist/services/util/TrackerSubject.js +46 -0
- package/dist/services/util/TrackerSubject.js.map +1 -0
- package/dist/services/util/coldObservableProvider.d.ts +4 -0
- package/dist/services/util/coldObservableProvider.d.ts.map +1 -0
- package/dist/services/util/coldObservableProvider.js +14 -0
- package/dist/services/util/coldObservableProvider.js.map +1 -0
- package/dist/services/util/equals.d.ts +9 -0
- package/dist/services/util/equals.d.ts.map +1 -0
- package/dist/services/util/equals.js +19 -0
- package/dist/services/util/equals.js.map +1 -0
- package/dist/services/util/index.d.ts +6 -0
- package/dist/services/util/index.d.ts.map +1 -0
- package/dist/services/util/index.js +18 -0
- package/dist/services/util/index.js.map +1 -0
- package/dist/services/util/trigger.d.ts +5 -0
- package/dist/services/util/trigger.d.ts.map +1 -0
- package/dist/services/util/trigger.js +9 -0
- package/dist/services/util/trigger.js.map +1 -0
- package/dist/types.d.ts +35 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +17 -8
- package/jest.config.js +0 -1
- package/src/Address.ts +0 -12
- package/src/BalanceTracker.ts +0 -62
- package/src/InMemoryTransactionTracker.ts +0 -87
- package/src/InMemoryUtxoRepository.ts +0 -192
- package/src/KeyManagement/InMemoryKeyManager.ts +0 -67
- package/src/KeyManagement/errors/InvalidMnemonic.ts +0 -9
- package/src/KeyManagement/types.ts +0 -15
- package/src/KeyManagement/util.ts +0 -14
- package/src/SingleAddressWallet.ts +0 -120
- package/src/Transaction/CertificateFactory.ts +0 -154
- package/src/Transaction/computeImplicitCoin.ts +0 -36
- package/src/Transaction/createTransactionInternals.ts +0 -60
- package/src/Transaction/index.ts +0 -5
- package/src/Transaction/types.ts +0 -12
- package/src/Transaction/withdrawal.ts +0 -17
- package/src/TransactionError.ts +0 -17
- package/src/index.ts +0 -9
- package/src/tsconfig.json +0 -11
- package/src/types.ts +0 -56
- package/test/.eslintrc.js +0 -7
- package/test/BalanceTracker.test.ts +0 -44
- package/test/InMemoryTransactionTracker.test.ts +0 -108
- package/test/InMemoryUtxoRepository.test.ts +0 -242
- package/test/KeyManagement/InMemoryKeyManager.test.ts +0 -39
- package/test/SingleAddressWallet.test.ts +0 -87
- package/test/Transaction/CertificateFactory.test.ts +0 -89
- package/test/Transaction/computeImplicitCoin.test.ts +0 -26
- package/test/Transaction/createTransactionInternals.test.ts +0 -84
- package/test/Transaction/withdrawal.test.ts +0 -13
- package/test/integration/withdrawal.test.ts +0 -108
- package/test/mocks/MockTransactionTracker.ts +0 -8
- package/test/mocks/MockUtxoRepository.ts +0 -13
- package/test/mocks/ProviderStub.ts +0 -151
- package/test/mocks/index.ts +0 -4
- package/test/mocks/testKeyManager.ts +0 -10
- package/test/tsconfig.json +0 -12
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRewardAccountsTracker = exports.toRewardAccounts = exports.addressRewards = exports.addressDelegatees = exports.addressKeyStatuses = exports.createDelegateeTracker = exports.getStakePoolIdAtEpoch = exports.createRewardsProvider = exports.fetchRewardsTrigger$ = exports.createQueryStakePoolsProvider = void 0;
|
|
4
|
+
const core_1 = require("@cardano-sdk/core");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
const rxjs_1 = require("rxjs");
|
|
7
|
+
const _1 = require(".");
|
|
8
|
+
const __1 = require("..");
|
|
9
|
+
const util_1 = require("../util");
|
|
10
|
+
const lodash_es_1 = require("lodash-es");
|
|
11
|
+
const transactionCertificates_1 = require("./transactionCertificates");
|
|
12
|
+
const createQueryStakePoolsProvider = (stakePoolSearchProvider, retryBackoffConfig) => (fragments) => util_1.coldObservableProvider(() => stakePoolSearchProvider.queryStakePools(fragments), retryBackoffConfig);
|
|
13
|
+
exports.createQueryStakePoolsProvider = createQueryStakePoolsProvider;
|
|
14
|
+
const getWithdrawalQuantity = ({ body: { withdrawals } }, rewardAccount) => core_1.BigIntMath.sum(withdrawals?.map(({ quantity, stakeAddress }) => (stakeAddress === rewardAccount ? quantity : 0n)) || []);
|
|
15
|
+
const fetchRewardsTrigger$ = (epoch$, txConfirmed$, rewardAccount) => rxjs_1.merge(epoch$, txConfirmed$.pipe(rxjs_1.map((tx) => getWithdrawalQuantity(tx, rewardAccount)), rxjs_1.filter((withdrawalQty) => withdrawalQty > 0n)));
|
|
16
|
+
exports.fetchRewardsTrigger$ = fetchRewardsTrigger$;
|
|
17
|
+
const createRewardsProvider = (epoch$, txConfirmed$, walletProvider, retryBackoffConfig) => (rewardAccounts) => rxjs_1.combineLatest(rewardAccounts.map((rewardAccount) => util_1.coldObservableProvider(() => walletProvider.utxoDelegationAndRewards([], rewardAccount), retryBackoffConfig, exports.fetchRewardsTrigger$(epoch$, txConfirmed$, rewardAccount)).pipe(rxjs_1.map(({ delegationAndRewards }) => delegationAndRewards?.rewards || 0n), rxjs_1.distinctUntilChanged())));
|
|
18
|
+
exports.createRewardsProvider = createRewardsProvider;
|
|
19
|
+
const isDelegationCertificate = (cert) => cert.__typename === core_1.Cardano.CertificateType.StakeDelegation;
|
|
20
|
+
const getAccountsKeyStatus = (addresses) => ([transactions, transactionsInFlight]) => {
|
|
21
|
+
const certificatesInFlight = transactionsInFlight.map(({ body: { certificates } }) => certificates || []);
|
|
22
|
+
return addresses.map((address) => {
|
|
23
|
+
const isRegistered = transactionCertificates_1.isLastStakeKeyCertOfType(transactions.map(({ tx: { body: { certificates } } }) => certificates || []), core_1.Cardano.CertificateType.StakeKeyRegistration, address);
|
|
24
|
+
const isRegistering = transactionCertificates_1.isLastStakeKeyCertOfType(certificatesInFlight, core_1.Cardano.CertificateType.StakeKeyRegistration, address);
|
|
25
|
+
const isUnregistering = transactionCertificates_1.isLastStakeKeyCertOfType(certificatesInFlight, core_1.Cardano.CertificateType.StakeKeyDeregistration, address);
|
|
26
|
+
return isRegistering
|
|
27
|
+
? types_1.StakeKeyStatus.Registering
|
|
28
|
+
: isUnregistering
|
|
29
|
+
? types_1.StakeKeyStatus.Unregistering
|
|
30
|
+
: isRegistered
|
|
31
|
+
? types_1.StakeKeyStatus.Registered
|
|
32
|
+
: types_1.StakeKeyStatus.Unregistered;
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
const accountCertificateTransactions = (transactions$, rewardAccount) => transactions$.pipe(rxjs_1.map((transactions) => transactions
|
|
36
|
+
.map(({ tx, epoch }) => ({
|
|
37
|
+
certificates: (tx.body.certificates || [])
|
|
38
|
+
.filter((cert) => [..._1.RegAndDeregCertificateTypes, core_1.Cardano.CertificateType.StakeDelegation].includes(cert.__typename))
|
|
39
|
+
.filter((cert) => cert.address === rewardAccount),
|
|
40
|
+
epoch
|
|
41
|
+
}))
|
|
42
|
+
.filter(({ certificates }) => certificates.length > 0)), rxjs_1.distinctUntilChanged((a, b) => lodash_es_1.isEqual(a, b)));
|
|
43
|
+
const getStakePoolIdAtEpoch = (transactions) => (atEpoch) => {
|
|
44
|
+
const certificatesUpToEpoch = transactions
|
|
45
|
+
.filter(({ epoch }) => epoch < atEpoch - 2)
|
|
46
|
+
.map(({ certificates }) => certificates);
|
|
47
|
+
if (!transactionCertificates_1.isLastStakeKeyCertOfType(certificatesUpToEpoch, core_1.Cardano.CertificateType.StakeKeyRegistration))
|
|
48
|
+
return;
|
|
49
|
+
const delegationTxCertificates = lodash_es_1.findLast(certificatesUpToEpoch, (certs) => __1.includesAnyCertificate(certs, [core_1.Cardano.CertificateType.StakeDelegation]));
|
|
50
|
+
if (!delegationTxCertificates)
|
|
51
|
+
return;
|
|
52
|
+
return lodash_es_1.findLast(delegationTxCertificates.filter(isDelegationCertificate))?.poolId;
|
|
53
|
+
};
|
|
54
|
+
exports.getStakePoolIdAtEpoch = getStakePoolIdAtEpoch;
|
|
55
|
+
const createDelegateeTracker = (stakePoolSearchProvider, epoch$, certificates$) => rxjs_1.combineLatest([certificates$, epoch$]).pipe(rxjs_1.switchMap(([transactions, lastEpoch]) => {
|
|
56
|
+
const stakePoolIds = [lastEpoch + 1, lastEpoch + 2, lastEpoch + 3].map(exports.getStakePoolIdAtEpoch(transactions));
|
|
57
|
+
return stakePoolSearchProvider(lodash_es_1.uniq(stakePoolIds.filter(core_1.util.isNotNil))).pipe(rxjs_1.map((stakePools) => stakePoolIds.map((poolId) => stakePools.find((pool) => pool.id === poolId) || undefined)), rxjs_1.map(([currentEpoch, nextEpoch, nextNextEpoch]) => {
|
|
58
|
+
if (!nextNextEpoch)
|
|
59
|
+
return;
|
|
60
|
+
return { currentEpoch, nextEpoch, nextNextEpoch };
|
|
61
|
+
}));
|
|
62
|
+
}), rxjs_1.distinctUntilChanged((a, b) => lodash_es_1.isEqual(a, b)));
|
|
63
|
+
exports.createDelegateeTracker = createDelegateeTracker;
|
|
64
|
+
const addressKeyStatuses = (addresses, transactions$, transactionsInFlight$) => rxjs_1.combineLatest([transactions$, transactionsInFlight$]).pipe(rxjs_1.map(getAccountsKeyStatus(addresses)), rxjs_1.distinctUntilChanged(util_1.shallowArrayEquals));
|
|
65
|
+
exports.addressKeyStatuses = addressKeyStatuses;
|
|
66
|
+
const addressDelegatees = (addresses, transactions$, stakePoolSearchProvider, epoch$) => rxjs_1.combineLatest(addresses.map((address) => exports.createDelegateeTracker(stakePoolSearchProvider, epoch$, accountCertificateTransactions(transactions$, address))));
|
|
67
|
+
exports.addressDelegatees = addressDelegatees;
|
|
68
|
+
const addressRewards = (rewardAccounts, transactionsInFlight$, rewardsProvider) => rxjs_1.combineLatest([rewardsProvider(rewardAccounts), transactionsInFlight$]).pipe(rxjs_1.map(([totalRewards, transactionsInFlight]) => totalRewards.map((total, i) => ({
|
|
69
|
+
available: total - transactionsInFlight.reduce((sum, tx) => sum + getWithdrawalQuantity(tx, rewardAccounts[i]), 0n),
|
|
70
|
+
total
|
|
71
|
+
}))), rxjs_1.distinctUntilChanged(util_1.deepEquals));
|
|
72
|
+
exports.addressRewards = addressRewards;
|
|
73
|
+
const toRewardAccounts = (addresses) => ([statuses, delegatees, rewards]) => addresses.map((address, i) => ({
|
|
74
|
+
address,
|
|
75
|
+
delegatee: delegatees[i],
|
|
76
|
+
keyStatus: statuses[i],
|
|
77
|
+
rewardBalance: rewards[i]
|
|
78
|
+
}));
|
|
79
|
+
exports.toRewardAccounts = toRewardAccounts;
|
|
80
|
+
const createRewardAccountsTracker = ({ rewardAccountAddresses$, stakePoolSearchProvider, rewardsProvider, epoch$, transactions$, transactionsInFlight$ }) => rewardAccountAddresses$.pipe(rxjs_1.switchMap((rewardAccounts) => rxjs_1.combineLatest([
|
|
81
|
+
exports.addressKeyStatuses(rewardAccounts, transactions$, transactionsInFlight$),
|
|
82
|
+
exports.addressDelegatees(rewardAccounts, transactions$, stakePoolSearchProvider, epoch$),
|
|
83
|
+
exports.addressRewards(rewardAccounts, transactionsInFlight$, rewardsProvider)
|
|
84
|
+
]).pipe(rxjs_1.map(exports.toRewardAccounts(rewardAccounts)))));
|
|
85
|
+
exports.createRewardAccountsTracker = createRewardAccountsTracker;
|
|
86
|
+
//# sourceMappingURL=RewardAccounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RewardAccounts.js","sourceRoot":"","sources":["../../../src/services/DelegationTracker/RewardAccounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Cardano, WalletProvider } from '@cardano-sdk/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RetryBackoffConfig } from 'backoff-rxjs';
|
|
4
|
+
import { RewardAccount } from '@cardano-ogmios/schema';
|
|
5
|
+
import { TxWithEpoch } from './types';
|
|
6
|
+
export declare const createRewardsHistoryProvider: (walletProvider: WalletProvider, rewardAccountAddresses$: Observable<RewardAccount[]>, retryBackoffConfig: RetryBackoffConfig) => (lowerBound: Cardano.Epoch | null) => Observable<import("@cardano-sdk/core").EpochRewards[]>;
|
|
7
|
+
export declare type RewardsHistoryProvider = ReturnType<typeof createRewardsHistoryProvider>;
|
|
8
|
+
export declare const createRewardsHistoryTracker: (transactions$: Observable<TxWithEpoch[]>, rewardsHistoryProvider: RewardsHistoryProvider) => Observable<{
|
|
9
|
+
all: import("@cardano-sdk/core").EpochRewards[];
|
|
10
|
+
avgReward: bigint | null;
|
|
11
|
+
lastReward: import("@cardano-sdk/core").EpochRewards | null;
|
|
12
|
+
lifetimeRewards: bigint;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=RewardsHistory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RewardsHistory.d.ts","sourceRoot":"","sources":["../../../src/services/DelegationTracker/RewardsHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,OAAO,EAAE,cAAc,EAAQ,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAA4C,MAAM,MAAM,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAKtC,eAAO,MAAM,4BAA4B,mBAErB,cAAc,2BACL,WAAW,aAAa,EAAE,CAAC,sBAChC,kBAAkB,kBAE3B,QAAQ,KAAK,GAAG,IAAI,2DAcrB,CAAC;AAEf,oBAAY,sBAAsB,GAAG,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAarF,eAAO,MAAM,2BAA2B,kBACvB,WAAW,WAAW,EAAE,CAAC,0BAChB,sBAAsB;;;;;EAa7C,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRewardsHistoryTracker = exports.createRewardsHistoryProvider = void 0;
|
|
4
|
+
const core_1 = require("@cardano-sdk/core");
|
|
5
|
+
const rxjs_1 = require("rxjs");
|
|
6
|
+
const util_1 = require("../util");
|
|
7
|
+
const lodash_es_1 = require("lodash-es");
|
|
8
|
+
const transactionCertificates_1 = require("./transactionCertificates");
|
|
9
|
+
const createRewardsHistoryProvider = (walletProvider, rewardAccountAddresses$, retryBackoffConfig) => (lowerBound) => lowerBound
|
|
10
|
+
? rewardAccountAddresses$.pipe(rxjs_1.switchMap((stakeAddresses) => util_1.coldObservableProvider(() => walletProvider.rewardsHistory({
|
|
11
|
+
epochs: { lowerBound },
|
|
12
|
+
stakeAddresses
|
|
13
|
+
}), retryBackoffConfig)))
|
|
14
|
+
: rxjs_1.of([]);
|
|
15
|
+
exports.createRewardsHistoryProvider = createRewardsHistoryProvider;
|
|
16
|
+
const firstDelegationEpoch$ = (transactions$) => transactions$.pipe(rxjs_1.map((transactions) => lodash_es_1.first(transactions.filter(({ tx }) => transactionCertificates_1.transactionHasAnyCertificate(tx, [core_1.Cardano.CertificateType.StakeDelegation])))), rxjs_1.map((tx) => (core_1.util.isNotNil(tx) ? tx.epoch + 3 : null)), rxjs_1.distinctUntilChanged());
|
|
17
|
+
const createRewardsHistoryTracker = (transactions$, rewardsHistoryProvider) => firstDelegationEpoch$(transactions$).pipe(rxjs_1.switchMap((firstEpoch) => rewardsHistoryProvider(firstEpoch)), rxjs_1.map((all) => {
|
|
18
|
+
const lifetimeRewards = core_1.BigIntMath.sum(all.map(({ rewards }) => rewards));
|
|
19
|
+
return {
|
|
20
|
+
all,
|
|
21
|
+
avgReward: all.length > 0 ? lifetimeRewards / BigInt(all.length) : null,
|
|
22
|
+
lastReward: all.length > 0 ? all[all.length - 1] : null,
|
|
23
|
+
lifetimeRewards
|
|
24
|
+
};
|
|
25
|
+
}));
|
|
26
|
+
exports.createRewardsHistoryTracker = createRewardsHistoryTracker;
|
|
27
|
+
//# sourceMappingURL=RewardsHistory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RewardsHistory.js","sourceRoot":"","sources":["../../../src/services/DelegationTracker/RewardsHistory.ts"],"names":[],"mappings":";;;AAAA,4CAA8E;AAC9E,+BAA4E;AAI5E,kCAAiD;AACjD,yCAAkC;AAClC,uEAAyE;AAElE,MAAM,4BAA4B,GACvC,CACE,cAA8B,EAC9B,uBAAoD,EACpD,kBAAsC,EACtC,EAAE,CACJ,CAAC,UAAgC,EAAE,EAAE,CACnC,UAAU;IACR,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAC1B,gBAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAC3B,6BAAsB,CACpB,GAAG,EAAE,CACH,cAAc,CAAC,cAAc,CAAC;QAC5B,MAAM,EAAE,EAAE,UAAU,EAAE;QACtB,cAAc;KACf,CAAC,EACJ,kBAAkB,CACnB,CACF,CACF;IACH,CAAC,CAAC,SAAE,CAAC,EAAE,CAAC,CAAC;AApBF,QAAA,4BAA4B,gCAoB1B;AAIf,MAAM,qBAAqB,GAAG,CAAC,aAAwC,EAAE,EAAE,CACzE,aAAa,CAAC,IAAI,CAChB,UAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CACnB,iBAAK,CACH,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,sDAA4B,CAAC,EAAE,EAAE,CAAC,cAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAC7G,CACF,EACD,UAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,WAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EACtD,2BAAoB,EAAE,CACvB,CAAC;AAEG,MAAM,2BAA2B,GAAG,CACzC,aAAwC,EACxC,sBAA8C,EAC9C,EAAE,CACF,qBAAqB,CAAC,aAAa,CAAC,CAAC,IAAI,CACvC,gBAAS,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,EAC7D,UAAG,CAAC,CAAC,GAAG,EAAE,EAAE;IACV,MAAM,eAAe,GAAG,iBAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,OAAO;QACL,GAAG;QACH,SAAS,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QACvE,UAAU,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QACvD,eAAe;KAChB,CAAC;AACJ,CAAC,CAAC,CACH,CAAC;AAfS,QAAA,2BAA2B,+BAepC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/DelegationTracker/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./RewardsHistory"), exports);
|
|
14
|
+
__exportStar(require("./DelegationTracker"), exports);
|
|
15
|
+
__exportStar(require("./RewardAccounts"), exports);
|
|
16
|
+
__exportStar(require("./transactionCertificates"), exports);
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/DelegationTracker/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAiC;AACjC,sDAAoC;AACpC,mDAAiC;AACjC,4DAA0C"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Cardano } from '@cardano-sdk/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
export declare const RegAndDeregCertificateTypes: Cardano.CertificateType[];
|
|
4
|
+
export declare const stakeKeyCertficates: (certificates?: Cardano.Certificate[] | undefined) => Cardano.StakeAddressCertificate[];
|
|
5
|
+
export declare const includesAnyCertificate: (haystack: Cardano.Certificate[], needle: Cardano.CertificateType[]) => boolean;
|
|
6
|
+
export declare const transactionHasAnyCertificate: ({ body: { certificates } }: Cardano.TxAlonzo, certificateTypes: Cardano.CertificateType[]) => boolean;
|
|
7
|
+
export declare const isLastStakeKeyCertOfType: (transactionsCertificates: Cardano.Certificate[][], certType: Cardano.CertificateType.StakeKeyRegistration | Cardano.CertificateType.StakeKeyDeregistration, rewardAccount?: string | undefined) => boolean;
|
|
8
|
+
export declare const transactionsWithCertificates: (transactions$: Observable<Cardano.TxAlonzo[]>, certificateTypes: Cardano.CertificateType[]) => Observable<Cardano.TxAlonzo[]>;
|
|
9
|
+
//# sourceMappingURL=transactionCertificates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionCertificates.d.ts","sourceRoot":"","sources":["../../../src/services/DelegationTracker/transactionCertificates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAA6B,MAAM,MAAM,CAAC;AAI7D,eAAO,MAAM,2BAA2B,2BAGvC,CAAC;AAEF,eAAO,MAAM,mBAAmB,yFAGvB,CAAC;AAEV,eAAO,MAAM,sBAAsB,aAAc,QAAQ,WAAW,EAAE,UAAU,QAAQ,eAAe,EAAE,YAChC,CAAC;AAE1E,eAAO,MAAM,4BAA4B,+BACX,QAAQ,QAAQ,oBAC1B,QAAQ,eAAe,EAAE,YACoB,CAAC;AAElE,eAAO,MAAM,wBAAwB,6BACT,QAAQ,WAAW,EAAE,EAAE,YACvC,QAAQ,eAAe,CAAC,oBAAoB,GAAG,QAAQ,eAAe,CAAC,sBAAsB,gDAexG,CAAC;AAEF,eAAO,MAAM,4BAA4B,kBACxB,WAAW,QAAQ,QAAQ,EAAE,CAAC,oBAC3B,QAAQ,eAAe,EAAE,mCAK1C,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transactionsWithCertificates = exports.isLastStakeKeyCertOfType = exports.transactionHasAnyCertificate = exports.includesAnyCertificate = exports.stakeKeyCertficates = exports.RegAndDeregCertificateTypes = void 0;
|
|
4
|
+
const core_1 = require("@cardano-sdk/core");
|
|
5
|
+
const rxjs_1 = require("rxjs");
|
|
6
|
+
const lodash_es_1 = require("lodash-es");
|
|
7
|
+
const equals_1 = require("../util/equals");
|
|
8
|
+
exports.RegAndDeregCertificateTypes = [
|
|
9
|
+
core_1.Cardano.CertificateType.StakeKeyRegistration,
|
|
10
|
+
core_1.Cardano.CertificateType.StakeKeyDeregistration
|
|
11
|
+
];
|
|
12
|
+
const stakeKeyCertficates = (certificates) => certificates?.filter((certificate) => exports.RegAndDeregCertificateTypes.includes(certificate.__typename)) || [];
|
|
13
|
+
exports.stakeKeyCertficates = stakeKeyCertficates;
|
|
14
|
+
const includesAnyCertificate = (haystack, needle) => haystack.some(({ __typename }) => needle.includes(__typename)) || false;
|
|
15
|
+
exports.includesAnyCertificate = includesAnyCertificate;
|
|
16
|
+
const transactionHasAnyCertificate = ({ body: { certificates } }, certificateTypes) => exports.includesAnyCertificate(certificates || [], certificateTypes);
|
|
17
|
+
exports.transactionHasAnyCertificate = transactionHasAnyCertificate;
|
|
18
|
+
const isLastStakeKeyCertOfType = (transactionsCertificates, certType, rewardAccount) => {
|
|
19
|
+
const lastRegOrDereg = lodash_es_1.last(transactionsCertificates
|
|
20
|
+
.map((certificates) => {
|
|
21
|
+
const allStakeKeyCertificates = exports.stakeKeyCertficates(certificates);
|
|
22
|
+
const addressStakeKeyCertificates = rewardAccount
|
|
23
|
+
? allStakeKeyCertificates.filter(({ address }) => rewardAccount === address)
|
|
24
|
+
: allStakeKeyCertificates;
|
|
25
|
+
return lodash_es_1.last(addressStakeKeyCertificates);
|
|
26
|
+
})
|
|
27
|
+
.filter(core_1.util.isNotNil));
|
|
28
|
+
return lastRegOrDereg?.__typename === certType;
|
|
29
|
+
};
|
|
30
|
+
exports.isLastStakeKeyCertOfType = isLastStakeKeyCertOfType;
|
|
31
|
+
const transactionsWithCertificates = (transactions$, certificateTypes) => transactions$.pipe(rxjs_1.map((transactions) => transactions.filter((tx) => exports.transactionHasAnyCertificate(tx, certificateTypes))), rxjs_1.distinctUntilChanged(equals_1.transactionsEquals));
|
|
32
|
+
exports.transactionsWithCertificates = transactionsWithCertificates;
|
|
33
|
+
//# sourceMappingURL=transactionCertificates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionCertificates.js","sourceRoot":"","sources":["../../../src/services/DelegationTracker/transactionCertificates.ts"],"names":[],"mappings":";;;AAAA,4CAAkD;AAClD,+BAA6D;AAC7D,yCAAiC;AACjC,2CAAoD;AAEvC,QAAA,2BAA2B,GAAG;IACzC,cAAO,CAAC,eAAe,CAAC,oBAAoB;IAC5C,cAAO,CAAC,eAAe,CAAC,sBAAsB;CAC/C,CAAC;AAEK,MAAM,mBAAmB,GAAG,CAAC,YAAoC,EAAE,EAAE,CAC1E,YAAY,EAAE,MAAM,CAAC,CAAC,WAAW,EAAkD,EAAE,CACnF,mCAA2B,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAC7D,IAAI,EAAE,CAAC;AAHG,QAAA,mBAAmB,uBAGtB;AAEH,MAAM,sBAAsB,GAAG,CAAC,QAA+B,EAAE,MAAiC,EAAE,EAAE,CAC3G,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,CAAC;AAD7D,QAAA,sBAAsB,0BACuC;AAEnE,MAAM,4BAA4B,GAAG,CAC1C,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,EAAoB,EAC5C,gBAA2C,EAC3C,EAAE,CAAC,8BAAsB,CAAC,YAAY,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAHrD,QAAA,4BAA4B,gCAGyB;AAE3D,MAAM,wBAAwB,GAAG,CACtC,wBAAiD,EACjD,QAAuG,EACvG,aAA+B,EAC/B,EAAE;IACF,MAAM,cAAc,GAAG,gBAAI,CACzB,wBAAwB;SACrB,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;QACpB,MAAM,uBAAuB,GAAG,2BAAmB,CAAC,YAAY,CAAC,CAAC;QAClE,MAAM,2BAA2B,GAAG,aAAa;YAC/C,CAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,aAAa,KAAK,OAAO,CAAC;YAC5E,CAAC,CAAC,uBAAuB,CAAC;QAC5B,OAAO,gBAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC,CAAC;SACD,MAAM,CAAC,WAAI,CAAC,QAAQ,CAAC,CACzB,CAAC;IACF,OAAO,cAAc,EAAE,UAAU,KAAK,QAAQ,CAAC;AACjD,CAAC,CAAC;AAjBW,QAAA,wBAAwB,4BAiBnC;AAEK,MAAM,4BAA4B,GAAG,CAC1C,aAA6C,EAC7C,gBAA2C,EAC3C,EAAE,CACF,aAAa,CAAC,IAAI,CAChB,UAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,oCAA4B,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACtG,2BAAoB,CAAC,2BAAkB,CAAC,CACzC,CAAC;AAPS,QAAA,4BAA4B,gCAOrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/DelegationTracker/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/DelegationTracker/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CustomError } from 'ts-custom-error';
|
|
2
|
+
export declare enum TransactionFailure {
|
|
3
|
+
InvalidTransaction = "INVALID_TRANSACTION",
|
|
4
|
+
FailedToSubmit = "FAILED_TO_SUBMIT",
|
|
5
|
+
Unknown = "UNKNOWN",
|
|
6
|
+
CannotTrack = "CANNOT_TRACK",
|
|
7
|
+
Timeout = "TIMEOUT"
|
|
8
|
+
}
|
|
9
|
+
export declare class TransactionError extends CustomError {
|
|
10
|
+
reason: TransactionFailure;
|
|
11
|
+
innerError?: unknown;
|
|
12
|
+
detail?: string | undefined;
|
|
13
|
+
constructor(reason: TransactionFailure, innerError?: unknown, detail?: string | undefined);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=TransactionError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionError.d.ts","sourceRoot":"","sources":["../../src/services/TransactionError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,oBAAY,kBAAkB;IAC5B,kBAAkB,wBAAwB;IAC1C,cAAc,qBAAqB;IACnC,OAAO,YAAY;IACnB,WAAW,iBAAiB;IAC5B,OAAO,YAAY;CACpB;AAID,qBAAa,gBAAiB,SAAQ,WAAW;IAC5B,MAAM,EAAE,kBAAkB;IAAS,UAAU,CAAC;IAAkB,MAAM,CAAC;gBAAvE,MAAM,EAAE,kBAAkB,EAAS,UAAU,CAAC,SAAS,EAAS,MAAM,CAAC,oBAAQ;CAGnG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransactionError = exports.TransactionFailure = void 0;
|
|
4
|
+
const ts_custom_error_1 = require("ts-custom-error");
|
|
5
|
+
var TransactionFailure;
|
|
6
|
+
(function (TransactionFailure) {
|
|
7
|
+
TransactionFailure["InvalidTransaction"] = "INVALID_TRANSACTION";
|
|
8
|
+
TransactionFailure["FailedToSubmit"] = "FAILED_TO_SUBMIT";
|
|
9
|
+
TransactionFailure["Unknown"] = "UNKNOWN";
|
|
10
|
+
TransactionFailure["CannotTrack"] = "CANNOT_TRACK";
|
|
11
|
+
TransactionFailure["Timeout"] = "TIMEOUT";
|
|
12
|
+
})(TransactionFailure = exports.TransactionFailure || (exports.TransactionFailure = {}));
|
|
13
|
+
const formatDetail = (detail) => (detail ? ` (${detail})` : '');
|
|
14
|
+
class TransactionError extends ts_custom_error_1.CustomError {
|
|
15
|
+
constructor(reason, innerError, detail) {
|
|
16
|
+
super(`Transaction failed: ${reason}${formatDetail(detail)}`);
|
|
17
|
+
this.reason = reason;
|
|
18
|
+
this.innerError = innerError;
|
|
19
|
+
this.detail = detail;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.TransactionError = TransactionError;
|
|
23
|
+
//# sourceMappingURL=TransactionError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionError.js","sourceRoot":"","sources":["../../src/services/TransactionError.ts"],"names":[],"mappings":";;;AAAA,qDAA8C;AAE9C,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,gEAA0C,CAAA;IAC1C,yDAAmC,CAAA;IACnC,yCAAmB,CAAA;IACnB,kDAA4B,CAAA;IAC5B,yCAAmB,CAAA;AACrB,CAAC,EANW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAM7B;AAED,MAAM,YAAY,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEzE,MAAa,gBAAiB,SAAQ,6BAAW;IAC/C,YAAmB,MAA0B,EAAS,UAAoB,EAAS,MAAe;QAChG,KAAK,CAAC,uBAAuB,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAD7C,WAAM,GAAN,MAAM,CAAoB;QAAS,eAAU,GAAV,UAAU,CAAU;QAAS,WAAM,GAAN,MAAM,CAAS;IAElG,CAAC;CACF;AAJD,4CAIC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Cardano, WalletProvider } from '@cardano-sdk/core';
|
|
2
|
+
import { DirectionalTransaction, FailedTx, TransactionsTracker } from './types';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { RetryBackoffConfig } from 'backoff-rxjs';
|
|
5
|
+
import { TrackerSubject } from './util/TrackerSubject';
|
|
6
|
+
export interface TransactionsTrackerProps {
|
|
7
|
+
walletProvider: WalletProvider;
|
|
8
|
+
addresses$: Observable<Cardano.Address[]>;
|
|
9
|
+
tip$: Observable<Cardano.Tip>;
|
|
10
|
+
retryBackoffConfig: RetryBackoffConfig;
|
|
11
|
+
newTransactions: {
|
|
12
|
+
submitting$: Observable<Cardano.NewTxAlonzo>;
|
|
13
|
+
pending$: Observable<Cardano.NewTxAlonzo>;
|
|
14
|
+
failedToSubmit$: Observable<FailedTx>;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export interface TransactionsTrackerInternals {
|
|
18
|
+
transactionsSource$?: TrackerSubject<DirectionalTransaction[]>;
|
|
19
|
+
}
|
|
20
|
+
export declare const createAddressTransactionsProvider: (walletProvider: WalletProvider, addresses$: Observable<Cardano.Address[]>, retryBackoffConfig: RetryBackoffConfig, tipBlockHeight$: Observable<number>) => Observable<DirectionalTransaction[]>;
|
|
21
|
+
export declare const createTransactionsTracker: ({ tip$, walletProvider, addresses$, newTransactions: { submitting$, pending$, failedToSubmit$ }, retryBackoffConfig }: TransactionsTrackerProps, { transactionsSource$ }?: TransactionsTrackerInternals) => TransactionsTracker;
|
|
22
|
+
//# sourceMappingURL=TransactionsTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionsTracker.d.ts","sourceRoot":"","sources":["../../src/services/TransactionsTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAwB,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACtG,OAAO,EAEL,UAAU,EAgBX,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1C,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,eAAe,EAAE;QACf,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC7C,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,eAAe,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;KACvC,CAAC;CACH;AAED,MAAM,WAAW,4BAA4B;IAC3C,mBAAmB,CAAC,EAAE,cAAc,CAAC,sBAAsB,EAAE,CAAC,CAAC;CAChE;AAED,eAAO,MAAM,iCAAiC,mBAC5B,cAAc,cAClB,WAAW,QAAQ,OAAO,EAAE,CAAC,sBACrB,kBAAkB,mBACrB,WAAW,MAAM,CAAC,KAClC,WAAW,sBAAsB,EAAE,CA4BrC,CAAC;AAgBF,eAAO,MAAM,yBAAyB,0HAOjC,wBAAwB,4BAKxB,4BAA4B,KAC9B,mBA+FF,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createTransactionsTracker = exports.createAddressTransactionsProvider = void 0;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
const rxjs_1 = require("rxjs");
|
|
6
|
+
const TrackerSubject_1 = require("./util/TrackerSubject");
|
|
7
|
+
const TransactionError_1 = require("./TransactionError");
|
|
8
|
+
const util_1 = require("./util");
|
|
9
|
+
const lodash_es_1 = require("lodash-es");
|
|
10
|
+
const createAddressTransactionsProvider = (walletProvider, addresses$, retryBackoffConfig, tipBlockHeight$) => {
|
|
11
|
+
const isMyAddress = (addresses) => ({ address }) => addresses.includes(address);
|
|
12
|
+
return addresses$.pipe(rxjs_1.switchMap((addresses) => util_1.coldObservableProvider(() => walletProvider.queryTransactionsByAddresses(addresses), retryBackoffConfig, tipBlockHeight$, util_1.transactionsEquals).pipe(rxjs_1.map((transactions) => lodash_es_1.sortBy(transactions, ({ blockHeader: { blockHeight } }) => blockHeight, ({ index }) => index).map((tx) => {
|
|
13
|
+
const direction = tx.body.inputs.some(isMyAddress(addresses))
|
|
14
|
+
? types_1.TransactionDirection.Outgoing
|
|
15
|
+
: types_1.TransactionDirection.Incoming;
|
|
16
|
+
return { direction, tx };
|
|
17
|
+
})))));
|
|
18
|
+
};
|
|
19
|
+
exports.createAddressTransactionsProvider = createAddressTransactionsProvider;
|
|
20
|
+
const newTransactions$ = (transactions$) => transactions$.pipe(rxjs_1.take(1), rxjs_1.map((transactions) => transactions.map(({ id }) => id)), rxjs_1.mergeMap((initialTransactionIds) => {
|
|
21
|
+
const ignoredTransactionIds = [...initialTransactionIds];
|
|
22
|
+
return transactions$.pipe(rxjs_1.map((transactions) => transactions.filter(({ id }) => !ignoredTransactionIds.includes(id))), rxjs_1.tap((newTransactions) => ignoredTransactionIds.push(...newTransactions.map(({ id }) => id))), rxjs_1.mergeMap((newTransactions) => rxjs_1.concat(...newTransactions.map((tx) => rxjs_1.of(tx)))));
|
|
23
|
+
}));
|
|
24
|
+
const createTransactionsTracker = ({ tip$, walletProvider, addresses$, newTransactions: { submitting$, pending$, failedToSubmit$ }, retryBackoffConfig }, { transactionsSource$ = new TrackerSubject_1.TrackerSubject(exports.createAddressTransactionsProvider(walletProvider, addresses$, retryBackoffConfig, util_1.sharedDistinctBlock(tip$))) } = {}) => {
|
|
25
|
+
const providerTransactionsByDirection$ = (direction) => transactionsSource$.pipe(rxjs_1.map((transactions) => transactions.filter((tx) => tx.direction === direction).map(({ tx }) => tx)), rxjs_1.distinctUntilChanged(util_1.transactionsEquals));
|
|
26
|
+
const incomingTransactionHistory$ = new TrackerSubject_1.TrackerSubject(providerTransactionsByDirection$(types_1.TransactionDirection.Incoming));
|
|
27
|
+
const outgoingTransactionHistory$ = new TrackerSubject_1.TrackerSubject(providerTransactionsByDirection$(types_1.TransactionDirection.Outgoing));
|
|
28
|
+
const txConfirmed$ = (tx) => newTransactions$(outgoingTransactionHistory$).pipe(rxjs_1.filter((historyTx) => historyTx.id === tx.id), rxjs_1.take(1), rxjs_1.map(() => tx));
|
|
29
|
+
const failed$ = new rxjs_1.Subject();
|
|
30
|
+
const failedSubscription = submitting$
|
|
31
|
+
.pipe(rxjs_1.mergeMap((tx) => {
|
|
32
|
+
const invalidHereafter = tx.body.validityInterval.invalidHereafter;
|
|
33
|
+
return rxjs_1.race(failedToSubmit$.pipe(rxjs_1.filter((failed) => failed.tx === tx), rxjs_1.take(1)), invalidHereafter
|
|
34
|
+
? tip$.pipe(rxjs_1.filter(({ slot }) => slot > invalidHereafter), rxjs_1.map(() => ({ reason: TransactionError_1.TransactionFailure.Timeout, tx })), rxjs_1.take(1))
|
|
35
|
+
: rxjs_1.EMPTY).pipe(rxjs_1.takeUntil(txConfirmed$(tx)));
|
|
36
|
+
}))
|
|
37
|
+
.subscribe(failed$);
|
|
38
|
+
const txFailed$ = (tx) => failed$.pipe(rxjs_1.filter((failed) => failed.tx === tx), rxjs_1.take(1));
|
|
39
|
+
const inFlight$ = new TrackerSubject_1.TrackerSubject(submitting$.pipe(rxjs_1.mergeMap((tx) => rxjs_1.merge(rxjs_1.of({ op: 'add', tx }), rxjs_1.race(txConfirmed$(tx), txFailed$(tx)).pipe(rxjs_1.map(() => ({ op: 'remove', tx }))))), rxjs_1.scan((inFlight, { op, tx }) => {
|
|
40
|
+
if (op === 'add') {
|
|
41
|
+
return [...inFlight, tx];
|
|
42
|
+
}
|
|
43
|
+
const idx = inFlight.indexOf(tx);
|
|
44
|
+
return [...inFlight.splice(0, idx), ...inFlight.splice(idx + 1)];
|
|
45
|
+
}, []), rxjs_1.startWith([])));
|
|
46
|
+
const confirmed$ = new rxjs_1.Subject();
|
|
47
|
+
const confirmedSubscription = submitting$
|
|
48
|
+
.pipe(rxjs_1.mergeMap((tx) => txConfirmed$(tx).pipe(rxjs_1.takeUntil(txFailed$(tx)))))
|
|
49
|
+
.subscribe(confirmed$);
|
|
50
|
+
return {
|
|
51
|
+
history: {
|
|
52
|
+
all$: transactionsSource$,
|
|
53
|
+
incoming$: incomingTransactionHistory$,
|
|
54
|
+
outgoing$: outgoingTransactionHistory$
|
|
55
|
+
},
|
|
56
|
+
incoming$: newTransactions$(incomingTransactionHistory$),
|
|
57
|
+
outgoing: {
|
|
58
|
+
confirmed$,
|
|
59
|
+
failed$,
|
|
60
|
+
inFlight$,
|
|
61
|
+
pending$,
|
|
62
|
+
submitting$
|
|
63
|
+
},
|
|
64
|
+
shutdown: () => {
|
|
65
|
+
transactionsSource$.complete();
|
|
66
|
+
inFlight$.complete();
|
|
67
|
+
confirmedSubscription.unsubscribe();
|
|
68
|
+
confirmed$.complete();
|
|
69
|
+
failedSubscription.unsubscribe();
|
|
70
|
+
failed$.complete();
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
exports.createTransactionsTracker = createTransactionsTracker;
|
|
75
|
+
//# sourceMappingURL=TransactionsTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionsTracker.js","sourceRoot":"","sources":["../../src/services/TransactionsTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Cardano, WalletProvider } from '@cardano-sdk/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RetryBackoffConfig } from 'backoff-rxjs';
|
|
4
|
+
import { TrackerSubject } from './util';
|
|
5
|
+
import { TransactionalTracker } from './types';
|
|
6
|
+
export interface UtxoTrackerProps {
|
|
7
|
+
walletProvider: WalletProvider;
|
|
8
|
+
addresses$: Observable<Cardano.Address[]>;
|
|
9
|
+
transactionsInFlight$: Observable<Cardano.NewTxAlonzo[]>;
|
|
10
|
+
tipBlockHeight$: Observable<number>;
|
|
11
|
+
retryBackoffConfig: RetryBackoffConfig;
|
|
12
|
+
}
|
|
13
|
+
export interface UtxoTrackerInternals {
|
|
14
|
+
utxoSource$?: TrackerSubject<Cardano.Utxo[]>;
|
|
15
|
+
}
|
|
16
|
+
export declare const createUtxoProvider: (walletProvider: WalletProvider, addresses$: Observable<Cardano.Address[]>, tipBlockHeight$: Observable<number>, retryBackoffConfig: RetryBackoffConfig) => Observable<Cardano.Utxo[]>;
|
|
17
|
+
export declare const createUtxoTracker: ({ walletProvider, addresses$, transactionsInFlight$, retryBackoffConfig, tipBlockHeight$ }: UtxoTrackerProps, { utxoSource$ }?: UtxoTrackerInternals) => TransactionalTracker<Cardano.Utxo[]>;
|
|
18
|
+
//# sourceMappingURL=UtxoTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UtxoTracker.d.ts","sourceRoot":"","sources":["../../src/services/UtxoTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAiC,MAAM,MAAM,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,cAAc,EAAsC,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1C,qBAAqB,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACpC,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;CAC9C;AAED,eAAO,MAAM,kBAAkB,mBACb,cAAc,cAClB,WAAW,QAAQ,OAAO,EAAE,CAAC,mBACxB,WAAW,MAAM,CAAC,sBACf,kBAAkB,+BAWrC,CAAC;AAEJ,eAAO,MAAM,iBAAiB,+FACgE,gBAAgB,oBAKzG,oBAAoB,KACtB,qBAAqB,QAAQ,IAAI,EAAE,CAyBrC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createUtxoTracker = exports.createUtxoProvider = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const util_1 = require("./util");
|
|
6
|
+
const createUtxoProvider = (walletProvider, addresses$, tipBlockHeight$, retryBackoffConfig) => addresses$.pipe(rxjs_1.switchMap((addresses) => util_1.coldObservableProvider(() => walletProvider.utxoDelegationAndRewards(addresses).then(({ utxo }) => utxo), retryBackoffConfig, tipBlockHeight$, util_1.utxoEquals)));
|
|
7
|
+
exports.createUtxoProvider = createUtxoProvider;
|
|
8
|
+
const createUtxoTracker = ({ walletProvider, addresses$, transactionsInFlight$, retryBackoffConfig, tipBlockHeight$ }, { utxoSource$ = new util_1.TrackerSubject(exports.createUtxoProvider(walletProvider, addresses$, tipBlockHeight$, retryBackoffConfig)) } = {}) => {
|
|
9
|
+
const available$ = new util_1.TrackerSubject(rxjs_1.combineLatest([utxoSource$, transactionsInFlight$]).pipe(rxjs_1.map(([utxo, transactionsInFlight]) => utxo.filter(([utxoTxIn]) => !transactionsInFlight.some(({ body: { inputs } }) => inputs.some((input) => input.txId === utxoTxIn.txId && input.index === utxoTxIn.index))))));
|
|
10
|
+
return {
|
|
11
|
+
available$,
|
|
12
|
+
shutdown: () => {
|
|
13
|
+
utxoSource$.complete();
|
|
14
|
+
available$.complete();
|
|
15
|
+
},
|
|
16
|
+
total$: utxoSource$
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
exports.createUtxoTracker = createUtxoTracker;
|
|
20
|
+
//# sourceMappingURL=UtxoTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UtxoTracker.js","sourceRoot":"","sources":["../../src/services/UtxoTracker.ts"],"names":[],"mappings":";;;AACA,+BAAiE;AAEjE,iCAA4E;AAerE,MAAM,kBAAkB,GAAG,CAChC,cAA8B,EAC9B,UAAyC,EACzC,eAAmC,EACnC,kBAAsC,EACtC,EAAE,CACF,UAAU,CAAC,IAAI,CACb,gBAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CACtB,6BAAsB,CACpB,GAAG,EAAE,CAAC,cAAc,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EACjF,kBAAkB,EAClB,eAAe,EACf,iBAAU,CACX,CACF,CACF,CAAC;AAfS,QAAA,kBAAkB,sBAe3B;AAEG,MAAM,iBAAiB,GAAG,CAC/B,EAAE,cAAc,EAAE,UAAU,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,eAAe,EAAoB,EAC5G,EACE,WAAW,GAAG,IAAI,qBAAc,CAC9B,0BAAkB,CAAC,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,kBAAkB,CAAC,CACpF,KACuB,EAAE,EACU,EAAE;IACxC,MAAM,UAAU,GAAG,IAAI,qBAAc,CACnC,oBAAa,CAAC,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAEtD,UAAG,CAAC,CAAC,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,EAAE,CACnC,IAAI,CAAC,MAAM,CACT,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CACb,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAClD,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,CACvF,CACJ,CACF,CACF,CACF,CAAC;IACF,OAAO;QACL,UAAU;QACV,QAAQ,EAAE,GAAG,EAAE;YACb,WAAW,CAAC,QAAQ,EAAE,CAAC;YACvB,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;QAID,MAAM,EAAE,WAAW;KACpB,CAAC;AACJ,CAAC,CAAC;AAhCW,QAAA,iBAAiB,qBAgC5B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './util';
|
|
2
|
+
export * from './BalanceTracker';
|
|
3
|
+
export * from './UtxoTracker';
|
|
4
|
+
export * from './DelegationTracker';
|
|
5
|
+
export * from './TransactionsTracker';
|
|
6
|
+
export * from './AssetsTracker';
|
|
7
|
+
export * from './TransactionError';
|
|
8
|
+
export * from './types';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./util"), exports);
|
|
14
|
+
__exportStar(require("./BalanceTracker"), exports);
|
|
15
|
+
__exportStar(require("./UtxoTracker"), exports);
|
|
16
|
+
__exportStar(require("./DelegationTracker"), exports);
|
|
17
|
+
__exportStar(require("./TransactionsTracker"), exports);
|
|
18
|
+
__exportStar(require("./AssetsTracker"), exports);
|
|
19
|
+
__exportStar(require("./TransactionError"), exports);
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuB;AACvB,mDAAiC;AACjC,gDAA8B;AAC9B,sDAAoC;AACpC,wDAAsC;AACtC,kDAAgC;AAChC,qDAAmC;AACnC,0CAAwB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { BehaviorObservable } from './util';
|
|
2
|
+
import { Cardano, EpochRewards } from '@cardano-sdk/core';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { TransactionFailure } from './TransactionError';
|
|
5
|
+
export interface Balance extends Cardano.Value {
|
|
6
|
+
rewards: Cardano.Lovelace;
|
|
7
|
+
deposit: Cardano.Lovelace;
|
|
8
|
+
}
|
|
9
|
+
export interface TransactionalObservables<T> {
|
|
10
|
+
total$: BehaviorObservable<T>;
|
|
11
|
+
available$: BehaviorObservable<T>;
|
|
12
|
+
}
|
|
13
|
+
export interface TransactionalTracker<T> extends TransactionalObservables<T> {
|
|
14
|
+
shutdown(): void;
|
|
15
|
+
}
|
|
16
|
+
export declare type Milliseconds = number;
|
|
17
|
+
export interface PollingConfig {
|
|
18
|
+
readonly interval?: Milliseconds;
|
|
19
|
+
readonly maxInterval?: Milliseconds;
|
|
20
|
+
}
|
|
21
|
+
export declare enum TransactionDirection {
|
|
22
|
+
Incoming = "Incoming",
|
|
23
|
+
Outgoing = "Outgoing"
|
|
24
|
+
}
|
|
25
|
+
export interface DirectionalTransaction {
|
|
26
|
+
tx: Cardano.TxAlonzo;
|
|
27
|
+
direction: TransactionDirection;
|
|
28
|
+
}
|
|
29
|
+
export interface FailedTx {
|
|
30
|
+
tx: Cardano.NewTxAlonzo;
|
|
31
|
+
reason: TransactionFailure;
|
|
32
|
+
}
|
|
33
|
+
export interface TransactionsTracker {
|
|
34
|
+
readonly history: {
|
|
35
|
+
all$: BehaviorObservable<DirectionalTransaction[]>;
|
|
36
|
+
outgoing$: BehaviorObservable<Cardano.TxAlonzo[]>;
|
|
37
|
+
incoming$: BehaviorObservable<Cardano.TxAlonzo[]>;
|
|
38
|
+
};
|
|
39
|
+
readonly outgoing: {
|
|
40
|
+
readonly inFlight$: BehaviorObservable<Cardano.NewTxAlonzo[]>;
|
|
41
|
+
readonly submitting$: Observable<Cardano.NewTxAlonzo>;
|
|
42
|
+
readonly pending$: Observable<Cardano.NewTxAlonzo>;
|
|
43
|
+
readonly failed$: Observable<FailedTx>;
|
|
44
|
+
readonly confirmed$: Observable<Cardano.NewTxAlonzo>;
|
|
45
|
+
};
|
|
46
|
+
readonly incoming$: Observable<Cardano.TxAlonzo>;
|
|
47
|
+
shutdown(): void;
|
|
48
|
+
}
|
|
49
|
+
export interface RewardsHistory {
|
|
50
|
+
all: EpochRewards[];
|
|
51
|
+
lastReward: EpochRewards | null;
|
|
52
|
+
avgReward: Cardano.Lovelace | null;
|
|
53
|
+
lifetimeRewards: Cardano.Lovelace;
|
|
54
|
+
}
|
|
55
|
+
export interface Delegatee {
|
|
56
|
+
currentEpoch?: Cardano.StakePool;
|
|
57
|
+
nextEpoch?: Cardano.StakePool;
|
|
58
|
+
nextNextEpoch: Cardano.StakePool;
|
|
59
|
+
}
|
|
60
|
+
export declare enum StakeKeyStatus {
|
|
61
|
+
Registering = "REGISTERING",
|
|
62
|
+
Registered = "REGISTERED",
|
|
63
|
+
Unregistering = "UNREGISTERING",
|
|
64
|
+
Unregistered = "UNREGISTERED"
|
|
65
|
+
}
|
|
66
|
+
export interface RewardBalance {
|
|
67
|
+
total: Cardano.Lovelace;
|
|
68
|
+
available: Cardano.Lovelace;
|
|
69
|
+
}
|
|
70
|
+
export interface RewardAccount {
|
|
71
|
+
address: Cardano.Address;
|
|
72
|
+
keyStatus: StakeKeyStatus;
|
|
73
|
+
delegatee?: Delegatee;
|
|
74
|
+
rewardBalance: RewardBalance;
|
|
75
|
+
}
|
|
76
|
+
export interface DelegationTracker {
|
|
77
|
+
rewardsHistory$: BehaviorObservable<RewardsHistory>;
|
|
78
|
+
rewardAccounts$: Observable<RewardAccount[]>;
|
|
79
|
+
shutdown(): void;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=types.d.ts.map
|