@0xsequence/guard 2.3.39 → 3.0.0-beta.10

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.
@@ -1,785 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var core = require('@0xsequence/core');
6
- var signhub = require('@0xsequence/signhub');
7
- var utils = require('@0xsequence/utils');
8
- var ethers = require('ethers');
9
-
10
- function _extends() {
11
- return _extends = Object.assign ? Object.assign.bind() : function (n) {
12
- for (var e = 1; e < arguments.length; e++) {
13
- var t = arguments[e];
14
- for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
15
- }
16
- return n;
17
- }, _extends.apply(null, arguments);
18
- }
19
-
20
- /* eslint-disable */
21
- // sequence-guard v0.5.0 910e01c32ffb24b42386d4ca6be119b0acc55c5f
22
- // --
23
- // Code generated by webrpc-gen@v0.25.3 with typescript generator. DO NOT EDIT.
24
- //
25
- // webrpc-gen -schema=guard.ridl -target=typescript -client -out=./clients/guard.gen.ts
26
-
27
- const WebrpcHeader = 'Webrpc';
28
- const WebrpcHeaderValue = 'webrpc@v0.25.3;gen-typescript@v0.17.0;sequence-guard@v0.5.0';
29
- //
30
- // Client
31
- //
32
- class Guard {
33
- constructor(hostname, fetch) {
34
- this.hostname = void 0;
35
- this.fetch = void 0;
36
- this.path = '/rpc/Guard/';
37
- this.ping = (headers, signal) => {
38
- return this.fetch(this.url('Ping'), createHTTPRequest({}, headers, signal)).then(res => {
39
- return buildResponse(res).then(_data => {
40
- return {
41
- status: _data.status
42
- };
43
- });
44
- }, error => {
45
- throw WebrpcRequestFailedError.new({
46
- cause: `fetch(): ${error.message || ''}`
47
- });
48
- });
49
- };
50
- this.version = (headers, signal) => {
51
- return this.fetch(this.url('Version'), createHTTPRequest({}, headers, signal)).then(res => {
52
- return buildResponse(res).then(_data => {
53
- return {
54
- version: _data.version
55
- };
56
- });
57
- }, error => {
58
- throw WebrpcRequestFailedError.new({
59
- cause: `fetch(): ${error.message || ''}`
60
- });
61
- });
62
- };
63
- this.runtimeStatus = (headers, signal) => {
64
- return this.fetch(this.url('RuntimeStatus'), createHTTPRequest({}, headers, signal)).then(res => {
65
- return buildResponse(res).then(_data => {
66
- return {
67
- status: _data.status
68
- };
69
- });
70
- }, error => {
71
- throw WebrpcRequestFailedError.new({
72
- cause: `fetch(): ${error.message || ''}`
73
- });
74
- });
75
- };
76
- this.getSignerConfig = (args, headers, signal) => {
77
- return this.fetch(this.url('GetSignerConfig'), createHTTPRequest(args, headers, signal)).then(res => {
78
- return buildResponse(res).then(_data => {
79
- return {
80
- signerConfig: _data.signerConfig
81
- };
82
- });
83
- }, error => {
84
- throw WebrpcRequestFailedError.new({
85
- cause: `fetch(): ${error.message || ''}`
86
- });
87
- });
88
- };
89
- this.sign = (args, headers, signal) => {
90
- return this.fetch(this.url('Sign'), createHTTPRequest(args, headers, signal)).then(res => {
91
- return buildResponse(res).then(_data => {
92
- return {
93
- sig: _data.sig
94
- };
95
- });
96
- }, error => {
97
- throw WebrpcRequestFailedError.new({
98
- cause: `fetch(): ${error.message || ''}`
99
- });
100
- });
101
- };
102
- this.signWith = (args, headers, signal) => {
103
- return this.fetch(this.url('SignWith'), createHTTPRequest(args, headers, signal)).then(res => {
104
- return buildResponse(res).then(_data => {
105
- return {
106
- sig: _data.sig
107
- };
108
- });
109
- }, error => {
110
- throw WebrpcRequestFailedError.new({
111
- cause: `fetch(): ${error.message || ''}`
112
- });
113
- });
114
- };
115
- this.patch = (args, headers, signal) => {
116
- return this.fetch(this.url('Patch'), createHTTPRequest(args, headers, signal)).then(res => {
117
- return buildResponse(res).then(_data => {
118
- return {
119
- txs: _data.txs
120
- };
121
- });
122
- }, error => {
123
- throw WebrpcRequestFailedError.new({
124
- cause: `fetch(): ${error.message || ''}`
125
- });
126
- });
127
- };
128
- this.authMethods = (args, headers, signal) => {
129
- return this.fetch(this.url('AuthMethods'), createHTTPRequest(args, headers, signal)).then(res => {
130
- return buildResponse(res).then(_data => {
131
- return {
132
- methods: _data.methods,
133
- active: _data.active
134
- };
135
- });
136
- }, error => {
137
- throw WebrpcRequestFailedError.new({
138
- cause: `fetch(): ${error.message || ''}`
139
- });
140
- });
141
- };
142
- this.setPIN = (args, headers, signal) => {
143
- return this.fetch(this.url('SetPIN'), createHTTPRequest(args, headers, signal)).then(res => {
144
- return buildResponse(res).then(_data => {
145
- return {};
146
- });
147
- }, error => {
148
- throw WebrpcRequestFailedError.new({
149
- cause: `fetch(): ${error.message || ''}`
150
- });
151
- });
152
- };
153
- this.resetPIN = (args, headers, signal) => {
154
- return this.fetch(this.url('ResetPIN'), createHTTPRequest(args, headers, signal)).then(res => {
155
- return buildResponse(res).then(_data => {
156
- return {};
157
- });
158
- }, error => {
159
- throw WebrpcRequestFailedError.new({
160
- cause: `fetch(): ${error.message || ''}`
161
- });
162
- });
163
- };
164
- this.createTOTP = (args, headers, signal) => {
165
- return this.fetch(this.url('CreateTOTP'), createHTTPRequest(args, headers, signal)).then(res => {
166
- return buildResponse(res).then(_data => {
167
- return {
168
- uri: _data.uri
169
- };
170
- });
171
- }, error => {
172
- throw WebrpcRequestFailedError.new({
173
- cause: `fetch(): ${error.message || ''}`
174
- });
175
- });
176
- };
177
- this.commitTOTP = (args, headers, signal) => {
178
- return this.fetch(this.url('CommitTOTP'), createHTTPRequest(args, headers, signal)).then(res => {
179
- return buildResponse(res).then(_data => {
180
- return {
181
- codes: _data.codes
182
- };
183
- });
184
- }, error => {
185
- throw WebrpcRequestFailedError.new({
186
- cause: `fetch(): ${error.message || ''}`
187
- });
188
- });
189
- };
190
- this.resetTOTP = (args, headers, signal) => {
191
- return this.fetch(this.url('ResetTOTP'), createHTTPRequest(args, headers, signal)).then(res => {
192
- return buildResponse(res).then(_data => {
193
- return {};
194
- });
195
- }, error => {
196
- throw WebrpcRequestFailedError.new({
197
- cause: `fetch(): ${error.message || ''}`
198
- });
199
- });
200
- };
201
- this.reset2FA = (args, headers, signal) => {
202
- return this.fetch(this.url('Reset2FA'), createHTTPRequest(args, headers, signal)).then(res => {
203
- return buildResponse(res).then(_data => {
204
- return {};
205
- });
206
- }, error => {
207
- throw WebrpcRequestFailedError.new({
208
- cause: `fetch(): ${error.message || ''}`
209
- });
210
- });
211
- };
212
- this.recoveryCodes = (args, headers, signal) => {
213
- return this.fetch(this.url('RecoveryCodes'), createHTTPRequest(args, headers, signal)).then(res => {
214
- return buildResponse(res).then(_data => {
215
- return {
216
- codes: _data.codes
217
- };
218
- });
219
- }, error => {
220
- throw WebrpcRequestFailedError.new({
221
- cause: `fetch(): ${error.message || ''}`
222
- });
223
- });
224
- };
225
- this.resetRecoveryCodes = (args, headers, signal) => {
226
- return this.fetch(this.url('ResetRecoveryCodes'), createHTTPRequest(args, headers, signal)).then(res => {
227
- return buildResponse(res).then(_data => {
228
- return {
229
- codes: _data.codes
230
- };
231
- });
232
- }, error => {
233
- throw WebrpcRequestFailedError.new({
234
- cause: `fetch(): ${error.message || ''}`
235
- });
236
- });
237
- };
238
- this.hostname = hostname.replace(/\/*$/, '');
239
- this.fetch = (input, init) => fetch(input, init);
240
- }
241
- url(name) {
242
- return this.hostname + this.path + name;
243
- }
244
- }
245
- const createHTTPRequest = (body = {}, headers = {}, signal = null) => {
246
- const reqHeaders = _extends({}, headers, {
247
- 'Content-Type': 'application/json'
248
- });
249
- reqHeaders[WebrpcHeader] = WebrpcHeaderValue;
250
- return {
251
- method: 'POST',
252
- headers: reqHeaders,
253
- body: JSON.stringify(body || {}),
254
- signal
255
- };
256
- };
257
- const buildResponse = res => {
258
- return res.text().then(text => {
259
- let data;
260
- try {
261
- data = JSON.parse(text);
262
- } catch (error) {
263
- let message = '';
264
- if (error instanceof Error) {
265
- message = error.message;
266
- }
267
- throw WebrpcBadResponseError.new({
268
- status: res.status,
269
- cause: `JSON.parse(): ${message}: response text: ${text}`
270
- });
271
- }
272
- if (!res.ok) {
273
- const code = typeof data.code === 'number' ? data.code : 0;
274
- throw (webrpcErrorByCode[code] || WebrpcError).new(data);
275
- }
276
- return data;
277
- });
278
- };
279
-
280
- //
281
- // Errors
282
- //
283
-
284
- class WebrpcError extends Error {
285
- constructor(name, code, message, status, cause) {
286
- super(message);
287
- this.name = void 0;
288
- this.code = void 0;
289
- this.message = void 0;
290
- this.status = void 0;
291
- this.cause = void 0;
292
- /** @deprecated Use message instead of msg. Deprecated in webrpc v0.11.0. */
293
- this.msg = void 0;
294
- this.name = name || 'WebrpcError';
295
- this.code = typeof code === 'number' ? code : 0;
296
- this.message = message || `endpoint error ${this.code}`;
297
- this.msg = this.message;
298
- this.status = typeof status === 'number' ? status : 0;
299
- this.cause = cause;
300
- Object.setPrototypeOf(this, WebrpcError.prototype);
301
- }
302
- static new(payload) {
303
- return new this(payload.error, payload.code, payload.message || payload.msg, payload.status, payload.cause);
304
- }
305
- }
306
-
307
- // Webrpc errors
308
-
309
- class WebrpcEndpointError extends WebrpcError {
310
- constructor(name = 'WebrpcEndpoint', code = 0, message = `endpoint error`, status = 0, cause) {
311
- super(name, code, message, status, cause);
312
- Object.setPrototypeOf(this, WebrpcEndpointError.prototype);
313
- }
314
- }
315
- class WebrpcRequestFailedError extends WebrpcError {
316
- constructor(name = 'WebrpcRequestFailed', code = -1, message = `request failed`, status = 0, cause) {
317
- super(name, code, message, status, cause);
318
- Object.setPrototypeOf(this, WebrpcRequestFailedError.prototype);
319
- }
320
- }
321
- class WebrpcBadRouteError extends WebrpcError {
322
- constructor(name = 'WebrpcBadRoute', code = -2, message = `bad route`, status = 0, cause) {
323
- super(name, code, message, status, cause);
324
- Object.setPrototypeOf(this, WebrpcBadRouteError.prototype);
325
- }
326
- }
327
- class WebrpcBadMethodError extends WebrpcError {
328
- constructor(name = 'WebrpcBadMethod', code = -3, message = `bad method`, status = 0, cause) {
329
- super(name, code, message, status, cause);
330
- Object.setPrototypeOf(this, WebrpcBadMethodError.prototype);
331
- }
332
- }
333
- class WebrpcBadRequestError extends WebrpcError {
334
- constructor(name = 'WebrpcBadRequest', code = -4, message = `bad request`, status = 0, cause) {
335
- super(name, code, message, status, cause);
336
- Object.setPrototypeOf(this, WebrpcBadRequestError.prototype);
337
- }
338
- }
339
- class WebrpcBadResponseError extends WebrpcError {
340
- constructor(name = 'WebrpcBadResponse', code = -5, message = `bad response`, status = 0, cause) {
341
- super(name, code, message, status, cause);
342
- Object.setPrototypeOf(this, WebrpcBadResponseError.prototype);
343
- }
344
- }
345
- class WebrpcServerPanicError extends WebrpcError {
346
- constructor(name = 'WebrpcServerPanic', code = -6, message = `server panic`, status = 0, cause) {
347
- super(name, code, message, status, cause);
348
- Object.setPrototypeOf(this, WebrpcServerPanicError.prototype);
349
- }
350
- }
351
- class WebrpcInternalErrorError extends WebrpcError {
352
- constructor(name = 'WebrpcInternalError', code = -7, message = `internal error`, status = 0, cause) {
353
- super(name, code, message, status, cause);
354
- Object.setPrototypeOf(this, WebrpcInternalErrorError.prototype);
355
- }
356
- }
357
- class WebrpcClientDisconnectedError extends WebrpcError {
358
- constructor(name = 'WebrpcClientDisconnected', code = -8, message = `client disconnected`, status = 0, cause) {
359
- super(name, code, message, status, cause);
360
- Object.setPrototypeOf(this, WebrpcClientDisconnectedError.prototype);
361
- }
362
- }
363
- class WebrpcStreamLostError extends WebrpcError {
364
- constructor(name = 'WebrpcStreamLost', code = -9, message = `stream lost`, status = 0, cause) {
365
- super(name, code, message, status, cause);
366
- Object.setPrototypeOf(this, WebrpcStreamLostError.prototype);
367
- }
368
- }
369
- class WebrpcStreamFinishedError extends WebrpcError {
370
- constructor(name = 'WebrpcStreamFinished', code = -10, message = `stream finished`, status = 0, cause) {
371
- super(name, code, message, status, cause);
372
- Object.setPrototypeOf(this, WebrpcStreamFinishedError.prototype);
373
- }
374
- }
375
-
376
- // Schema errors
377
-
378
- class UnauthorizedError extends WebrpcError {
379
- constructor(name = 'Unauthorized', code = 1000, message = `Unauthorized access`, status = 0, cause) {
380
- super(name, code, message, status, cause);
381
- Object.setPrototypeOf(this, UnauthorizedError.prototype);
382
- }
383
- }
384
- class PermissionDeniedError extends WebrpcError {
385
- constructor(name = 'PermissionDenied', code = 1001, message = `Permission denied`, status = 0, cause) {
386
- super(name, code, message, status, cause);
387
- Object.setPrototypeOf(this, PermissionDeniedError.prototype);
388
- }
389
- }
390
- class SessionExpiredError extends WebrpcError {
391
- constructor(name = 'SessionExpired', code = 1002, message = `Session expired`, status = 0, cause) {
392
- super(name, code, message, status, cause);
393
- Object.setPrototypeOf(this, SessionExpiredError.prototype);
394
- }
395
- }
396
- class MethodNotFoundError extends WebrpcError {
397
- constructor(name = 'MethodNotFound', code = 1003, message = `Method not found`, status = 0, cause) {
398
- super(name, code, message, status, cause);
399
- Object.setPrototypeOf(this, MethodNotFoundError.prototype);
400
- }
401
- }
402
- class RequestConflictError extends WebrpcError {
403
- constructor(name = 'RequestConflict', code = 1004, message = `Conflict with target resource`, status = 0, cause) {
404
- super(name, code, message, status, cause);
405
- Object.setPrototypeOf(this, RequestConflictError.prototype);
406
- }
407
- }
408
- class AbortedError extends WebrpcError {
409
- constructor(name = 'Aborted', code = 1005, message = `Request aborted`, status = 0, cause) {
410
- super(name, code, message, status, cause);
411
- Object.setPrototypeOf(this, AbortedError.prototype);
412
- }
413
- }
414
- class GeoblockedError extends WebrpcError {
415
- constructor(name = 'Geoblocked', code = 1006, message = `Geoblocked region`, status = 0, cause) {
416
- super(name, code, message, status, cause);
417
- Object.setPrototypeOf(this, GeoblockedError.prototype);
418
- }
419
- }
420
- class RateLimitedError extends WebrpcError {
421
- constructor(name = 'RateLimited', code = 1007, message = `Rate-limited. Please slow down.`, status = 0, cause) {
422
- super(name, code, message, status, cause);
423
- Object.setPrototypeOf(this, RateLimitedError.prototype);
424
- }
425
- }
426
- class InvalidArgumentError extends WebrpcError {
427
- constructor(name = 'InvalidArgument', code = 2001, message = `Invalid argument`, status = 0, cause) {
428
- super(name, code, message, status, cause);
429
- Object.setPrototypeOf(this, InvalidArgumentError.prototype);
430
- }
431
- }
432
- class UnavailableError extends WebrpcError {
433
- constructor(name = 'Unavailable', code = 2002, message = `Unavailable resource`, status = 0, cause) {
434
- super(name, code, message, status, cause);
435
- Object.setPrototypeOf(this, UnavailableError.prototype);
436
- }
437
- }
438
- class QueryFailedError extends WebrpcError {
439
- constructor(name = 'QueryFailed', code = 2003, message = `Query failed`, status = 0, cause) {
440
- super(name, code, message, status, cause);
441
- Object.setPrototypeOf(this, QueryFailedError.prototype);
442
- }
443
- }
444
- class ValidationFailedError extends WebrpcError {
445
- constructor(name = 'ValidationFailed', code = 2004, message = `Validation Failed`, status = 0, cause) {
446
- super(name, code, message, status, cause);
447
- Object.setPrototypeOf(this, ValidationFailedError.prototype);
448
- }
449
- }
450
- class NotFoundError extends WebrpcError {
451
- constructor(name = 'NotFound', code = 3000, message = `Resource not found`, status = 0, cause) {
452
- super(name, code, message, status, cause);
453
- Object.setPrototypeOf(this, NotFoundError.prototype);
454
- }
455
- }
456
- class RequiresTOTPError extends WebrpcError {
457
- constructor(name = 'RequiresTOTP', code = 6600, message = `TOTP is required`, status = 0, cause) {
458
- super(name, code, message, status, cause);
459
- Object.setPrototypeOf(this, RequiresTOTPError.prototype);
460
- }
461
- }
462
- class RequiresPINError extends WebrpcError {
463
- constructor(name = 'RequiresPIN', code = 6601, message = `PIN is required`, status = 0, cause) {
464
- super(name, code, message, status, cause);
465
- Object.setPrototypeOf(this, RequiresPINError.prototype);
466
- }
467
- }
468
- const webrpcErrorByCode = {
469
- [0]: WebrpcEndpointError,
470
- [-1]: WebrpcRequestFailedError,
471
- [-2]: WebrpcBadRouteError,
472
- [-3]: WebrpcBadMethodError,
473
- [-4]: WebrpcBadRequestError,
474
- [-5]: WebrpcBadResponseError,
475
- [-6]: WebrpcServerPanicError,
476
- [-7]: WebrpcInternalErrorError,
477
- [-8]: WebrpcClientDisconnectedError,
478
- [-9]: WebrpcStreamLostError,
479
- [-10]: WebrpcStreamFinishedError,
480
- [1000]: UnauthorizedError,
481
- [1001]: PermissionDeniedError,
482
- [1002]: SessionExpiredError,
483
- [1003]: MethodNotFoundError,
484
- [1004]: RequestConflictError,
485
- [1005]: AbortedError,
486
- [1006]: GeoblockedError,
487
- [1007]: RateLimitedError,
488
- [2001]: InvalidArgumentError,
489
- [2002]: UnavailableError,
490
- [2003]: QueryFailedError,
491
- [2004]: ValidationFailedError,
492
- [3000]: NotFoundError,
493
- [6600]: RequiresTOTPError,
494
- [6601]: RequiresPINError
495
- };
496
-
497
- class GuardSigner {
498
- constructor(address, url, appendSuffix = false, projectAccessKey) {
499
- this.address = address;
500
- this.url = url;
501
- this.appendSuffix = appendSuffix;
502
- this.projectAccessKey = projectAccessKey;
503
- this.guard = void 0;
504
- this._fetch = (input, init) => {
505
- const headers = {};
506
- const projectAccessKey = this.projectAccessKey;
507
- if (projectAccessKey && projectAccessKey.length > 0) {
508
- headers['X-Access-Key'] = projectAccessKey;
509
- }
510
-
511
- // before the request is made
512
- init.headers = _extends({}, init.headers, headers);
513
- return fetch(input, init);
514
- };
515
- this.guard = new Guard(url, this._fetch);
516
- }
517
- async getAddress() {
518
- return this.address;
519
- }
520
- async buildDeployTransaction(_metadata) {
521
- return undefined;
522
- }
523
- async predecorateSignedTransactions(_metadata) {
524
- return [];
525
- }
526
- async decorateTransactions(bundle, _metadata) {
527
- return bundle;
528
- }
529
- async sign(message, metadata) {
530
- var _metadata$parts;
531
- if (!core.commons.isWalletSignRequestMetadata(metadata)) {
532
- throw new Error('expected sequence signature request metadata');
533
- }
534
- const guardTotpCode = metadata.guardTotpCode;
535
-
536
- // Building auxData, notice: this uses the old v1 format
537
- // TODO: We should update the guard API so we can pass the metadata directly
538
- const coder = core.universal.genericCoderFor(metadata.config.version);
539
- const {
540
- encoded
541
- } = coder.signature.encodeSigners(metadata.config, (_metadata$parts = metadata.parts) != null ? _metadata$parts : new Map(), [], metadata.chainId);
542
- return (await this.guard.signWith({
543
- signer: this.address,
544
- request: {
545
- msg: ethers.ethers.hexlify(message),
546
- auxData: this.packMsgAndSig(metadata.address, metadata.digest, encoded, metadata.chainId),
547
- chainId: Number(metadata.chainId)
548
- },
549
- token: guardTotpCode ? {
550
- id: AuthMethod.TOTP,
551
- token: guardTotpCode
552
- } : undefined
553
- })).sig;
554
- }
555
- notifyStatusChange(_id, _status, _metadata) {}
556
- async getAuthMethods(proof) {
557
- let response;
558
- if ('jwt' in proof) {
559
- response = await this.guard.authMethods({}, {
560
- Authorization: `BEARER ${proof.jwt}`
561
- });
562
- } else {
563
- const signedProof = await signOwnershipProof(proof);
564
- response = await this.guard.authMethods({
565
- proof: {
566
- wallet: signedProof.walletAddress,
567
- timestamp: signedProof.timestamp.getTime(),
568
- signer: signedProof.signerAddress,
569
- signature: signedProof.signature,
570
- chainId: 1
571
- }
572
- });
573
- }
574
- return _extends({}, response, {
575
- methods: response.methods.map(parseAuthMethod)
576
- });
577
- }
578
- async setPin(pin, proof) {
579
- const signedProof = await signAuthUpdateProof(proof);
580
- if (pin === undefined) {
581
- await this.guard.resetPIN({
582
- timestamp: signedProof.timestamp.getTime(),
583
- signature: signedProof.signature,
584
- chainId: 1
585
- }, {
586
- Authorization: `BEARER ${proof.jwt}`
587
- });
588
- } else {
589
- await this.guard.setPIN({
590
- pin,
591
- timestamp: signedProof.timestamp.getTime(),
592
- signature: signedProof.signature,
593
- chainId: 1
594
- }, {
595
- Authorization: `BEARER ${proof.jwt}`
596
- });
597
- }
598
- }
599
- resetPin(proof) {
600
- return this.setPin(undefined, proof);
601
- }
602
- async createTotp(proof) {
603
- const signedProof = await signAuthUpdateProof(proof);
604
- const {
605
- uri
606
- } = await this.guard.createTOTP({
607
- timestamp: signedProof.timestamp.getTime(),
608
- signature: signedProof.signature,
609
- chainId: 1
610
- }, {
611
- Authorization: `BEARER ${proof.jwt}`
612
- });
613
- return new URL(uri);
614
- }
615
- async commitTotp(token, jwt) {
616
- const {
617
- codes
618
- } = await this.guard.commitTOTP({
619
- token
620
- }, {
621
- Authorization: `BEARER ${jwt}`
622
- });
623
- return codes;
624
- }
625
- async resetTotp(proof) {
626
- const signedProof = await signAuthUpdateProof(proof);
627
- await this.guard.resetTOTP({
628
- timestamp: signedProof.timestamp.getTime(),
629
- signature: signedProof.signature,
630
- chainId: 1
631
- }, {
632
- Authorization: `BEARER ${proof.jwt}`
633
- });
634
- }
635
- async reset2fa(recoveryCode, proof) {
636
- if ('jwt' in proof) {
637
- await this.guard.reset2FA({
638
- code: recoveryCode
639
- }, {
640
- Authorization: `BEARER ${proof.jwt}`
641
- });
642
- } else {
643
- const signedProof = await signOwnershipProof(proof);
644
- await this.guard.reset2FA({
645
- code: recoveryCode,
646
- proof: {
647
- wallet: signedProof.walletAddress,
648
- timestamp: signedProof.timestamp.getTime(),
649
- signer: signedProof.signerAddress,
650
- signature: signedProof.signature,
651
- chainId: 1
652
- }
653
- });
654
- }
655
- }
656
- async getRecoveryCodes(proof) {
657
- const signedProof = await signAuthUpdateProof(proof);
658
- const {
659
- codes
660
- } = await this.guard.recoveryCodes({
661
- timestamp: signedProof.timestamp.getTime(),
662
- signature: signedProof.signature,
663
- chainId: 1
664
- }, {
665
- Authorization: `BEARER ${proof.jwt}`
666
- });
667
- return codes;
668
- }
669
- async resetRecoveryCodes(proof) {
670
- const signedProof = await signAuthUpdateProof(proof);
671
- const {
672
- codes
673
- } = await this.guard.resetRecoveryCodes({
674
- timestamp: signedProof.timestamp.getTime(),
675
- signature: signedProof.signature,
676
- chainId: 1
677
- }, {
678
- Authorization: `BEARER ${proof.jwt}`
679
- });
680
- return codes;
681
- }
682
- packMsgAndSig(address, msg, sig, chainId) {
683
- return ethers.ethers.AbiCoder.defaultAbiCoder().encode(['address', 'uint256', 'bytes', 'bytes'], [address, chainId, msg, sig]);
684
- }
685
- suffix() {
686
- return new Uint8Array(this.appendSuffix ? [3] : []);
687
- }
688
- }
689
- let AuthMethod = /*#__PURE__*/function (AuthMethod) {
690
- AuthMethod["PIN"] = "PIN";
691
- AuthMethod["TOTP"] = "TOTP";
692
- return AuthMethod;
693
- }({});
694
- function parseAuthMethod(method) {
695
- switch (method) {
696
- case AuthMethod.PIN:
697
- case AuthMethod.TOTP:
698
- return method;
699
- default:
700
- throw new Error(`unknown auth method '${method}'`);
701
- }
702
- }
703
- function isSignedOwnershipProof(proof) {
704
- return 'signerAddress' in proof && typeof proof.signerAddress === 'string';
705
- }
706
- async function signOwnershipProof(proof) {
707
- if (isSignedOwnershipProof(proof)) {
708
- return proof;
709
- } else {
710
- const signer = signhub.signers.isSapientSigner(proof.signer) ? proof.signer : new signhub.signers.SignerWrapper(proof.signer);
711
- const signerAddress = await signer.getAddress();
712
- const timestamp = new Date();
713
- const typedData = getOwnershipProofTypedData(proof.walletAddress, timestamp);
714
- const digest = utils.encodeTypedDataDigest(typedData);
715
- return {
716
- walletAddress: proof.walletAddress,
717
- timestamp,
718
- signerAddress,
719
- signature: ethers.ethers.hexlify(await signer.sign(digest, {}))
720
- };
721
- }
722
- }
723
- async function signAuthUpdateProof(proof) {
724
- if ('wallet' in proof) {
725
- var _typedData$domain$cha;
726
- const timestamp = new Date();
727
- const typedData = getAuthUpdateProofTypedData(timestamp);
728
- const signature = await proof.wallet.signTypedData(typedData.domain, typedData.types, typedData.message, (_typedData$domain$cha = typedData.domain.chainId) != null ? _typedData$domain$cha : 1, 'eip6492');
729
- return {
730
- jwt: proof.jwt,
731
- timestamp,
732
- signature
733
- };
734
- } else {
735
- return proof;
736
- }
737
- }
738
- function getOwnershipProofTypedData(wallet, timestamp) {
739
- return {
740
- domain,
741
- types: {
742
- AuthMethods: [{
743
- name: 'wallet',
744
- type: 'address'
745
- }, {
746
- name: 'timestamp',
747
- type: 'string'
748
- }]
749
- },
750
- message: {
751
- wallet: ethers.ethers.getAddress(wallet),
752
- timestamp: toUTCString(timestamp)
753
- }
754
- };
755
- }
756
- function getAuthUpdateProofTypedData(timestamp) {
757
- return {
758
- domain,
759
- types: {
760
- AuthUpdate: [{
761
- name: 'timestamp',
762
- type: 'string'
763
- }]
764
- },
765
- message: {
766
- timestamp: toUTCString(timestamp)
767
- }
768
- };
769
- }
770
- const domain = {
771
- name: 'Sequence Guard',
772
- version: '1',
773
- chainId: 1
774
- };
775
- function toUTCString(date) {
776
- return date.toUTCString().replace('GMT', 'UTC');
777
- }
778
-
779
- exports.AuthMethod = AuthMethod;
780
- exports.Guard = Guard;
781
- exports.GuardSigner = GuardSigner;
782
- exports.getAuthUpdateProofTypedData = getAuthUpdateProofTypedData;
783
- exports.getOwnershipProofTypedData = getOwnershipProofTypedData;
784
- exports.isSignedOwnershipProof = isSignedOwnershipProof;
785
- exports.signOwnershipProof = signOwnershipProof;