@midnight-ntwrk/wallet-sdk-facade 2.0.0-rc.0 → 2.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +8 -5
- package/dist/index.js +33 -6
- package/dist/transaction.d.ts +1 -1
- package/package.json +8 -8
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as ledger from '@midnight-ntwrk/ledger-v7';
|
|
2
2
|
import { type DefaultSubmissionConfiguration, type SubmissionService } from '@midnight-ntwrk/wallet-sdk-capabilities';
|
|
3
|
+
import { type DefaultProvingConfiguration, type ProvingService, type UnboundTransaction } from '@midnight-ntwrk/wallet-sdk-capabilities/proving';
|
|
3
4
|
import { type AnyTransaction, type DefaultDustConfiguration, type CoinsAndBalances as DustCoinsAndBalances, type DustWalletAPI, type DustWalletState } from '@midnight-ntwrk/wallet-sdk-dust-wallet';
|
|
4
5
|
import { type DefaultShieldedConfiguration, type ShieldedWalletAPI, type ShieldedWalletState } from '@midnight-ntwrk/wallet-sdk-shielded';
|
|
5
6
|
import type { DefaultUnshieldedConfiguration, UnshieldedWalletAPI } from '@midnight-ntwrk/wallet-sdk-unshielded-wallet';
|
|
6
7
|
import { type UnshieldedWalletState } from '@midnight-ntwrk/wallet-sdk-unshielded-wallet';
|
|
7
8
|
import { type Observable } from 'rxjs';
|
|
8
|
-
import { DefaultPendingTransactionsServiceConfiguration, PendingTransactions, PendingTransactionsService
|
|
9
|
+
import { DefaultPendingTransactionsServiceConfiguration, PendingTransactions, PendingTransactionsService } from '@midnight-ntwrk/wallet-sdk-capabilities';
|
|
9
10
|
import { DustAddress, ShieldedAddress, UnshieldedAddress } from '@midnight-ntwrk/wallet-sdk-address-format';
|
|
10
|
-
export type UnboundTransaction = ledger.Transaction<ledger.SignatureEnabled, ledger.Proof, ledger.PreBinding>;
|
|
11
11
|
type TokenKind = 'dust' | 'shielded' | 'unshielded';
|
|
12
12
|
type TokenKindsToBalance = 'all' | TokenKind[];
|
|
13
13
|
declare const TokenKindsToBalance: {
|
|
@@ -71,26 +71,29 @@ export declare class FacadeState {
|
|
|
71
71
|
get isSynced(): boolean;
|
|
72
72
|
constructor(shielded: ShieldedWalletState, unshielded: UnshieldedWalletState, dust: DustWalletState, pending: PendingTransactions.PendingTransactions<ledger.FinalizedTransaction>);
|
|
73
73
|
}
|
|
74
|
-
export type DefaultConfiguration = DefaultUnshieldedConfiguration & DefaultShieldedConfiguration & DefaultDustConfiguration & DefaultSubmissionConfiguration & DefaultPendingTransactionsServiceConfiguration
|
|
74
|
+
export type DefaultConfiguration = DefaultUnshieldedConfiguration & DefaultShieldedConfiguration & DefaultDustConfiguration & DefaultSubmissionConfiguration & DefaultPendingTransactionsServiceConfiguration & Partial<DefaultProvingConfiguration>;
|
|
75
75
|
type MaybePromise<T> = T | Promise<T>;
|
|
76
76
|
export type InitParams<TConfig extends DefaultConfiguration> = {
|
|
77
77
|
configuration: TConfig;
|
|
78
78
|
submissionService?: (config: TConfig) => MaybePromise<SubmissionService<ledger.FinalizedTransaction>>;
|
|
79
79
|
pendingTransactionsService?: (config: TConfig) => MaybePromise<PendingTransactionsService<ledger.FinalizedTransaction>>;
|
|
80
|
+
provingService?: (config: TConfig) => MaybePromise<ProvingService<UnboundTransaction>>;
|
|
80
81
|
shielded: (config: TConfig) => MaybePromise<ShieldedWalletAPI>;
|
|
81
82
|
unshielded: (config: TConfig) => MaybePromise<UnshieldedWalletAPI>;
|
|
82
83
|
dust: (config: TConfig) => MaybePromise<DustWalletAPI>;
|
|
83
84
|
};
|
|
84
85
|
export declare class WalletFacade {
|
|
85
86
|
#private;
|
|
86
|
-
static makeDefaultSubmissionService
|
|
87
|
-
static makeDefaultPendingTransactionsService
|
|
87
|
+
private static makeDefaultSubmissionService;
|
|
88
|
+
private static makeDefaultPendingTransactionsService;
|
|
89
|
+
private static makeDefaultProvingService;
|
|
88
90
|
static init<TConfig extends DefaultConfiguration>(initParams: InitParams<TConfig>): Promise<WalletFacade>;
|
|
89
91
|
readonly shielded: ShieldedWalletAPI;
|
|
90
92
|
readonly unshielded: UnshieldedWalletAPI;
|
|
91
93
|
readonly dust: DustWalletAPI;
|
|
92
94
|
readonly submissionService: SubmissionService<ledger.FinalizedTransaction>;
|
|
93
95
|
readonly pendingTransactionsService: PendingTransactionsService<ledger.FinalizedTransaction>;
|
|
96
|
+
readonly provingService: ProvingService<UnboundTransaction>;
|
|
94
97
|
private constructor();
|
|
95
98
|
private defaultTtl;
|
|
96
99
|
private mergeUnprovenTransactions;
|
package/dist/index.js
CHANGED
|
@@ -12,9 +12,10 @@
|
|
|
12
12
|
// limitations under the License.
|
|
13
13
|
import * as ledger from '@midnight-ntwrk/ledger-v7';
|
|
14
14
|
import { makeDefaultSubmissionService, } from '@midnight-ntwrk/wallet-sdk-capabilities';
|
|
15
|
+
import { makeDefaultProvingService, } from '@midnight-ntwrk/wallet-sdk-capabilities/proving';
|
|
15
16
|
import { Array as Arr, pipe } from 'effect';
|
|
16
17
|
import { combineLatest, map, firstValueFrom, concatMap } from 'rxjs';
|
|
17
|
-
import { PendingTransactions, PendingTransactionsServiceImpl, } from '@midnight-ntwrk/wallet-sdk-capabilities
|
|
18
|
+
import { PendingTransactions, PendingTransactionsServiceImpl, } from '@midnight-ntwrk/wallet-sdk-capabilities';
|
|
18
19
|
import { finalizedTransactionTrait } from './transaction.js';
|
|
19
20
|
const TokenKindsToBalance = new (class {
|
|
20
21
|
allTokenKinds = ['shielded', 'unshielded', 'dust'];
|
|
@@ -77,6 +78,16 @@ export class WalletFacade {
|
|
|
77
78
|
txTrait: finalizedTransactionTrait,
|
|
78
79
|
});
|
|
79
80
|
}
|
|
81
|
+
static makeDefaultProvingService(config) {
|
|
82
|
+
if (config.provingServerUrl) {
|
|
83
|
+
return makeDefaultProvingService({
|
|
84
|
+
provingServerUrl: config.provingServerUrl,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
throw new Error("Missing required configuration: 'provingServerUrl' must be set in config, or provide a custom provingService in init parameters.");
|
|
89
|
+
}
|
|
90
|
+
}
|
|
80
91
|
static async init(initParams) {
|
|
81
92
|
const submissionService = await Promise.resolve(initParams.submissionService
|
|
82
93
|
? initParams.submissionService(initParams.configuration)
|
|
@@ -84,23 +95,28 @@ export class WalletFacade {
|
|
|
84
95
|
const pendingTransactionsService = await Promise.resolve(initParams.pendingTransactionsService
|
|
85
96
|
? initParams.pendingTransactionsService(initParams.configuration)
|
|
86
97
|
: WalletFacade.makeDefaultPendingTransactionsService(initParams.configuration));
|
|
98
|
+
const provingService = await Promise.resolve(initParams.provingService
|
|
99
|
+
? initParams.provingService(initParams.configuration)
|
|
100
|
+
: WalletFacade.makeDefaultProvingService(initParams.configuration));
|
|
87
101
|
const shielded = await Promise.resolve(initParams.shielded(initParams.configuration));
|
|
88
102
|
const unshielded = await Promise.resolve(initParams.unshielded(initParams.configuration));
|
|
89
103
|
const dust = await Promise.resolve(initParams.dust(initParams.configuration));
|
|
90
|
-
return new WalletFacade(shielded, unshielded, dust, submissionService, pendingTransactionsService);
|
|
104
|
+
return new WalletFacade(shielded, unshielded, dust, submissionService, pendingTransactionsService, provingService);
|
|
91
105
|
}
|
|
92
106
|
shielded;
|
|
93
107
|
unshielded;
|
|
94
108
|
dust;
|
|
95
109
|
submissionService;
|
|
96
110
|
pendingTransactionsService;
|
|
111
|
+
provingService;
|
|
97
112
|
#pendingSubscription;
|
|
98
|
-
constructor(shieldedWallet, unshieldedWallet, dustWallet, submissionService, pendingTransactionsService) {
|
|
113
|
+
constructor(shieldedWallet, unshieldedWallet, dustWallet, submissionService, pendingTransactionsService, provingService) {
|
|
99
114
|
this.shielded = shieldedWallet;
|
|
100
115
|
this.unshielded = unshieldedWallet;
|
|
101
116
|
this.dust = dustWallet;
|
|
102
117
|
this.submissionService = submissionService;
|
|
103
118
|
this.pendingTransactionsService = pendingTransactionsService;
|
|
119
|
+
this.provingService = provingService;
|
|
104
120
|
this.#pendingSubscription = this.pendingTransactionsService
|
|
105
121
|
.state()
|
|
106
122
|
.pipe(concatMap((pending) => PendingTransactions.allFailed(pending)), concatMap((item) => this.revert(item.tx)))
|
|
@@ -300,9 +316,20 @@ export class WalletFacade {
|
|
|
300
316
|
return await this.unshielded.signUnboundTransaction(tx, signSegment);
|
|
301
317
|
}
|
|
302
318
|
async finalizeTransaction(tx) {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
319
|
+
try {
|
|
320
|
+
const unboundTx = await this.provingService.prove(tx);
|
|
321
|
+
const finalizedTx = unboundTx.bind();
|
|
322
|
+
await this.pendingTransactionsService.addPendingTransaction(finalizedTx);
|
|
323
|
+
return finalizedTx;
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
await Promise.allSettled([
|
|
327
|
+
this.shielded.revertTransaction(tx),
|
|
328
|
+
this.unshielded.revertTransaction(tx),
|
|
329
|
+
this.dust.revertTransaction(tx),
|
|
330
|
+
]);
|
|
331
|
+
throw error;
|
|
332
|
+
}
|
|
306
333
|
}
|
|
307
334
|
async calculateTransactionFee(tx) {
|
|
308
335
|
return await this.dust.calculateFee([tx]);
|
package/dist/transaction.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { PendingTransactions } from '@midnight-ntwrk/wallet-sdk-capabilities
|
|
1
|
+
import { PendingTransactions } from '@midnight-ntwrk/wallet-sdk-capabilities';
|
|
2
2
|
import * as ledger from '@midnight-ntwrk/ledger-v7';
|
|
3
3
|
export declare const finalizedTransactionTrait: PendingTransactions.TransactionTrait<ledger.FinalizedTransaction>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@midnight-ntwrk/wallet-sdk-facade",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@midnight-ntwrk/ledger-v7": "^7.0.0",
|
|
28
|
-
"@midnight-ntwrk/wallet-sdk-abstractions": "^1.0.0",
|
|
29
28
|
"@midnight-ntwrk/wallet-sdk-address-format": "^3.0.0",
|
|
30
|
-
"@midnight-ntwrk/wallet-sdk-capabilities": "^3.1.0-rc.
|
|
31
|
-
"@midnight-ntwrk/wallet-sdk-dust-wallet": "^2.0.0-rc.
|
|
32
|
-
"@midnight-ntwrk/wallet-sdk-
|
|
33
|
-
"@midnight-ntwrk/wallet-sdk-
|
|
34
|
-
"@midnight-ntwrk/wallet-sdk-unshielded-wallet": "^2.0.0-rc.0",
|
|
29
|
+
"@midnight-ntwrk/wallet-sdk-capabilities": "^3.1.0-rc.2",
|
|
30
|
+
"@midnight-ntwrk/wallet-sdk-dust-wallet": "^2.0.0-rc.2",
|
|
31
|
+
"@midnight-ntwrk/wallet-sdk-shielded": "^2.0.0-rc.2",
|
|
32
|
+
"@midnight-ntwrk/wallet-sdk-unshielded-wallet": "^2.0.0-rc.2",
|
|
35
33
|
"rxjs": "^7.5"
|
|
36
34
|
},
|
|
37
35
|
"devDependencies": {
|
|
38
|
-
"@midnight-ntwrk/wallet-sdk-
|
|
36
|
+
"@midnight-ntwrk/wallet-sdk-abstractions": "^2.0.0-rc.1",
|
|
37
|
+
"@midnight-ntwrk/wallet-sdk-hd": "^3.0.0",
|
|
38
|
+
"@midnight-ntwrk/wallet-sdk-prover-client": "^1.1.0-rc.2",
|
|
39
39
|
"eslint": "^9.37.0",
|
|
40
40
|
"prettier": "^3.7.0",
|
|
41
41
|
"publint": "~0.3.14",
|