@canton-network/wallet-gateway-remote 0.20.0 → 0.22.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/README.md +1 -3
- package/dist/config/Config.d.ts +145 -0
- package/dist/config/Config.d.ts.map +1 -1
- package/dist/config/Config.js +18 -2
- package/dist/config/Config.test.js +3 -0
- package/dist/config/ConfigUtils.d.ts.map +1 -1
- package/dist/config/ConfigUtils.js +41 -2
- package/dist/dapp-api/controller.d.ts.map +1 -1
- package/dist/dapp-api/controller.js +7 -14
- package/dist/dapp-api/rpc-gen/typings.d.ts +1 -1
- package/dist/dapp-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/env.d.ts +19 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +16 -0
- package/dist/example-config.d.ts +3 -1
- package/dist/example-config.d.ts.map +1 -1
- package/dist/example-config.js +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +8 -18
- package/dist/ledger/party-allocation-service.d.ts +1 -2
- package/dist/ledger/party-allocation-service.d.ts.map +1 -1
- package/dist/ledger/party-allocation-service.js +5 -4
- package/dist/ledger/party-allocation-service.test.js +7 -4
- package/dist/ledger/transaction-service.d.ts +22 -0
- package/dist/ledger/transaction-service.d.ts.map +1 -0
- package/dist/ledger/transaction-service.js +296 -0
- package/dist/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.d.ts +17 -0
- package/dist/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.d.ts.map +1 -0
- package/dist/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.js +146 -0
- package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.d.ts +17 -0
- package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.d.ts.map +1 -0
- package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.js +140 -0
- package/dist/ledger/wallet-allocation/signing-providers/kernel-wallet-allocator.d.ts +17 -0
- package/dist/ledger/wallet-allocation/signing-providers/kernel-wallet-allocator.d.ts.map +1 -0
- package/dist/ledger/wallet-allocation/signing-providers/kernel-wallet-allocator.js +79 -0
- package/dist/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.d.ts +15 -0
- package/dist/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.d.ts.map +1 -0
- package/dist/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.js +37 -0
- package/dist/ledger/wallet-allocation/wallet-allocation-service.d.ts +20 -0
- package/dist/ledger/wallet-allocation/wallet-allocation-service.d.ts.map +1 -0
- package/dist/ledger/wallet-allocation/wallet-allocation-service.js +70 -0
- package/dist/ledger/wallet-allocation/wallet-allocation-service.test.d.ts +2 -0
- package/dist/ledger/wallet-allocation/wallet-allocation-service.test.d.ts.map +1 -0
- package/dist/ledger/wallet-allocation/wallet-allocation-service.test.js +301 -0
- package/dist/ledger/wallet-sync-service.d.ts +7 -12
- package/dist/ledger/wallet-sync-service.d.ts.map +1 -1
- package/dist/ledger/wallet-sync-service.js +128 -100
- package/dist/ledger/wallet-sync-service.test.js +194 -46
- package/dist/user-api/controller.d.ts +1 -0
- package/dist/user-api/controller.d.ts.map +1 -1
- package/dist/user-api/controller.js +77 -406
- package/dist/user-api/rpc-gen/index.d.ts +3 -0
- package/dist/user-api/rpc-gen/index.d.ts.map +1 -1
- package/dist/user-api/rpc-gen/index.js +1 -0
- package/dist/user-api/rpc-gen/typings.d.ts +61 -40
- package/dist/user-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/web/frontend/404/index.html +2 -2
- package/dist/web/frontend/approve/index.html +4 -3
- package/dist/web/frontend/assets/404-DzH9sSlT.js +8 -0
- package/dist/web/frontend/assets/approve-Duv1K5LE.js +17 -0
- package/dist/web/frontend/assets/callback-D_VLeaX-.js +1 -0
- package/dist/web/frontend/assets/index-Bj5VTWmh.js +1686 -0
- package/dist/web/frontend/assets/login-B-jF6DLr.js +7 -0
- package/dist/web/frontend/assets/{settings-Br8FgNOa.js → settings-DZpeOwSh.js} +2 -2
- package/dist/web/frontend/assets/{state-1o1CuDWy.js → state-PjJJ3Anb.js} +1 -1
- package/dist/web/frontend/assets/transactions-DGdh8VAO.js +28 -0
- package/dist/web/frontend/assets/utils-D5kQDwtZ.js +1 -0
- package/dist/web/frontend/assets/wallets-CjjRt-cQ.js +62 -0
- package/dist/web/frontend/callback/index.html +2 -2
- package/dist/web/frontend/index.html +1 -1
- package/dist/web/frontend/login/index.html +3 -3
- package/dist/web/frontend/settings/index.html +3 -3
- package/dist/web/frontend/transactions/index.html +4 -3
- package/dist/web/frontend/wallets/index.html +4 -3
- package/package.json +20 -19
- package/dist/web/frontend/assets/404-CKmKuu6H.js +0 -8
- package/dist/web/frontend/assets/approve-MzXNo4XO.js +0 -17
- package/dist/web/frontend/assets/callback-CcXLRr7Q.js +0 -1
- package/dist/web/frontend/assets/index-BnEARqU4.js +0 -1679
- package/dist/web/frontend/assets/login-Btlo0Zla.js +0 -7
- package/dist/web/frontend/assets/transactions-Cnu9eUFe.js +0 -28
- package/dist/web/frontend/assets/wallets-Dj5yeBJd.js +0 -63
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { UserId } from '@canton-network/core-wallet-auth';
|
|
2
|
+
import { Store, Wallet } from '@canton-network/core-wallet-store';
|
|
3
|
+
import { SigningDriverInterface } from '@canton-network/core-signing-lib';
|
|
4
|
+
import { Logger } from 'pino';
|
|
5
|
+
import { PartyAllocationService } from '../../party-allocation-service.js';
|
|
6
|
+
import { PartyHint, Primary } from '../../../user-api/rpc-gen/typings.js';
|
|
7
|
+
import type { WalletAllocator } from '../wallet-allocation-service.js';
|
|
8
|
+
export declare class KernelWalletAllocator implements WalletAllocator {
|
|
9
|
+
private store;
|
|
10
|
+
private logger;
|
|
11
|
+
private partyAllocator;
|
|
12
|
+
private signingDriver;
|
|
13
|
+
constructor(store: Store, logger: Logger, partyAllocator: PartyAllocationService, signingDriver: SigningDriverInterface);
|
|
14
|
+
createWallet(userId: UserId, partyHint: PartyHint, primary?: Primary): Promise<Wallet>;
|
|
15
|
+
allocateParty(userId: UserId, existingWallet: Wallet): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=kernel-wallet-allocator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel-wallet-allocator.d.ts","sourceRoot":"","sources":["../../../../src/ledger/wallet-allocation/signing-providers/kernel-wallet-allocator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,KAAK,EAAgB,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAC/E,OAAO,EAEH,sBAAsB,EAEzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAUtE,qBAAa,qBAAsB,YAAW,eAAe;IAErD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,aAAa;gBAHb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,sBAAsB,EACtC,aAAa,EAAE,sBAAsB;IAG3C,YAAY,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,OAAe,GACzB,OAAO,CAAC,MAAM,CAAC;IAgDZ,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiC7E"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { SigningProvider, } from '@canton-network/core-signing-lib';
|
|
4
|
+
function handleSigningError(result) {
|
|
5
|
+
if ('error' in result) {
|
|
6
|
+
throw new Error(`Error from signing driver: ${result.error_description}`);
|
|
7
|
+
}
|
|
8
|
+
return result;
|
|
9
|
+
}
|
|
10
|
+
export class KernelWalletAllocator {
|
|
11
|
+
constructor(store, logger, partyAllocator, signingDriver) {
|
|
12
|
+
this.store = store;
|
|
13
|
+
this.logger = logger;
|
|
14
|
+
this.partyAllocator = partyAllocator;
|
|
15
|
+
this.signingDriver = signingDriver;
|
|
16
|
+
}
|
|
17
|
+
async createWallet(userId, partyHint, primary = false) {
|
|
18
|
+
const driver = this.signingDriver.controller(userId);
|
|
19
|
+
const key = await driver
|
|
20
|
+
.createKey({
|
|
21
|
+
name: partyHint,
|
|
22
|
+
})
|
|
23
|
+
.then(handleSigningError);
|
|
24
|
+
const party = await this.partyAllocator.allocateParty(userId, partyHint, key.publicKey, async (hash) => {
|
|
25
|
+
const { signature } = await driver
|
|
26
|
+
.signTransaction({
|
|
27
|
+
tx: '',
|
|
28
|
+
txHash: hash,
|
|
29
|
+
keyIdentifier: {
|
|
30
|
+
publicKey: key.publicKey,
|
|
31
|
+
},
|
|
32
|
+
})
|
|
33
|
+
.then(handleSigningError);
|
|
34
|
+
if (!signature) {
|
|
35
|
+
throw new Error('No signature returned from signing driver');
|
|
36
|
+
}
|
|
37
|
+
return signature;
|
|
38
|
+
});
|
|
39
|
+
const network = await this.store.getCurrentNetwork();
|
|
40
|
+
const wallet = {
|
|
41
|
+
partyId: party.partyId,
|
|
42
|
+
hint: party.hint,
|
|
43
|
+
namespace: party.namespace,
|
|
44
|
+
signingProviderId: SigningProvider.WALLET_KERNEL,
|
|
45
|
+
networkId: network.id,
|
|
46
|
+
status: 'allocated',
|
|
47
|
+
primary,
|
|
48
|
+
publicKey: key.publicKey,
|
|
49
|
+
externalTxId: '',
|
|
50
|
+
topologyTransactions: '',
|
|
51
|
+
};
|
|
52
|
+
await this.store.addWallet(wallet);
|
|
53
|
+
return wallet;
|
|
54
|
+
}
|
|
55
|
+
async allocateParty(userId, existingWallet) {
|
|
56
|
+
const driver = this.signingDriver.controller(userId);
|
|
57
|
+
const signingCallback = async (hash) => {
|
|
58
|
+
const result = await driver
|
|
59
|
+
.signTransaction({
|
|
60
|
+
tx: '',
|
|
61
|
+
txHash: hash,
|
|
62
|
+
keyIdentifier: { publicKey: existingWallet.publicKey },
|
|
63
|
+
})
|
|
64
|
+
.then(handleSigningError);
|
|
65
|
+
if (!result.signature) {
|
|
66
|
+
throw new Error('No signature returned from signing driver');
|
|
67
|
+
}
|
|
68
|
+
return result.signature;
|
|
69
|
+
};
|
|
70
|
+
const party = await this.partyAllocator.allocateParty(userId, existingWallet.hint, existingWallet.publicKey, signingCallback);
|
|
71
|
+
const network = await this.store.getCurrentNetwork();
|
|
72
|
+
const updateWallet = {
|
|
73
|
+
networkId: network.id,
|
|
74
|
+
partyId: party.partyId,
|
|
75
|
+
status: 'allocated',
|
|
76
|
+
};
|
|
77
|
+
return await this.store.updateWallet(updateWallet);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { UserId } from '@canton-network/core-wallet-auth';
|
|
2
|
+
import { Store, Wallet } from '@canton-network/core-wallet-store';
|
|
3
|
+
import { Logger } from 'pino';
|
|
4
|
+
import { PartyAllocationService } from '../../party-allocation-service.js';
|
|
5
|
+
import { PartyHint, Primary } from '../../../user-api/rpc-gen/typings.js';
|
|
6
|
+
import type { WalletAllocator } from '../wallet-allocation-service.js';
|
|
7
|
+
export declare class ParticipantWalletAllocator implements WalletAllocator {
|
|
8
|
+
private store;
|
|
9
|
+
private logger;
|
|
10
|
+
private partyAllocator;
|
|
11
|
+
constructor(store: Store, logger: Logger, partyAllocator: PartyAllocationService);
|
|
12
|
+
createWallet(userId: UserId, partyHint: PartyHint, primary?: Primary): Promise<Wallet>;
|
|
13
|
+
allocateParty(userId: UserId, existingWallet: Wallet): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=participant-wallet-allocator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"participant-wallet-allocator.d.ts","sourceRoot":"","sources":["../../../../src/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEtE,qBAAa,0BAA2B,YAAW,eAAe;IAE1D,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;gBAFd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,sBAAsB;IAG5C,YAAY,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,OAAe,GACzB,OAAO,CAAC,MAAM,CAAC;IAmBZ,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAY7E"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { SigningProvider } from '@canton-network/core-signing-lib';
|
|
4
|
+
export class ParticipantWalletAllocator {
|
|
5
|
+
constructor(store, logger, partyAllocator) {
|
|
6
|
+
this.store = store;
|
|
7
|
+
this.logger = logger;
|
|
8
|
+
this.partyAllocator = partyAllocator;
|
|
9
|
+
}
|
|
10
|
+
async createWallet(userId, partyHint, primary = false) {
|
|
11
|
+
const party = await this.partyAllocator.allocateParty(userId, partyHint);
|
|
12
|
+
const network = await this.store.getCurrentNetwork();
|
|
13
|
+
const wallet = {
|
|
14
|
+
partyId: party.partyId,
|
|
15
|
+
hint: party.hint,
|
|
16
|
+
namespace: party.namespace,
|
|
17
|
+
signingProviderId: SigningProvider.PARTICIPANT,
|
|
18
|
+
networkId: network.id,
|
|
19
|
+
status: 'allocated',
|
|
20
|
+
primary,
|
|
21
|
+
publicKey: party.namespace,
|
|
22
|
+
externalTxId: '',
|
|
23
|
+
topologyTransactions: '',
|
|
24
|
+
};
|
|
25
|
+
await this.store.addWallet(wallet);
|
|
26
|
+
return wallet;
|
|
27
|
+
}
|
|
28
|
+
async allocateParty(userId, existingWallet) {
|
|
29
|
+
const party = await this.partyAllocator.allocateParty(userId, existingWallet.hint);
|
|
30
|
+
const network = await this.store.getCurrentNetwork();
|
|
31
|
+
return await this.store.updateWallet({
|
|
32
|
+
partyId: party.partyId,
|
|
33
|
+
networkId: network.id,
|
|
34
|
+
status: 'allocated',
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { UserId } from '@canton-network/core-wallet-auth';
|
|
2
|
+
import { Store, Wallet } from '@canton-network/core-wallet-store';
|
|
3
|
+
import { SigningDriverInterface, SigningProvider } from '@canton-network/core-signing-lib';
|
|
4
|
+
import { Logger } from 'pino';
|
|
5
|
+
import { PartyAllocationService } from '../party-allocation-service.js';
|
|
6
|
+
import { PartyHint, Primary } from '../../user-api/rpc-gen/typings.js';
|
|
7
|
+
export interface WalletAllocator {
|
|
8
|
+
createWallet(userId: UserId, partyHint: PartyHint, primary: Primary): Promise<Wallet>;
|
|
9
|
+
allocateParty(userId: UserId, existingWallet: Wallet): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare class WalletAllocationService {
|
|
12
|
+
private readonly participantAllocator;
|
|
13
|
+
private readonly kernelAllocator?;
|
|
14
|
+
private readonly fireblocksAllocator?;
|
|
15
|
+
private readonly blockdaemonAllocator?;
|
|
16
|
+
constructor(store: Store, logger: Logger, partyAllocator: PartyAllocationService, signingDrivers?: Partial<Record<SigningProvider, SigningDriverInterface>>);
|
|
17
|
+
createWallet(userId: UserId, partyHint: PartyHint, primary: Primary, signingProviderId: SigningProvider): Promise<Wallet>;
|
|
18
|
+
allocateParty(userId: UserId, existingWallet: Wallet, signingProviderId: SigningProvider): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=wallet-allocation-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-allocation-service.d.ts","sourceRoot":"","sources":["../../../src/ledger/wallet-allocation/wallet-allocation-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EACH,sBAAsB,EACtB,eAAe,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAMtE,MAAM,WAAW,eAAe;IAC5B,YAAY,CACR,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,GACjB,OAAO,CAAC,MAAM,CAAC,CAAA;IAClB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACvE;AAED,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA4B;IACjE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAA2B;IAChE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAA4B;gBAG9D,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,sBAAsB,EACtC,cAAc,GAAE,OAAO,CACnB,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAC7C;IAuCG,YAAY,CACrB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,eAAe,GACnC,OAAO,CAAC,MAAM,CAAC;IA4CL,aAAa,CACtB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,eAAe,GACnC,OAAO,CAAC,IAAI,CAAC;CAuCnB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { SigningProvider, } from '@canton-network/core-signing-lib';
|
|
4
|
+
import { ParticipantWalletAllocator } from './signing-providers/participant-wallet-allocator.js';
|
|
5
|
+
import { KernelWalletAllocator } from './signing-providers/kernel-wallet-allocator.js';
|
|
6
|
+
import { FireblocksWalletAllocator } from './signing-providers/fireblocks-wallet-allocator.js';
|
|
7
|
+
import { BlockdaemonWalletAllocator } from './signing-providers/blockdaemon-wallet-allocator.js';
|
|
8
|
+
export class WalletAllocationService {
|
|
9
|
+
constructor(store, logger, partyAllocator, signingDrivers = {}) {
|
|
10
|
+
this.participantAllocator = new ParticipantWalletAllocator(store, logger, partyAllocator);
|
|
11
|
+
const kernelDriver = signingDrivers[SigningProvider.WALLET_KERNEL];
|
|
12
|
+
if (kernelDriver) {
|
|
13
|
+
this.kernelAllocator = new KernelWalletAllocator(store, logger, partyAllocator, kernelDriver);
|
|
14
|
+
}
|
|
15
|
+
const fireblocksDriver = signingDrivers[SigningProvider.FIREBLOCKS];
|
|
16
|
+
if (fireblocksDriver) {
|
|
17
|
+
this.fireblocksAllocator = new FireblocksWalletAllocator(store, logger, partyAllocator, fireblocksDriver);
|
|
18
|
+
}
|
|
19
|
+
const blockdaemonDriver = signingDrivers[SigningProvider.BLOCKDAEMON];
|
|
20
|
+
if (blockdaemonDriver) {
|
|
21
|
+
this.blockdaemonAllocator = new BlockdaemonWalletAllocator(store, logger, partyAllocator, blockdaemonDriver);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async createWallet(userId, partyHint, primary, signingProviderId) {
|
|
25
|
+
switch (signingProviderId) {
|
|
26
|
+
case SigningProvider.PARTICIPANT:
|
|
27
|
+
return this.participantAllocator.createWallet(userId, partyHint, primary);
|
|
28
|
+
case SigningProvider.WALLET_KERNEL:
|
|
29
|
+
if (!this.kernelAllocator) {
|
|
30
|
+
throw new Error('Wallet Kernel signing driver not available');
|
|
31
|
+
}
|
|
32
|
+
return this.kernelAllocator.createWallet(userId, partyHint, primary);
|
|
33
|
+
case SigningProvider.FIREBLOCKS:
|
|
34
|
+
if (!this.fireblocksAllocator) {
|
|
35
|
+
throw new Error('Fireblocks signing driver not available');
|
|
36
|
+
}
|
|
37
|
+
return this.fireblocksAllocator.createWallet(userId, partyHint, primary);
|
|
38
|
+
case SigningProvider.BLOCKDAEMON:
|
|
39
|
+
if (!this.blockdaemonAllocator) {
|
|
40
|
+
throw new Error('Blockdaemon signing driver not available');
|
|
41
|
+
}
|
|
42
|
+
return this.blockdaemonAllocator.createWallet(userId, partyHint, primary);
|
|
43
|
+
default:
|
|
44
|
+
throw new Error(`Unsupported signing provider: ${signingProviderId}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async allocateParty(userId, existingWallet, signingProviderId) {
|
|
48
|
+
switch (signingProviderId) {
|
|
49
|
+
case SigningProvider.PARTICIPANT:
|
|
50
|
+
return this.participantAllocator.allocateParty(userId, existingWallet);
|
|
51
|
+
case SigningProvider.WALLET_KERNEL:
|
|
52
|
+
if (!this.kernelAllocator) {
|
|
53
|
+
throw new Error('Wallet Kernel signing driver not available');
|
|
54
|
+
}
|
|
55
|
+
return this.kernelAllocator.allocateParty(userId, existingWallet);
|
|
56
|
+
case SigningProvider.FIREBLOCKS:
|
|
57
|
+
if (!this.fireblocksAllocator) {
|
|
58
|
+
throw new Error('Fireblocks signing driver not available');
|
|
59
|
+
}
|
|
60
|
+
return this.fireblocksAllocator.allocateParty(userId, existingWallet);
|
|
61
|
+
case SigningProvider.BLOCKDAEMON:
|
|
62
|
+
if (!this.blockdaemonAllocator) {
|
|
63
|
+
throw new Error('Blockdaemon signing driver not available');
|
|
64
|
+
}
|
|
65
|
+
return this.blockdaemonAllocator.allocateParty(userId, existingWallet);
|
|
66
|
+
default:
|
|
67
|
+
throw new Error(`Unsupported signing provider: ${signingProviderId}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-allocation-service.test.d.ts","sourceRoot":"","sources":["../../../src/ledger/wallet-allocation/wallet-allocation-service.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { jest, describe, it, expect, beforeEach, afterEach, } from '@jest/globals';
|
|
4
|
+
import { pino } from 'pino';
|
|
5
|
+
import { sink } from 'pino-test';
|
|
6
|
+
import { WalletAllocationService } from './wallet-allocation-service.js';
|
|
7
|
+
import { SigningProvider } from '@canton-network/core-signing-lib';
|
|
8
|
+
import { WALLET_DISABLED_REASON } from '@canton-network/core-types';
|
|
9
|
+
const createWallet = (partyId, overrides = {}) => ({
|
|
10
|
+
primary: false,
|
|
11
|
+
partyId,
|
|
12
|
+
status: 'allocated',
|
|
13
|
+
hint: partyId.split('::')[0],
|
|
14
|
+
signingProviderId: 'internal',
|
|
15
|
+
publicKey: 'test-public-key',
|
|
16
|
+
namespace: 'namespace',
|
|
17
|
+
networkId: 'network1',
|
|
18
|
+
disabled: false,
|
|
19
|
+
...overrides,
|
|
20
|
+
});
|
|
21
|
+
const createAllocatedParty = (partyId, hint, namespace) => ({
|
|
22
|
+
partyId,
|
|
23
|
+
hint,
|
|
24
|
+
namespace,
|
|
25
|
+
});
|
|
26
|
+
function createFireblocksDriver(options) {
|
|
27
|
+
const getKeysResult = {
|
|
28
|
+
keys: [{ id: 'key-1', name: 'Canton Party', publicKey: 'fb-pk' }],
|
|
29
|
+
};
|
|
30
|
+
const signTransactionResult = options.signTransactionResult ?? {
|
|
31
|
+
status: 'pending',
|
|
32
|
+
txId: 'tx-1',
|
|
33
|
+
};
|
|
34
|
+
const getTransactionResult = options.getTransactionResult ?? signTransactionResult;
|
|
35
|
+
return {
|
|
36
|
+
controller: jest.fn().mockReturnValue({
|
|
37
|
+
getKeys: jest
|
|
38
|
+
.fn()
|
|
39
|
+
.mockResolvedValue(getKeysResult),
|
|
40
|
+
signTransaction: jest
|
|
41
|
+
.fn()
|
|
42
|
+
.mockResolvedValue(signTransactionResult),
|
|
43
|
+
getTransaction: jest
|
|
44
|
+
.fn()
|
|
45
|
+
.mockResolvedValue(getTransactionResult),
|
|
46
|
+
}),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function createBlockdaemonDriver(options) {
|
|
50
|
+
const signTransactionResult = options.signTransactionResult ?? {
|
|
51
|
+
status: 'pending',
|
|
52
|
+
txId: 'tx-1',
|
|
53
|
+
};
|
|
54
|
+
const getTransactionResult = options.getTransactionResult ?? signTransactionResult;
|
|
55
|
+
return {
|
|
56
|
+
controller: jest.fn().mockReturnValue({
|
|
57
|
+
createKey: jest
|
|
58
|
+
.fn()
|
|
59
|
+
.mockResolvedValue({
|
|
60
|
+
publicKey: 'bd-pk',
|
|
61
|
+
}),
|
|
62
|
+
signTransaction: jest
|
|
63
|
+
.fn()
|
|
64
|
+
.mockResolvedValue(signTransactionResult),
|
|
65
|
+
getTransaction: jest
|
|
66
|
+
.fn()
|
|
67
|
+
.mockResolvedValue(getTransactionResult),
|
|
68
|
+
}),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
describe('WalletAllocationService', () => {
|
|
72
|
+
let mockLogger;
|
|
73
|
+
let mockStore;
|
|
74
|
+
let mockPartyAllocator;
|
|
75
|
+
let mockController;
|
|
76
|
+
let mockWalletKernelDriver;
|
|
77
|
+
let service;
|
|
78
|
+
const createService = (drivers) => new WalletAllocationService(mockStore, mockLogger, mockPartyAllocator, drivers);
|
|
79
|
+
beforeEach(async () => {
|
|
80
|
+
mockLogger = pino(sink());
|
|
81
|
+
mockStore = {
|
|
82
|
+
getWallets: jest.fn(),
|
|
83
|
+
removeWallet: jest.fn(),
|
|
84
|
+
addWallet: jest.fn(),
|
|
85
|
+
updateWallet: jest.fn(),
|
|
86
|
+
getCurrentNetwork: jest
|
|
87
|
+
.fn()
|
|
88
|
+
.mockResolvedValue({ id: 'network1' }),
|
|
89
|
+
};
|
|
90
|
+
mockPartyAllocator = {
|
|
91
|
+
allocateParty: jest.fn(),
|
|
92
|
+
allocatePartyWithExistingWallet: jest.fn(),
|
|
93
|
+
createFingerprintFromKey: jest.fn().mockReturnValue('fingerprint'),
|
|
94
|
+
generateTopologyTransactions: jest
|
|
95
|
+
.fn()
|
|
96
|
+
.mockResolvedValue({
|
|
97
|
+
topologyTransactions: ['tx1'],
|
|
98
|
+
multiHash: 'hash',
|
|
99
|
+
}),
|
|
100
|
+
};
|
|
101
|
+
mockController = {
|
|
102
|
+
createKey: jest
|
|
103
|
+
.fn()
|
|
104
|
+
.mockResolvedValue({
|
|
105
|
+
id: 'key-id',
|
|
106
|
+
name: 'test-key',
|
|
107
|
+
publicKey: 'new-public-key',
|
|
108
|
+
}),
|
|
109
|
+
signTransaction: jest
|
|
110
|
+
.fn()
|
|
111
|
+
.mockResolvedValue({
|
|
112
|
+
txId: 'tx-id',
|
|
113
|
+
status: 'signed',
|
|
114
|
+
signature: 'sig',
|
|
115
|
+
}),
|
|
116
|
+
};
|
|
117
|
+
mockWalletKernelDriver = {
|
|
118
|
+
controller: jest.fn(() => mockController),
|
|
119
|
+
};
|
|
120
|
+
service = createService({
|
|
121
|
+
[SigningProvider.WALLET_KERNEL]: mockWalletKernelDriver,
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
afterEach(() => {
|
|
125
|
+
jest.restoreAllMocks();
|
|
126
|
+
});
|
|
127
|
+
describe('Participant', () => {
|
|
128
|
+
it('createWallet allocates new party and adds wallet', async () => {
|
|
129
|
+
const expectedParty = createAllocatedParty('alice::participant1', 'alice', 'participant1');
|
|
130
|
+
mockPartyAllocator.allocateParty.mockResolvedValue(expectedParty);
|
|
131
|
+
const result = await service.createWallet('user-1', 'alice', false, SigningProvider.PARTICIPANT);
|
|
132
|
+
expect(mockPartyAllocator.allocateParty).toHaveBeenCalledWith('user-1', 'alice');
|
|
133
|
+
expect(mockStore.addWallet).toHaveBeenCalledWith(expect.objectContaining({
|
|
134
|
+
partyId: 'alice::participant1',
|
|
135
|
+
status: 'allocated',
|
|
136
|
+
networkId: 'network1',
|
|
137
|
+
}));
|
|
138
|
+
expect(result.partyId).toBe('alice::participant1');
|
|
139
|
+
expect(result.status).toBe('allocated');
|
|
140
|
+
});
|
|
141
|
+
it('allocateParty allocates party and updates store', async () => {
|
|
142
|
+
const expectedParty = createAllocatedParty('alice::participant1', 'alice', 'participant1');
|
|
143
|
+
mockPartyAllocator.allocateParty.mockResolvedValue(expectedParty);
|
|
144
|
+
const existingWallet = createWallet('alice::namespace', {
|
|
145
|
+
hint: 'alice',
|
|
146
|
+
namespace: 'namespace',
|
|
147
|
+
signingProviderId: SigningProvider.PARTICIPANT,
|
|
148
|
+
});
|
|
149
|
+
await service.allocateParty('user-1', existingWallet, SigningProvider.PARTICIPANT);
|
|
150
|
+
expect(mockPartyAllocator.allocateParty).toHaveBeenCalledWith('user-1', 'alice');
|
|
151
|
+
expect(mockStore.updateWallet).toHaveBeenCalledWith({
|
|
152
|
+
partyId: 'alice::participant1',
|
|
153
|
+
networkId: 'network1',
|
|
154
|
+
status: 'allocated',
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
describe('Wallet Kernel', () => {
|
|
159
|
+
it('createWallet initializes new wallet and adds to store', async () => {
|
|
160
|
+
const expectedParty = createAllocatedParty('bob::fingerprint', 'bob', 'fingerprint');
|
|
161
|
+
mockPartyAllocator.createFingerprintFromKey.mockReturnValue('fingerprint');
|
|
162
|
+
mockPartyAllocator.allocateParty.mockResolvedValue(expectedParty);
|
|
163
|
+
const result = await service.createWallet('user-1', 'bob', false, SigningProvider.WALLET_KERNEL);
|
|
164
|
+
expect(mockStore.addWallet).toHaveBeenCalledWith(expect.objectContaining({
|
|
165
|
+
partyId: 'bob::fingerprint',
|
|
166
|
+
status: 'allocated',
|
|
167
|
+
publicKey: 'new-public-key',
|
|
168
|
+
}));
|
|
169
|
+
expect(result.partyId).toBe('bob::fingerprint');
|
|
170
|
+
expect(result.publicKey).toBe('new-public-key');
|
|
171
|
+
expect(mockWalletKernelDriver.controller).toHaveBeenCalledWith('user-1');
|
|
172
|
+
expect(mockController.createKey).toHaveBeenCalledWith({
|
|
173
|
+
name: 'bob',
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
it('allocateParty allocates with existing public key and updates store', async () => {
|
|
177
|
+
const expectedParty = createAllocatedParty('bob::fingerprint', 'bob', 'fingerprint');
|
|
178
|
+
mockPartyAllocator.allocateParty.mockImplementation(async (_userId, _hint, _publicKey, signingCallback) => {
|
|
179
|
+
if (signingCallback) {
|
|
180
|
+
await signingCallback('test-hash');
|
|
181
|
+
}
|
|
182
|
+
return expectedParty;
|
|
183
|
+
});
|
|
184
|
+
const existingWallet = createWallet('bob::namespace', {
|
|
185
|
+
hint: 'bob',
|
|
186
|
+
publicKey: 'existing-public-key',
|
|
187
|
+
signingProviderId: SigningProvider.WALLET_KERNEL,
|
|
188
|
+
});
|
|
189
|
+
await service.allocateParty('user-1', existingWallet, SigningProvider.WALLET_KERNEL);
|
|
190
|
+
expect(mockController.signTransaction).toHaveBeenCalledWith(expect.objectContaining({
|
|
191
|
+
txHash: 'test-hash',
|
|
192
|
+
keyIdentifier: { publicKey: 'existing-public-key' },
|
|
193
|
+
}));
|
|
194
|
+
expect(mockStore.updateWallet).toHaveBeenCalledWith({
|
|
195
|
+
partyId: 'bob::fingerprint',
|
|
196
|
+
networkId: 'network1',
|
|
197
|
+
status: 'allocated',
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
it('throws when Wallet Kernel signing driver not available', async () => {
|
|
201
|
+
const serviceWithoutDriver = createService({});
|
|
202
|
+
await expect(serviceWithoutDriver.createWallet('user-1', 'bob', false, SigningProvider.WALLET_KERNEL)).rejects.toThrow('Wallet Kernel signing driver not available');
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
describe('Fireblocks', () => {
|
|
206
|
+
it('throws when Fireblocks signing driver not available', async () => {
|
|
207
|
+
const serviceWithoutFireblocks = createService({});
|
|
208
|
+
await expect(serviceWithoutFireblocks.createWallet('user-1', 'alice', false, SigningProvider.FIREBLOCKS)).rejects.toThrow('Fireblocks signing driver not available');
|
|
209
|
+
});
|
|
210
|
+
it('createWallet returns allocated when signTransaction returns signed', async () => {
|
|
211
|
+
const serviceWithFireblocks = createService({
|
|
212
|
+
[SigningProvider.FIREBLOCKS]: createFireblocksDriver({
|
|
213
|
+
signTransactionResult: { status: 'signed', txId: 'tx-1' },
|
|
214
|
+
getTransactionResult: {
|
|
215
|
+
txId: 'tx-1',
|
|
216
|
+
status: 'signed',
|
|
217
|
+
signature: 'deadbeef',
|
|
218
|
+
},
|
|
219
|
+
}),
|
|
220
|
+
});
|
|
221
|
+
mockPartyAllocator.allocatePartyWithExistingWallet.mockResolvedValue('alice::namespace');
|
|
222
|
+
const result = await serviceWithFireblocks.createWallet('user-1', 'alice', false, SigningProvider.FIREBLOCKS);
|
|
223
|
+
expect(result.status).toBe('allocated');
|
|
224
|
+
expect(result.partyId).toBe('alice::namespace');
|
|
225
|
+
expect(mockPartyAllocator.allocatePartyWithExistingWallet).toHaveBeenCalled();
|
|
226
|
+
expect(mockStore.addWallet).toHaveBeenCalled();
|
|
227
|
+
});
|
|
228
|
+
it('createWallet returns initialized when signTransaction returns pending', async () => {
|
|
229
|
+
const serviceWithFireblocks = createService({
|
|
230
|
+
[SigningProvider.FIREBLOCKS]: createFireblocksDriver({
|
|
231
|
+
signTransactionResult: { status: 'pending', txId: 'tx-1' },
|
|
232
|
+
getTransactionResult: {
|
|
233
|
+
txId: 'tx-1',
|
|
234
|
+
status: 'pending',
|
|
235
|
+
},
|
|
236
|
+
}),
|
|
237
|
+
});
|
|
238
|
+
const result = await serviceWithFireblocks.createWallet('user-1', 'alice', false, SigningProvider.FIREBLOCKS);
|
|
239
|
+
expect(result.status).toBe('initialized');
|
|
240
|
+
expect(mockPartyAllocator.allocatePartyWithExistingWallet).not.toHaveBeenCalled();
|
|
241
|
+
expect(mockStore.addWallet).toHaveBeenCalled();
|
|
242
|
+
});
|
|
243
|
+
it.each([
|
|
244
|
+
['failed', WALLET_DISABLED_REASON.TOPOLOGY_TRANSACTION_FAILED],
|
|
245
|
+
['rejected', WALLET_DISABLED_REASON.TOPOLOGY_TRANSACTION_REJECTED],
|
|
246
|
+
])('createWallet returns status removed with reason when signTransaction returns %s', async (status, expectedReason) => {
|
|
247
|
+
const serviceWithFireblocks = createService({
|
|
248
|
+
[SigningProvider.FIREBLOCKS]: createFireblocksDriver({
|
|
249
|
+
signTransactionResult: { status, txId: 'tx-1' },
|
|
250
|
+
getTransactionResult: {
|
|
251
|
+
txId: 'tx-1',
|
|
252
|
+
status,
|
|
253
|
+
},
|
|
254
|
+
}),
|
|
255
|
+
});
|
|
256
|
+
const result = await serviceWithFireblocks.createWallet('user-1', 'alice', false, SigningProvider.FIREBLOCKS);
|
|
257
|
+
expect(result.status).toBe('removed');
|
|
258
|
+
expect(result.reason).toBe(expectedReason);
|
|
259
|
+
expect(mockPartyAllocator.allocatePartyWithExistingWallet).not.toHaveBeenCalled();
|
|
260
|
+
expect(mockStore.addWallet).toHaveBeenCalled();
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
describe('Blockdaemon', () => {
|
|
264
|
+
it('throws when Blockdaemon signing driver not available', async () => {
|
|
265
|
+
const serviceWithoutBlockdaemon = createService({});
|
|
266
|
+
await expect(serviceWithoutBlockdaemon.createWallet('user-1', 'alice', false, SigningProvider.BLOCKDAEMON)).rejects.toThrow('Blockdaemon signing driver not available');
|
|
267
|
+
});
|
|
268
|
+
it('createWallet returns initialized when signTransaction returns pending', async () => {
|
|
269
|
+
const serviceWithBlockdaemon = createService({
|
|
270
|
+
[SigningProvider.BLOCKDAEMON]: createBlockdaemonDriver({
|
|
271
|
+
signTransactionResult: { status: 'pending', txId: 'tx-1' },
|
|
272
|
+
}),
|
|
273
|
+
});
|
|
274
|
+
const result = await serviceWithBlockdaemon.createWallet('user-1', 'alice', false, SigningProvider.BLOCKDAEMON);
|
|
275
|
+
expect(result.status).toBe('initialized');
|
|
276
|
+
expect(result.reason).toBe(WALLET_DISABLED_REASON.TOPOLOGY_TRANSACTION_PENDING);
|
|
277
|
+
expect(result.externalTxId).toBe('tx-1');
|
|
278
|
+
expect(result.partyId).toBe('alice::fingerprint');
|
|
279
|
+
expect(mockPartyAllocator.allocatePartyWithExistingWallet).not.toHaveBeenCalled();
|
|
280
|
+
expect(mockStore.addWallet).toHaveBeenCalled();
|
|
281
|
+
});
|
|
282
|
+
it('createWallet returns allocated when signTransaction returns signed', async () => {
|
|
283
|
+
const serviceWithBlockdaemon = createService({
|
|
284
|
+
[SigningProvider.BLOCKDAEMON]: createBlockdaemonDriver({
|
|
285
|
+
signTransactionResult: { status: 'signed', txId: 'tx-1' },
|
|
286
|
+
getTransactionResult: {
|
|
287
|
+
txId: 'tx-1',
|
|
288
|
+
status: 'signed',
|
|
289
|
+
signature: 'sig-base64',
|
|
290
|
+
},
|
|
291
|
+
}),
|
|
292
|
+
});
|
|
293
|
+
mockPartyAllocator.allocatePartyWithExistingWallet.mockResolvedValue('alice::namespace');
|
|
294
|
+
const result = await serviceWithBlockdaemon.createWallet('user-1', 'alice', false, SigningProvider.BLOCKDAEMON);
|
|
295
|
+
expect(result.status).toBe('allocated');
|
|
296
|
+
expect(result.partyId).toBe('alice::namespace');
|
|
297
|
+
expect(mockPartyAllocator.allocatePartyWithExistingWallet).toHaveBeenCalled();
|
|
298
|
+
expect(mockStore.addWallet).toHaveBeenCalled();
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
});
|
|
@@ -1,25 +1,18 @@
|
|
|
1
1
|
import { LedgerClient } from '@canton-network/core-ledger-client';
|
|
2
2
|
import { AuthContext } from '@canton-network/core-wallet-auth';
|
|
3
|
-
import { Store
|
|
3
|
+
import { Store } from '@canton-network/core-wallet-store';
|
|
4
4
|
import { SigningDriverInterface, SigningProvider } from '@canton-network/core-signing-lib';
|
|
5
5
|
import { Logger } from 'pino';
|
|
6
6
|
import { PartyAllocationService } from './party-allocation-service.js';
|
|
7
|
-
|
|
8
|
-
added: Wallet[];
|
|
9
|
-
removed: Wallet[];
|
|
10
|
-
};
|
|
11
|
-
export declare const WALLET_DISABLED_REASON: {
|
|
12
|
-
NO_SIGNING_PROVIDER_MATCHED: string;
|
|
13
|
-
};
|
|
7
|
+
import { SyncWalletsResult } from '../user-api/rpc-gen/typings.js';
|
|
14
8
|
export declare class WalletSyncService {
|
|
15
9
|
private store;
|
|
16
10
|
private ledgerClient;
|
|
17
|
-
private adminLedgerClient;
|
|
18
11
|
private authContext;
|
|
19
12
|
private logger;
|
|
20
13
|
private signingDrivers;
|
|
21
14
|
private partyAllocator;
|
|
22
|
-
constructor(store: Store, ledgerClient: LedgerClient,
|
|
15
|
+
constructor(store: Store, ledgerClient: LedgerClient, authContext: AuthContext, logger: Logger, signingDrivers: Partial<Record<SigningProvider, SigningDriverInterface>> | undefined, partyAllocator: PartyAllocationService);
|
|
23
16
|
run(timeoutMs: number): Promise<void>;
|
|
24
17
|
protected resolveSigningProvider(namespace: string): Promise<{
|
|
25
18
|
signingProviderId: SigningProvider.PARTICIPANT;
|
|
@@ -29,8 +22,10 @@ export declare class WalletSyncService {
|
|
|
29
22
|
publicKey: string;
|
|
30
23
|
matched: boolean;
|
|
31
24
|
}>;
|
|
32
|
-
private
|
|
25
|
+
private getPartiesWithRights;
|
|
33
26
|
isWalletSyncNeeded(): Promise<boolean>;
|
|
34
|
-
|
|
27
|
+
private handleWalletsWithoutParty;
|
|
28
|
+
private handlePartiesWithoutWallet;
|
|
29
|
+
syncWallets(): Promise<SyncWalletsResult>;
|
|
35
30
|
}
|
|
36
31
|
//# sourceMappingURL=wallet-sync-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-sync-service.d.ts","sourceRoot":"","sources":["../../src/ledger/wallet-sync-service.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,YAAY,EAEf,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"wallet-sync-service.d.ts","sourceRoot":"","sources":["../../src/ledger/wallet-sync-service.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,YAAY,EAEf,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAU,MAAM,mCAAmC,CAAA;AACjE,OAAO,EACH,sBAAsB,EACtB,eAAe,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAGlE,qBAAa,iBAAiB;IAEtB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IAGtB,OAAO,CAAC,cAAc;gBAPd,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,OAAO,CAC3B,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAClD,YAAK,EACE,cAAc,EAAE,sBAAsB;IAG5C,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAU3B,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAC5D;QACI,iBAAiB,EAAE,eAAe,CAAC,WAAW,CAAA;QAC9C,OAAO,EAAE,OAAO,CAAA;KACnB,GACD;QACI,iBAAiB,EAAE,OAAO,CACtB,eAAe,EACf,eAAe,CAAC,WAAW,CAC9B,CAAA;QACD,SAAS,EAAE,MAAM,CAAA;QACjB,OAAO,EAAE,OAAO,CAAA;KACnB,CACN;YA4Ha,oBAAoB;IA8B5B,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;YAqC9B,yBAAyB;YAkEzB,0BAA0B;IA4ClC,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;CA0FlD"}
|