@0xsequence/dapp-client 3.0.0-beta.1 → 3.0.0-beta.11

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,5 +1,5 @@
1
1
 
2
- 
3
- > @0xsequence/dapp-client@3.0.0-beta.1 build /Users/taylan/Development/Horizon/sequence.js/packages/wallet/dapp-client
2
+
3
+ > @0xsequence/dapp-client@3.0.0-beta.11 build /home/taylan/development/sequence/sequence.js/packages/wallet/dapp-client
4
4
  > tsc
5
5
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,115 @@
1
1
  # @0xsequence/dapp-client
2
2
 
3
+ ## 3.0.0-beta.11
4
+
5
+ ### Patch Changes
6
+
7
+ - 3.0.0 beta
8
+ - Updated dependencies
9
+ - @0xsequence/guard@3.0.0-beta.11
10
+ - @0xsequence/relayer@3.0.0-beta.11
11
+ - @0xsequence/wallet-core@3.0.0-beta.11
12
+ - @0xsequence/wallet-primitives@3.0.0-beta.11
13
+
14
+ ## 3.0.0-beta.10
15
+
16
+ ### Patch Changes
17
+
18
+ - dapp-client updates
19
+ - Updated dependencies
20
+ - @0xsequence/guard@3.0.0-beta.10
21
+ - @0xsequence/relayer@3.0.0-beta.10
22
+ - @0xsequence/wallet-core@3.0.0-beta.10
23
+ - @0xsequence/wallet-primitives@3.0.0-beta.10
24
+
25
+ ## 3.0.0-beta.9
26
+
27
+ ### Patch Changes
28
+
29
+ - dapp client updates for EOA login
30
+ - Updated dependencies
31
+ - @0xsequence/guard@3.0.0-beta.9
32
+ - @0xsequence/relayer@3.0.0-beta.9
33
+ - @0xsequence/wallet-core@3.0.0-beta.9
34
+ - @0xsequence/wallet-primitives@3.0.0-beta.9
35
+
36
+ ## 3.0.0-beta.8
37
+
38
+ ### Patch Changes
39
+
40
+ - Apple auth fixes
41
+ - Updated dependencies
42
+ - @0xsequence/guard@3.0.0-beta.8
43
+ - @0xsequence/relayer@3.0.0-beta.8
44
+ - @0xsequence/wallet-core@3.0.0-beta.8
45
+ - @0xsequence/wallet-primitives@3.0.0-beta.8
46
+
47
+ ## 3.0.0-beta.7
48
+
49
+ ### Patch Changes
50
+
51
+ - Apple auth fix
52
+ - Updated dependencies
53
+ - @0xsequence/guard@3.0.0-beta.7
54
+ - @0xsequence/relayer@3.0.0-beta.7
55
+ - @0xsequence/wallet-core@3.0.0-beta.7
56
+ - @0xsequence/wallet-primitives@3.0.0-beta.7
57
+
58
+ ## 3.0.0-beta.6
59
+
60
+ ### Patch Changes
61
+
62
+ - Fix signer 404 error, minor fixes
63
+ - Updated dependencies
64
+ - @0xsequence/guard@3.0.0-beta.6
65
+ - @0xsequence/relayer@3.0.0-beta.6
66
+ - @0xsequence/wallet-core@3.0.0-beta.6
67
+ - @0xsequence/wallet-primitives@3.0.0-beta.6
68
+
69
+ ## 3.0.0-beta.5
70
+
71
+ ### Patch Changes
72
+
73
+ - Beta release for v3
74
+ - Updated dependencies
75
+ - @0xsequence/guard@3.0.0-beta.5
76
+ - @0xsequence/relayer@3.0.0-beta.5
77
+ - @0xsequence/wallet-core@3.0.0-beta.5
78
+ - @0xsequence/wallet-primitives@3.0.0-beta.5
79
+
80
+ ## 3.0.0-beta.4
81
+
82
+ ### Patch Changes
83
+
84
+ - RC5 upgrade
85
+ - Updated dependencies
86
+ - @0xsequence/guard@3.0.0-beta.4
87
+ - @0xsequence/relayer@3.0.0-beta.4
88
+ - @0xsequence/wallet-core@3.0.0-beta.4
89
+ - @0xsequence/wallet-primitives@3.0.0-beta.4
90
+
91
+ ## 3.0.0-beta.3
92
+
93
+ ### Patch Changes
94
+
95
+ - 3.0.0-beta.3 with fixes
96
+ - Updated dependencies
97
+ - @0xsequence/guard@3.0.0-beta.3
98
+ - @0xsequence/relayer@3.0.0-beta.3
99
+ - @0xsequence/wallet-core@3.0.0-beta.3
100
+ - @0xsequence/wallet-primitives@3.0.0-beta.3
101
+
102
+ ## 3.0.0-beta.2
103
+
104
+ ### Patch Changes
105
+
106
+ - 3.0.0-beta.2 with identity instrument updates
107
+ - Updated dependencies
108
+ - @0xsequence/guard@3.0.0-beta.2
109
+ - @0xsequence/relayer@3.0.0-beta.2
110
+ - @0xsequence/wallet-core@3.0.0-beta.2
111
+ - @0xsequence/wallet-primitives@3.0.0-beta.2
112
+
3
113
  ## 3.0.0-beta.1
4
114
 
5
115
  ### Patch Changes
@@ -31,6 +31,7 @@ export declare class ChainSessionManager {
31
31
  loginMethod: LoginMethod | null;
32
32
  userEmail: string | null;
33
33
  private guard?;
34
+ private lastSignedCallCache?;
34
35
  /**
35
36
  * @param chainId The ID of the chain this manager is responsible for.
36
37
  * @param keyMachineUrl The URL of the key management service.
@@ -206,6 +207,8 @@ export declare class ChainSessionManager {
206
207
  * @private Resets the internal state and clears all persisted session data from storage.
207
208
  */
208
209
  private _resetStateAndClearCredentials;
210
+ private _getCachedSignedCall;
211
+ private _fingerprintCalls;
209
212
  }
210
213
  export {};
211
214
  //# sourceMappingURL=ChainSessionManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChainSessionManager.d.ts","sourceRoot":"","sources":["../src/ChainSessionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChainSessionManager.d.ts","sourceRoot":"","sources":["../src/ChainSessionManager.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,7 @@ export class ChainSessionManager {
31
31
  loginMethod = null;
32
32
  userEmail = null;
33
33
  guard;
34
+ lastSignedCallCache;
34
35
  /**
35
36
  * @param chainId The ID of the chain this manager is responsible for.
36
37
  * @param keyMachineUrl The URL of the key management service.
@@ -136,7 +137,7 @@ export class ChainSessionManager {
136
137
  stateProvider: this.stateProvider,
137
138
  });
138
139
  this.sessionManager = new Signers.SessionManager(this.wallet, {
139
- sessionManagerAddress: Extensions.Rc4.sessions,
140
+ sessionManagerAddress: Extensions.Rc5.sessions,
140
141
  provider: this.provider,
141
142
  });
142
143
  this.isInitialized = true;
@@ -354,7 +355,7 @@ export class ChainSessionManager {
354
355
  const { userEmail, loginMethod, guard } = connectResponse;
355
356
  const savedRequest = await this.sequenceStorage.peekPendingRequest();
356
357
  const savedPayload = savedRequest?.payload;
357
- const explicitSessionRequested = !!savedPayload?.session;
358
+ const explicitSessionRequested = (savedPayload?.session?.permissions?.length ?? 0) > 0;
358
359
  const implicitSessionRequested = savedPayload?.includeImplicitSession ?? false;
359
360
  const needsTempPk = explicitSessionRequested || implicitSessionRequested;
360
361
  const tempPk = needsTempPk ? await this.sequenceStorage.getAndClearTempSessionPk() : null;
@@ -501,7 +502,7 @@ export class ChainSessionManager {
501
502
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
502
503
  try {
503
504
  const tempManager = new Signers.SessionManager(this.wallet, {
504
- sessionManagerAddress: Extensions.Rc4.sessions,
505
+ sessionManagerAddress: Extensions.Rc5.sessions,
505
506
  provider: this.provider,
506
507
  });
507
508
  const topology = await tempManager.getTopology();
@@ -612,6 +613,14 @@ export class ChainSessionManager {
612
613
  }));
613
614
  try {
614
615
  const signedCall = await this._buildAndSignCalls(callsToSend);
616
+ const fingerprint = this._fingerprintCalls(callsToSend);
617
+ if (fingerprint) {
618
+ this.lastSignedCallCache = {
619
+ fingerprint,
620
+ signedCall,
621
+ createdAtMs: Date.now(),
622
+ };
623
+ }
615
624
  const feeOptions = await this.relayer.feeOptions(signedCall.to, this.chainId, callsToSend);
616
625
  return feeOptions.options;
617
626
  }
@@ -668,7 +677,7 @@ export class ChainSessionManager {
668
677
  callsToSend.unshift(transferCall);
669
678
  }
670
679
  }
671
- const signedCalls = await this._buildAndSignCalls(callsToSend);
680
+ const signedCalls = this._getCachedSignedCall(callsToSend) ?? (await this._buildAndSignCalls(callsToSend));
672
681
  const hash = await this.relayer.relay(signedCalls.to, signedCalls.data, this.chainId);
673
682
  const status = await this._waitForTransactionReceipt(hash.opHash, this.chainId);
674
683
  if (status.status === 'confirmed') {
@@ -838,4 +847,39 @@ export class ChainSessionManager {
838
847
  await this.sequenceStorage.clearExplicitSessions();
839
848
  await this.sequenceStorage.clearSessionlessConnection();
840
849
  }
850
+ _getCachedSignedCall(calls) {
851
+ if (!this.lastSignedCallCache) {
852
+ return null;
853
+ }
854
+ const ttlMs = 30_000;
855
+ if (Date.now() - this.lastSignedCallCache.createdAtMs > ttlMs) {
856
+ this.lastSignedCallCache = undefined;
857
+ return null;
858
+ }
859
+ const fingerprint = this._fingerprintCalls(calls);
860
+ if (!fingerprint) {
861
+ return null;
862
+ }
863
+ if (fingerprint !== this.lastSignedCallCache.fingerprint) {
864
+ return null;
865
+ }
866
+ return this.lastSignedCallCache.signedCall;
867
+ }
868
+ _fingerprintCalls(calls) {
869
+ try {
870
+ return JSON.stringify(calls.map((call) => ({
871
+ to: call.to,
872
+ value: call.value?.toString() ?? '0',
873
+ data: call.data ?? '0x',
874
+ gasLimit: call.gasLimit?.toString() ?? '0',
875
+ delegateCall: call.delegateCall ?? false,
876
+ onlyFallback: call.onlyFallback ?? false,
877
+ behaviorOnError: call.behaviorOnError ?? 'revert',
878
+ })));
879
+ }
880
+ catch (error) {
881
+ console.warn('ChainSessionManager._fingerprintCalls failed:', error);
882
+ return null;
883
+ }
884
+ }
841
885
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DappTransport.d.ts","sourceRoot":"","sources":["../src/DappTransport.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EAEtB,aAAa,EAEd,MAAM,kBAAkB,CAAA;AAgCzB,qBAAa,aAAa;aAqBN,SAAS,EAAE,MAAM;IACjC,QAAQ,CAAC,IAAI,EAAE,aAAa;IArB9B,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,eAAe,CAAgD;IACvE,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAkD;IAC5E,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAwB;IAC/D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAuB;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,SAAgB,YAAY,EAAE,MAAM,CAAA;gBAGlB,SAAS,EAAE,MAAM,EACxB,IAAI,GAAE,aAAmC,EAClD,gBAAgB,GAAE,gBAAqB,EACvC,sBAAsB,CAAC,EAAE,sBAAsB,EAC/C,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAwC/C,IAAI,YAAY,IAAI,OAAO,CAG1B;IAED,IAAI,OAAO,IAAI,OAAO,CAGrB;IAEK,WAAW,CAAC,SAAS,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,EAC/C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,SAAS,CAAC;IAoDR,qBAAqB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;IAuBL,mBAAmB,CAAC,SAAS,GAAG,GAAG,EAC9C,UAAU,GAAE,OAAc,EAC1B,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,OAAO,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IA4EnF,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgExC,WAAW,IAAI,IAAI;IAgB1B,OAAO,IAAI,IAAI;IAYf,OAAO,CAAC,aAAa,CAuCpB;IAED,OAAO,CAAC,wBAAwB;IAiChC,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,mBAAmB;IAkD3B,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,UAAU;CAGnB"}
1
+ {"version":3,"file":"DappTransport.d.ts","sourceRoot":"","sources":["../src/DappTransport.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EAEtB,aAAa,EAEd,MAAM,kBAAkB,CAAA;AAgCzB,qBAAa,aAAa;aAqBN,SAAS,EAAE,MAAM;IACjC,QAAQ,CAAC,IAAI,EAAE,aAAa;IArB9B,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,eAAe,CAAgD;IACvE,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,mBAAmB,CAAsC;IACjE,OAAO,CAAC,kBAAkB,CAAkD;IAC5E,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAwB;IAC/D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAuB;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,SAAgB,YAAY,EAAE,MAAM,CAAA;gBAGlB,SAAS,EAAE,MAAM,EACxB,IAAI,GAAE,aAAmC,EAClD,gBAAgB,GAAE,gBAAqB,EACvC,sBAAsB,CAAC,EAAE,sBAAsB,EAC/C,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAwC/C,IAAI,YAAY,IAAI,OAAO,CAG1B;IAED,IAAI,OAAO,IAAI,OAAO,CAGrB;IAEK,WAAW,CAAC,SAAS,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,EAC/C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,QAAQ,EAClB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,SAAS,CAAC;IAoDR,qBAAqB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC;IAuBL,mBAAmB,CAAC,SAAS,GAAG,GAAG,EAC9C,UAAU,GAAE,OAAc,EAC1B,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,OAAO,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IA4EnF,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgExC,WAAW,IAAI,IAAI;IAgB1B,OAAO,IAAI,IAAI;IAYf,OAAO,CAAC,aAAa,CAoCpB;IAED,OAAO,CAAC,wBAAwB;IAiChC,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,mBAAmB;IAkD3B,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,UAAU;CAGnB"}
@@ -318,8 +318,7 @@ export class DappTransport {
318
318
  if (event.origin !== this.walletOrigin) {
319
319
  return;
320
320
  }
321
- const isPotentiallyValidSource = this.walletWindow && (event.source === this.walletWindow || !this.walletWindow.closed);
322
- if (!isPotentiallyValidSource && event.data?.type !== MessageType.WALLET_OPENED) {
321
+ if (!this.walletWindow || event.source !== this.walletWindow) {
323
322
  return;
324
323
  }
325
324
  const message = event.data;
package/dist/index.d.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  export { DappClient } from './DappClient.js';
2
2
  export type { DappClientEventListener } from './DappClient.js';
3
- export type { LoginMethod, GuardConfig, Transaction, SignatureResponse, SequenceSessionStorage, RandomPrivateKeyFn, SignMessagePayload, SessionResponse, AddExplicitSessionPayload, CreateNewSessionPayload, CreateNewSessionResponse, SignTypedDataPayload, ModifyExplicitSessionPayload, DappClientWalletActionEventListener, DappClientExplicitSessionEventListener, TransactionRequest, SendWalletTransactionPayload, SendWalletTransactionResponse, WalletActionResponse, GetFeeTokensResponse, FeeToken, FeeOption, } from './types/index.js';
4
- export { RequestActionType, TransportMode } from './types/index.js';
3
+ export type { LoginMethod, GuardConfig, Transaction, SignatureResponse, SequenceSessionStorage, RandomPrivateKeyFn, SignMessagePayload, SessionResponse, AddExplicitSessionPayload, CreateNewSessionPayload, CreateNewSessionResponse, SignTypedDataPayload, ModifyExplicitSessionPayload, DappClientWalletActionEventListener, DappClientExplicitSessionEventListener, TransactionRequest, SendWalletTransactionPayload, SendWalletTransactionResponse, WalletActionResponse, GetFeeTokensResponse, FeeToken, FeeOption, TransportMessage, } from './types/index.js';
4
+ export { RequestActionType, TransportMode, MessageType } from './types/index.js';
5
5
  export { FeeOptionError, TransactionError, AddExplicitSessionError, ConnectionError, InitializationError, SigningError, ModifyExplicitSessionError, } from './utils/errors.js';
6
- export { getExplorerUrl, jsonReplacers, jsonRevivers } from './utils/index.js';
6
+ export { createExplicitSessionConfig, getExplorerUrl, getNetwork, getRelayerUrl, getRpcUrl, jsonReplacers, jsonRevivers, VALUE_FORWARDER_ADDRESS, } from './utils/index.js';
7
+ export type { ExplicitSessionParams, NativeTokenSpending, SessionDuration } from './utils/index.js';
7
8
  export type { SequenceStorage, ExplicitSessionData, ImplicitSessionData, SessionlessConnectionData, PendingRequestContext, PendingPayload, } from './utils/storage.js';
8
9
  export { WebStorage } from './utils/storage.js';
9
- export { Attestation, Permission, Extensions, SessionConfig, Constants, Payload } from '@0xsequence/wallet-primitives';
10
+ export { Attestation, Permission, Extensions, SessionConfig, Constants, Payload, Network, } from '@0xsequence/wallet-primitives';
10
11
  export type { ExplicitSessionConfig, ExplicitSession, ImplicitSession, Session } from '@0xsequence/wallet-core';
11
12
  export { Signers, Wallet, Utils, Envelope, State } from '@0xsequence/wallet-core';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC9D,YAAY,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,EAC5B,mCAAmC,EACnC,sCAAsC,EACtC,kBAAkB,EAClB,4BAA4B,EAC5B,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,EACpB,QAAQ,EACR,SAAS,GACV,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC9E,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,cAAc,GACf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AACtH,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAC/G,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC9D,YAAY,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,EAC5B,mCAAmC,EACnC,sCAAsC,EACtC,kBAAkB,EAClB,4BAA4B,EAC5B,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,EACpB,QAAQ,EACR,SAAS,EACT,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACZ,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACnG,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,cAAc,GACf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,OAAO,EACP,OAAO,GACR,MAAM,+BAA+B,CAAA;AACtC,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAC/G,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { DappClient } from './DappClient.js';
2
- export { RequestActionType, TransportMode } from './types/index.js';
2
+ export { RequestActionType, TransportMode, MessageType } from './types/index.js';
3
3
  export { FeeOptionError, TransactionError, AddExplicitSessionError, ConnectionError, InitializationError, SigningError, ModifyExplicitSessionError, } from './utils/errors.js';
4
- export { getExplorerUrl, jsonReplacers, jsonRevivers } from './utils/index.js';
4
+ export { createExplicitSessionConfig, getExplorerUrl, getNetwork, getRelayerUrl, getRpcUrl, jsonReplacers, jsonRevivers, VALUE_FORWARDER_ADDRESS, } from './utils/index.js';
5
5
  export { WebStorage } from './utils/storage.js';
6
- export { Attestation, Permission, Extensions, SessionConfig, Constants, Payload } from '@0xsequence/wallet-primitives';
6
+ export { Attestation, Permission, Extensions, SessionConfig, Constants, Payload, Network, } from '@0xsequence/wallet-primitives';
7
7
  export { Signers, Wallet, Utils, Envelope, State } from '@0xsequence/wallet-core';
@@ -15,7 +15,7 @@ export declare const RequestActionType: {
15
15
  readonly SIGN_TYPED_DATA: "signTypedData";
16
16
  readonly SEND_WALLET_TRANSACTION: "sendWalletTransaction";
17
17
  };
18
- export type LoginMethod = 'google' | 'apple' | 'email' | 'passkey' | 'mnemonic';
18
+ export type LoginMethod = 'google' | 'apple' | 'email' | 'passkey' | 'mnemonic' | 'eoa';
19
19
  export interface GuardConfig {
20
20
  url: string;
21
21
  moduleAddresses: Map<Address.Address, Address.Address>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,29 @@
1
- import { Network } from '@0xsequence/wallet-primitives';
1
+ import type { ExplicitSessionConfig } from '@0xsequence/wallet-core';
2
+ import { Network, Permission } from '@0xsequence/wallet-primitives';
3
+ import { type Address } from 'ox';
4
+ export { VALUE_FORWARDER_ADDRESS } from './constants.js';
2
5
  type JsonReplacer = (key: string, value: any) => any;
3
6
  type JsonReviver = (key: string, value: any) => any;
4
7
  export declare const jsonRevivers: JsonReviver;
5
8
  export declare const jsonReplacers: JsonReplacer;
9
+ export type SessionDuration = {
10
+ days?: number;
11
+ hours?: number;
12
+ minutes?: number;
13
+ };
14
+ export type NativeTokenSpending = {
15
+ valueLimit: bigint;
16
+ allowedRecipients?: Address.Address[];
17
+ };
18
+ export type ExplicitSessionParams = {
19
+ chainId: number;
20
+ expiresIn: SessionDuration;
21
+ permissions: Permission.Permission[];
22
+ nativeTokenSpending?: NativeTokenSpending;
23
+ };
24
+ export declare const createExplicitSessionConfig: (params: ExplicitSessionParams) => ExplicitSessionConfig;
6
25
  export declare const getNetwork: (chainId: Network.ChainId | bigint | number) => Network.Network;
7
26
  export declare const getRpcUrl: (chainId: Network.ChainId | bigint | number, nodesUrl: string, projectAccessKey: string) => string;
8
27
  export declare const getRelayerUrl: (chainId: Network.ChainId | bigint | number, relayerUrl: string) => string;
9
28
  export declare const getExplorerUrl: (chainId: Network.ChainId | bigint | number, txHash: string) => string;
10
- export {};
11
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AAGvD,KAAK,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;AACpD,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;AAsHnD,eAAO,MAAM,YAAY,aAAgE,CAAA;AACzF,eAAO,MAAM,aAAa,cAAoE,CAAA;AAuB9F,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,oBAQpE,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,SAAS,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,UAAU,MAAM,EAAE,kBAAkB,MAAM,WAU/G,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,SAAS,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,YAAY,MAAM,WAM3F,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,QAAQ,MAAM,WAQxF,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,IAAI,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAExD,KAAK,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;AACpD,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;AAsHnD,eAAO,MAAM,YAAY,aAAgE,CAAA;AACzF,eAAO,MAAM,aAAa,cAAoE,CAAA;AAE9F,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,eAAe,CAAA;IAC1B,WAAW,EAAE,UAAU,CAAC,UAAU,EAAE,CAAA;IACpC,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAI,QAAQ,qBAAqB,KAAG,qBAwB3E,CAAA;AAuBD,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,oBAQpE,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,SAAS,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,UAAU,MAAM,EAAE,kBAAkB,MAAM,WAU/G,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,SAAS,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,YAAY,MAAM,WAM3F,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,QAAQ,MAAM,WAQxF,CAAA"}
@@ -1,6 +1,6 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
1
  import { Network } from '@0xsequence/wallet-primitives';
3
2
  import { Bytes, Hex } from 'ox';
3
+ export { VALUE_FORWARDER_ADDRESS } from './constants.js';
4
4
  /**
5
5
  * Creates a single JSON replacer by chaining multiple replacers.
6
6
  * The first replacer to transform a value wins.
@@ -114,6 +114,28 @@ const uint8ArrayReviver = (key, value) => {
114
114
  };
115
115
  export const jsonRevivers = chainRevivers([mapReviver, bigIntReviver, uint8ArrayReviver]);
116
116
  export const jsonReplacers = chainReplacers([mapReplacer, bigIntReplacer, uint8ArrayReplacer]);
117
+ export const createExplicitSessionConfig = (params) => {
118
+ const nowInSeconds = BigInt(Math.floor(Date.now() / 1000));
119
+ const { days = 0, hours = 0, minutes = 0 } = params.expiresIn;
120
+ const sessionLifetimeSeconds = days * 24 * 60 * 60 + hours * 60 * 60 + minutes * 60;
121
+ const deadline = nowInSeconds + BigInt(sessionLifetimeSeconds);
122
+ if (params.permissions.length === 0) {
123
+ throw new Error('createExplicitSessionConfig: At least one permission is required.');
124
+ }
125
+ const nativeTokenSpending = params.nativeTokenSpending;
126
+ const valueLimit = nativeTokenSpending?.valueLimit ?? 0n;
127
+ const nativeTokenReceivers = [...(nativeTokenSpending?.allowedRecipients || [])];
128
+ const nativeTokenSpendingPermissions = nativeTokenReceivers.map((receiver) => ({
129
+ target: receiver,
130
+ rules: [],
131
+ }));
132
+ return {
133
+ chainId: params.chainId,
134
+ valueLimit,
135
+ deadline,
136
+ permissions: [...params.permissions, ...nativeTokenSpendingPermissions],
137
+ };
138
+ };
117
139
  /**
118
140
  * Apply a template to a string.
119
141
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xsequence/dapp-client",
3
- "version": "3.0.0-beta.1",
3
+ "version": "3.0.0-beta.11",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -14,21 +14,21 @@
14
14
  }
15
15
  },
16
16
  "devDependencies": {
17
- "@types/node": "^22.15.29",
18
- "@vitest/coverage-v8": "^3.2.4",
19
- "dotenv": "^16.5.0",
20
- "fake-indexeddb": "^6.0.1",
21
- "happy-dom": "^17.2.2",
22
- "typescript": "^5.8.3",
23
- "vitest": "^3.2.1",
24
- "@repo/typescript-config": "^0.0.0"
17
+ "@types/node": "^25.0.2",
18
+ "@vitest/coverage-v8": "^4.0.15",
19
+ "dotenv": "^17.2.3",
20
+ "fake-indexeddb": "^6.2.5",
21
+ "happy-dom": "^20.0.11",
22
+ "typescript": "^5.9.3",
23
+ "vitest": "^4.0.15",
24
+ "@repo/typescript-config": "^0.0.1-beta.1"
25
25
  },
26
26
  "dependencies": {
27
- "ox": "^0.7.2",
28
- "@0xsequence/guard": "^3.0.0-beta.1",
29
- "@0xsequence/relayer": "^3.0.0-beta.1",
30
- "@0xsequence/wallet-primitives": "^3.0.0-beta.1",
31
- "@0xsequence/wallet-core": "^3.0.0-beta.1"
27
+ "ox": "^0.9.17",
28
+ "@0xsequence/wallet-primitives": "^3.0.0-beta.11",
29
+ "@0xsequence/guard": "^3.0.0-beta.11",
30
+ "@0xsequence/wallet-core": "^3.0.0-beta.11",
31
+ "@0xsequence/relayer": "^3.0.0-beta.11"
32
32
  },
33
33
  "scripts": {
34
34
  "build": "tsc",
@@ -84,6 +84,11 @@ export class ChainSessionManager {
84
84
  public loginMethod: LoginMethod | null = null
85
85
  public userEmail: string | null = null
86
86
  private guard?: GuardConfig
87
+ private lastSignedCallCache?: {
88
+ fingerprint: string
89
+ signedCall: { to: Address.Address; data: Hex.Hex }
90
+ createdAtMs: number
91
+ }
87
92
 
88
93
  /**
89
94
  * @param chainId The ID of the chain this manager is responsible for.
@@ -222,7 +227,7 @@ export class ChainSessionManager {
222
227
  stateProvider: this.stateProvider,
223
228
  })
224
229
  this.sessionManager = new Signers.SessionManager(this.wallet, {
225
- sessionManagerAddress: Extensions.Rc4.sessions,
230
+ sessionManagerAddress: Extensions.Rc5.sessions,
226
231
  provider: this.provider!,
227
232
  })
228
233
  this.isInitialized = true
@@ -538,7 +543,7 @@ export class ChainSessionManager {
538
543
  const { userEmail, loginMethod, guard } = connectResponse
539
544
  const savedRequest = await this.sequenceStorage.peekPendingRequest()
540
545
  const savedPayload = savedRequest?.payload as CreateNewSessionPayload | undefined
541
- const explicitSessionRequested = !!savedPayload?.session
546
+ const explicitSessionRequested = (savedPayload?.session?.permissions?.length ?? 0) > 0
542
547
  const implicitSessionRequested = savedPayload?.includeImplicitSession ?? false
543
548
  const needsTempPk = explicitSessionRequested || implicitSessionRequested
544
549
  const tempPk = needsTempPk ? await this.sequenceStorage.getAndClearTempSessionPk() : null
@@ -731,7 +736,7 @@ export class ChainSessionManager {
731
736
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
732
737
  try {
733
738
  const tempManager = new Signers.SessionManager(this.wallet, {
734
- sessionManagerAddress: Extensions.Rc4.sessions,
739
+ sessionManagerAddress: Extensions.Rc5.sessions,
735
740
  provider: this.provider,
736
741
  })
737
742
  const topology = await tempManager.getTopology()
@@ -851,6 +856,14 @@ export class ChainSessionManager {
851
856
  }))
852
857
  try {
853
858
  const signedCall = await this._buildAndSignCalls(callsToSend)
859
+ const fingerprint = this._fingerprintCalls(callsToSend)
860
+ if (fingerprint) {
861
+ this.lastSignedCallCache = {
862
+ fingerprint,
863
+ signedCall,
864
+ createdAtMs: Date.now(),
865
+ }
866
+ }
854
867
  const feeOptions = await this.relayer.feeOptions(signedCall.to, this.chainId, callsToSend)
855
868
  return feeOptions.options
856
869
  } catch (err) {
@@ -907,7 +920,7 @@ export class ChainSessionManager {
907
920
  callsToSend.unshift(transferCall)
908
921
  }
909
922
  }
910
- const signedCalls = await this._buildAndSignCalls(callsToSend)
923
+ const signedCalls = this._getCachedSignedCall(callsToSend) ?? (await this._buildAndSignCalls(callsToSend))
911
924
  const hash = await this.relayer.relay(signedCalls.to, signedCalls.data, this.chainId)
912
925
  const status = await this._waitForTransactionReceipt(hash.opHash, this.chainId)
913
926
  if (status.status === 'confirmed') {
@@ -1101,4 +1114,42 @@ export class ChainSessionManager {
1101
1114
  await this.sequenceStorage.clearExplicitSessions()
1102
1115
  await this.sequenceStorage.clearSessionlessConnection()
1103
1116
  }
1117
+
1118
+ private _getCachedSignedCall(calls: Payload.Call[]): { to: Address.Address; data: Hex.Hex } | null {
1119
+ if (!this.lastSignedCallCache) {
1120
+ return null
1121
+ }
1122
+ const ttlMs = 30_000
1123
+ if (Date.now() - this.lastSignedCallCache.createdAtMs > ttlMs) {
1124
+ this.lastSignedCallCache = undefined
1125
+ return null
1126
+ }
1127
+ const fingerprint = this._fingerprintCalls(calls)
1128
+ if (!fingerprint) {
1129
+ return null
1130
+ }
1131
+ if (fingerprint !== this.lastSignedCallCache.fingerprint) {
1132
+ return null
1133
+ }
1134
+ return this.lastSignedCallCache.signedCall
1135
+ }
1136
+
1137
+ private _fingerprintCalls(calls: Payload.Call[]): string | null {
1138
+ try {
1139
+ return JSON.stringify(
1140
+ calls.map((call) => ({
1141
+ to: call.to,
1142
+ value: call.value?.toString() ?? '0',
1143
+ data: call.data ?? '0x',
1144
+ gasLimit: call.gasLimit?.toString() ?? '0',
1145
+ delegateCall: call.delegateCall ?? false,
1146
+ onlyFallback: call.onlyFallback ?? false,
1147
+ behaviorOnError: call.behaviorOnError ?? 'revert',
1148
+ })),
1149
+ )
1150
+ } catch (error) {
1151
+ console.warn('ChainSessionManager._fingerprintCalls failed:', error)
1152
+ return null
1153
+ }
1154
+ }
1104
1155
  }
@@ -378,10 +378,7 @@ export class DappTransport {
378
378
  return
379
379
  }
380
380
 
381
- const isPotentiallyValidSource =
382
- this.walletWindow && (event.source === this.walletWindow || !this.walletWindow.closed)
383
-
384
- if (!isPotentiallyValidSource && event.data?.type !== MessageType.WALLET_OPENED) {
381
+ if (!this.walletWindow || event.source !== this.walletWindow) {
385
382
  return
386
383
  }
387
384
 
package/src/index.ts CHANGED
@@ -23,8 +23,9 @@ export type {
23
23
  GetFeeTokensResponse,
24
24
  FeeToken,
25
25
  FeeOption,
26
+ TransportMessage,
26
27
  } from './types/index.js'
27
- export { RequestActionType, TransportMode } from './types/index.js'
28
+ export { RequestActionType, TransportMode, MessageType } from './types/index.js'
28
29
  export {
29
30
  FeeOptionError,
30
31
  TransactionError,
@@ -34,7 +35,17 @@ export {
34
35
  SigningError,
35
36
  ModifyExplicitSessionError,
36
37
  } from './utils/errors.js'
37
- export { getExplorerUrl, jsonReplacers, jsonRevivers } from './utils/index.js'
38
+ export {
39
+ createExplicitSessionConfig,
40
+ getExplorerUrl,
41
+ getNetwork,
42
+ getRelayerUrl,
43
+ getRpcUrl,
44
+ jsonReplacers,
45
+ jsonRevivers,
46
+ VALUE_FORWARDER_ADDRESS,
47
+ } from './utils/index.js'
48
+ export type { ExplicitSessionParams, NativeTokenSpending, SessionDuration } from './utils/index.js'
38
49
  export type {
39
50
  SequenceStorage,
40
51
  ExplicitSessionData,
@@ -45,6 +56,14 @@ export type {
45
56
  } from './utils/storage.js'
46
57
  export { WebStorage } from './utils/storage.js'
47
58
 
48
- export { Attestation, Permission, Extensions, SessionConfig, Constants, Payload } from '@0xsequence/wallet-primitives'
59
+ export {
60
+ Attestation,
61
+ Permission,
62
+ Extensions,
63
+ SessionConfig,
64
+ Constants,
65
+ Payload,
66
+ Network,
67
+ } from '@0xsequence/wallet-primitives'
49
68
  export type { ExplicitSessionConfig, ExplicitSession, ImplicitSession, Session } from '@0xsequence/wallet-core'
50
69
  export { Signers, Wallet, Utils, Envelope, State } from '@0xsequence/wallet-core'
@@ -21,7 +21,7 @@ export const RequestActionType = {
21
21
  SEND_WALLET_TRANSACTION: 'sendWalletTransaction',
22
22
  } as const
23
23
 
24
- export type LoginMethod = 'google' | 'apple' | 'email' | 'passkey' | 'mnemonic'
24
+ export type LoginMethod = 'google' | 'apple' | 'email' | 'passkey' | 'mnemonic' | 'eoa'
25
25
 
26
26
  export interface GuardConfig {
27
27
  url: string
@@ -1,6 +1,8 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Network } from '@0xsequence/wallet-primitives'
3
- import { Bytes, Hex } from 'ox'
2
+ import type { ExplicitSessionConfig } from '@0xsequence/wallet-core'
3
+ import { Network, Permission } from '@0xsequence/wallet-primitives'
4
+ import { Bytes, Hex, type Address } from 'ox'
5
+ export { VALUE_FORWARDER_ADDRESS } from './constants.js'
4
6
 
5
7
  type JsonReplacer = (key: string, value: any) => any
6
8
  type JsonReviver = (key: string, value: any) => any
@@ -124,6 +126,50 @@ const uint8ArrayReviver: JsonReviver = (key, value) => {
124
126
  export const jsonRevivers = chainRevivers([mapReviver, bigIntReviver, uint8ArrayReviver])
125
127
  export const jsonReplacers = chainReplacers([mapReplacer, bigIntReplacer, uint8ArrayReplacer])
126
128
 
129
+ export type SessionDuration = {
130
+ days?: number
131
+ hours?: number
132
+ minutes?: number
133
+ }
134
+
135
+ export type NativeTokenSpending = {
136
+ valueLimit: bigint
137
+ allowedRecipients?: Address.Address[]
138
+ }
139
+
140
+ export type ExplicitSessionParams = {
141
+ chainId: number
142
+ expiresIn: SessionDuration
143
+ permissions: Permission.Permission[]
144
+ nativeTokenSpending?: NativeTokenSpending
145
+ }
146
+
147
+ export const createExplicitSessionConfig = (params: ExplicitSessionParams): ExplicitSessionConfig => {
148
+ const nowInSeconds = BigInt(Math.floor(Date.now() / 1000))
149
+ const { days = 0, hours = 0, minutes = 0 } = params.expiresIn
150
+ const sessionLifetimeSeconds = days * 24 * 60 * 60 + hours * 60 * 60 + minutes * 60
151
+ const deadline = nowInSeconds + BigInt(sessionLifetimeSeconds)
152
+
153
+ if (params.permissions.length === 0) {
154
+ throw new Error('createExplicitSessionConfig: At least one permission is required.')
155
+ }
156
+
157
+ const nativeTokenSpending = params.nativeTokenSpending
158
+ const valueLimit = nativeTokenSpending?.valueLimit ?? 0n
159
+ const nativeTokenReceivers = [...(nativeTokenSpending?.allowedRecipients || [])]
160
+ const nativeTokenSpendingPermissions = nativeTokenReceivers.map((receiver) => ({
161
+ target: receiver,
162
+ rules: [],
163
+ }))
164
+
165
+ return {
166
+ chainId: params.chainId,
167
+ valueLimit,
168
+ deadline,
169
+ permissions: [...params.permissions, ...nativeTokenSpendingPermissions],
170
+ }
171
+ }
172
+
127
173
  /**
128
174
  * Apply a template to a string.
129
175
  *