@cardano-sdk/wallet 0.1.7 → 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/dist/KeyManagement/InMemoryKeyManager.d.ts.map +1 -1
- package/dist/KeyManagement/InMemoryKeyManager.js +38 -25
- package/dist/KeyManagement/InMemoryKeyManager.js.map +1 -1
- package/dist/KeyManagement/types.d.ts +20 -6
- package/dist/KeyManagement/types.d.ts.map +1 -1
- package/dist/KeyManagement/types.js +12 -0
- package/dist/KeyManagement/types.js.map +1 -1
- package/dist/SingleAddressWallet.d.ts +14 -10
- package/dist/SingleAddressWallet.d.ts.map +1 -1
- package/dist/SingleAddressWallet.js +24 -40
- package/dist/SingleAddressWallet.js.map +1 -1
- 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 +1 -1
- package/dist/services/BalanceTracker.d.ts.map +1 -1
- package/dist/services/BalanceTracker.js +19 -9
- package/dist/services/BalanceTracker.js.map +1 -1
- package/dist/services/DelegationTracker/DelegationTracker.d.ts +4 -5
- package/dist/services/DelegationTracker/DelegationTracker.d.ts.map +1 -1
- package/dist/services/DelegationTracker/DelegationTracker.js +12 -29
- package/dist/services/DelegationTracker/DelegationTracker.js.map +1 -1
- 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 +2 -2
- package/dist/services/DelegationTracker/RewardsHistory.d.ts.map +1 -1
- package/dist/services/DelegationTracker/RewardsHistory.js +6 -3
- package/dist/services/DelegationTracker/RewardsHistory.js.map +1 -1
- package/dist/services/DelegationTracker/index.d.ts +1 -1
- package/dist/services/DelegationTracker/index.d.ts.map +1 -1
- package/dist/services/DelegationTracker/index.js +1 -1
- package/dist/services/DelegationTracker/index.js.map +1 -1
- package/dist/services/DelegationTracker/transactionCertificates.d.ts +5 -6
- package/dist/services/DelegationTracker/transactionCertificates.d.ts.map +1 -1
- package/dist/services/DelegationTracker/transactionCertificates.js +12 -10
- package/dist/services/DelegationTracker/transactionCertificates.js.map +1 -1
- package/dist/services/TransactionsTracker.d.ts +3 -3
- package/dist/services/TransactionsTracker.d.ts.map +1 -1
- package/dist/services/TransactionsTracker.js +20 -9
- package/dist/services/TransactionsTracker.js.map +1 -1
- package/dist/services/UtxoTracker.d.ts +3 -3
- package/dist/services/UtxoTracker.d.ts.map +1 -1
- package/dist/services/UtxoTracker.js +2 -2
- package/dist/services/UtxoTracker.js.map +1 -1
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/types.d.ts +10 -5
- package/dist/services/types.d.ts.map +1 -1
- package/dist/services/types.js.map +1 -1
- package/dist/services/util/equals.d.ts +2 -0
- package/dist/services/util/equals.d.ts.map +1 -1
- package/dist/services/util/equals.js +6 -1
- package/dist/services/util/equals.js.map +1 -1
- package/dist/types.d.ts +4 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -6
- package/dist/types.js.map +1 -1
- package/package.json +4 -4
- package/dist/services/DelegationTracker/Delegatee.d.ts +0 -10
- package/dist/services/DelegationTracker/Delegatee.d.ts.map +0 -1
- package/dist/services/DelegationTracker/Delegatee.js +0 -27
- package/dist/services/DelegationTracker/Delegatee.js.map +0 -1
- package/dist/services/RewardsTracker.d.ts +0 -20
- package/dist/services/RewardsTracker.d.ts.map +0 -1
- package/dist/services/RewardsTracker.js +0 -22
- package/dist/services/RewardsTracker.js.map +0 -1
|
@@ -1,54 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createDelegationTracker = exports.
|
|
3
|
+
exports.createDelegationTracker = exports.certificateTransactionsWithEpochs = exports.createBlockEpochProvider = void 0;
|
|
4
4
|
const core_1 = require("@cardano-sdk/core");
|
|
5
|
-
const types_1 = require("../types");
|
|
6
5
|
const rxjs_1 = require("rxjs");
|
|
7
|
-
const
|
|
6
|
+
const RewardAccounts_1 = require("./RewardAccounts");
|
|
8
7
|
const RewardsHistory_1 = require("./RewardsHistory");
|
|
9
8
|
const util_1 = require("../util");
|
|
10
|
-
const lodash_es_1 = require("lodash-es");
|
|
11
9
|
const transactionCertificates_1 = require("./transactionCertificates");
|
|
12
10
|
const createBlockEpochProvider = (walletProvider, retryBackoffConfig) => (blockHashes) => util_1.coldObservableProvider(() => walletProvider.queryBlocksByHashes(blockHashes), retryBackoffConfig).pipe(rxjs_1.map((blocks) => blocks.map(({ epoch }) => epoch)));
|
|
13
11
|
exports.createBlockEpochProvider = createBlockEpochProvider;
|
|
14
|
-
const certificateTransactionsWithEpochs = (transactionsTracker, blockEpochProvider, certificateTypes) => transactionCertificates_1.
|
|
12
|
+
const certificateTransactionsWithEpochs = (transactionsTracker, blockEpochProvider, certificateTypes) => transactionCertificates_1.transactionsWithCertificates(transactionsTracker.history.outgoing$, certificateTypes).pipe(rxjs_1.switchMap((transactions) => blockEpochProvider(transactions.map((tx) => tx.blockHeader.blockHash)).pipe(rxjs_1.map((epochs) => transactions.map((tx, txIndex) => ({ epoch: epochs[txIndex], tx }))))), rxjs_1.share());
|
|
15
13
|
exports.certificateTransactionsWithEpochs = certificateTransactionsWithEpochs;
|
|
16
|
-
const
|
|
17
|
-
const rewardAccounts = lodash_es_1.uniq([...transactions, ...transactionsInFlight].flatMap(({ body }) => transactionCertificates_1.transactionStakeKeyCertficates(body).map((cert) => cert.address)));
|
|
18
|
-
return rewardAccounts.map((address) => {
|
|
19
|
-
const isRegistered = transactionCertificates_1.isLastStakeKeyCertOfType(transactions, core_1.Cardano.CertificateType.StakeKeyRegistration, address);
|
|
20
|
-
const isRegistering = transactionCertificates_1.isLastStakeKeyCertOfType(transactionsInFlight, core_1.Cardano.CertificateType.StakeKeyRegistration, address);
|
|
21
|
-
const isUnregistering = transactionCertificates_1.isLastStakeKeyCertOfType(transactionsInFlight, core_1.Cardano.CertificateType.StakeKeyDeregistration, address);
|
|
22
|
-
return {
|
|
23
|
-
address,
|
|
24
|
-
keyStatus: isRegistering
|
|
25
|
-
? types_1.StakeKeyStatus.Registering
|
|
26
|
-
: isUnregistering
|
|
27
|
-
? types_1.StakeKeyStatus.Unregistering
|
|
28
|
-
: isRegistered
|
|
29
|
-
? types_1.StakeKeyStatus.Registered
|
|
30
|
-
: types_1.StakeKeyStatus.Unregistered
|
|
31
|
-
};
|
|
32
|
-
});
|
|
33
|
-
}), rxjs_1.distinctUntilChanged(lodash_es_1.isEqual));
|
|
34
|
-
exports.createRewardAccountsTracker = createRewardAccountsTracker;
|
|
35
|
-
const createDelegationTracker = ({ keyManager, epoch$, walletProvider, retryBackoffConfig, transactionsTracker, stakePoolSearchProvider, internals: { queryStakePoolsProvider = Delegatee_1.createQueryStakePoolsProvider(stakePoolSearchProvider, retryBackoffConfig), rewardsHistoryProvider = RewardsHistory_1.createRewardsHistoryProvider(walletProvider, keyManager, retryBackoffConfig), blockEpochProvider = exports.createBlockEpochProvider(walletProvider, retryBackoffConfig) } = {} }) => {
|
|
14
|
+
const createDelegationTracker = ({ rewardAccountAddresses$, epoch$, walletProvider, retryBackoffConfig, transactionsTracker, stakePoolSearchProvider, internals: { queryStakePoolsProvider = RewardAccounts_1.createQueryStakePoolsProvider(stakePoolSearchProvider, retryBackoffConfig), rewardsHistoryProvider = RewardsHistory_1.createRewardsHistoryProvider(walletProvider, rewardAccountAddresses$, retryBackoffConfig), rewardsProvider = RewardAccounts_1.createRewardsProvider(epoch$, transactionsTracker.outgoing.confirmed$, walletProvider, retryBackoffConfig), blockEpochProvider = exports.createBlockEpochProvider(walletProvider, retryBackoffConfig) } = {} }) => {
|
|
36
15
|
const transactions$ = exports.certificateTransactionsWithEpochs(transactionsTracker, blockEpochProvider, [
|
|
37
16
|
core_1.Cardano.CertificateType.StakeDelegation,
|
|
38
17
|
core_1.Cardano.CertificateType.StakeKeyRegistration,
|
|
39
18
|
core_1.Cardano.CertificateType.StakeKeyDeregistration
|
|
40
19
|
]);
|
|
41
20
|
const rewardsHistory$ = new util_1.TrackerSubject(RewardsHistory_1.createRewardsHistoryTracker(transactions$, rewardsHistoryProvider));
|
|
42
|
-
const
|
|
43
|
-
|
|
21
|
+
const rewardAccounts$ = new util_1.TrackerSubject(RewardAccounts_1.createRewardAccountsTracker({
|
|
22
|
+
epoch$,
|
|
23
|
+
rewardAccountAddresses$,
|
|
24
|
+
rewardsProvider,
|
|
25
|
+
stakePoolSearchProvider: queryStakePoolsProvider,
|
|
26
|
+
transactions$,
|
|
27
|
+
transactionsInFlight$: transactionsTracker.outgoing.inFlight$
|
|
28
|
+
}));
|
|
44
29
|
return {
|
|
45
|
-
delegatee$,
|
|
46
30
|
rewardAccounts$,
|
|
47
31
|
rewardsHistory$,
|
|
48
32
|
shutdown: () => {
|
|
49
33
|
rewardAccounts$.complete();
|
|
50
34
|
rewardsHistory$.complete();
|
|
51
|
-
delegatee$.complete();
|
|
52
35
|
}
|
|
53
36
|
};
|
|
54
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DelegationTracker.js","sourceRoot":"","sources":["../../../src/services/DelegationTracker/DelegationTracker.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"DelegationTracker.js","sourceRoot":"","sources":["../../../src/services/DelegationTracker/DelegationTracker.ts"],"names":[],"mappings":";;;AAAA,4CAAqF;AAErF,+BAAyD;AACzD,qDAM0B;AAE1B,qDAAqH;AACrH,kCAAiE;AAEjE,uEAAyE;AAElE,MAAM,wBAAwB,GACnC,CAAC,cAA8B,EAAE,kBAAsC,EAAE,EAAE,CAAC,CAAC,WAA6B,EAAE,EAAE,CAC5G,6BAAsB,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,CAAC,IAAI,CACpG,UAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAClD,CAAC;AAJO,QAAA,wBAAwB,4BAI/B;AAmBC,MAAM,iCAAiC,GAAG,CAC/C,mBAAwC,EACxC,kBAAsC,EACtC,gBAA2C,EAChB,EAAE,CAC7B,sDAA4B,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,IAAI,CACxF,gBAAS,CAAC,CAAC,YAAY,EAAE,EAAE,CACzB,kBAAkB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACzE,UAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CACrF,CACF,EACD,YAAK,EAAE,CACR,CAAC;AAZS,QAAA,iCAAiC,qCAY1C;AAEG,MAAM,uBAAuB,GAAG,CAAC,EACtC,uBAAuB,EACvB,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,SAAS,EAAE,EACT,uBAAuB,GAAG,8CAA6B,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,EACpG,sBAAsB,GAAG,6CAA4B,CAAC,cAAc,EAAE,uBAAuB,EAAE,kBAAkB,CAAC,EAClH,eAAe,GAAG,sCAAqB,CACrC,MAAM,EACN,mBAAmB,CAAC,QAAQ,CAAC,UAAU,EACvC,cAAc,EACd,kBAAkB,CACnB,EACD,kBAAkB,GAAG,gCAAwB,CAAC,cAAc,EAAE,kBAAkB,CAAC,EAClF,GAAG,EAAE,EACiB,EAAqB,EAAE;IAC9C,MAAM,aAAa,GAAG,yCAAiC,CAAC,mBAAmB,EAAE,kBAAkB,EAAE;QAC/F,cAAO,CAAC,eAAe,CAAC,eAAe;QACvC,cAAO,CAAC,eAAe,CAAC,oBAAoB;QAC5C,cAAO,CAAC,eAAe,CAAC,sBAAsB;KAC/C,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,IAAI,qBAAc,CAAC,4CAA2B,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAC/G,MAAM,eAAe,GAAG,IAAI,qBAAc,CACxC,4CAA2B,CAAC;QAC1B,MAAM;QACN,uBAAuB;QACvB,eAAe;QACf,uBAAuB,EAAE,uBAAuB;QAChD,aAAa;QACb,qBAAqB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,SAAS;KAC9D,CAAC,CACH,CAAC;IACF,OAAO;QACL,eAAe;QACf,eAAe;QACf,QAAQ,EAAE,GAAG,EAAE;YACb,eAAe,CAAC,QAAQ,EAAE,CAAC;YAC3B,eAAe,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AA3CW,QAAA,uBAAuB,2BA2ClC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Cardano, StakePoolSearchProvider, WalletProvider } from '@cardano-sdk/core';
|
|
2
|
+
import { Delegatee, RewardAccount, StakeKeyStatus } from '../types';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { RetryBackoffConfig } from 'backoff-rxjs';
|
|
5
|
+
import { RewardBalance } from '..';
|
|
6
|
+
import { TxWithEpoch } from './types';
|
|
7
|
+
export declare const createQueryStakePoolsProvider: (stakePoolSearchProvider: StakePoolSearchProvider, retryBackoffConfig: RetryBackoffConfig) => (fragments: Cardano.PoolId[]) => Observable<Cardano.StakePool[]>;
|
|
8
|
+
export declare type ObservableStakePoolSearchProvider = ReturnType<typeof createQueryStakePoolsProvider>;
|
|
9
|
+
export declare const fetchRewardsTrigger$: (epoch$: Observable<Cardano.Epoch>, txConfirmed$: Observable<Cardano.NewTxAlonzo>, rewardAccount: Cardano.RewardAccount) => Observable<number | bigint>;
|
|
10
|
+
export declare const createRewardsProvider: (epoch$: Observable<Cardano.Epoch>, txConfirmed$: Observable<Cardano.NewTxAlonzo>, walletProvider: WalletProvider, retryBackoffConfig: RetryBackoffConfig) => (rewardAccounts: Cardano.RewardAccount[]) => Observable<bigint[]>;
|
|
11
|
+
export declare type ObservableRewardsProvider = ReturnType<typeof createRewardsProvider>;
|
|
12
|
+
declare const accountCertificateTransactions: (transactions$: Observable<TxWithEpoch[]>, rewardAccount: Cardano.RewardAccount) => Observable<{
|
|
13
|
+
certificates: (Cardano.StakeAddressCertificate | Cardano.StakeDelegationCertificate)[];
|
|
14
|
+
epoch: number;
|
|
15
|
+
}[]>;
|
|
16
|
+
declare type ObservableType<O> = O extends Observable<infer T> ? T : unknown;
|
|
17
|
+
declare type TransactionsCertificates = ObservableType<ReturnType<typeof accountCertificateTransactions>>;
|
|
18
|
+
export declare const getStakePoolIdAtEpoch: (transactions: {
|
|
19
|
+
certificates: (Cardano.StakeAddressCertificate | Cardano.StakeDelegationCertificate)[];
|
|
20
|
+
epoch: number;
|
|
21
|
+
}[]) => (atEpoch: Cardano.Epoch) => string | undefined;
|
|
22
|
+
export declare const createDelegateeTracker: (stakePoolSearchProvider: ObservableStakePoolSearchProvider, epoch$: Observable<Cardano.Epoch>, certificates$: Observable<TransactionsCertificates>) => Observable<Delegatee | undefined>;
|
|
23
|
+
export declare const addressKeyStatuses: (addresses: Cardano.RewardAccount[], transactions$: Observable<TxWithEpoch[]>, transactionsInFlight$: Observable<Cardano.NewTxAlonzo[]>) => Observable<StakeKeyStatus[]>;
|
|
24
|
+
export declare const addressDelegatees: (addresses: Cardano.RewardAccount[], transactions$: Observable<TxWithEpoch[]>, stakePoolSearchProvider: ObservableStakePoolSearchProvider, epoch$: Observable<Cardano.Epoch>) => Observable<(Delegatee | undefined)[]>;
|
|
25
|
+
export declare const addressRewards: (rewardAccounts: Cardano.RewardAccount[], transactionsInFlight$: Observable<Cardano.NewTxAlonzo[]>, rewardsProvider: ObservableRewardsProvider) => Observable<RewardBalance[]>;
|
|
26
|
+
export declare const toRewardAccounts: (addresses: Cardano.RewardAccount[]) => ([statuses, delegatees, rewards]: [StakeKeyStatus[], (Delegatee | undefined)[], RewardBalance[]]) => RewardAccount[];
|
|
27
|
+
export declare const createRewardAccountsTracker: ({ rewardAccountAddresses$, stakePoolSearchProvider, rewardsProvider, epoch$, transactions$, transactionsInFlight$ }: {
|
|
28
|
+
rewardAccountAddresses$: Observable<Cardano.RewardAccount[]>;
|
|
29
|
+
stakePoolSearchProvider: ObservableStakePoolSearchProvider;
|
|
30
|
+
rewardsProvider: ObservableRewardsProvider;
|
|
31
|
+
epoch$: Observable<Cardano.Epoch>;
|
|
32
|
+
transactions$: Observable<TxWithEpoch[]>;
|
|
33
|
+
transactionsInFlight$: Observable<Cardano.NewTxAlonzo[]>;
|
|
34
|
+
}) => Observable<RewardAccount[]>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=RewardAccounts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RewardAccounts.d.ts","sourceRoot":"","sources":["../../../src/services/DelegationTracker/RewardAccounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAQ,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,UAAU,EAAsE,MAAM,MAAM,CAAC;AAEtG,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,aAAa,EAA0B,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAKtC,eAAO,MAAM,6BAA6B,4BACd,uBAAuB,sBAAsB,kBAAkB,iBAC7E,QAAQ,MAAM,EAAE,oCAC0E,CAAC;AACzG,oBAAY,iCAAiC,GAAG,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAUjG,eAAO,MAAM,oBAAoB,WACvB,WAAW,QAAQ,KAAK,CAAC,gBACnB,WAAW,QAAQ,WAAW,CAAC,iBAC9B,qBAAqB,gCASnC,CAAC;AAEJ,eAAO,MAAM,qBAAqB,WAEtB,WAAW,QAAQ,KAAK,CAAC,gBACnB,WAAW,QAAQ,WAAW,CAAC,kBAC7B,cAAc,sBACV,kBAAkB,sBAEvB,qBAAqB,EAAE,yBAYrC,CAAC;AACN,oBAAY,yBAAyB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAyCjF,QAAA,MAAM,8BAA8B,kBACnB,WAAW,WAAW,EAAE,CAAC,iBACzB,qBAAqB;;;IAgBnC,CAAC;AAEJ,aAAK,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;AACrE,aAAK,wBAAwB,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC,CAAC;AAElG,eAAO,MAAM,qBAAqB;;;kBAAyD,QAAQ,KAAK,uBAUvG,CAAC;AAEF,eAAO,MAAM,sBAAsB,4BACR,iCAAiC,UAClD,WAAW,QAAQ,KAAK,CAAC,iBAClB,WAAW,wBAAwB,CAAC,KAClD,WAAW,SAAS,GAAG,SAAS,CAahC,CAAC;AAEJ,eAAO,MAAM,kBAAkB,cAClB,qBAAqB,EAAE,iBACnB,WAAW,WAAW,EAAE,CAAC,yBACjB,WAAW,QAAQ,WAAW,EAAE,CAAC,iCAKvD,CAAC;AAEJ,eAAO,MAAM,iBAAiB,cACjB,qBAAqB,EAAE,iBACnB,WAAW,WAAW,EAAE,CAAC,2BACf,iCAAiC,UAClD,WAAW,QAAQ,KAAK,CAAC,0CAMhC,CAAC;AAEJ,eAAO,MAAM,cAAc,mBACT,qBAAqB,EAAE,yBAChB,WAAW,QAAQ,WAAW,EAAE,CAAC,mBACvC,yBAAyB,KACzC,WAAW,aAAa,EAAE,CAU1B,CAAC;AAEJ,eAAO,MAAM,gBAAgB,cACf,qBAAqB,EAAE,uCACD,CAAC,cAAc,EAAE,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,oBAQ7F,CAAC;AAEN,eAAO,MAAM,2BAA2B;6BAQb,WAAW,qBAAqB,EAAE,CAAC;6BACnC,iCAAiC;qBACzC,yBAAyB;YAClC,WAAW,QAAQ,KAAK,CAAC;mBAClB,WAAW,WAAW,EAAE,CAAC;2BACjB,WAAW,QAAQ,WAAW,EAAE,CAAC;iCAUvD,CAAC"}
|
|
@@ -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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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Cardano, WalletProvider } from '@cardano-sdk/core';
|
|
2
|
-
import { KeyManager } from '../../KeyManagement';
|
|
3
2
|
import { Observable } from 'rxjs';
|
|
4
3
|
import { RetryBackoffConfig } from 'backoff-rxjs';
|
|
4
|
+
import { RewardAccount } from '@cardano-ogmios/schema';
|
|
5
5
|
import { TxWithEpoch } from './types';
|
|
6
|
-
export declare const createRewardsHistoryProvider: (walletProvider: WalletProvider,
|
|
6
|
+
export declare const createRewardsHistoryProvider: (walletProvider: WalletProvider, rewardAccountAddresses$: Observable<RewardAccount[]>, retryBackoffConfig: RetryBackoffConfig) => (lowerBound: Cardano.Epoch | null) => Observable<import("@cardano-sdk/core").EpochRewards[]>;
|
|
7
7
|
export declare type RewardsHistoryProvider = ReturnType<typeof createRewardsHistoryProvider>;
|
|
8
8
|
export declare const createRewardsHistoryTracker: (transactions$: Observable<TxWithEpoch[]>, rewardsHistoryProvider: RewardsHistoryProvider) => Observable<{
|
|
9
9
|
all: import("@cardano-sdk/core").EpochRewards[];
|
|
@@ -1 +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,
|
|
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"}
|
|
@@ -6,11 +6,14 @@ const rxjs_1 = require("rxjs");
|
|
|
6
6
|
const util_1 = require("../util");
|
|
7
7
|
const lodash_es_1 = require("lodash-es");
|
|
8
8
|
const transactionCertificates_1 = require("./transactionCertificates");
|
|
9
|
-
const createRewardsHistoryProvider = (walletProvider,
|
|
10
|
-
? util_1.coldObservableProvider(() => walletProvider.rewardsHistory({
|
|
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)))
|
|
11
14
|
: rxjs_1.of([]);
|
|
12
15
|
exports.createRewardsHistoryProvider = createRewardsHistoryProvider;
|
|
13
|
-
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 +
|
|
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());
|
|
14
17
|
const createRewardsHistoryTracker = (transactions$, rewardsHistoryProvider) => firstDelegationEpoch$(transactions$).pipe(rxjs_1.switchMap((firstEpoch) => rewardsHistoryProvider(firstEpoch)), rxjs_1.map((all) => {
|
|
15
18
|
const lifetimeRewards = core_1.BigIntMath.sum(all.map(({ rewards }) => rewards));
|
|
16
19
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RewardsHistory.js","sourceRoot":"","sources":["../../../src/services/DelegationTracker/RewardsHistory.ts"],"names":[],"mappings":";;;AAAA,4CAA8E;
|
|
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"}
|
|
@@ -1 +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,
|
|
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"}
|
|
@@ -12,6 +12,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./RewardsHistory"), exports);
|
|
14
14
|
__exportStar(require("./DelegationTracker"), exports);
|
|
15
|
-
__exportStar(require("./
|
|
15
|
+
__exportStar(require("./RewardAccounts"), exports);
|
|
16
16
|
__exportStar(require("./transactionCertificates"), exports);
|
|
17
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/DelegationTracker/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAiC;AACjC,sDAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/DelegationTracker/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAiC;AACjC,sDAAoC;AACpC,mDAAiC;AACjC,4DAA0C"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Cardano } from '@cardano-sdk/core';
|
|
2
|
-
import {
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
3
|
export declare const RegAndDeregCertificateTypes: Cardano.CertificateType[];
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const stakeKeyCertficates: (certificates?: Cardano.Certificate[] | undefined) => Cardano.StakeAddressCertificate[];
|
|
5
|
+
export declare const includesAnyCertificate: (haystack: Cardano.Certificate[], needle: Cardano.CertificateType[]) => boolean;
|
|
5
6
|
export declare const transactionHasAnyCertificate: ({ body: { certificates } }: Cardano.TxAlonzo, certificateTypes: Cardano.CertificateType[]) => boolean;
|
|
6
|
-
export declare const isLastStakeKeyCertOfType: (
|
|
7
|
-
|
|
8
|
-
}[], certType: Cardano.CertificateType.StakeKeyRegistration | Cardano.CertificateType.StakeKeyDeregistration, rewardAccount?: string | undefined) => boolean;
|
|
9
|
-
export declare const outgoingTransactionsWithCertificates: (transactionsTracker: TransactionsTracker, certificateTypes: Cardano.CertificateType[]) => import("rxjs").Observable<Cardano.TxAlonzo[]>;
|
|
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[]>;
|
|
10
9
|
//# sourceMappingURL=transactionCertificates.d.ts.map
|
|
@@ -1 +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,
|
|
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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.transactionsWithCertificates = exports.isLastStakeKeyCertOfType = exports.transactionHasAnyCertificate = exports.includesAnyCertificate = exports.stakeKeyCertficates = exports.RegAndDeregCertificateTypes = void 0;
|
|
4
4
|
const core_1 = require("@cardano-sdk/core");
|
|
5
5
|
const rxjs_1 = require("rxjs");
|
|
6
6
|
const lodash_es_1 = require("lodash-es");
|
|
@@ -9,14 +9,16 @@ exports.RegAndDeregCertificateTypes = [
|
|
|
9
9
|
core_1.Cardano.CertificateType.StakeKeyRegistration,
|
|
10
10
|
core_1.Cardano.CertificateType.StakeKeyDeregistration
|
|
11
11
|
];
|
|
12
|
-
const
|
|
13
|
-
exports.
|
|
14
|
-
const
|
|
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);
|
|
15
17
|
exports.transactionHasAnyCertificate = transactionHasAnyCertificate;
|
|
16
|
-
const isLastStakeKeyCertOfType = (
|
|
17
|
-
const lastRegOrDereg = lodash_es_1.last(
|
|
18
|
-
.map((
|
|
19
|
-
const allStakeKeyCertificates = exports.
|
|
18
|
+
const isLastStakeKeyCertOfType = (transactionsCertificates, certType, rewardAccount) => {
|
|
19
|
+
const lastRegOrDereg = lodash_es_1.last(transactionsCertificates
|
|
20
|
+
.map((certificates) => {
|
|
21
|
+
const allStakeKeyCertificates = exports.stakeKeyCertficates(certificates);
|
|
20
22
|
const addressStakeKeyCertificates = rewardAccount
|
|
21
23
|
? allStakeKeyCertificates.filter(({ address }) => rewardAccount === address)
|
|
22
24
|
: allStakeKeyCertificates;
|
|
@@ -26,6 +28,6 @@ const isLastStakeKeyCertOfType = (transactions, certType, rewardAccount) => {
|
|
|
26
28
|
return lastRegOrDereg?.__typename === certType;
|
|
27
29
|
};
|
|
28
30
|
exports.isLastStakeKeyCertOfType = isLastStakeKeyCertOfType;
|
|
29
|
-
const
|
|
30
|
-
exports.
|
|
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;
|
|
31
33
|
//# sourceMappingURL=transactionCertificates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionCertificates.js","sourceRoot":"","sources":["../../../src/services/DelegationTracker/transactionCertificates.ts"],"names":[],"mappings":";;;AAAA,4CAAkD;
|
|
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"}
|
|
@@ -5,7 +5,7 @@ import { RetryBackoffConfig } from 'backoff-rxjs';
|
|
|
5
5
|
import { TrackerSubject } from './util/TrackerSubject';
|
|
6
6
|
export interface TransactionsTrackerProps {
|
|
7
7
|
walletProvider: WalletProvider;
|
|
8
|
-
addresses
|
|
8
|
+
addresses$: Observable<Cardano.Address[]>;
|
|
9
9
|
tip$: Observable<Cardano.Tip>;
|
|
10
10
|
retryBackoffConfig: RetryBackoffConfig;
|
|
11
11
|
newTransactions: {
|
|
@@ -17,6 +17,6 @@ export interface TransactionsTrackerProps {
|
|
|
17
17
|
export interface TransactionsTrackerInternals {
|
|
18
18
|
transactionsSource$?: TrackerSubject<DirectionalTransaction[]>;
|
|
19
19
|
}
|
|
20
|
-
export declare const createAddressTransactionsProvider: (walletProvider: WalletProvider, addresses
|
|
21
|
-
export declare const createTransactionsTracker: ({ tip$, walletProvider, addresses
|
|
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
22
|
//# sourceMappingURL=TransactionsTracker.d.ts.map
|
|
@@ -1 +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,
|
|
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"}
|
|
@@ -7,31 +7,34 @@ const TrackerSubject_1 = require("./util/TrackerSubject");
|
|
|
7
7
|
const TransactionError_1 = require("./TransactionError");
|
|
8
8
|
const util_1 = require("./util");
|
|
9
9
|
const lodash_es_1 = require("lodash-es");
|
|
10
|
-
const createAddressTransactionsProvider = (walletProvider, addresses
|
|
11
|
-
const isMyAddress = ({ address }) => addresses.includes(address);
|
|
12
|
-
return 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)
|
|
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
14
|
? types_1.TransactionDirection.Outgoing
|
|
15
15
|
: types_1.TransactionDirection.Incoming;
|
|
16
16
|
return { direction, tx };
|
|
17
|
-
})));
|
|
17
|
+
})))));
|
|
18
18
|
};
|
|
19
19
|
exports.createAddressTransactionsProvider = createAddressTransactionsProvider;
|
|
20
20
|
const newTransactions$ = (transactions$) => transactions$.pipe(rxjs_1.take(1), rxjs_1.map((transactions) => transactions.map(({ id }) => id)), rxjs_1.mergeMap((initialTransactionIds) => {
|
|
21
21
|
const ignoredTransactionIds = [...initialTransactionIds];
|
|
22
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
23
|
}));
|
|
24
|
-
const createTransactionsTracker = ({ tip$, walletProvider, addresses
|
|
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
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
26
|
const incomingTransactionHistory$ = new TrackerSubject_1.TrackerSubject(providerTransactionsByDirection$(types_1.TransactionDirection.Incoming));
|
|
27
27
|
const outgoingTransactionHistory$ = new TrackerSubject_1.TrackerSubject(providerTransactionsByDirection$(types_1.TransactionDirection.Outgoing));
|
|
28
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$ =
|
|
29
|
+
const failed$ = new rxjs_1.Subject();
|
|
30
|
+
const failedSubscription = submitting$
|
|
31
|
+
.pipe(rxjs_1.mergeMap((tx) => {
|
|
30
32
|
const invalidHereafter = tx.body.validityInterval.invalidHereafter;
|
|
31
33
|
return rxjs_1.race(failedToSubmit$.pipe(rxjs_1.filter((failed) => failed.tx === tx), rxjs_1.take(1)), invalidHereafter
|
|
32
34
|
? tip$.pipe(rxjs_1.filter(({ slot }) => slot > invalidHereafter), rxjs_1.map(() => ({ reason: TransactionError_1.TransactionFailure.Timeout, tx })), rxjs_1.take(1))
|
|
33
35
|
: rxjs_1.EMPTY).pipe(rxjs_1.takeUntil(txConfirmed$(tx)));
|
|
34
|
-
})
|
|
36
|
+
}))
|
|
37
|
+
.subscribe(failed$);
|
|
35
38
|
const txFailed$ = (tx) => failed$.pipe(rxjs_1.filter((failed) => failed.tx === tx), rxjs_1.take(1));
|
|
36
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 }) => {
|
|
37
40
|
if (op === 'add') {
|
|
@@ -40,6 +43,10 @@ const createTransactionsTracker = ({ tip$, walletProvider, addresses, newTransac
|
|
|
40
43
|
const idx = inFlight.indexOf(tx);
|
|
41
44
|
return [...inFlight.splice(0, idx), ...inFlight.splice(idx + 1)];
|
|
42
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$);
|
|
43
50
|
return {
|
|
44
51
|
history: {
|
|
45
52
|
all$: transactionsSource$,
|
|
@@ -48,7 +55,7 @@ const createTransactionsTracker = ({ tip$, walletProvider, addresses, newTransac
|
|
|
48
55
|
},
|
|
49
56
|
incoming$: newTransactions$(incomingTransactionHistory$),
|
|
50
57
|
outgoing: {
|
|
51
|
-
confirmed
|
|
58
|
+
confirmed$,
|
|
52
59
|
failed$,
|
|
53
60
|
inFlight$,
|
|
54
61
|
pending$,
|
|
@@ -57,6 +64,10 @@ const createTransactionsTracker = ({ tip$, walletProvider, addresses, newTransac
|
|
|
57
64
|
shutdown: () => {
|
|
58
65
|
transactionsSource$.complete();
|
|
59
66
|
inFlight$.complete();
|
|
67
|
+
confirmedSubscription.unsubscribe();
|
|
68
|
+
confirmed$.complete();
|
|
69
|
+
failedSubscription.unsubscribe();
|
|
70
|
+
failed$.complete();
|
|
60
71
|
}
|
|
61
72
|
};
|
|
62
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionsTracker.js","sourceRoot":"","sources":["../../src/services/TransactionsTracker.ts"],"names":[],"mappings":";;;AACA,mCAAsG;AACtG,+
|
|
1
|
+
{"version":3,"file":"TransactionsTracker.js","sourceRoot":"","sources":["../../src/services/TransactionsTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { TrackerSubject } from './util';
|
|
|
5
5
|
import { TransactionalTracker } from './types';
|
|
6
6
|
export interface UtxoTrackerProps {
|
|
7
7
|
walletProvider: WalletProvider;
|
|
8
|
-
addresses
|
|
8
|
+
addresses$: Observable<Cardano.Address[]>;
|
|
9
9
|
transactionsInFlight$: Observable<Cardano.NewTxAlonzo[]>;
|
|
10
10
|
tipBlockHeight$: Observable<number>;
|
|
11
11
|
retryBackoffConfig: RetryBackoffConfig;
|
|
@@ -13,6 +13,6 @@ export interface UtxoTrackerProps {
|
|
|
13
13
|
export interface UtxoTrackerInternals {
|
|
14
14
|
utxoSource$?: TrackerSubject<Cardano.Utxo[]>;
|
|
15
15
|
}
|
|
16
|
-
export declare const createUtxoProvider: (walletProvider: WalletProvider, addresses
|
|
17
|
-
export declare const createUtxoTracker: ({ walletProvider, addresses
|
|
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
18
|
//# sourceMappingURL=UtxoTracker.d.ts.map
|
|
@@ -1 +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,
|
|
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"}
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createUtxoTracker = exports.createUtxoProvider = void 0;
|
|
4
4
|
const rxjs_1 = require("rxjs");
|
|
5
5
|
const util_1 = require("./util");
|
|
6
|
-
const createUtxoProvider = (walletProvider, addresses
|
|
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
7
|
exports.createUtxoProvider = createUtxoProvider;
|
|
8
|
-
const createUtxoTracker = ({ walletProvider, addresses
|
|
8
|
+
const createUtxoTracker = ({ walletProvider, addresses$, transactionsInFlight$, retryBackoffConfig, tipBlockHeight$ }, { utxoSource$ = new util_1.TrackerSubject(exports.createUtxoProvider(walletProvider, addresses$, tipBlockHeight$, retryBackoffConfig)) } = {}) => {
|
|
9
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
10
|
return {
|
|
11
11
|
available$,
|