@fairmint/canton-node-sdk 0.0.211 → 0.0.213
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/build/src/utils/external-signing/external-party-wallet.d.ts +243 -0
- package/build/src/utils/external-signing/external-party-wallet.d.ts.map +1 -0
- package/build/src/utils/external-signing/external-party-wallet.js +859 -0
- package/build/src/utils/external-signing/external-party-wallet.js.map +1 -0
- package/build/src/utils/external-signing/index.d.ts +1 -0
- package/build/src/utils/external-signing/index.d.ts.map +1 -1
- package/build/src/utils/external-signing/index.js +1 -0
- package/build/src/utils/external-signing/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { type LedgerJsonApiClient } from '../../clients/ledger-json-api';
|
|
2
|
+
import { type ValidatorApiClient } from '../../clients/validator-api';
|
|
3
|
+
export declare const DEFAULT_PROVIDER_TRANSFER_OFFER_TTL_MS: number;
|
|
4
|
+
export interface ExternalPartyWalletOptions {
|
|
5
|
+
readonly ledgerClient: LedgerJsonApiClient;
|
|
6
|
+
readonly validatorClient?: ValidatorApiClient | null;
|
|
7
|
+
readonly providerPartyId: string;
|
|
8
|
+
readonly providerUserId: string;
|
|
9
|
+
readonly prepareTokenSecret: string;
|
|
10
|
+
readonly provider?: string;
|
|
11
|
+
readonly network?: string;
|
|
12
|
+
readonly providerTransferOfferTtlMs?: number;
|
|
13
|
+
readonly now?: () => number;
|
|
14
|
+
readonly randomId?: () => string;
|
|
15
|
+
}
|
|
16
|
+
export interface ExternalPartyWalletTokenContext {
|
|
17
|
+
readonly provider?: string;
|
|
18
|
+
readonly network?: string;
|
|
19
|
+
readonly userId?: string | null;
|
|
20
|
+
readonly privyId?: string | null;
|
|
21
|
+
readonly [key: string]: unknown;
|
|
22
|
+
}
|
|
23
|
+
export interface PreparedExternalPartyWalletOnboarding {
|
|
24
|
+
readonly partyId: string;
|
|
25
|
+
readonly publicKeyFingerprint: string;
|
|
26
|
+
readonly multiHashHex: string;
|
|
27
|
+
readonly synchronizerId: string;
|
|
28
|
+
readonly topologyTransactions: readonly string[];
|
|
29
|
+
readonly publicKeyFormat: string;
|
|
30
|
+
readonly signingAlgorithmSpec: string;
|
|
31
|
+
}
|
|
32
|
+
export interface SubmittedExternalPartyWalletOnboarding {
|
|
33
|
+
readonly partyId: string;
|
|
34
|
+
readonly raw: Record<string, unknown>;
|
|
35
|
+
readonly alreadyExisted: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface ExternalPartyWalletParties {
|
|
38
|
+
readonly publicKeyFingerprint: string;
|
|
39
|
+
readonly parties: readonly string[];
|
|
40
|
+
readonly raw: unknown;
|
|
41
|
+
}
|
|
42
|
+
export interface ExternalPartyWalletConnectedSynchronizers {
|
|
43
|
+
readonly synchronizerId: string | null;
|
|
44
|
+
readonly raw: unknown;
|
|
45
|
+
}
|
|
46
|
+
export interface ExternalPartyWalletProviderBalance {
|
|
47
|
+
readonly sourcePartyId: string;
|
|
48
|
+
readonly fetchedAt: string;
|
|
49
|
+
readonly raw: unknown;
|
|
50
|
+
}
|
|
51
|
+
export interface PrepareExternalPartyWalletCcTransferInput {
|
|
52
|
+
readonly senderPartyId: string;
|
|
53
|
+
readonly receiverPartyId: string;
|
|
54
|
+
readonly amount: string | number;
|
|
55
|
+
readonly description?: string | null;
|
|
56
|
+
readonly publicKeyBase64: string;
|
|
57
|
+
readonly tokenContext?: ExternalPartyWalletTokenContext;
|
|
58
|
+
}
|
|
59
|
+
export interface PreparedExternalPartyWalletCcTransfer {
|
|
60
|
+
readonly senderPartyId: string;
|
|
61
|
+
readonly receiverPartyId: string;
|
|
62
|
+
readonly amount: string;
|
|
63
|
+
readonly description: string | null;
|
|
64
|
+
readonly preparedTransaction: string;
|
|
65
|
+
readonly preparedTransactionHashHex: string;
|
|
66
|
+
readonly transferCommandContractIdPrefix: string;
|
|
67
|
+
readonly nonce: number;
|
|
68
|
+
readonly expiresAt: string;
|
|
69
|
+
readonly prepareToken: string;
|
|
70
|
+
readonly hashingDetails: string | null;
|
|
71
|
+
}
|
|
72
|
+
export interface SubmitExternalPartyWalletCcTransferInput {
|
|
73
|
+
readonly senderPartyId: string;
|
|
74
|
+
readonly receiverPartyId: string;
|
|
75
|
+
readonly amount: string | number;
|
|
76
|
+
readonly description?: string | null;
|
|
77
|
+
readonly publicKeyBase64: string;
|
|
78
|
+
readonly publicKeyFingerprint?: string | null;
|
|
79
|
+
readonly preparedTransaction: string;
|
|
80
|
+
readonly preparedTransactionHashHex: string;
|
|
81
|
+
readonly transferCommandContractIdPrefix: string;
|
|
82
|
+
readonly nonce: number;
|
|
83
|
+
readonly expiresAt: string;
|
|
84
|
+
readonly prepareToken: string;
|
|
85
|
+
readonly signatureBase64: string;
|
|
86
|
+
readonly tokenContext?: ExternalPartyWalletTokenContext;
|
|
87
|
+
}
|
|
88
|
+
export interface SubmitExternalPartyWalletCcTransferHooks {
|
|
89
|
+
readonly beforeSubmit?: () => Promise<void>;
|
|
90
|
+
readonly afterSubmit?: (result: SubmittedExternalPartyWalletCcTransfer) => Promise<void>;
|
|
91
|
+
readonly afterSubmitWithoutUpdateId?: (result: {
|
|
92
|
+
readonly senderPartyId: string;
|
|
93
|
+
readonly raw: Record<string, unknown>;
|
|
94
|
+
}) => Promise<void>;
|
|
95
|
+
readonly afterSubmitFailure?: (error: unknown) => Promise<void>;
|
|
96
|
+
}
|
|
97
|
+
export interface SubmittedExternalPartyWalletCcTransfer {
|
|
98
|
+
readonly senderPartyId: string;
|
|
99
|
+
readonly updateId: string;
|
|
100
|
+
readonly raw: Record<string, unknown>;
|
|
101
|
+
}
|
|
102
|
+
export interface PrepareExternalPartyWalletProviderTransferInput {
|
|
103
|
+
readonly receiverPartyId: string;
|
|
104
|
+
readonly amount: string | number;
|
|
105
|
+
readonly description?: string | null;
|
|
106
|
+
readonly publicKeyBase64: string;
|
|
107
|
+
/**
|
|
108
|
+
* Existing provider-created TransferOffer contract to resume acceptance prepare without creating another funded
|
|
109
|
+
* offer.
|
|
110
|
+
*
|
|
111
|
+
* This is useful when the offer was created but the follow-up interactive prepare failed because the offer disclosure
|
|
112
|
+
* was not visible yet.
|
|
113
|
+
*/
|
|
114
|
+
readonly offerContractId?: string;
|
|
115
|
+
readonly offerUpdateId?: string | null;
|
|
116
|
+
readonly commandId?: string;
|
|
117
|
+
readonly tokenContext?: ExternalPartyWalletTokenContext;
|
|
118
|
+
}
|
|
119
|
+
export interface PreparedExternalPartyWalletProviderTransfer {
|
|
120
|
+
readonly sourcePartyId: string;
|
|
121
|
+
readonly receiverPartyId: string;
|
|
122
|
+
readonly amount: string;
|
|
123
|
+
readonly description: string | null;
|
|
124
|
+
readonly offerContractId: string;
|
|
125
|
+
readonly offerUpdateId: string | null;
|
|
126
|
+
readonly commandId: string;
|
|
127
|
+
readonly synchronizerId: string;
|
|
128
|
+
readonly preparedTransaction: string;
|
|
129
|
+
readonly preparedTransactionHashHex: string;
|
|
130
|
+
readonly hashingSchemeVersion: string;
|
|
131
|
+
readonly prepareToken: string;
|
|
132
|
+
readonly sourceBalanceBefore: unknown;
|
|
133
|
+
readonly sourceBalanceAfter: unknown | null;
|
|
134
|
+
readonly raw: Record<string, unknown>;
|
|
135
|
+
}
|
|
136
|
+
export interface SubmitExternalPartyWalletProviderTransferInput {
|
|
137
|
+
readonly receiverPartyId: string;
|
|
138
|
+
readonly amount: string | number;
|
|
139
|
+
readonly description?: string | null;
|
|
140
|
+
readonly publicKeyBase64: string;
|
|
141
|
+
readonly publicKeyFingerprint?: string | null;
|
|
142
|
+
readonly offerContractId: string;
|
|
143
|
+
readonly offerUpdateId: string | null;
|
|
144
|
+
readonly commandId: string;
|
|
145
|
+
readonly synchronizerId: string;
|
|
146
|
+
readonly preparedTransaction: string;
|
|
147
|
+
readonly preparedTransactionHashHex: string;
|
|
148
|
+
readonly hashingSchemeVersion?: string;
|
|
149
|
+
readonly prepareToken: string;
|
|
150
|
+
readonly signatureBase64: string;
|
|
151
|
+
readonly tokenContext?: ExternalPartyWalletTokenContext;
|
|
152
|
+
}
|
|
153
|
+
export interface SubmittedExternalPartyWalletProviderTransfer {
|
|
154
|
+
readonly sourcePartyId: string;
|
|
155
|
+
readonly receiverPartyId: string;
|
|
156
|
+
readonly amount: string;
|
|
157
|
+
readonly description: string | null;
|
|
158
|
+
readonly offerContractId: string;
|
|
159
|
+
readonly offerUpdateId: string | null;
|
|
160
|
+
readonly acceptUpdateId: string;
|
|
161
|
+
readonly updateId: string;
|
|
162
|
+
readonly sourceBalanceAfter: unknown | null;
|
|
163
|
+
readonly raw: Record<string, unknown>;
|
|
164
|
+
}
|
|
165
|
+
export interface ListExternalPartyWalletActiveContractsInput {
|
|
166
|
+
readonly partyId: string;
|
|
167
|
+
readonly templateIds?: readonly string[];
|
|
168
|
+
readonly includeCreatedEventBlob?: boolean;
|
|
169
|
+
readonly limit?: number;
|
|
170
|
+
}
|
|
171
|
+
export interface ExternalPartyWalletActiveContracts {
|
|
172
|
+
readonly contracts: readonly unknown[];
|
|
173
|
+
}
|
|
174
|
+
export interface ExternalPartyWalletBalance {
|
|
175
|
+
readonly partyId: string;
|
|
176
|
+
readonly fetchedAt: string;
|
|
177
|
+
readonly raw: unknown;
|
|
178
|
+
}
|
|
179
|
+
export interface ExternalPartyWalletBridge {
|
|
180
|
+
readonly getConnectedSynchronizers: () => Promise<ExternalPartyWalletConnectedSynchronizers>;
|
|
181
|
+
readonly getProviderSourceBalance: () => Promise<ExternalPartyWalletProviderBalance>;
|
|
182
|
+
readonly listExternalPartiesForPublicKey: (input: {
|
|
183
|
+
readonly publicKeyBase64: string;
|
|
184
|
+
readonly partyName?: string;
|
|
185
|
+
}) => Promise<ExternalPartyWalletParties>;
|
|
186
|
+
readonly prepareExternalParty: (input: {
|
|
187
|
+
readonly partyName: string;
|
|
188
|
+
readonly publicKeyBase64: string;
|
|
189
|
+
}) => Promise<PreparedExternalPartyWalletOnboarding>;
|
|
190
|
+
readonly submitExternalPartySignature: (input: {
|
|
191
|
+
readonly partyId: string;
|
|
192
|
+
readonly publicKeyBase64: string;
|
|
193
|
+
readonly multiHashHex: string;
|
|
194
|
+
readonly synchronizerId: string;
|
|
195
|
+
readonly topologyTransactions: readonly string[];
|
|
196
|
+
readonly multiHashSignatureBase64: string;
|
|
197
|
+
readonly publicKeyFingerprint?: string | null;
|
|
198
|
+
}) => Promise<SubmittedExternalPartyWalletOnboarding>;
|
|
199
|
+
readonly prepareCcTransfer: (input: PrepareExternalPartyWalletCcTransferInput) => Promise<PreparedExternalPartyWalletCcTransfer>;
|
|
200
|
+
readonly submitCcTransfer: (input: SubmitExternalPartyWalletCcTransferInput, hooks?: SubmitExternalPartyWalletCcTransferHooks) => Promise<SubmittedExternalPartyWalletCcTransfer>;
|
|
201
|
+
readonly prepareProviderTransfer: (input: PrepareExternalPartyWalletProviderTransferInput) => Promise<PreparedExternalPartyWalletProviderTransfer>;
|
|
202
|
+
readonly submitProviderTransfer: (input: SubmitExternalPartyWalletProviderTransferInput) => Promise<SubmittedExternalPartyWalletProviderTransfer>;
|
|
203
|
+
readonly listActiveContracts: (input: ListExternalPartyWalletActiveContractsInput) => Promise<ExternalPartyWalletActiveContracts>;
|
|
204
|
+
readonly getExternalPartyBalance: (input: {
|
|
205
|
+
readonly partyId: string;
|
|
206
|
+
}) => Promise<ExternalPartyWalletBalance>;
|
|
207
|
+
}
|
|
208
|
+
export declare function createExternalPartyWalletBridge(options: ExternalPartyWalletOptions): ExternalPartyWalletBridge;
|
|
209
|
+
export declare function buildExternalPartyCcTransferPrepareTokenPayload(input: {
|
|
210
|
+
readonly provider?: string | undefined;
|
|
211
|
+
readonly network?: string | undefined;
|
|
212
|
+
readonly tokenContext?: ExternalPartyWalletTokenContext | undefined;
|
|
213
|
+
readonly senderPartyId: string;
|
|
214
|
+
readonly receiverPartyId: string;
|
|
215
|
+
readonly amount: string;
|
|
216
|
+
readonly description: string | null;
|
|
217
|
+
readonly publicKeyFingerprint: string;
|
|
218
|
+
readonly preparedTransaction: string;
|
|
219
|
+
readonly preparedTransactionHashHex: string;
|
|
220
|
+
readonly transferCommandContractIdPrefix: string;
|
|
221
|
+
readonly nonce: number;
|
|
222
|
+
readonly expiresAt: string;
|
|
223
|
+
}): Record<string, unknown>;
|
|
224
|
+
export declare function buildProviderTransferAcceptPrepareTokenPayload(input: {
|
|
225
|
+
readonly provider?: string | undefined;
|
|
226
|
+
readonly network?: string | undefined;
|
|
227
|
+
readonly tokenContext?: ExternalPartyWalletTokenContext | undefined;
|
|
228
|
+
readonly sourcePartyId: string;
|
|
229
|
+
readonly receiverPartyId: string;
|
|
230
|
+
readonly amount: string;
|
|
231
|
+
readonly description: string | null;
|
|
232
|
+
readonly publicKeyFingerprint: string;
|
|
233
|
+
readonly offerContractId: string;
|
|
234
|
+
readonly offerUpdateId: string | null;
|
|
235
|
+
readonly commandId: string;
|
|
236
|
+
readonly synchronizerId: string;
|
|
237
|
+
readonly preparedTransaction: string;
|
|
238
|
+
readonly preparedTransactionHashHex: string;
|
|
239
|
+
readonly hashingSchemeVersion: string;
|
|
240
|
+
}): Record<string, unknown>;
|
|
241
|
+
export declare function normalizeExternalPartyWalletDescription(description: string | null | undefined): string | null;
|
|
242
|
+
export declare function parseExternalPartyWalletConnectedSynchronizerId(raw: unknown): string | null;
|
|
243
|
+
//# sourceMappingURL=external-party-wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-party-wallet.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/external-party-wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,859 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_PROVIDER_TRANSFER_OFFER_TTL_MS = void 0;
|
|
4
|
+
exports.createExternalPartyWalletBridge = createExternalPartyWalletBridge;
|
|
5
|
+
exports.buildExternalPartyCcTransferPrepareTokenPayload = buildExternalPartyCcTransferPrepareTokenPayload;
|
|
6
|
+
exports.buildProviderTransferAcceptPrepareTokenPayload = buildProviderTransferAcceptPrepareTokenPayload;
|
|
7
|
+
exports.normalizeExternalPartyWalletDescription = normalizeExternalPartyWalletDescription;
|
|
8
|
+
exports.parseExternalPartyWalletConnectedSynchronizerId = parseExternalPartyWalletConnectedSynchronizerId;
|
|
9
|
+
const node_crypto_1 = require("node:crypto");
|
|
10
|
+
const errors_1 = require("../../core/errors");
|
|
11
|
+
const utils_1 = require("../../core/utils");
|
|
12
|
+
const external_party_cc_transfer_1 = require("../amulet/external-party-cc-transfer");
|
|
13
|
+
const external_party_transfer_offer_1 = require("../amulet/external-party-transfer-offer");
|
|
14
|
+
const canton_response_utils_1 = require("../canton-response-utils");
|
|
15
|
+
const canton_protocol_1 = require("./canton-protocol");
|
|
16
|
+
const external_party_onboarding_1 = require("./external-party-onboarding");
|
|
17
|
+
exports.DEFAULT_PROVIDER_TRANSFER_OFFER_TTL_MS = 24 * 60 * 60 * 1000;
|
|
18
|
+
function createExternalPartyWalletBridge(options) {
|
|
19
|
+
validateRequiredString('providerPartyId', options.providerPartyId);
|
|
20
|
+
validateRequiredString('providerUserId', options.providerUserId);
|
|
21
|
+
validateRequiredString('prepareTokenSecret', options.prepareTokenSecret);
|
|
22
|
+
const now = options.now ?? Date.now;
|
|
23
|
+
const randomId = options.randomId ?? node_crypto_1.randomUUID;
|
|
24
|
+
const providerTransferOfferTtlMs = validateProviderTransferOfferTtlMs(options.providerTransferOfferTtlMs ?? exports.DEFAULT_PROVIDER_TRANSFER_OFFER_TTL_MS);
|
|
25
|
+
return {
|
|
26
|
+
async getConnectedSynchronizers() {
|
|
27
|
+
return readConnectedSynchronizers(options.ledgerClient, options.providerPartyId);
|
|
28
|
+
},
|
|
29
|
+
async getProviderSourceBalance() {
|
|
30
|
+
const validatorClient = requireValidatorClient(options.validatorClient, 'provider source balance');
|
|
31
|
+
return {
|
|
32
|
+
sourcePartyId: options.providerPartyId,
|
|
33
|
+
fetchedAt: new Date(now()).toISOString(),
|
|
34
|
+
raw: await validatorClient.getWalletBalance(),
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
async listExternalPartiesForPublicKey(input) {
|
|
38
|
+
if (input.partyName) {
|
|
39
|
+
const result = await (0, external_party_onboarding_1.getExternalPartyIdForHintAndPublicKey)(options.ledgerClient, input.partyName, input.publicKeyBase64);
|
|
40
|
+
return {
|
|
41
|
+
publicKeyFingerprint: result.publicKeyFingerprint,
|
|
42
|
+
parties: result.exists ? [result.partyId] : [],
|
|
43
|
+
raw: result.raw,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return (0, external_party_onboarding_1.listExternalPartyIdsForPublicKey)(options.ledgerClient, input.publicKeyBase64);
|
|
47
|
+
},
|
|
48
|
+
async prepareExternalParty(input) {
|
|
49
|
+
const synchronizerId = await readRequiredConnectedSynchronizerId(options.ledgerClient, options.providerPartyId);
|
|
50
|
+
const prepared = await (0, external_party_onboarding_1.prepareExternalPartyOnboarding)({
|
|
51
|
+
ledgerClient: options.ledgerClient,
|
|
52
|
+
synchronizerId,
|
|
53
|
+
partyHint: input.partyName,
|
|
54
|
+
publicKeyBase64: input.publicKeyBase64,
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
partyId: prepared.partyId,
|
|
58
|
+
publicKeyFingerprint: prepared.publicKeyFingerprint,
|
|
59
|
+
multiHashHex: prepared.multiHashHex,
|
|
60
|
+
synchronizerId: prepared.synchronizerId,
|
|
61
|
+
topologyTransactions: [...prepared.topologyTransactions],
|
|
62
|
+
publicKeyFormat: prepared.publicKeyFormat,
|
|
63
|
+
signingAlgorithmSpec: prepared.signingAlgorithmSpec,
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
async submitExternalPartySignature(input) {
|
|
67
|
+
(0, canton_protocol_1.assertCantonSha256MultihashHex)(input.multiHashHex);
|
|
68
|
+
const synchronizerId = await readRequiredConnectedSynchronizerId(options.ledgerClient, options.providerPartyId);
|
|
69
|
+
if (synchronizerId !== input.synchronizerId) {
|
|
70
|
+
throw new errors_1.ValidationError("Prepared Canton synchronizer no longer matches the provider's connected synchronizer", {
|
|
71
|
+
expectedSynchronizerId: input.synchronizerId,
|
|
72
|
+
synchronizerId,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const submitted = await (0, external_party_onboarding_1.submitExternalPartyOnboarding)({
|
|
76
|
+
ledgerClient: options.ledgerClient,
|
|
77
|
+
synchronizerId,
|
|
78
|
+
partyId: input.partyId,
|
|
79
|
+
publicKeyBase64: input.publicKeyBase64,
|
|
80
|
+
multiHashHex: input.multiHashHex,
|
|
81
|
+
topologyTransactions: input.topologyTransactions,
|
|
82
|
+
multiHashSignatureBase64: input.multiHashSignatureBase64,
|
|
83
|
+
...(input.publicKeyFingerprint !== undefined ? { publicKeyFingerprint: input.publicKeyFingerprint } : {}),
|
|
84
|
+
allowAlreadyExists: true,
|
|
85
|
+
});
|
|
86
|
+
return {
|
|
87
|
+
partyId: submitted.partyId,
|
|
88
|
+
raw: submitted.raw,
|
|
89
|
+
alreadyExisted: submitted.alreadyExisted,
|
|
90
|
+
};
|
|
91
|
+
},
|
|
92
|
+
async prepareCcTransfer(input) {
|
|
93
|
+
const validatorClient = requireValidatorClient(options.validatorClient, 'CC transfer prepare');
|
|
94
|
+
const amount = normalizeAmountString(input.amount);
|
|
95
|
+
const description = normalizeDescription(input.description);
|
|
96
|
+
const publicKeyFingerprint = (0, canton_protocol_1.assertCantonPartyMatchesPublicKey)({
|
|
97
|
+
partyId: input.senderPartyId,
|
|
98
|
+
publicKeyBase64: input.publicKeyBase64,
|
|
99
|
+
});
|
|
100
|
+
const prepared = await (0, external_party_cc_transfer_1.prepareExternalPartyCcTransfer)(validatorClient, {
|
|
101
|
+
senderPartyId: input.senderPartyId,
|
|
102
|
+
receiverPartyId: input.receiverPartyId,
|
|
103
|
+
amount,
|
|
104
|
+
verboseHashing: false,
|
|
105
|
+
...(description ? { description } : {}),
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
senderPartyId: input.senderPartyId,
|
|
109
|
+
receiverPartyId: input.receiverPartyId,
|
|
110
|
+
amount,
|
|
111
|
+
description,
|
|
112
|
+
preparedTransaction: prepared.transaction,
|
|
113
|
+
preparedTransactionHashHex: prepared.transactionHashHex,
|
|
114
|
+
transferCommandContractIdPrefix: prepared.transferCommandContractIdPrefix,
|
|
115
|
+
nonce: prepared.nonce,
|
|
116
|
+
expiresAt: prepared.expiresAt,
|
|
117
|
+
prepareToken: (0, canton_protocol_1.buildCantonPrepareToken)(options.prepareTokenSecret, buildExternalPartyCcTransferPrepareTokenPayload({
|
|
118
|
+
provider: options.provider,
|
|
119
|
+
network: options.network,
|
|
120
|
+
tokenContext: input.tokenContext,
|
|
121
|
+
senderPartyId: input.senderPartyId,
|
|
122
|
+
receiverPartyId: input.receiverPartyId,
|
|
123
|
+
amount,
|
|
124
|
+
description,
|
|
125
|
+
publicKeyFingerprint,
|
|
126
|
+
preparedTransaction: prepared.transaction,
|
|
127
|
+
preparedTransactionHashHex: prepared.transactionHashHex,
|
|
128
|
+
transferCommandContractIdPrefix: prepared.transferCommandContractIdPrefix,
|
|
129
|
+
nonce: prepared.nonce,
|
|
130
|
+
expiresAt: prepared.expiresAt,
|
|
131
|
+
})),
|
|
132
|
+
hashingDetails: readOptionalString((0, canton_response_utils_1.objectOrEmpty)(prepared.raw), 'hashing_details'),
|
|
133
|
+
};
|
|
134
|
+
},
|
|
135
|
+
async submitCcTransfer(input, hooks = {}) {
|
|
136
|
+
const validatorClient = requireValidatorClient(options.validatorClient, 'CC transfer submit');
|
|
137
|
+
const amount = normalizeAmountString(input.amount);
|
|
138
|
+
const description = normalizeDescription(input.description);
|
|
139
|
+
const publicKeyFingerprint = (0, canton_protocol_1.assertCantonPartyMatchesPublicKey)({
|
|
140
|
+
partyId: input.senderPartyId,
|
|
141
|
+
publicKeyBase64: input.publicKeyBase64,
|
|
142
|
+
...(input.publicKeyFingerprint !== undefined ? { publicKeyFingerprint: input.publicKeyFingerprint } : {}),
|
|
143
|
+
});
|
|
144
|
+
(0, canton_protocol_1.assertCantonPrepareToken)(options.prepareTokenSecret, input.prepareToken, buildExternalPartyCcTransferPrepareTokenPayload({
|
|
145
|
+
provider: options.provider,
|
|
146
|
+
network: options.network,
|
|
147
|
+
tokenContext: input.tokenContext,
|
|
148
|
+
senderPartyId: input.senderPartyId,
|
|
149
|
+
receiverPartyId: input.receiverPartyId,
|
|
150
|
+
amount,
|
|
151
|
+
description,
|
|
152
|
+
publicKeyFingerprint,
|
|
153
|
+
preparedTransaction: input.preparedTransaction,
|
|
154
|
+
preparedTransactionHashHex: input.preparedTransactionHashHex,
|
|
155
|
+
transferCommandContractIdPrefix: input.transferCommandContractIdPrefix,
|
|
156
|
+
nonce: input.nonce,
|
|
157
|
+
expiresAt: input.expiresAt,
|
|
158
|
+
}));
|
|
159
|
+
(0, canton_protocol_1.assertCantonHashSignature)({
|
|
160
|
+
publicKeyBase64: input.publicKeyBase64,
|
|
161
|
+
hashHex: input.preparedTransactionHashHex,
|
|
162
|
+
signatureBase64: input.signatureBase64,
|
|
163
|
+
});
|
|
164
|
+
await hooks.beforeSubmit?.();
|
|
165
|
+
let submitted;
|
|
166
|
+
try {
|
|
167
|
+
submitted = await (0, external_party_cc_transfer_1.submitExternalPartyCcTransfer)(validatorClient, {
|
|
168
|
+
senderPartyId: input.senderPartyId,
|
|
169
|
+
transaction: input.preparedTransaction,
|
|
170
|
+
transactionHashSignatureHex: decodeBase64(input.signatureBase64, 'signatureBase64').toString('hex'),
|
|
171
|
+
publicKeyHex: (0, canton_protocol_1.extractRawEd25519PublicKey)(input.publicKeyBase64).toString('hex'),
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
try {
|
|
176
|
+
await hooks.afterSubmitFailure?.(error);
|
|
177
|
+
}
|
|
178
|
+
catch (hookError) {
|
|
179
|
+
throw new errors_1.OperationError('afterSubmitFailure hook failed after Canton CC transfer submit failed', errors_1.OperationErrorCode.TRANSACTION_FAILED, {
|
|
180
|
+
senderPartyId: input.senderPartyId,
|
|
181
|
+
submitCause: errorToContext(error),
|
|
182
|
+
hookCause: errorToContext(hookError),
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
const raw = (0, canton_response_utils_1.objectOrEmpty)(submitted.raw);
|
|
188
|
+
const updateId = readOptionalUpdateId(submitted);
|
|
189
|
+
if (!updateId) {
|
|
190
|
+
const missingUpdateIdError = new errors_1.OperationError('Canton CC transfer submit response did not include updateId', errors_1.OperationErrorCode.TRANSACTION_FAILED, {
|
|
191
|
+
senderPartyId: input.senderPartyId,
|
|
192
|
+
raw,
|
|
193
|
+
});
|
|
194
|
+
try {
|
|
195
|
+
await hooks.afterSubmitWithoutUpdateId?.({
|
|
196
|
+
senderPartyId: input.senderPartyId,
|
|
197
|
+
raw,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
catch (hookError) {
|
|
201
|
+
throw new errors_1.OperationError('afterSubmitWithoutUpdateId hook failed after Canton CC transfer submit returned without updateId', errors_1.OperationErrorCode.TRANSACTION_FAILED, {
|
|
202
|
+
senderPartyId: input.senderPartyId,
|
|
203
|
+
raw,
|
|
204
|
+
submitCause: errorToContext(missingUpdateIdError),
|
|
205
|
+
hookCause: errorToContext(hookError),
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
throw missingUpdateIdError;
|
|
209
|
+
}
|
|
210
|
+
const result = {
|
|
211
|
+
senderPartyId: input.senderPartyId,
|
|
212
|
+
updateId,
|
|
213
|
+
raw,
|
|
214
|
+
};
|
|
215
|
+
try {
|
|
216
|
+
await hooks.afterSubmit?.(result);
|
|
217
|
+
}
|
|
218
|
+
catch (hookError) {
|
|
219
|
+
throw new errors_1.OperationError('afterSubmit hook failed after Canton CC transfer submit succeeded', errors_1.OperationErrorCode.TRANSACTION_FAILED, {
|
|
220
|
+
senderPartyId: input.senderPartyId,
|
|
221
|
+
updateId,
|
|
222
|
+
raw,
|
|
223
|
+
hookCause: errorToContext(hookError),
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
return result;
|
|
227
|
+
},
|
|
228
|
+
async prepareProviderTransfer(input) {
|
|
229
|
+
const validatorClient = requireValidatorClient(options.validatorClient, 'provider transfer prepare');
|
|
230
|
+
const amount = normalizeAmountString(input.amount);
|
|
231
|
+
const description = normalizeDescription(input.description);
|
|
232
|
+
const publicKeyFingerprint = (0, canton_protocol_1.assertCantonPartyMatchesPublicKey)({
|
|
233
|
+
partyId: input.receiverPartyId,
|
|
234
|
+
publicKeyBase64: input.publicKeyBase64,
|
|
235
|
+
});
|
|
236
|
+
const sourceBalanceBefore = await validatorClient.getWalletBalance();
|
|
237
|
+
const preparedOffer = input.offerContractId
|
|
238
|
+
? await readResumableProviderTransferOffer({
|
|
239
|
+
validatorClient,
|
|
240
|
+
receiverPartyId: input.receiverPartyId,
|
|
241
|
+
amount,
|
|
242
|
+
description,
|
|
243
|
+
offerContractId: validateExistingOfferContractId(input.offerContractId),
|
|
244
|
+
offerUpdateId: input.offerUpdateId ?? null,
|
|
245
|
+
})
|
|
246
|
+
: await createProviderTransferOffer({
|
|
247
|
+
validatorClient,
|
|
248
|
+
receiverPartyId: input.receiverPartyId,
|
|
249
|
+
amount,
|
|
250
|
+
description,
|
|
251
|
+
expiresAt: epochMillisecondsToMicroseconds(now() + providerTransferOfferTtlMs),
|
|
252
|
+
trackingId: buildProviderTransferTrackingId({
|
|
253
|
+
receiverPartyId: input.receiverPartyId,
|
|
254
|
+
amount,
|
|
255
|
+
now: now(),
|
|
256
|
+
randomId: randomId(),
|
|
257
|
+
}),
|
|
258
|
+
});
|
|
259
|
+
const sourceBalanceAfter = await readOptionalProviderWalletBalance(validatorClient);
|
|
260
|
+
const commandId = input.commandId ?? `accept-provider-offer-${randomId()}`;
|
|
261
|
+
let preparedAccept;
|
|
262
|
+
try {
|
|
263
|
+
preparedAccept = await prepareProviderTransferAcceptance({
|
|
264
|
+
ledgerClient: options.ledgerClient,
|
|
265
|
+
validatorClient,
|
|
266
|
+
providerPartyId: options.providerPartyId,
|
|
267
|
+
providerUserId: options.providerUserId,
|
|
268
|
+
offerContractId: preparedOffer.offerContractId,
|
|
269
|
+
receiverPartyId: input.receiverPartyId,
|
|
270
|
+
commandId,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
throw new errors_1.OperationError('Canton provider-funded transfer acceptance prepare failed; retry with the returned offerContractId to avoid creating a duplicate offer', errors_1.OperationErrorCode.TRANSACTION_FAILED, {
|
|
275
|
+
cause: error instanceof Error ? error.message : String(error),
|
|
276
|
+
sourcePartyId: options.providerPartyId,
|
|
277
|
+
receiverPartyId: input.receiverPartyId,
|
|
278
|
+
amount,
|
|
279
|
+
description,
|
|
280
|
+
offerContractId: preparedOffer.offerContractId,
|
|
281
|
+
offerUpdateId: preparedOffer.offerUpdateId,
|
|
282
|
+
trackingId: preparedOffer.trackingId,
|
|
283
|
+
commandId,
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
return {
|
|
287
|
+
sourcePartyId: options.providerPartyId,
|
|
288
|
+
receiverPartyId: input.receiverPartyId,
|
|
289
|
+
amount,
|
|
290
|
+
description,
|
|
291
|
+
offerContractId: preparedOffer.offerContractId,
|
|
292
|
+
offerUpdateId: preparedOffer.offerUpdateId,
|
|
293
|
+
commandId,
|
|
294
|
+
synchronizerId: preparedAccept.synchronizerId,
|
|
295
|
+
preparedTransaction: preparedAccept.preparedTransaction,
|
|
296
|
+
preparedTransactionHashHex: preparedAccept.preparedTransactionHashHex,
|
|
297
|
+
hashingSchemeVersion: preparedAccept.hashingSchemeVersion,
|
|
298
|
+
prepareToken: (0, canton_protocol_1.buildCantonPrepareToken)(options.prepareTokenSecret, buildProviderTransferAcceptPrepareTokenPayload({
|
|
299
|
+
provider: options.provider,
|
|
300
|
+
network: options.network,
|
|
301
|
+
tokenContext: input.tokenContext,
|
|
302
|
+
sourcePartyId: options.providerPartyId,
|
|
303
|
+
receiverPartyId: input.receiverPartyId,
|
|
304
|
+
amount,
|
|
305
|
+
description,
|
|
306
|
+
publicKeyFingerprint,
|
|
307
|
+
offerContractId: preparedOffer.offerContractId,
|
|
308
|
+
offerUpdateId: preparedOffer.offerUpdateId,
|
|
309
|
+
commandId,
|
|
310
|
+
synchronizerId: preparedAccept.synchronizerId,
|
|
311
|
+
preparedTransaction: preparedAccept.preparedTransaction,
|
|
312
|
+
preparedTransactionHashHex: preparedAccept.preparedTransactionHashHex,
|
|
313
|
+
hashingSchemeVersion: preparedAccept.hashingSchemeVersion,
|
|
314
|
+
})),
|
|
315
|
+
sourceBalanceBefore,
|
|
316
|
+
sourceBalanceAfter,
|
|
317
|
+
raw: {
|
|
318
|
+
offer: preparedOffer.offer,
|
|
319
|
+
offerStatus: preparedOffer.offerStatus,
|
|
320
|
+
offerDisclosure: preparedAccept.offerDisclosure.raw,
|
|
321
|
+
prepared: preparedAccept.raw,
|
|
322
|
+
},
|
|
323
|
+
};
|
|
324
|
+
},
|
|
325
|
+
async submitProviderTransfer(input) {
|
|
326
|
+
const validatorClient = requireValidatorClient(options.validatorClient, 'provider transfer submit');
|
|
327
|
+
const amount = normalizeAmountString(input.amount);
|
|
328
|
+
const description = normalizeDescription(input.description);
|
|
329
|
+
const publicKeyFingerprint = (0, canton_protocol_1.assertCantonPartyMatchesPublicKey)({
|
|
330
|
+
partyId: input.receiverPartyId,
|
|
331
|
+
publicKeyBase64: input.publicKeyBase64,
|
|
332
|
+
...(input.publicKeyFingerprint !== undefined ? { publicKeyFingerprint: input.publicKeyFingerprint } : {}),
|
|
333
|
+
});
|
|
334
|
+
const hashingSchemeVersion = input.hashingSchemeVersion ?? 'HASHING_SCHEME_VERSION_V2';
|
|
335
|
+
(0, canton_protocol_1.assertCantonPrepareToken)(options.prepareTokenSecret, input.prepareToken, buildProviderTransferAcceptPrepareTokenPayload({
|
|
336
|
+
provider: options.provider,
|
|
337
|
+
network: options.network,
|
|
338
|
+
tokenContext: input.tokenContext,
|
|
339
|
+
sourcePartyId: options.providerPartyId,
|
|
340
|
+
receiverPartyId: input.receiverPartyId,
|
|
341
|
+
amount,
|
|
342
|
+
description,
|
|
343
|
+
publicKeyFingerprint,
|
|
344
|
+
offerContractId: input.offerContractId,
|
|
345
|
+
offerUpdateId: input.offerUpdateId,
|
|
346
|
+
commandId: input.commandId,
|
|
347
|
+
synchronizerId: input.synchronizerId,
|
|
348
|
+
preparedTransaction: input.preparedTransaction,
|
|
349
|
+
preparedTransactionHashHex: input.preparedTransactionHashHex,
|
|
350
|
+
hashingSchemeVersion,
|
|
351
|
+
}));
|
|
352
|
+
(0, canton_protocol_1.assertCantonHashSignature)({
|
|
353
|
+
publicKeyBase64: input.publicKeyBase64,
|
|
354
|
+
hashHex: input.preparedTransactionHashHex,
|
|
355
|
+
signatureBase64: input.signatureBase64,
|
|
356
|
+
});
|
|
357
|
+
const submitted = await (0, external_party_transfer_offer_1.submitExternalPartyTransferOfferAcceptance)({
|
|
358
|
+
ledgerClient: options.ledgerClient,
|
|
359
|
+
userId: options.providerUserId,
|
|
360
|
+
acceptingPartyId: input.receiverPartyId,
|
|
361
|
+
publicKeyBase64: input.publicKeyBase64,
|
|
362
|
+
publicKeyFingerprint,
|
|
363
|
+
preparedTransaction: input.preparedTransaction,
|
|
364
|
+
preparedTransactionHashHex: input.preparedTransactionHashHex,
|
|
365
|
+
signatureBase64: input.signatureBase64,
|
|
366
|
+
hashingSchemeVersion,
|
|
367
|
+
submissionId: randomId(),
|
|
368
|
+
});
|
|
369
|
+
const acceptUpdateId = readRequiredUpdateId(submitted, 'provider CC transfer accept submit');
|
|
370
|
+
const sourceBalanceAfter = await readOptionalProviderWalletBalance(validatorClient);
|
|
371
|
+
return {
|
|
372
|
+
sourcePartyId: options.providerPartyId,
|
|
373
|
+
receiverPartyId: input.receiverPartyId,
|
|
374
|
+
amount,
|
|
375
|
+
description,
|
|
376
|
+
offerContractId: input.offerContractId,
|
|
377
|
+
offerUpdateId: input.offerUpdateId,
|
|
378
|
+
acceptUpdateId,
|
|
379
|
+
updateId: acceptUpdateId,
|
|
380
|
+
sourceBalanceAfter,
|
|
381
|
+
raw: (0, canton_response_utils_1.objectOrEmpty)(submitted.raw),
|
|
382
|
+
};
|
|
383
|
+
},
|
|
384
|
+
async listActiveContracts(input) {
|
|
385
|
+
const contracts = await options.ledgerClient.getActiveContracts({
|
|
386
|
+
parties: [input.partyId],
|
|
387
|
+
...(input.templateIds && input.templateIds.length > 0 ? { templateIds: [...input.templateIds] } : {}),
|
|
388
|
+
includeCreatedEventBlob: input.includeCreatedEventBlob ?? true,
|
|
389
|
+
});
|
|
390
|
+
if (!Array.isArray(contracts)) {
|
|
391
|
+
throw new errors_1.OperationError('Canton active contracts response did not include an array', errors_1.OperationErrorCode.TRANSACTION_FAILED);
|
|
392
|
+
}
|
|
393
|
+
return {
|
|
394
|
+
contracts: contracts.slice(0, input.limit ?? 50),
|
|
395
|
+
};
|
|
396
|
+
},
|
|
397
|
+
async getExternalPartyBalance(input) {
|
|
398
|
+
const validatorClient = requireValidatorClient(options.validatorClient, 'external party balance');
|
|
399
|
+
let raw;
|
|
400
|
+
try {
|
|
401
|
+
raw = await validatorClient.getExternalPartyBalance({ partyId: input.partyId });
|
|
402
|
+
}
|
|
403
|
+
catch (error) {
|
|
404
|
+
if (!isNotFound(error))
|
|
405
|
+
throw error;
|
|
406
|
+
raw = await readExternalPartyBalanceFromActiveAmulets(options.ledgerClient, input.partyId);
|
|
407
|
+
}
|
|
408
|
+
return {
|
|
409
|
+
partyId: input.partyId,
|
|
410
|
+
fetchedAt: new Date(now()).toISOString(),
|
|
411
|
+
raw,
|
|
412
|
+
};
|
|
413
|
+
},
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
function buildExternalPartyCcTransferPrepareTokenPayload(input) {
|
|
417
|
+
return {
|
|
418
|
+
kind: 'external-party-cc-transfer',
|
|
419
|
+
version: 1,
|
|
420
|
+
provider: input.provider ?? null,
|
|
421
|
+
network: input.network ?? null,
|
|
422
|
+
context: normalizeTokenContext(input.tokenContext),
|
|
423
|
+
senderPartyId: input.senderPartyId,
|
|
424
|
+
receiverPartyId: input.receiverPartyId,
|
|
425
|
+
amount: input.amount,
|
|
426
|
+
description: input.description,
|
|
427
|
+
publicKeyFingerprint: input.publicKeyFingerprint,
|
|
428
|
+
preparedTransactionSha256: (0, canton_protocol_1.hashPreparedTransaction)(input.preparedTransaction),
|
|
429
|
+
preparedTransactionHashHex: input.preparedTransactionHashHex,
|
|
430
|
+
transferCommandContractIdPrefix: input.transferCommandContractIdPrefix,
|
|
431
|
+
nonce: input.nonce,
|
|
432
|
+
expiresAt: input.expiresAt,
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
function buildProviderTransferAcceptPrepareTokenPayload(input) {
|
|
436
|
+
return {
|
|
437
|
+
kind: 'provider-transfer-accept',
|
|
438
|
+
version: 1,
|
|
439
|
+
provider: input.provider ?? null,
|
|
440
|
+
network: input.network ?? null,
|
|
441
|
+
context: normalizeTokenContext(input.tokenContext),
|
|
442
|
+
sourcePartyId: input.sourcePartyId,
|
|
443
|
+
receiverPartyId: input.receiverPartyId,
|
|
444
|
+
amount: input.amount,
|
|
445
|
+
description: input.description,
|
|
446
|
+
publicKeyFingerprint: input.publicKeyFingerprint,
|
|
447
|
+
offerContractId: input.offerContractId,
|
|
448
|
+
offerUpdateId: input.offerUpdateId,
|
|
449
|
+
commandId: input.commandId,
|
|
450
|
+
synchronizerId: input.synchronizerId,
|
|
451
|
+
preparedTransactionSha256: (0, canton_protocol_1.hashPreparedTransaction)(input.preparedTransaction),
|
|
452
|
+
preparedTransactionHashHex: input.preparedTransactionHashHex,
|
|
453
|
+
hashingSchemeVersion: input.hashingSchemeVersion,
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
function normalizeExternalPartyWalletDescription(description) {
|
|
457
|
+
const normalized = description?.trim();
|
|
458
|
+
if (!normalized)
|
|
459
|
+
return null;
|
|
460
|
+
return normalized;
|
|
461
|
+
}
|
|
462
|
+
function parseExternalPartyWalletConnectedSynchronizerId(raw) {
|
|
463
|
+
if (!(0, utils_1.isRecord)(raw) && !Array.isArray(raw))
|
|
464
|
+
return null;
|
|
465
|
+
const direct = (0, utils_1.isRecord)(raw) ? raw['connectedSynchronizers'] : undefined;
|
|
466
|
+
const itemsField = (0, utils_1.isRecord)(raw) ? raw['items'] : undefined;
|
|
467
|
+
const items = Array.isArray(raw)
|
|
468
|
+
? raw
|
|
469
|
+
: Array.isArray(direct)
|
|
470
|
+
? direct
|
|
471
|
+
: Array.isArray(itemsField)
|
|
472
|
+
? itemsField
|
|
473
|
+
: [];
|
|
474
|
+
const synchronizerIds = [];
|
|
475
|
+
for (const item of items) {
|
|
476
|
+
if (typeof item === 'string' && item.trim()) {
|
|
477
|
+
synchronizerIds.push(item.trim());
|
|
478
|
+
continue;
|
|
479
|
+
}
|
|
480
|
+
if (!(0, utils_1.isRecord)(item))
|
|
481
|
+
continue;
|
|
482
|
+
for (const key of ['synchronizerId', 'synchronizer', 'domainId', 'id']) {
|
|
483
|
+
const value = item[key];
|
|
484
|
+
if (typeof value === 'string' && value.trim()) {
|
|
485
|
+
synchronizerIds.push(value.trim());
|
|
486
|
+
break;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
const uniqueSynchronizerIds = new Set(synchronizerIds);
|
|
491
|
+
if (uniqueSynchronizerIds.size > 1) {
|
|
492
|
+
throw new errors_1.OperationError('Canton provider reported multiple connected synchronizers', errors_1.OperationErrorCode.MISSING_DOMAIN_ID, { synchronizerIds });
|
|
493
|
+
}
|
|
494
|
+
return synchronizerIds[0] ?? null;
|
|
495
|
+
}
|
|
496
|
+
async function prepareProviderTransferAcceptance(input) {
|
|
497
|
+
return (0, external_party_transfer_offer_1.prepareExternalPartyTransferOfferAcceptance)({
|
|
498
|
+
ledgerClient: input.ledgerClient,
|
|
499
|
+
validatorClient: input.validatorClient,
|
|
500
|
+
providerPartyId: input.providerPartyId,
|
|
501
|
+
commandId: input.commandId,
|
|
502
|
+
userId: input.providerUserId,
|
|
503
|
+
acceptingPartyId: input.receiverPartyId,
|
|
504
|
+
offerContractId: input.offerContractId,
|
|
505
|
+
...(input.synchronizerId ? { synchronizerId: input.synchronizerId } : {}),
|
|
506
|
+
});
|
|
507
|
+
}
|
|
508
|
+
async function createProviderTransferOffer(input) {
|
|
509
|
+
const offer = await input.validatorClient.createTransferOffer({
|
|
510
|
+
receiver_party_id: input.receiverPartyId,
|
|
511
|
+
amount: input.amount,
|
|
512
|
+
description: input.description ?? '',
|
|
513
|
+
expires_at: input.expiresAt,
|
|
514
|
+
tracking_id: input.trackingId,
|
|
515
|
+
});
|
|
516
|
+
const offerContractId = (0, canton_response_utils_1.readRequiredString)(offer, 'offer_contract_id', 'provider CC transfer offer');
|
|
517
|
+
const offerStatus = await readOptionalTransferOfferStatus(input.validatorClient, input.trackingId);
|
|
518
|
+
return {
|
|
519
|
+
offer,
|
|
520
|
+
offerContractId,
|
|
521
|
+
offerStatus,
|
|
522
|
+
offerUpdateId: readOptionalUpdateId(offerStatus),
|
|
523
|
+
trackingId: input.trackingId,
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
async function readResumableProviderTransferOffer(input) {
|
|
527
|
+
const offerList = await input.validatorClient.listTransferOffers();
|
|
528
|
+
const offer = readTransferOfferByContractId(offerList, input.offerContractId);
|
|
529
|
+
if (!offer) {
|
|
530
|
+
throw new errors_1.OperationError('Canton transfer offer was not found for provider transfer resume', errors_1.OperationErrorCode.MISSING_CONTRACT, { offerContractId: input.offerContractId });
|
|
531
|
+
}
|
|
532
|
+
assertResumedProviderTransferOfferMatches({
|
|
533
|
+
offer,
|
|
534
|
+
offerContractId: input.offerContractId,
|
|
535
|
+
receiverPartyId: input.receiverPartyId,
|
|
536
|
+
amount: input.amount,
|
|
537
|
+
description: input.description,
|
|
538
|
+
});
|
|
539
|
+
return {
|
|
540
|
+
offer,
|
|
541
|
+
offerContractId: input.offerContractId,
|
|
542
|
+
offerStatus: null,
|
|
543
|
+
offerUpdateId: input.offerUpdateId,
|
|
544
|
+
trackingId: readTransferOfferString(offer, ['trackingId', 'tracking_id'], false),
|
|
545
|
+
};
|
|
546
|
+
}
|
|
547
|
+
function validateExistingOfferContractId(offerContractId) {
|
|
548
|
+
const normalized = offerContractId.trim();
|
|
549
|
+
if (!normalized) {
|
|
550
|
+
throw new errors_1.ValidationError('offerContractId is required when resuming provider transfer prepare');
|
|
551
|
+
}
|
|
552
|
+
return normalized;
|
|
553
|
+
}
|
|
554
|
+
async function readConnectedSynchronizers(ledgerClient, providerPartyId) {
|
|
555
|
+
const raw = await ledgerClient.getConnectedSynchronizers({ party: providerPartyId });
|
|
556
|
+
return {
|
|
557
|
+
synchronizerId: parseExternalPartyWalletConnectedSynchronizerId(raw),
|
|
558
|
+
raw,
|
|
559
|
+
};
|
|
560
|
+
}
|
|
561
|
+
async function readRequiredConnectedSynchronizerId(ledgerClient, providerPartyId) {
|
|
562
|
+
const { synchronizerId } = await readConnectedSynchronizers(ledgerClient, providerPartyId);
|
|
563
|
+
if (synchronizerId)
|
|
564
|
+
return synchronizerId;
|
|
565
|
+
throw new errors_1.OperationError('Canton provider did not report a connected synchronizer', errors_1.OperationErrorCode.MISSING_DOMAIN_ID);
|
|
566
|
+
}
|
|
567
|
+
async function readExternalPartyBalanceFromActiveAmulets(ledgerClient, partyId) {
|
|
568
|
+
const contracts = await ledgerClient.getActiveContracts({
|
|
569
|
+
parties: [partyId],
|
|
570
|
+
includeCreatedEventBlob: false,
|
|
571
|
+
});
|
|
572
|
+
const amulets = readAmuletBalanceContracts(contracts, partyId);
|
|
573
|
+
return {
|
|
574
|
+
source: 'ledger-active-contracts',
|
|
575
|
+
reason: 'validator-external-party-wallet-not-found',
|
|
576
|
+
effective_unlocked_qty: sumDecimalStrings(amulets.map((amulet) => amulet.amount)),
|
|
577
|
+
effective_locked_qty: '0',
|
|
578
|
+
contracts: amulets,
|
|
579
|
+
};
|
|
580
|
+
}
|
|
581
|
+
function readAmuletBalanceContracts(source, ownerPartyId) {
|
|
582
|
+
if (!Array.isArray(source))
|
|
583
|
+
return [];
|
|
584
|
+
const amulets = [];
|
|
585
|
+
for (const item of source) {
|
|
586
|
+
const contractEntry = (0, utils_1.isRecord)(item) ? (0, canton_response_utils_1.objectOrEmpty)(item['contractEntry']) : {};
|
|
587
|
+
const activeContract = (0, canton_response_utils_1.objectOrEmpty)(contractEntry['JsActiveContract']);
|
|
588
|
+
const createdEvent = (0, canton_response_utils_1.objectOrEmpty)(activeContract['createdEvent']);
|
|
589
|
+
const templateId = readFirstString(createdEvent, ['templateId', 'template_id']);
|
|
590
|
+
if (!templateId?.includes(':Splice.Amulet:Amulet'))
|
|
591
|
+
continue;
|
|
592
|
+
const createArgument = (0, canton_response_utils_1.objectOrEmpty)(createdEvent['createArgument']);
|
|
593
|
+
if (createArgument['owner'] !== ownerPartyId)
|
|
594
|
+
continue;
|
|
595
|
+
const amount = (0, canton_response_utils_1.objectOrEmpty)(createArgument['amount']);
|
|
596
|
+
const initialAmount = readFirstString(amount, ['initialAmount', 'initial_amount']);
|
|
597
|
+
if (!initialAmount)
|
|
598
|
+
continue;
|
|
599
|
+
amulets.push({
|
|
600
|
+
contractId: readFirstString(createdEvent, ['contractId', 'contract_id']),
|
|
601
|
+
templateId,
|
|
602
|
+
amount: initialAmount,
|
|
603
|
+
});
|
|
604
|
+
}
|
|
605
|
+
return amulets;
|
|
606
|
+
}
|
|
607
|
+
function buildProviderTransferTrackingId(input) {
|
|
608
|
+
return `provider-funding-${(0, node_crypto_1.createHash)('sha256')
|
|
609
|
+
.update(`${input.receiverPartyId}:${input.amount}:${input.now}:${input.randomId}`)
|
|
610
|
+
.digest('hex')
|
|
611
|
+
.slice(0, 32)}`;
|
|
612
|
+
}
|
|
613
|
+
function epochMillisecondsToMicroseconds(epochMilliseconds) {
|
|
614
|
+
return epochMilliseconds * 1000;
|
|
615
|
+
}
|
|
616
|
+
function validateProviderTransferOfferTtlMs(providerTransferOfferTtlMs) {
|
|
617
|
+
if (!Number.isSafeInteger(providerTransferOfferTtlMs) || providerTransferOfferTtlMs <= 0) {
|
|
618
|
+
throw new errors_1.ValidationError('providerTransferOfferTtlMs must be a positive safe integer', {
|
|
619
|
+
providerTransferOfferTtlMs,
|
|
620
|
+
});
|
|
621
|
+
}
|
|
622
|
+
return providerTransferOfferTtlMs;
|
|
623
|
+
}
|
|
624
|
+
function requireValidatorClient(validatorClient, operation) {
|
|
625
|
+
if (!validatorClient) {
|
|
626
|
+
throw new errors_1.ConfigurationError(`validatorClient is required for ${operation}`);
|
|
627
|
+
}
|
|
628
|
+
return validatorClient;
|
|
629
|
+
}
|
|
630
|
+
async function readOptionalTransferOfferStatus(validatorClient, trackingId) {
|
|
631
|
+
try {
|
|
632
|
+
return await validatorClient.getTransferOfferStatus({ trackingId });
|
|
633
|
+
}
|
|
634
|
+
catch (error) {
|
|
635
|
+
if (!isNotFound(error))
|
|
636
|
+
throw error;
|
|
637
|
+
return null;
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
async function readOptionalProviderWalletBalance(validatorClient) {
|
|
641
|
+
try {
|
|
642
|
+
return await validatorClient.getWalletBalance();
|
|
643
|
+
}
|
|
644
|
+
catch (error) {
|
|
645
|
+
if (!isNotFound(error))
|
|
646
|
+
throw error;
|
|
647
|
+
return null;
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
function readRequiredUpdateId(source, operation) {
|
|
651
|
+
const updateId = readOptionalUpdateId(source);
|
|
652
|
+
if (updateId)
|
|
653
|
+
return updateId;
|
|
654
|
+
throw new errors_1.OperationError(`Canton ${operation} response did not include updateId`, errors_1.OperationErrorCode.TRANSACTION_FAILED);
|
|
655
|
+
}
|
|
656
|
+
function readOptionalUpdateId(source) {
|
|
657
|
+
if (!(0, utils_1.isRecord)(source))
|
|
658
|
+
return null;
|
|
659
|
+
for (const key of ['updateId', 'update_id', 'transaction_id', 'transactionId']) {
|
|
660
|
+
const value = source[key];
|
|
661
|
+
if (typeof value === 'string' && value.trim())
|
|
662
|
+
return value;
|
|
663
|
+
}
|
|
664
|
+
return readOptionalUpdateId(source['raw']);
|
|
665
|
+
}
|
|
666
|
+
function readOptionalString(source, key) {
|
|
667
|
+
const value = source[key];
|
|
668
|
+
return typeof value === 'string' && value.trim() ? value : null;
|
|
669
|
+
}
|
|
670
|
+
function readFirstString(record, keys) {
|
|
671
|
+
for (const key of keys) {
|
|
672
|
+
const value = record[key];
|
|
673
|
+
if (typeof value === 'string' && value.trim())
|
|
674
|
+
return value;
|
|
675
|
+
}
|
|
676
|
+
return null;
|
|
677
|
+
}
|
|
678
|
+
const CANTON_DECIMAL_AMOUNT_PATTERN = /^(?:0|[1-9]\d*)(?:\.\d+)?$/;
|
|
679
|
+
function normalizeAmountString(amount) {
|
|
680
|
+
const normalized = typeof amount === 'number' ? amount.toString() : amount.trim();
|
|
681
|
+
if (typeof amount === 'number') {
|
|
682
|
+
if (!Number.isFinite(amount)) {
|
|
683
|
+
throw new errors_1.ValidationError('amount must be a finite decimal amount', { amount });
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
if (!normalized) {
|
|
687
|
+
throw new errors_1.ValidationError('amount is required', { amount });
|
|
688
|
+
}
|
|
689
|
+
if (!CANTON_DECIMAL_AMOUNT_PATTERN.test(normalized) || decimalAmountIsZero(normalized)) {
|
|
690
|
+
throw new errors_1.ValidationError('amount must be a positive decimal amount', { amount });
|
|
691
|
+
}
|
|
692
|
+
return normalized;
|
|
693
|
+
}
|
|
694
|
+
function decimalAmountIsZero(amount) {
|
|
695
|
+
return /^0(?:\.0+)?$/.test(amount);
|
|
696
|
+
}
|
|
697
|
+
function readTransferOfferByContractId(source, offerContractId) {
|
|
698
|
+
const sourceOffers = (0, utils_1.isRecord)(source) ? source['offers'] : undefined;
|
|
699
|
+
const offers = Array.isArray(sourceOffers) ? sourceOffers : source;
|
|
700
|
+
if (!Array.isArray(offers))
|
|
701
|
+
return null;
|
|
702
|
+
for (const offer of offers) {
|
|
703
|
+
if (!(0, utils_1.isRecord)(offer))
|
|
704
|
+
continue;
|
|
705
|
+
const contractId = readTransferOfferString(offer, ['contractId', 'contract_id'], false);
|
|
706
|
+
if (contractId === offerContractId)
|
|
707
|
+
return offer;
|
|
708
|
+
}
|
|
709
|
+
return null;
|
|
710
|
+
}
|
|
711
|
+
function assertResumedProviderTransferOfferMatches(input) {
|
|
712
|
+
const receiverPartyId = readTransferOfferString(input.offer, ['receiverPartyId', 'receiver_party_id', 'receiver', 'receiverParty'], false);
|
|
713
|
+
const amount = readTransferOfferString(input.offer, ['amount'], false);
|
|
714
|
+
const description = readTransferOfferString(input.offer, ['description'], true);
|
|
715
|
+
if (receiverPartyId === null || amount === null || description === null) {
|
|
716
|
+
const missingFields = [];
|
|
717
|
+
if (receiverPartyId === null)
|
|
718
|
+
missingFields.push('receiverPartyId');
|
|
719
|
+
if (amount === null)
|
|
720
|
+
missingFields.push('amount');
|
|
721
|
+
if (description === null)
|
|
722
|
+
missingFields.push('description');
|
|
723
|
+
throw new errors_1.OperationError('Canton transfer-offer details were unavailable for provider transfer resume', errors_1.OperationErrorCode.MISSING_CONTRACT, {
|
|
724
|
+
offerContractId: input.offerContractId,
|
|
725
|
+
missingFields,
|
|
726
|
+
});
|
|
727
|
+
}
|
|
728
|
+
const expectedDescription = input.description ?? '';
|
|
729
|
+
const amountMatches = normalizeDecimalForComparison(amount) !== null &&
|
|
730
|
+
normalizeDecimalForComparison(amount) === normalizeDecimalForComparison(input.amount);
|
|
731
|
+
if (receiverPartyId !== input.receiverPartyId || !amountMatches || description !== expectedDescription) {
|
|
732
|
+
throw new errors_1.ValidationError('Resumed provider transfer offer does not match the requested transfer details', {
|
|
733
|
+
offerContractId: input.offerContractId,
|
|
734
|
+
expected: {
|
|
735
|
+
receiverPartyId: input.receiverPartyId,
|
|
736
|
+
amount: input.amount,
|
|
737
|
+
description: expectedDescription,
|
|
738
|
+
},
|
|
739
|
+
actual: {
|
|
740
|
+
receiverPartyId,
|
|
741
|
+
amount,
|
|
742
|
+
description,
|
|
743
|
+
},
|
|
744
|
+
});
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
function readTransferOfferString(source, keys, allowEmpty) {
|
|
748
|
+
for (const record of readTransferOfferCandidateRecords(source)) {
|
|
749
|
+
for (const key of keys) {
|
|
750
|
+
const value = record[key];
|
|
751
|
+
if (typeof value === 'string') {
|
|
752
|
+
const normalized = value.trim();
|
|
753
|
+
if (normalized || allowEmpty)
|
|
754
|
+
return normalized;
|
|
755
|
+
}
|
|
756
|
+
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
757
|
+
return value.toString();
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
return null;
|
|
762
|
+
}
|
|
763
|
+
function readTransferOfferCandidateRecords(source) {
|
|
764
|
+
const transferOffer = (0, canton_response_utils_1.objectOrEmpty)(source['transfer_offer']);
|
|
765
|
+
const transferOfferContract = (0, canton_response_utils_1.objectOrEmpty)(transferOffer['contract']);
|
|
766
|
+
const transferOfferPayload = (0, canton_response_utils_1.objectOrEmpty)(transferOffer['payload']);
|
|
767
|
+
const offer = (0, canton_response_utils_1.objectOrEmpty)(source['offer']);
|
|
768
|
+
const offerContract = (0, canton_response_utils_1.objectOrEmpty)(offer['contract']);
|
|
769
|
+
const offerPayload = (0, canton_response_utils_1.objectOrEmpty)(offer['payload']);
|
|
770
|
+
const contract = (0, canton_response_utils_1.objectOrEmpty)(source['contract']);
|
|
771
|
+
const contractPayload = (0, canton_response_utils_1.objectOrEmpty)(contract['payload']);
|
|
772
|
+
const payload = (0, canton_response_utils_1.objectOrEmpty)(source['payload']);
|
|
773
|
+
const createArgument = (0, canton_response_utils_1.objectOrEmpty)(source['createArgument'] ?? source['create_argument']);
|
|
774
|
+
return [
|
|
775
|
+
source,
|
|
776
|
+
payload,
|
|
777
|
+
createArgument,
|
|
778
|
+
contract,
|
|
779
|
+
contractPayload,
|
|
780
|
+
offer,
|
|
781
|
+
offerPayload,
|
|
782
|
+
offerContract,
|
|
783
|
+
transferOffer,
|
|
784
|
+
transferOfferPayload,
|
|
785
|
+
transferOfferContract,
|
|
786
|
+
];
|
|
787
|
+
}
|
|
788
|
+
function normalizeDecimalForComparison(amount) {
|
|
789
|
+
const normalized = amount.trim();
|
|
790
|
+
if (!/^\d+(?:\.\d+)?$/.test(normalized))
|
|
791
|
+
return null;
|
|
792
|
+
const [whole = '0', fraction = ''] = normalized.split('.');
|
|
793
|
+
const normalizedWhole = whole.replace(/^0+(?=\d)/, '') || '0';
|
|
794
|
+
const normalizedFraction = fraction.replace(/0+$/, '');
|
|
795
|
+
return normalizedFraction ? `${normalizedWhole}.${normalizedFraction}` : normalizedWhole;
|
|
796
|
+
}
|
|
797
|
+
function normalizeDescription(description) {
|
|
798
|
+
return normalizeExternalPartyWalletDescription(description);
|
|
799
|
+
}
|
|
800
|
+
function normalizeTokenContext(context) {
|
|
801
|
+
if (!context)
|
|
802
|
+
return {};
|
|
803
|
+
return Object.fromEntries(Object.entries(context).filter(([, value]) => value !== undefined));
|
|
804
|
+
}
|
|
805
|
+
function decodeBase64(value, label) {
|
|
806
|
+
const normalized = value.trim().replace(/-/g, '+').replace(/_/g, '/');
|
|
807
|
+
if (!/^[A-Za-z0-9+/]+={0,2}$/.test(normalized) || normalized.length % 4 === 1) {
|
|
808
|
+
throw new errors_1.ValidationError(`${label} must be base64-encoded`);
|
|
809
|
+
}
|
|
810
|
+
return Buffer.from(normalized, 'base64');
|
|
811
|
+
}
|
|
812
|
+
function errorToContext(error) {
|
|
813
|
+
const record = (0, utils_1.isRecord)(error) ? error : {};
|
|
814
|
+
const message = typeof record['message'] === 'string' && record['message'].trim()
|
|
815
|
+
? record['message']
|
|
816
|
+
: error instanceof Error
|
|
817
|
+
? error.message
|
|
818
|
+
: String(error);
|
|
819
|
+
return {
|
|
820
|
+
...(typeof record['name'] === 'string' ? { name: record['name'] } : {}),
|
|
821
|
+
message,
|
|
822
|
+
...(record['code'] !== undefined ? { code: record['code'] } : {}),
|
|
823
|
+
...(record['status'] !== undefined ? { status: record['status'] } : {}),
|
|
824
|
+
...(record['context'] !== undefined ? { context: record['context'] } : {}),
|
|
825
|
+
};
|
|
826
|
+
}
|
|
827
|
+
function isNotFound(error) {
|
|
828
|
+
if (error instanceof errors_1.ApiError) {
|
|
829
|
+
return error.status === 404;
|
|
830
|
+
}
|
|
831
|
+
return (0, utils_1.isRecord)(error) && error['status'] === 404;
|
|
832
|
+
}
|
|
833
|
+
function sumDecimalStrings(values) {
|
|
834
|
+
let scale = 0;
|
|
835
|
+
const parsed = values.map((value) => {
|
|
836
|
+
const [whole = '0', fraction = ''] = value.split('.');
|
|
837
|
+
scale = Math.max(scale, fraction.length);
|
|
838
|
+
return { whole, fraction };
|
|
839
|
+
});
|
|
840
|
+
let total = 0n;
|
|
841
|
+
for (const value of parsed) {
|
|
842
|
+
const whole = BigInt(value.whole === '' ? '0' : value.whole);
|
|
843
|
+
const paddedFraction = value.fraction.padEnd(scale, '0');
|
|
844
|
+
const fraction = BigInt(paddedFraction === '' ? '0' : paddedFraction);
|
|
845
|
+
total += whole * 10n ** BigInt(scale) + fraction;
|
|
846
|
+
}
|
|
847
|
+
if (scale === 0)
|
|
848
|
+
return total.toString();
|
|
849
|
+
const divisor = 10n ** BigInt(scale);
|
|
850
|
+
const whole = total / divisor;
|
|
851
|
+
const fraction = (total % divisor).toString().padStart(scale, '0');
|
|
852
|
+
return `${whole.toString()}.${fraction}`;
|
|
853
|
+
}
|
|
854
|
+
function validateRequiredString(name, value) {
|
|
855
|
+
if (!value.trim()) {
|
|
856
|
+
throw new errors_1.ValidationError(`${name} is required`, { [name]: value });
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
//# sourceMappingURL=external-party-wallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-party-wallet.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/external-party-wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ export * from './canton-protocol';
|
|
|
3
3
|
export * from './create-external-party';
|
|
4
4
|
export * from './execute-external-transaction';
|
|
5
5
|
export * from './external-party-onboarding';
|
|
6
|
+
export * from './external-party-wallet';
|
|
6
7
|
export * from './generate-external-party';
|
|
7
8
|
export * from './prepare-external-transaction';
|
|
8
9
|
export * from './stellar-utils';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/external-signing/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC"}
|
|
@@ -19,6 +19,7 @@ __exportStar(require("./canton-protocol"), exports);
|
|
|
19
19
|
__exportStar(require("./create-external-party"), exports);
|
|
20
20
|
__exportStar(require("./execute-external-transaction"), exports);
|
|
21
21
|
__exportStar(require("./external-party-onboarding"), exports);
|
|
22
|
+
__exportStar(require("./external-party-wallet"), exports);
|
|
22
23
|
__exportStar(require("./generate-external-party"), exports);
|
|
23
24
|
__exportStar(require("./prepare-external-transaction"), exports);
|
|
24
25
|
__exportStar(require("./stellar-utils"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,oDAAkC;AAClC,0DAAwC;AACxC,iEAA+C;AAC/C,8DAA4C;AAC5C,4DAA0C;AAC1C,iEAA+C;AAC/C,kDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,oDAAkC;AAClC,0DAAwC;AACxC,iEAA+C;AAC/C,8DAA4C;AAC5C,0DAAwC;AACxC,4DAA0C;AAC1C,iEAA+C;AAC/C,kDAAgC"}
|