@cardano-sdk/e2e 0.37.1 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/util/createMockKeyAgent.d.ts.map +1 -1
- package/dist/cjs/util/createMockKeyAgent.js +1 -0
- package/dist/cjs/util/createMockKeyAgent.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/util/createMockKeyAgent.d.ts.map +1 -1
- package/dist/esm/util/createMockKeyAgent.js +1 -0
- package/dist/esm/util/createMockKeyAgent.js.map +1 -1
- package/package.json +18 -18
- package/src/util/createMockKeyAgent.ts +1 -0
- package/test/long-running/multisig-wallet/MultiSigTx.ts +2 -2
- package/test/long-running/shared-wallet-delegation-rewards.test.ts +22 -17
- package/test/wallet_epoch_0/SharedWallet/simpleTx.test.ts +9 -5
- package/test/wallet_epoch_0/SharedWallet/utils.ts +9 -10
- package/test/wallet_epoch_3/SharedWallet/delegation.test.ts +12 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMockKeyAgent.d.ts","sourceRoot":"","sources":["../../../src/util/createMockKeyAgent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAA4B,MAAM,6BAA6B,CAAC;AAQjG,eAAO,MAAM,kBAAkB,2BAA2B,cAAc,EAAE,KAAQ,KAAK,MAAM,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"createMockKeyAgent.d.ts","sourceRoot":"","sources":["../../../src/util/createMockKeyAgent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAA4B,MAAM,6BAA6B,CAAC;AAQjG,eAAO,MAAM,kBAAkB,2BAA2B,cAAc,EAAE,KAAQ,KAAK,MAAM,CAAC,QAAQ,CAuBrG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMockKeyAgent.js","sourceRoot":"","sources":["../../../src/util/createMockKeyAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAA4B,YAAY,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEjG,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACzC,MAAM,wBAAwB,GAAG,iBAAiB,CAChD,kIAAkI,CACnI,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,wBAA0C,EAAE,EAAyB,EAAE;IACxG,MAAM,8BAA8B,GAAG,CAAC,GAAG,qBAAqB,CAAC,CAAC;IAClE,OAAO;QACL,YAAY;QACZ,YAAY,EAAE,IAAI,kBAAkB,EAAE;QACtC,OAAO;QACP,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,8BAA8B,CAAC,KAAK,EAAE,CAAC;QAC/F,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1B,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC/B,wBAAwB;QACxB,OAAO,EAAE,UAAU,CAAC,QAAQ;QAC5B,gBAAgB,EAAE;YAChB,UAAU,EAAE,YAAY,CAAC,QAAQ;YACjC,YAAY;YACZ,OAAO;YACP,4BAA4B,EAAE,EAAE;YAChC,wBAAwB;YACxB,OAAO,EAAE,UAAU,CAAC,QAAQ;SAC7B;QACD,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QACnB,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;KAC3B,CAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"createMockKeyAgent.js","sourceRoot":"","sources":["../../../src/util/createMockKeyAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAA4B,YAAY,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEjG,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACzC,MAAM,wBAAwB,GAAG,iBAAiB,CAChD,kIAAkI,CACnI,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,wBAA0C,EAAE,EAAyB,EAAE;IACxG,MAAM,8BAA8B,GAAG,CAAC,GAAG,qBAAqB,CAAC,CAAC;IAClE,OAAO;QACL,YAAY;QACZ,YAAY,EAAE,IAAI,kBAAkB,EAAE;QACtC,OAAO;QACP,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,8BAA8B,CAAC,KAAK,EAAE,CAAC;QAC/F,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1B,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC/B,wBAAwB;QACxB,OAAO,EAAE,UAAU,CAAC,QAAQ;QAC5B,gBAAgB,EAAE;YAChB,UAAU,EAAE,YAAY,CAAC,QAAQ;YACjC,YAAY;YACZ,OAAO;YACP,4BAA4B,EAAE,EAAE;YAChC,wBAAwB;YACxB,OAAO,EAAE,UAAU,CAAC,QAAQ;SAC7B;QACD,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QACnB,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;QACvB,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;KAC3B,CAAC;AACJ,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cardano-sdk/e2e",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.39.0",
|
|
4
4
|
"description": "End to end tests for the cardano-js-sdk packages.",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=16.20.2"
|
|
@@ -81,20 +81,20 @@
|
|
|
81
81
|
"dependencies": {
|
|
82
82
|
"@cardano-foundation/ledgerjs-hw-app-cardano": "^7.1.2",
|
|
83
83
|
"@cardano-ogmios/client": "6.5.0",
|
|
84
|
-
"@cardano-sdk/cardano-services": "~0.29.
|
|
85
|
-
"@cardano-sdk/cardano-services-client": "~0.
|
|
86
|
-
"@cardano-sdk/core": "~0.
|
|
84
|
+
"@cardano-sdk/cardano-services": "~0.29.3",
|
|
85
|
+
"@cardano-sdk/cardano-services-client": "~0.20.0",
|
|
86
|
+
"@cardano-sdk/core": "~0.38.0",
|
|
87
87
|
"@cardano-sdk/crypto": "~0.1.29",
|
|
88
|
-
"@cardano-sdk/hardware-ledger": "~0.
|
|
89
|
-
"@cardano-sdk/hardware-trezor": "~0.
|
|
90
|
-
"@cardano-sdk/input-selection": "~0.13.
|
|
91
|
-
"@cardano-sdk/key-management": "~0.
|
|
92
|
-
"@cardano-sdk/ogmios": "~0.
|
|
93
|
-
"@cardano-sdk/tx-construction": "~0.
|
|
88
|
+
"@cardano-sdk/hardware-ledger": "~0.11.1",
|
|
89
|
+
"@cardano-sdk/hardware-trezor": "~0.5.1",
|
|
90
|
+
"@cardano-sdk/input-selection": "~0.13.11",
|
|
91
|
+
"@cardano-sdk/key-management": "~0.23.0",
|
|
92
|
+
"@cardano-sdk/ogmios": "~0.17.0",
|
|
93
|
+
"@cardano-sdk/tx-construction": "~0.20.0",
|
|
94
94
|
"@cardano-sdk/util": "~0.15.4",
|
|
95
|
-
"@cardano-sdk/util-dev": "~0.22.
|
|
96
|
-
"@cardano-sdk/util-rxjs": "~0.7.
|
|
97
|
-
"@cardano-sdk/wallet": "~0.
|
|
95
|
+
"@cardano-sdk/util-dev": "~0.22.2",
|
|
96
|
+
"@cardano-sdk/util-rxjs": "~0.7.24",
|
|
97
|
+
"@cardano-sdk/wallet": "~0.42.0",
|
|
98
98
|
"@dcspark/cardano-multiplatform-lib-nodejs": "^3.1.1",
|
|
99
99
|
"@vespaiach/axios-fetch-adapter": "^0.3.0",
|
|
100
100
|
"axios": "^0.28.0",
|
|
@@ -124,10 +124,10 @@
|
|
|
124
124
|
"@babel/core": "^7.18.2",
|
|
125
125
|
"@babel/preset-env": "^7.18.2",
|
|
126
126
|
"@babel/preset-typescript": "^7.17.12",
|
|
127
|
-
"@cardano-sdk/dapp-connector": "~0.12.
|
|
128
|
-
"@cardano-sdk/projection": "~0.11.
|
|
129
|
-
"@cardano-sdk/projection-typeorm": "~0.8.
|
|
130
|
-
"@cardano-sdk/web-extension": "~0.
|
|
127
|
+
"@cardano-sdk/dapp-connector": "~0.12.29",
|
|
128
|
+
"@cardano-sdk/projection": "~0.11.28",
|
|
129
|
+
"@cardano-sdk/projection-typeorm": "~0.8.30",
|
|
130
|
+
"@cardano-sdk/web-extension": "~0.31.0",
|
|
131
131
|
"@dcspark/cardano-multiplatform-lib-browser": "^3.1.1",
|
|
132
132
|
"@emurgo/cardano-message-signing-asmjs": "^1.0.1",
|
|
133
133
|
"@types/bunyan": "^1.8.8",
|
|
@@ -181,5 +181,5 @@
|
|
|
181
181
|
"webpack-cli": "^4.9.2",
|
|
182
182
|
"webpack-merge": "^5.8.0"
|
|
183
183
|
},
|
|
184
|
-
"gitHead": "
|
|
184
|
+
"gitHead": "3ff7ebb67640266c0a7479a7114421ae1b820635"
|
|
185
185
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Crypto from '@cardano-sdk/crypto';
|
|
2
|
-
import { Cardano, Serialization
|
|
2
|
+
import { Cardano, Serialization } from '@cardano-sdk/core';
|
|
3
3
|
import { HexBlob } from '@cardano-sdk/util';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -63,7 +63,7 @@ export class MultiSigTx {
|
|
|
63
63
|
|
|
64
64
|
reader.readEndArray();
|
|
65
65
|
|
|
66
|
-
const transaction = deserializeTx(reader.readEncodedValue());
|
|
66
|
+
const transaction = Serialization.deserializeTx(reader.readEncodedValue());
|
|
67
67
|
reader.readEndArray();
|
|
68
68
|
|
|
69
69
|
return new MultiSigTx(transaction, expectedSigners);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseWallet } from '@cardano-sdk/wallet';
|
|
2
|
-
import { Cardano, StakePoolProvider } from '@cardano-sdk/core';
|
|
2
|
+
import { Cardano, Serialization, StakePoolProvider } from '@cardano-sdk/core';
|
|
3
3
|
import { buildSharedWallets } from '../wallet_epoch_0/SharedWallet/utils';
|
|
4
4
|
import { filter, firstValueFrom, map, take } from 'rxjs';
|
|
5
5
|
import {
|
|
@@ -20,11 +20,15 @@ const env = getEnv(walletVariables);
|
|
|
20
20
|
|
|
21
21
|
const submitDelegationTx = async (alice: BaseWallet, bob: BaseWallet, charlotte: BaseWallet, pool: Cardano.PoolId) => {
|
|
22
22
|
logger.info(`Creating delegation tx at epoch #${(await firstValueFrom(alice.currentEpoch$)).epochNo}`);
|
|
23
|
-
|
|
23
|
+
const tx = (await alice.createTxBuilder().delegateFirstStakeCredential(pool).build().sign()).tx;
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
// Serialize and transmit TX...
|
|
26
|
+
let serializedTx = Serialization.Transaction.fromCore(tx).toCbor();
|
|
27
|
+
|
|
28
|
+
serializedTx = await bob.addSignatures({ sender: { id: 'e2e' }, tx: serializedTx });
|
|
29
|
+
serializedTx = await charlotte.addSignatures({ sender: { id: 'e2e' }, tx: serializedTx });
|
|
30
|
+
|
|
31
|
+
await alice.submitTx(serializedTx);
|
|
28
32
|
|
|
29
33
|
const { epochNo } = await firstValueFrom(alice.currentEpoch$);
|
|
30
34
|
logger.info(`Delegation tx ${tx.id} submitted at epoch #${epochNo}`);
|
|
@@ -61,15 +65,18 @@ const buildSpendRewardTx = async (
|
|
|
61
65
|
const { body } = await tx.inspect();
|
|
62
66
|
logger.debug('Body of tx before sign');
|
|
63
67
|
logger.debug(body);
|
|
64
|
-
|
|
68
|
+
const signedTx = (await tx.sign()).tx;
|
|
69
|
+
|
|
70
|
+
// Serialize and transmit TX...
|
|
71
|
+
let serializedTx = Serialization.Transaction.fromCore(signedTx).toCbor();
|
|
65
72
|
|
|
66
|
-
|
|
67
|
-
|
|
73
|
+
serializedTx = await bob.addSignatures({ sender: { id: 'e2e' }, tx: serializedTx });
|
|
74
|
+
serializedTx = await charlotte.addSignatures({ sender: { id: 'e2e' }, tx: serializedTx });
|
|
68
75
|
|
|
69
76
|
logger.debug('Body of tx after sign');
|
|
70
77
|
logger.debug(signedTx.body);
|
|
71
78
|
|
|
72
|
-
return
|
|
79
|
+
return serializedTx;
|
|
73
80
|
};
|
|
74
81
|
|
|
75
82
|
const getPoolIds = async (stakePoolProvider: StakePoolProvider, count: number) => {
|
|
@@ -187,13 +194,11 @@ describe('shared wallet delegation rewards', () => {
|
|
|
187
194
|
logger.info(`Generated rewards: ${rewards} tLovelace`);
|
|
188
195
|
|
|
189
196
|
// Spend reward
|
|
190
|
-
const
|
|
191
|
-
aliceMultiSigWallet,
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
);
|
|
196
|
-
expect(spendRewardTx.body.withdrawals?.length).toBeGreaterThan(0);
|
|
197
|
-
await submitAndConfirm(aliceMultiSigWallet, spendRewardTx);
|
|
197
|
+
const spendRewardsTx = Serialization.Transaction.fromCbor(
|
|
198
|
+
await buildSpendRewardTx(aliceMultiSigWallet, bobMultiSigWallet, charlotteMultiSigWallet, faucetWallet)
|
|
199
|
+
).toCore();
|
|
200
|
+
|
|
201
|
+
expect(spendRewardsTx.body.withdrawals?.length).toBeGreaterThan(0);
|
|
202
|
+
await submitAndConfirm(aliceMultiSigWallet, spendRewardsTx);
|
|
198
203
|
});
|
|
199
204
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseWallet } from '@cardano-sdk/wallet';
|
|
2
|
-
import { Cardano } from '@cardano-sdk/core';
|
|
2
|
+
import { Cardano, Serialization } from '@cardano-sdk/core';
|
|
3
3
|
import { buildSharedWallets } from './utils';
|
|
4
4
|
import { filter, firstValueFrom, map, take } from 'rxjs';
|
|
5
5
|
import {
|
|
@@ -97,14 +97,18 @@ describe('SharedWallet/simpleTx', () => {
|
|
|
97
97
|
// Alice will initiate the transaction.
|
|
98
98
|
const txBuilder = aliceMultiSigWallet.createTxBuilder();
|
|
99
99
|
const txOut = await txBuilder.buildOutput().address(faucetAddress).coin(1_000_000n).build();
|
|
100
|
-
|
|
100
|
+
const tx = (await txBuilder.addOutput(txOut).build().sign()).tx;
|
|
101
|
+
|
|
102
|
+
// Serialize and transmit TX...
|
|
103
|
+
let serializedTx = Serialization.Transaction.fromCore(tx).toCbor();
|
|
101
104
|
|
|
102
105
|
// Bob updates the transaction with his witness
|
|
103
|
-
|
|
106
|
+
serializedTx = await bobMultiSigWallet.addSignatures({ sender: { id: 'e2e' }, tx: serializedTx });
|
|
104
107
|
|
|
105
108
|
// Charlotte updates the transaction with her witness
|
|
106
|
-
|
|
107
|
-
|
|
109
|
+
serializedTx = await charlotteMultiSigWallet.addSignatures({ sender: { id: 'e2e' }, tx: serializedTx });
|
|
110
|
+
|
|
111
|
+
const txId = await charlotteMultiSigWallet.submitTx(serializedTx);
|
|
108
112
|
|
|
109
113
|
const finalTxFound = await firstValueFrom(
|
|
110
114
|
aliceMultiSigWallet.transactions.history$.pipe(
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as Crypto from '@cardano-sdk/crypto';
|
|
2
|
+
import { Cardano, Serialization } from '@cardano-sdk/core';
|
|
3
|
+
import { Cip30DataSignature } from '@cardano-sdk/dapp-connector';
|
|
4
|
+
import { HexBlob } from '@cardano-sdk/util';
|
|
2
5
|
import {
|
|
3
|
-
AccountKeyDerivationPath,
|
|
4
6
|
KeyAgent,
|
|
5
7
|
KeyPurpose,
|
|
6
8
|
KeyRole,
|
|
7
9
|
SignBlobResult,
|
|
8
|
-
SignDataContext,
|
|
9
10
|
SignTransactionContext,
|
|
10
11
|
TransactionSigner,
|
|
11
12
|
WitnessOptions,
|
|
@@ -13,8 +14,6 @@ import {
|
|
|
13
14
|
Witnesser,
|
|
14
15
|
util
|
|
15
16
|
} from '@cardano-sdk/key-management';
|
|
16
|
-
import { Cardano, Serialization, TxCBOR } from '@cardano-sdk/core';
|
|
17
|
-
import { HexBlob } from '@cardano-sdk/util';
|
|
18
17
|
import { Logger } from 'ts-log';
|
|
19
18
|
import { bip32Ed25519Factory, createStandaloneKeyAgent, getSharedWallet } from '../../../src';
|
|
20
19
|
|
|
@@ -204,11 +203,11 @@ export class SharedWalletWitnesser implements Witnesser {
|
|
|
204
203
|
this.#stakingScript = stakingScript;
|
|
205
204
|
}
|
|
206
205
|
|
|
207
|
-
async
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
): Promise<SignBlobResult> {
|
|
206
|
+
async signData(): Promise<Cip30DataSignature> {
|
|
207
|
+
throw new Error('Method not implemented.');
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
async signBlob(): Promise<SignBlobResult> {
|
|
212
211
|
throw new Error('Method not implemented.');
|
|
213
212
|
}
|
|
214
213
|
|
|
@@ -268,7 +267,7 @@ export class SharedWalletWitnesser implements Witnesser {
|
|
|
268
267
|
};
|
|
269
268
|
|
|
270
269
|
return {
|
|
271
|
-
cbor: TxCBOR.serialize(transaction),
|
|
270
|
+
cbor: Serialization.TxCBOR.serialize(transaction),
|
|
272
271
|
context: {
|
|
273
272
|
handleResolutions: context.handleResolutions ?? []
|
|
274
273
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable max-statements */
|
|
2
2
|
import { BaseWallet, ObservableWallet } from '@cardano-sdk/wallet';
|
|
3
3
|
import { BigIntMath, isNotNil } from '@cardano-sdk/util';
|
|
4
|
-
import { Cardano, StakePoolProvider } from '@cardano-sdk/core';
|
|
4
|
+
import { Cardano, Serialization, StakePoolProvider } from '@cardano-sdk/core';
|
|
5
5
|
import {
|
|
6
6
|
TX_TIMEOUT_DEFAULT,
|
|
7
7
|
firstValueFromTimed,
|
|
@@ -172,9 +172,12 @@ describe('SharedWallet/delegation', () => {
|
|
|
172
172
|
.sign()
|
|
173
173
|
).tx;
|
|
174
174
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
175
|
+
// Serialize and transmit TX...
|
|
176
|
+
let serializedTx = Serialization.Transaction.fromCore(tx).toCbor();
|
|
177
|
+
|
|
178
|
+
serializedTx = await bobMultiSigWallet.addSignatures({ sender: { id: 'e2e' }, tx: serializedTx });
|
|
179
|
+
serializedTx = await charlotteMultiSigWallet.addSignatures({ sender: { id: 'e2e' }, tx: serializedTx });
|
|
180
|
+
await aliceMultiSigWallet.submitTx(serializedTx);
|
|
178
181
|
|
|
179
182
|
// Test it locks available balance after tx is submitted
|
|
180
183
|
await firstValueFromTimed(
|
|
@@ -224,10 +227,12 @@ describe('SharedWallet/delegation', () => {
|
|
|
224
227
|
|
|
225
228
|
// Make a 2nd tx with key de-registration
|
|
226
229
|
tx = (await aliceMultiSigWallet.createTxBuilder().delegateFirstStakeCredential(null).build().sign()).tx;
|
|
227
|
-
|
|
228
|
-
|
|
230
|
+
serializedTx = Serialization.Transaction.fromCore(tx).toCbor();
|
|
231
|
+
|
|
232
|
+
serializedTx = await bobMultiSigWallet.addSignatures({ sender: { id: 'e2e' }, tx: serializedTx });
|
|
233
|
+
serializedTx = await charlotteMultiSigWallet.addSignatures({ sender: { id: 'e2e' }, tx: serializedTx });
|
|
229
234
|
|
|
230
|
-
await aliceMultiSigWallet.submitTx(
|
|
235
|
+
await aliceMultiSigWallet.submitTx(serializedTx);
|
|
231
236
|
|
|
232
237
|
await waitForTx(aliceMultiSigWallet, tx.id);
|
|
233
238
|
const tx2ConfirmedState = await getWalletStateSnapshot(aliceMultiSigWallet);
|