@fairmint/canton-node-sdk 0.0.210 → 0.0.212
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/amulet/external-party-transfer-offer.d.ts +73 -0
- package/build/src/utils/amulet/external-party-transfer-offer.d.ts.map +1 -0
- package/build/src/utils/amulet/external-party-transfer-offer.js +308 -0
- package/build/src/utils/amulet/external-party-transfer-offer.js.map +1 -0
- package/build/src/utils/amulet/index.d.ts +1 -0
- package/build/src/utils/amulet/index.d.ts.map +1 -1
- package/build/src/utils/amulet/index.js +1 -0
- package/build/src/utils/amulet/index.js.map +1 -1
- package/build/src/utils/canton-response-utils.d.ts +3 -0
- package/build/src/utils/canton-response-utils.d.ts.map +1 -0
- package/build/src/utils/canton-response-utils.js +18 -0
- package/build/src/utils/canton-response-utils.js.map +1 -0
- package/build/src/utils/external-signing/canton-protocol.d.ts +57 -0
- package/build/src/utils/external-signing/canton-protocol.d.ts.map +1 -0
- package/build/src/utils/external-signing/canton-protocol.js +339 -0
- package/build/src/utils/external-signing/canton-protocol.js.map +1 -0
- package/build/src/utils/external-signing/execute-external-transaction.d.ts +11 -0
- package/build/src/utils/external-signing/execute-external-transaction.d.ts.map +1 -1
- package/build/src/utils/external-signing/execute-external-transaction.js +24 -2
- package/build/src/utils/external-signing/execute-external-transaction.js.map +1 -1
- package/build/src/utils/external-signing/external-party-onboarding.d.ts +65 -0
- package/build/src/utils/external-signing/external-party-onboarding.d.ts.map +1 -0
- package/build/src/utils/external-signing/external-party-onboarding.js +249 -0
- package/build/src/utils/external-signing/external-party-onboarding.js.map +1 -0
- 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 +3 -0
- package/build/src/utils/external-signing/index.d.ts.map +1 -1
- package/build/src/utils/external-signing/index.js +3 -0
- package/build/src/utils/external-signing/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_CANTON_IDENTITY_PROVIDER_ID = exports.CANTON_ED25519_SIGNATURE_ALGORITHM = exports.CANTON_RAW_SIGNATURE_FORMAT = exports.CANTON_EC_CURVE25519_PUBLIC_KEY_SPEC = exports.CANTON_DER_X509_PUBLIC_KEY_FORMAT = void 0;
|
|
4
|
+
exports.prepareExternalPartyOnboarding = prepareExternalPartyOnboarding;
|
|
5
|
+
exports.submitExternalPartyOnboarding = submitExternalPartyOnboarding;
|
|
6
|
+
exports.listExternalPartyIdsForPublicKey = listExternalPartyIdsForPublicKey;
|
|
7
|
+
exports.getExternalPartyIdForHintAndPublicKey = getExternalPartyIdForHintAndPublicKey;
|
|
8
|
+
const errors_1 = require("../../core/errors");
|
|
9
|
+
const utils_1 = require("../../core/utils");
|
|
10
|
+
const canton_response_utils_1 = require("../canton-response-utils");
|
|
11
|
+
const allocate_external_party_1 = require("./allocate-external-party");
|
|
12
|
+
const canton_protocol_1 = require("./canton-protocol");
|
|
13
|
+
const generate_external_party_1 = require("./generate-external-party");
|
|
14
|
+
exports.CANTON_DER_X509_PUBLIC_KEY_FORMAT = 'CRYPTO_KEY_FORMAT_DER_X509_SUBJECT_PUBLIC_KEY_INFO';
|
|
15
|
+
exports.CANTON_EC_CURVE25519_PUBLIC_KEY_SPEC = 'SIGNING_KEY_SPEC_EC_CURVE25519';
|
|
16
|
+
exports.CANTON_RAW_SIGNATURE_FORMAT = 'SIGNATURE_FORMAT_RAW';
|
|
17
|
+
exports.CANTON_ED25519_SIGNATURE_ALGORITHM = 'SIGNING_ALGORITHM_SPEC_ED25519';
|
|
18
|
+
exports.DEFAULT_CANTON_IDENTITY_PROVIDER_ID = '';
|
|
19
|
+
/**
|
|
20
|
+
* Prepares external-party topology for a raw or DER-wrapped Ed25519 public key.
|
|
21
|
+
*
|
|
22
|
+
* The caller should ask the end-user wallet to sign `multiHashHex` before calling {@link submitExternalPartyOnboarding}.
|
|
23
|
+
*/
|
|
24
|
+
async function prepareExternalPartyOnboarding(options) {
|
|
25
|
+
validateRequiredString('synchronizerId', options.synchronizerId);
|
|
26
|
+
validateRequiredString('partyHint', options.partyHint);
|
|
27
|
+
const topology = await (0, generate_external_party_1.generateExternalPartyTopology)({
|
|
28
|
+
ledgerClient: options.ledgerClient,
|
|
29
|
+
synchronizerId: options.synchronizerId,
|
|
30
|
+
partyHint: options.partyHint,
|
|
31
|
+
publicKey: {
|
|
32
|
+
format: exports.CANTON_DER_X509_PUBLIC_KEY_FORMAT,
|
|
33
|
+
keyData: (0, canton_protocol_1.normalizeEd25519PublicKeyForCanton)(options.publicKeyBase64),
|
|
34
|
+
keySpec: exports.CANTON_EC_CURVE25519_PUBLIC_KEY_SPEC,
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
const partyId = (0, canton_response_utils_1.readRequiredString)(topology, 'partyId', 'topology generation');
|
|
38
|
+
const publicKeyFingerprint = assertGeneratedPartyMatchesPublicKey({
|
|
39
|
+
partyId,
|
|
40
|
+
publicKeyBase64: options.publicKeyBase64,
|
|
41
|
+
});
|
|
42
|
+
return {
|
|
43
|
+
partyId,
|
|
44
|
+
publicKeyFingerprint,
|
|
45
|
+
multiHashHex: (0, canton_protocol_1.normalizeCantonHashToHex)((0, canton_response_utils_1.readRequiredString)(topology, 'multiHash', 'topology generation'), 'topology generation'),
|
|
46
|
+
synchronizerId: options.synchronizerId,
|
|
47
|
+
topologyTransactions: readRequiredStringArray(topology, 'topologyTransactions', 'topology generation'),
|
|
48
|
+
publicKeyFormat: exports.CANTON_DER_X509_PUBLIC_KEY_FORMAT,
|
|
49
|
+
signingAlgorithmSpec: exports.CANTON_ED25519_SIGNATURE_ALGORITHM,
|
|
50
|
+
raw: topology,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** Verifies the end-user Ed25519 signature and submits prepared external-party topology to Canton. */
|
|
54
|
+
async function submitExternalPartyOnboarding(options) {
|
|
55
|
+
validateRequiredString('synchronizerId', options.synchronizerId);
|
|
56
|
+
const publicKeyFingerprint = (0, canton_protocol_1.assertCantonPartyMatchesPublicKey)({
|
|
57
|
+
partyId: options.partyId,
|
|
58
|
+
publicKeyBase64: options.publicKeyBase64,
|
|
59
|
+
...(options.publicKeyFingerprint !== undefined ? { publicKeyFingerprint: options.publicKeyFingerprint } : {}),
|
|
60
|
+
});
|
|
61
|
+
const multiHashHex = (0, canton_protocol_1.assertCantonSha256MultihashHex)(options.multiHashHex);
|
|
62
|
+
(0, canton_protocol_1.assertCantonHashSignature)({
|
|
63
|
+
publicKeyBase64: options.publicKeyBase64,
|
|
64
|
+
hashHex: multiHashHex,
|
|
65
|
+
signatureBase64: options.multiHashSignatureBase64,
|
|
66
|
+
});
|
|
67
|
+
try {
|
|
68
|
+
const raw = await (0, allocate_external_party_1.allocateExternalParty)({
|
|
69
|
+
ledgerClient: options.ledgerClient,
|
|
70
|
+
synchronizerId: options.synchronizerId,
|
|
71
|
+
identityProviderId: options.identityProviderId ?? exports.DEFAULT_CANTON_IDENTITY_PROVIDER_ID,
|
|
72
|
+
onboardingTransactions: options.topologyTransactions.map((transaction) => ({ transaction })),
|
|
73
|
+
multiHashSignatures: [
|
|
74
|
+
{
|
|
75
|
+
format: exports.CANTON_RAW_SIGNATURE_FORMAT,
|
|
76
|
+
signature: options.multiHashSignatureBase64,
|
|
77
|
+
signedBy: publicKeyFingerprint,
|
|
78
|
+
signingAlgorithmSpec: exports.CANTON_ED25519_SIGNATURE_ALGORITHM,
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
});
|
|
82
|
+
const partyId = readAllocatedExternalPartyId(raw);
|
|
83
|
+
if (partyId !== options.partyId) {
|
|
84
|
+
throw new errors_1.OperationError('Canton external-party allocation response did not match the prepared party ID', errors_1.OperationErrorCode.TRANSACTION_FAILED, { expectedPartyId: options.partyId, partyId });
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
partyId,
|
|
88
|
+
raw: (0, canton_response_utils_1.objectOrEmpty)(raw),
|
|
89
|
+
alreadyExisted: false,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (!options.allowAlreadyExists) {
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
const existing = await readExistingExternalPartyAfterAllocationConflict(options.ledgerClient, options.partyId, options.identityProviderId ?? exports.DEFAULT_CANTON_IDENTITY_PROVIDER_ID, error);
|
|
97
|
+
if (!existing) {
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
partyId: options.partyId,
|
|
102
|
+
raw: existing,
|
|
103
|
+
alreadyExisted: true,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** Lists party ids whose suffix matches the supplied Ed25519 public key fingerprint. */
|
|
108
|
+
async function listExternalPartyIdsForPublicKey(ledgerClient, publicKeyBase64) {
|
|
109
|
+
const publicKeyFingerprint = (0, canton_protocol_1.deriveCantonEd25519PublicKeyFingerprint)(publicKeyBase64);
|
|
110
|
+
const raw = await ledgerClient.listParties({});
|
|
111
|
+
return {
|
|
112
|
+
publicKeyFingerprint,
|
|
113
|
+
parties: readPartyIdsByFingerprint(raw, publicKeyFingerprint),
|
|
114
|
+
raw,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/** Checks one exact external-party id built from party hint and public key. */
|
|
118
|
+
async function getExternalPartyIdForHintAndPublicKey(ledgerClient, partyHint, publicKeyBase64, identityProviderId = exports.DEFAULT_CANTON_IDENTITY_PROVIDER_ID) {
|
|
119
|
+
const publicKeyFingerprint = (0, canton_protocol_1.deriveCantonEd25519PublicKeyFingerprint)(publicKeyBase64);
|
|
120
|
+
const partyId = (0, canton_protocol_1.buildExternalPartyId)(partyHint, publicKeyFingerprint);
|
|
121
|
+
try {
|
|
122
|
+
const raw = await ledgerClient.getPartyDetails({ party: partyId, identityProviderId });
|
|
123
|
+
return {
|
|
124
|
+
publicKeyFingerprint,
|
|
125
|
+
partyId,
|
|
126
|
+
exists: Boolean(readMatchingPartyDetails(raw, partyId)),
|
|
127
|
+
raw,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
if (isNotFound(error)) {
|
|
132
|
+
return {
|
|
133
|
+
publicKeyFingerprint,
|
|
134
|
+
partyId,
|
|
135
|
+
exists: false,
|
|
136
|
+
raw: null,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function validateRequiredString(name, value) {
|
|
143
|
+
if (!value.trim()) {
|
|
144
|
+
throw new errors_1.ValidationError(`${name} is required`, { [name]: value });
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function assertGeneratedPartyMatchesPublicKey(input) {
|
|
148
|
+
try {
|
|
149
|
+
return (0, canton_protocol_1.assertCantonPartyMatchesPublicKey)(input);
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
throw new errors_1.OperationError('Canton topology generation response did not include a party ID matching the submitted public key', errors_1.OperationErrorCode.TRANSACTION_FAILED, { cause: error instanceof Error ? error.message : String(error) });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
async function readExistingExternalPartyAfterAllocationConflict(ledgerClient, partyId, identityProviderId, error) {
|
|
156
|
+
if (!isConflict(error))
|
|
157
|
+
return null;
|
|
158
|
+
try {
|
|
159
|
+
const partyDetailsResponse = await ledgerClient.getPartyDetails({
|
|
160
|
+
party: partyId,
|
|
161
|
+
identityProviderId,
|
|
162
|
+
});
|
|
163
|
+
const partyDetails = readMatchingPartyDetails(partyDetailsResponse, partyId);
|
|
164
|
+
if (!partyDetails)
|
|
165
|
+
return null;
|
|
166
|
+
return {
|
|
167
|
+
alreadyExisted: true,
|
|
168
|
+
partyDetails,
|
|
169
|
+
allocationError: readErrorDetails(error),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function readAllocatedExternalPartyId(source) {
|
|
177
|
+
const directPartyId = (0, utils_1.isRecord)(source) ? source['partyId'] : undefined;
|
|
178
|
+
if (typeof directPartyId === 'string' && directPartyId.trim()) {
|
|
179
|
+
return directPartyId;
|
|
180
|
+
}
|
|
181
|
+
const partyDetails = readMatchingPartyDetails(source);
|
|
182
|
+
const party = partyDetails?.['party'];
|
|
183
|
+
if (typeof party === 'string' && party.trim()) {
|
|
184
|
+
return party;
|
|
185
|
+
}
|
|
186
|
+
throw new errors_1.OperationError('Canton external-party allocation response did not include partyId', errors_1.OperationErrorCode.TRANSACTION_FAILED);
|
|
187
|
+
}
|
|
188
|
+
function readMatchingPartyDetails(source, partyId) {
|
|
189
|
+
if (!(0, utils_1.isRecord)(source))
|
|
190
|
+
return null;
|
|
191
|
+
const { partyDetails } = source;
|
|
192
|
+
const details = Array.isArray(partyDetails) ? partyDetails : [partyDetails];
|
|
193
|
+
for (const detail of details) {
|
|
194
|
+
if (!(0, utils_1.isRecord)(detail))
|
|
195
|
+
continue;
|
|
196
|
+
if (partyId && detail['party'] !== partyId)
|
|
197
|
+
continue;
|
|
198
|
+
const { party } = detail;
|
|
199
|
+
if (typeof party === 'string' && party.trim())
|
|
200
|
+
return detail;
|
|
201
|
+
}
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
function readPartyIdsByFingerprint(source, publicKeyFingerprint) {
|
|
205
|
+
const partyDetails = (0, utils_1.isRecord)(source) ? source['partyDetails'] : undefined;
|
|
206
|
+
if (!Array.isArray(partyDetails))
|
|
207
|
+
return [];
|
|
208
|
+
const seen = new Set();
|
|
209
|
+
for (const detail of partyDetails) {
|
|
210
|
+
const party = (0, utils_1.isRecord)(detail) ? detail['party'] : undefined;
|
|
211
|
+
if (typeof party !== 'string')
|
|
212
|
+
continue;
|
|
213
|
+
const partyId = party.trim();
|
|
214
|
+
if (!partyId.endsWith(`::${publicKeyFingerprint}`))
|
|
215
|
+
continue;
|
|
216
|
+
seen.add(partyId);
|
|
217
|
+
}
|
|
218
|
+
return [...seen].sort((left, right) => left.localeCompare(right));
|
|
219
|
+
}
|
|
220
|
+
function readRequiredStringArray(source, key, operation) {
|
|
221
|
+
if ((0, utils_1.isRecord)(source) && key in source) {
|
|
222
|
+
const value = source[key];
|
|
223
|
+
if (Array.isArray(value) && value.every((item) => typeof item === 'string' && item.trim())) {
|
|
224
|
+
return [...value];
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
throw new errors_1.OperationError(`Canton ${operation} response did not include ${key}`, errors_1.OperationErrorCode.TRANSACTION_FAILED);
|
|
228
|
+
}
|
|
229
|
+
function isConflict(error) {
|
|
230
|
+
return readErrorStatus(error) === 409;
|
|
231
|
+
}
|
|
232
|
+
function isNotFound(error) {
|
|
233
|
+
return readErrorStatus(error) === 404;
|
|
234
|
+
}
|
|
235
|
+
function readErrorStatus(error) {
|
|
236
|
+
if (error instanceof errors_1.ApiError)
|
|
237
|
+
return error.status;
|
|
238
|
+
if (!(0, utils_1.isRecord)(error))
|
|
239
|
+
return undefined;
|
|
240
|
+
const { status } = error;
|
|
241
|
+
return typeof status === 'number' ? status : undefined;
|
|
242
|
+
}
|
|
243
|
+
function readErrorDetails(error) {
|
|
244
|
+
if (!(0, utils_1.isRecord)(error)) {
|
|
245
|
+
return { message: error instanceof Error ? error.message : String(error) };
|
|
246
|
+
}
|
|
247
|
+
return (0, canton_response_utils_1.objectOrEmpty)(error);
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=external-party-onboarding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-party-onboarding.js","sourceRoot":"","sources":["../../../../src/utils/external-signing/external-party-onboarding.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|