@fivenorth/loop-sdk 0.12.1 → 0.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -1
- package/dist/connection.d.ts +1 -0
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +32 -0
- package/dist/index.js +67 -6
- package/dist/provider.d.ts +3 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +35 -6
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/signer.d.ts +1 -1
- package/dist/server/signer.d.ts.map +1 -1
- package/dist/server/signer.js +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -119,6 +119,15 @@ const contracts = await provider.getActiveContracts({
|
|
|
119
119
|
console.log(contracts);
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
+
#### Estimate Network Gas
|
|
123
|
+
|
|
124
|
+
```javascript
|
|
125
|
+
const gasEstimate = await provider.estimateGas(damlCommand);
|
|
126
|
+
console.log(gasEstimate);
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Use this before submission if you want to inspect the expected network gas first.
|
|
130
|
+
|
|
122
131
|
#### Submit a Transaction
|
|
123
132
|
|
|
124
133
|
To submit a DAML transaction, you need to construct a command object and pass it to `submitTransaction`:
|
|
@@ -143,6 +152,7 @@ try {
|
|
|
143
152
|
// Optional: show a custom message in the wallet prompt
|
|
144
153
|
message: 'Transfer 10 CC to RetailStore',
|
|
145
154
|
estimateTraffic: true, // optional: return estimated traffic in submission response
|
|
155
|
+
deduplicationPeriod: { seconds: 60 }, // optional: override the default 30 minute dedup window
|
|
146
156
|
});
|
|
147
157
|
console.log('Transaction successful:', result);
|
|
148
158
|
} catch (error) {
|
|
@@ -159,6 +169,7 @@ To wait for the transaction result directly (opt-in), use:
|
|
|
159
169
|
```javascript
|
|
160
170
|
await provider.submitAndWaitForTransaction(damlCommand, {
|
|
161
171
|
message: 'Transfer 10 CC to RetailStore',
|
|
172
|
+
deduplicationPeriod: { seconds: 60 },
|
|
162
173
|
});
|
|
163
174
|
```
|
|
164
175
|
|
|
@@ -166,7 +177,7 @@ In wait mode, the final result is returned as a single `onTransactionUpdate` pay
|
|
|
166
177
|
|
|
167
178
|
Note: `submitAndWaitForTransaction` errors do not always mean the transaction failed. A 4xx error (e.g., 400) indicates a definite failure. A 5xx/timeout can mean the ledger is slow or backed up; the transaction may still be committed later, so clients should continue to listen for updates rather than assume failure.
|
|
168
179
|
|
|
169
|
-
Deduplication:
|
|
180
|
+
Deduplication: by default the wallet execute path uses a 30 minute deduplication window. You can override it with `deduplicationPeriod` in submit options. For ambiguous outcomes (for example timeout, disconnect, or 5xx where the previous submission may already have reached Canton), retry with the same payload `commandId` within that window to avoid double execution.
|
|
170
181
|
|
|
171
182
|
#### Sign a Message
|
|
172
183
|
|
|
@@ -200,6 +211,7 @@ await loop.wallet.transfer(
|
|
|
200
211
|
executeBefore: new Date(Date.now() + 24*60*60*1000).toISOString(), // optional
|
|
201
212
|
requestTimeout: 5 * 60 * 1000, // optional (ms), defaults to 5 minutes
|
|
202
213
|
estimateTraffic: true, // optional: return estimated traffic in submission response
|
|
214
|
+
deduplicationPeriod: { seconds: 60 }, // optional: override the default 30 minute dedup window
|
|
203
215
|
},
|
|
204
216
|
);
|
|
205
217
|
```
|
package/dist/connection.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ export declare class Connection {
|
|
|
36
36
|
private errorMessage;
|
|
37
37
|
prepareTransaction(session: SessionInfo, params: TransactionPayload): Promise<PreparedSubmissionResponse>;
|
|
38
38
|
estimateGas(session: SessionInfo, params: TransactionPayload): Promise<EstimatedGasResponse>;
|
|
39
|
+
estimateGasForConnect(authToken: string, params: TransactionPayload): Promise<EstimatedGasResponse>;
|
|
39
40
|
executeTransaction(session: SessionInfo, params: ExecuteSubmissionResquest): Promise<PreparedSubmissionResponse>;
|
|
40
41
|
getPendingGas(userApiKey: string, trackingId?: string): Promise<PendingGasResponse>;
|
|
41
42
|
preparePendingGas(userApiKey: string, trackingId?: string): Promise<{
|
package/dist/connection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,OAAO,EACP,OAAO,EACP,OAAO,EACP,eAAe,EACf,uBAAuB,EAEvB,sBAAsB,EACtB,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,qBAAa,UAAU;IACZ,SAAS,EAAE,MAAM,CAA4B;IAC7C,MAAM,EAAE,MAAM,CAA4B;IAC1C,EAAE,EAAE,SAAS,GAAG,IAAI,CAAQ;IACnC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,gBAAgB,CAAgD;IACxE,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,MAAM,CAA+D;gBAEjE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAmCtG,iBAAiB,IAAI,OAAO;IAItB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAoB9F,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAgBjD,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAwB7G,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA4C7F,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmCxD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI;IAwB3E,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BpB,cAAc,CAAC,EAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAC,EAAE;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC;YAoB7H,kBAAkB;IAYhC,OAAO,CAAC,YAAY;IAWd,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAwBzG,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|
package/dist/connection.js
CHANGED
|
@@ -295,6 +295,37 @@ export class Connection {
|
|
|
295
295
|
estimated_gas_asset: data?.estimatedFeeAsset,
|
|
296
296
|
};
|
|
297
297
|
}
|
|
298
|
+
async estimateGasForConnect(authToken, params) {
|
|
299
|
+
const response = await fetch(`${this.apiUrl}/api/v1/.connect/tickets/transaction/estimate-gas`, {
|
|
300
|
+
method: 'POST',
|
|
301
|
+
headers: {
|
|
302
|
+
'Content-Type': 'application/json',
|
|
303
|
+
'Authorization': `Bearer ${authToken}`,
|
|
304
|
+
},
|
|
305
|
+
body: JSON.stringify({
|
|
306
|
+
request_id: generateRequestId(),
|
|
307
|
+
tx: {
|
|
308
|
+
commands: params.commands,
|
|
309
|
+
disclosedContracts: params.disclosedContracts,
|
|
310
|
+
packageIdSelectionPreference: params.packageIdSelectionPreference,
|
|
311
|
+
actAs: params.actAs,
|
|
312
|
+
readAs: params.readAs,
|
|
313
|
+
synchronizerId: params.synchronizerId,
|
|
314
|
+
},
|
|
315
|
+
}),
|
|
316
|
+
});
|
|
317
|
+
if (!response.ok) {
|
|
318
|
+
const details = await this.parseErrorResponse(response);
|
|
319
|
+
throw new Error(this.errorMessage(details, `Failed to estimate gas with status ${response.status}.`));
|
|
320
|
+
}
|
|
321
|
+
const data = await response.json();
|
|
322
|
+
return {
|
|
323
|
+
requires_gas: data?.requiresFee,
|
|
324
|
+
can_execute: data?.canExecute,
|
|
325
|
+
estimated_gas_amount: data?.estimatedFeeAmount,
|
|
326
|
+
estimated_gas_asset: data?.estimatedFeeAsset,
|
|
327
|
+
};
|
|
328
|
+
}
|
|
298
329
|
// execute a signed transaction with v2/interactive-submisison/execute endpoint
|
|
299
330
|
async executeTransaction(session, params) {
|
|
300
331
|
if (!session.ticketId) {
|
|
@@ -312,6 +343,7 @@ export class Connection {
|
|
|
312
343
|
command_id: params.command_id,
|
|
313
344
|
signature: params.signature,
|
|
314
345
|
transaction_data: params.transaction_data,
|
|
346
|
+
deduplication_period: params.deduplication_period,
|
|
315
347
|
}),
|
|
316
348
|
});
|
|
317
349
|
if (response.status === 402) {
|
package/dist/index.js
CHANGED
|
@@ -2204,15 +2204,26 @@ class Provider {
|
|
|
2204
2204
|
getActiveContracts(params) {
|
|
2205
2205
|
return this.connection.getActiveContracts(this.auth_token, params);
|
|
2206
2206
|
}
|
|
2207
|
+
async estimateGas(payload) {
|
|
2208
|
+
return this.connection.estimateGasForConnect(this.auth_token, payload);
|
|
2209
|
+
}
|
|
2207
2210
|
async submitTransaction(payload, options) {
|
|
2208
|
-
const requestPayload =
|
|
2211
|
+
const requestPayload = {
|
|
2212
|
+
...payload,
|
|
2213
|
+
...options?.deduplicationPeriod ? { deduplicationPeriod: toLedgerDeduplicationPeriod(options.deduplicationPeriod) } : {}
|
|
2214
|
+
};
|
|
2215
|
+
const requestPayloadWithTraffic = options?.estimateTraffic ? { ...requestPayload, estimate_traffic: true } : requestPayload;
|
|
2209
2216
|
const executionMode = options?.executionMode;
|
|
2210
|
-
const finalPayload = executionMode === "wait" ? { ...
|
|
2217
|
+
const finalPayload = executionMode === "wait" ? { ...requestPayloadWithTraffic, execution_mode: "wait" } : requestPayloadWithTraffic;
|
|
2211
2218
|
return this.sendRequest("run_transaction" /* RUN_TRANSACTION */, finalPayload, options);
|
|
2212
2219
|
}
|
|
2213
2220
|
async submitAndWaitForTransaction(payload, options) {
|
|
2214
|
-
const requestPayload =
|
|
2215
|
-
|
|
2221
|
+
const requestPayload = {
|
|
2222
|
+
...payload,
|
|
2223
|
+
...options?.deduplicationPeriod ? { deduplicationPeriod: toLedgerDeduplicationPeriod(options.deduplicationPeriod) } : {}
|
|
2224
|
+
};
|
|
2225
|
+
const requestPayloadWithTraffic = options?.estimateTraffic ? { ...requestPayload, estimate_traffic: true } : requestPayload;
|
|
2226
|
+
return this.sendRequest("run_transaction" /* RUN_TRANSACTION */, { ...requestPayloadWithTraffic, execution_mode: "wait" }, options);
|
|
2216
2227
|
}
|
|
2217
2228
|
async transfer(recipient, amount, instrument, options) {
|
|
2218
2229
|
const amountStr = typeof amount === "number" ? amount.toString() : amount;
|
|
@@ -2254,7 +2265,12 @@ class Provider {
|
|
|
2254
2265
|
actAs: preparedPayload.actAs,
|
|
2255
2266
|
readAs: preparedPayload.readAs,
|
|
2256
2267
|
synchronizerId: preparedPayload.synchronizerId
|
|
2257
|
-
}, {
|
|
2268
|
+
}, {
|
|
2269
|
+
requestTimeout,
|
|
2270
|
+
message,
|
|
2271
|
+
estimateTraffic,
|
|
2272
|
+
deduplicationPeriod: options?.deduplicationPeriod
|
|
2273
|
+
});
|
|
2258
2274
|
}
|
|
2259
2275
|
async signMessage(message) {
|
|
2260
2276
|
return this.sendRequest("sign_raw_message" /* SIGN_RAW_MESSAGE */, message);
|
|
@@ -2368,6 +2384,19 @@ class Provider {
|
|
|
2368
2384
|
});
|
|
2369
2385
|
}
|
|
2370
2386
|
}
|
|
2387
|
+
function toLedgerDeduplicationPeriod(input) {
|
|
2388
|
+
if ("empty" in input) {
|
|
2389
|
+
return { Empty: {} };
|
|
2390
|
+
}
|
|
2391
|
+
return {
|
|
2392
|
+
DeduplicationDuration: {
|
|
2393
|
+
value: {
|
|
2394
|
+
seconds: input.seconds,
|
|
2395
|
+
nanos: input.nanos ?? 0
|
|
2396
|
+
}
|
|
2397
|
+
}
|
|
2398
|
+
};
|
|
2399
|
+
}
|
|
2371
2400
|
|
|
2372
2401
|
// src/connection.ts
|
|
2373
2402
|
class Connection {
|
|
@@ -2654,6 +2683,37 @@ class Connection {
|
|
|
2654
2683
|
estimated_gas_asset: data?.estimatedFeeAsset
|
|
2655
2684
|
};
|
|
2656
2685
|
}
|
|
2686
|
+
async estimateGasForConnect(authToken, params) {
|
|
2687
|
+
const response = await fetch(`${this.apiUrl}/api/v1/.connect/tickets/transaction/estimate-gas`, {
|
|
2688
|
+
method: "POST",
|
|
2689
|
+
headers: {
|
|
2690
|
+
"Content-Type": "application/json",
|
|
2691
|
+
Authorization: `Bearer ${authToken}`
|
|
2692
|
+
},
|
|
2693
|
+
body: JSON.stringify({
|
|
2694
|
+
request_id: generateRequestId(),
|
|
2695
|
+
tx: {
|
|
2696
|
+
commands: params.commands,
|
|
2697
|
+
disclosedContracts: params.disclosedContracts,
|
|
2698
|
+
packageIdSelectionPreference: params.packageIdSelectionPreference,
|
|
2699
|
+
actAs: params.actAs,
|
|
2700
|
+
readAs: params.readAs,
|
|
2701
|
+
synchronizerId: params.synchronizerId
|
|
2702
|
+
}
|
|
2703
|
+
})
|
|
2704
|
+
});
|
|
2705
|
+
if (!response.ok) {
|
|
2706
|
+
const details = await this.parseErrorResponse(response);
|
|
2707
|
+
throw new Error(this.errorMessage(details, `Failed to estimate gas with status ${response.status}.`));
|
|
2708
|
+
}
|
|
2709
|
+
const data = await response.json();
|
|
2710
|
+
return {
|
|
2711
|
+
requires_gas: data?.requiresFee,
|
|
2712
|
+
can_execute: data?.canExecute,
|
|
2713
|
+
estimated_gas_amount: data?.estimatedFeeAmount,
|
|
2714
|
+
estimated_gas_asset: data?.estimatedFeeAsset
|
|
2715
|
+
};
|
|
2716
|
+
}
|
|
2657
2717
|
async executeTransaction(session, params) {
|
|
2658
2718
|
if (!session.ticketId) {
|
|
2659
2719
|
throw new Error("Ticket ID is required");
|
|
@@ -2669,7 +2729,8 @@ class Connection {
|
|
|
2669
2729
|
request_id: generateRequestId(),
|
|
2670
2730
|
command_id: params.command_id,
|
|
2671
2731
|
signature: params.signature,
|
|
2672
|
-
transaction_data: params.transaction_data
|
|
2732
|
+
transaction_data: params.transaction_data,
|
|
2733
|
+
deduplication_period: params.deduplication_period
|
|
2673
2734
|
})
|
|
2674
2735
|
});
|
|
2675
2736
|
if (response.status === 402) {
|
package/dist/provider.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Connection } from './connection';
|
|
2
|
-
import type { Holding, ActiveContract, TransferOptions, InstrumentSpec, RunTransactionResponse, TransactionPayload } from './types';
|
|
2
|
+
import type { Holding, ActiveContract, TransferOptions, InstrumentSpec, RunTransactionResponse, TransactionPayload, EstimatedGasResponse, DeduplicationPeriodInput } from './types';
|
|
3
3
|
import { MessageType, type Account } from './types';
|
|
4
4
|
export declare const DEFAULT_REQUEST_TIMEOUT_MS = 300000;
|
|
5
5
|
export type RequestFinishStatus = 'success' | 'rejected' | 'timeout' | 'error';
|
|
@@ -21,6 +21,7 @@ type SubmitOptions = {
|
|
|
21
21
|
requestLabel?: string;
|
|
22
22
|
estimateTraffic?: boolean;
|
|
23
23
|
executionMode?: 'async' | 'wait';
|
|
24
|
+
deduplicationPeriod?: DeduplicationPeriodInput;
|
|
24
25
|
};
|
|
25
26
|
export declare function generateRequestId(): string;
|
|
26
27
|
export declare class Provider {
|
|
@@ -48,6 +49,7 @@ export declare class Provider {
|
|
|
48
49
|
templateId?: string;
|
|
49
50
|
interfaceId?: string;
|
|
50
51
|
}): Promise<ActiveContract[]>;
|
|
52
|
+
estimateGas(payload: TransactionPayload): Promise<EstimatedGasResponse>;
|
|
51
53
|
submitTransaction(payload: TransactionPayload, options?: SubmitOptions): Promise<any>;
|
|
52
54
|
submitAndWaitForTransaction(payload: TransactionPayload, options?: SubmitOptions): Promise<any>;
|
|
53
55
|
transfer(recipient: string, amount: string | number, instrument?: InstrumentSpec, options?: TransferOptions & {
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EAGd,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
package/dist/provider.js
CHANGED
|
@@ -73,18 +73,29 @@ export class Provider {
|
|
|
73
73
|
getActiveContracts(params) {
|
|
74
74
|
return this.connection.getActiveContracts(this.auth_token, params);
|
|
75
75
|
}
|
|
76
|
+
async estimateGas(payload) {
|
|
77
|
+
return this.connection.estimateGasForConnect(this.auth_token, payload);
|
|
78
|
+
}
|
|
76
79
|
// submit a transaction to be signed by the wallet to the websocket
|
|
77
80
|
async submitTransaction(payload, options) {
|
|
78
|
-
const requestPayload =
|
|
81
|
+
const requestPayload = {
|
|
82
|
+
...payload,
|
|
83
|
+
...(options?.deduplicationPeriod ? { deduplicationPeriod: toLedgerDeduplicationPeriod(options.deduplicationPeriod) } : {}),
|
|
84
|
+
};
|
|
85
|
+
const requestPayloadWithTraffic = options?.estimateTraffic ? { ...requestPayload, estimate_traffic: true } : requestPayload;
|
|
79
86
|
const executionMode = options?.executionMode;
|
|
80
87
|
const finalPayload = executionMode === 'wait'
|
|
81
|
-
? { ...
|
|
82
|
-
:
|
|
88
|
+
? { ...requestPayloadWithTraffic, execution_mode: 'wait' }
|
|
89
|
+
: requestPayloadWithTraffic;
|
|
83
90
|
return this.sendRequest(MessageType.RUN_TRANSACTION, finalPayload, options);
|
|
84
91
|
}
|
|
85
92
|
async submitAndWaitForTransaction(payload, options) {
|
|
86
|
-
const requestPayload =
|
|
87
|
-
|
|
93
|
+
const requestPayload = {
|
|
94
|
+
...payload,
|
|
95
|
+
...(options?.deduplicationPeriod ? { deduplicationPeriod: toLedgerDeduplicationPeriod(options.deduplicationPeriod) } : {}),
|
|
96
|
+
};
|
|
97
|
+
const requestPayloadWithTraffic = options?.estimateTraffic ? { ...requestPayload, estimate_traffic: true } : requestPayload;
|
|
98
|
+
return this.sendRequest(MessageType.RUN_TRANSACTION, { ...requestPayloadWithTraffic, execution_mode: 'wait' }, options);
|
|
88
99
|
}
|
|
89
100
|
async transfer(recipient, amount, instrument, options) {
|
|
90
101
|
const amountStr = typeof amount === 'number' ? amount.toString() : amount;
|
|
@@ -128,7 +139,12 @@ export class Provider {
|
|
|
128
139
|
actAs: preparedPayload.actAs,
|
|
129
140
|
readAs: preparedPayload.readAs,
|
|
130
141
|
synchronizerId: preparedPayload.synchronizerId,
|
|
131
|
-
}, {
|
|
142
|
+
}, {
|
|
143
|
+
requestTimeout,
|
|
144
|
+
message,
|
|
145
|
+
estimateTraffic,
|
|
146
|
+
deduplicationPeriod: options?.deduplicationPeriod,
|
|
147
|
+
});
|
|
132
148
|
}
|
|
133
149
|
// submit a raw message to be signed by the wallet to the websocket
|
|
134
150
|
async signMessage(message) {
|
|
@@ -247,3 +263,16 @@ export class Provider {
|
|
|
247
263
|
});
|
|
248
264
|
}
|
|
249
265
|
}
|
|
266
|
+
function toLedgerDeduplicationPeriod(input) {
|
|
267
|
+
if ('empty' in input) {
|
|
268
|
+
return { Empty: {} };
|
|
269
|
+
}
|
|
270
|
+
return {
|
|
271
|
+
DeduplicationDuration: {
|
|
272
|
+
value: {
|
|
273
|
+
seconds: input.seconds,
|
|
274
|
+
nanos: input.nanos ?? 0,
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
};
|
|
278
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AAG3D,OAAO,KAAK,EAAE,OAAO,EAAyE,kBAAkB,EAAyD,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEpO,OAAO,EAAa,MAAM,EAAE,MAAM,UAAU,CAAC;AA8C7C,qBAAa,OAAO;IAChB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,CAAc;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,OAAO,CAAC,CAAc;IAE9B,IAAI,CAAC,EAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC;IASzI,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCnC,SAAS,IAAI,MAAM;IAOnB,WAAW,IAAI,QAAQ;IAOjB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AAG3D,OAAO,KAAK,EAAE,OAAO,EAAyE,kBAAkB,EAAyD,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEpO,OAAO,EAAa,MAAM,EAAE,MAAM,UAAU,CAAC;AA8C7C,qBAAa,OAAO;IAChB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,CAAc;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,OAAO,CAAC,CAAc;IAE9B,IAAI,CAAC,EAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC;IASzI,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCnC,SAAS,IAAI,MAAM;IAOnB,WAAW,IAAI,QAAQ;IAOjB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IAyB7D,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQ7D,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAQvE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CA0BxD;AAED,eAAO,MAAM,IAAI,SAAgB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
|
package/dist/server/index.js
CHANGED
|
@@ -112,6 +112,7 @@ export class LoopSDK {
|
|
|
112
112
|
command_id: preparedPayload.command_id,
|
|
113
113
|
transaction_data: preparedPayload.transaction_data,
|
|
114
114
|
signature: signedTransactionHash,
|
|
115
|
+
deduplication_period: payload.deduplicationPeriod,
|
|
115
116
|
});
|
|
116
117
|
return submissionResponse;
|
|
117
118
|
}
|
package/dist/server/signer.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/server/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/server/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,eAAO,MAAM,SAAS,GAAI,eAAe,MAAM,EAAE,SAAS,MAAM,KAAG,MAElE,CAAA;AAED,qBAAa,MAAM;IACf,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;gBAEZ,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAc3C,YAAY,IAAI,MAAM;IAItB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK;IAQzC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IASzC,UAAU,IAAI,MAAM;IAKpB,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;CAa9D"}
|
package/dist/server/signer.js
CHANGED
package/dist/types.d.ts
CHANGED
|
@@ -56,6 +56,13 @@ export type TransactionPayload = {
|
|
|
56
56
|
actAs?: string[];
|
|
57
57
|
readAs?: string[];
|
|
58
58
|
synchronizerId?: string;
|
|
59
|
+
deduplicationPeriod?: DeduplicationPeriodInput;
|
|
60
|
+
};
|
|
61
|
+
export type DeduplicationPeriodInput = {
|
|
62
|
+
empty: true;
|
|
63
|
+
} | {
|
|
64
|
+
seconds: number;
|
|
65
|
+
nanos?: number;
|
|
59
66
|
};
|
|
60
67
|
export type PreparedTransferPayload = {
|
|
61
68
|
actAs: string[];
|
|
@@ -88,6 +95,7 @@ export type TransferOptions = {
|
|
|
88
95
|
message?: string;
|
|
89
96
|
executionMode?: 'async' | 'wait';
|
|
90
97
|
estimateTraffic?: boolean;
|
|
98
|
+
deduplicationPeriod?: DeduplicationPeriodInput;
|
|
91
99
|
};
|
|
92
100
|
export type InstrumentSpec = Instrument;
|
|
93
101
|
export interface Wallet {
|
|
@@ -112,6 +120,7 @@ export type ExecuteSubmissionResquest = {
|
|
|
112
120
|
command_id: string;
|
|
113
121
|
transaction_data: string;
|
|
114
122
|
signature: string;
|
|
123
|
+
deduplication_period?: DeduplicationPeriodInput;
|
|
115
124
|
};
|
|
116
125
|
export type PendingGasResponse = {
|
|
117
126
|
pending: boolean;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3F,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAC3E,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;CAC3C,CAAC;AAEF,oBAAY,WAAW;IACrB,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IAErC,eAAe,oBAAoB;IACnC,qBAAqB,0BAA0B;IAE/C,gBAAgB,qBAAqB;IACrC,yBAAyB,8BAA8B;IACvD,cAAc,mBAAmB;CAClC;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,aAAa,EAAE,YAAY,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IAEpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,kBAAkB,EAAE,GAAG,EAAE,CAAC;IAC1B,4BAA4B,CAAC,EAAE,MAAM,EAAE,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|