@0xsequence/dapp-client 0.0.0-20250910142613

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.
Files changed (43) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/CHANGELOG.md +11 -0
  3. package/LICENSE +202 -0
  4. package/README.md +238 -0
  5. package/dist/ChainSessionManager.d.ts +203 -0
  6. package/dist/ChainSessionManager.d.ts.map +1 -0
  7. package/dist/ChainSessionManager.js +742 -0
  8. package/dist/DappClient.d.ts +409 -0
  9. package/dist/DappClient.d.ts.map +1 -0
  10. package/dist/DappClient.js +667 -0
  11. package/dist/DappTransport.d.ts +47 -0
  12. package/dist/DappTransport.d.ts.map +1 -0
  13. package/dist/DappTransport.js +443 -0
  14. package/dist/index.d.ts +11 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +7 -0
  17. package/dist/types/index.d.ts +168 -0
  18. package/dist/types/index.d.ts.map +1 -0
  19. package/dist/types/index.js +25 -0
  20. package/dist/utils/constants.d.ts +6 -0
  21. package/dist/utils/constants.d.ts.map +1 -0
  22. package/dist/utils/constants.js +5 -0
  23. package/dist/utils/errors.d.ts +28 -0
  24. package/dist/utils/errors.d.ts.map +1 -0
  25. package/dist/utils/errors.js +54 -0
  26. package/dist/utils/index.d.ts +11 -0
  27. package/dist/utils/index.d.ts.map +1 -0
  28. package/dist/utils/index.js +135 -0
  29. package/dist/utils/storage.d.ts +64 -0
  30. package/dist/utils/storage.d.ts.map +1 -0
  31. package/dist/utils/storage.js +196 -0
  32. package/eslint.config.mjs +4 -0
  33. package/package.json +38 -0
  34. package/src/ChainSessionManager.ts +978 -0
  35. package/src/DappClient.ts +801 -0
  36. package/src/DappTransport.ts +518 -0
  37. package/src/index.ts +47 -0
  38. package/src/types/index.ts +218 -0
  39. package/src/utils/constants.ts +5 -0
  40. package/src/utils/errors.ts +62 -0
  41. package/src/utils/index.ts +158 -0
  42. package/src/utils/storage.ts +272 -0
  43. package/tsconfig.json +10 -0
@@ -0,0 +1,168 @@
1
+ import { Attestation, Payload } from '@0xsequence/wallet-primitives';
2
+ import { Signers } from '@0xsequence/wallet-core';
3
+ import { Address, Hex } from 'ox';
4
+ import type { TypedData } from 'ox/TypedData';
5
+ export declare const RequestActionType: {
6
+ readonly CREATE_NEW_SESSION: "createNewSession";
7
+ readonly ADD_EXPLICIT_SESSION: "addExplicitSession";
8
+ readonly MODIFY_EXPLICIT_SESSION: "modifyExplicitSession";
9
+ readonly SIGN_MESSAGE: "signMessage";
10
+ readonly SIGN_TYPED_DATA: "signTypedData";
11
+ readonly SEND_WALLET_TRANSACTION: "sendWalletTransaction";
12
+ };
13
+ export type LoginMethod = 'google' | 'apple' | 'email' | 'passkey' | 'mnemonic';
14
+ export interface GuardConfig {
15
+ url: string;
16
+ address: Address.Address;
17
+ }
18
+ export interface CreateNewSessionPayload {
19
+ sessionAddress: Address.Address;
20
+ origin: string;
21
+ permissions?: Signers.Session.ExplicitParams;
22
+ includeImplicitSession?: boolean;
23
+ preferredLoginMethod?: LoginMethod;
24
+ email?: string;
25
+ }
26
+ export interface AddExplicitSessionPayload {
27
+ sessionAddress: Address.Address;
28
+ permissions: Signers.Session.ExplicitParams;
29
+ preferredLoginMethod?: LoginMethod;
30
+ email?: string;
31
+ }
32
+ export interface ModifySessionPayload {
33
+ walletAddress: Address.Address;
34
+ sessionAddress: Address.Address;
35
+ permissions: Signers.Session.ExplicitParams;
36
+ }
37
+ export interface SignMessagePayload {
38
+ address: Address.Address;
39
+ message: string;
40
+ chainId: number;
41
+ }
42
+ export interface SignTypedDataPayload {
43
+ address: Address.Address;
44
+ typedData: TypedData;
45
+ chainId: number;
46
+ }
47
+ export type TransactionRequest = {
48
+ to: Address.Address;
49
+ value?: bigint;
50
+ data?: Hex.Hex;
51
+ gasLimit?: bigint;
52
+ };
53
+ export interface SendWalletTransactionPayload {
54
+ address: Address.Address;
55
+ transactionRequest: TransactionRequest;
56
+ chainId: number;
57
+ }
58
+ export interface ConnectSuccessResponsePayload {
59
+ walletAddress: string;
60
+ attestation?: Attestation.Attestation;
61
+ signature?: Hex.Hex;
62
+ userEmail?: string;
63
+ loginMethod?: LoginMethod;
64
+ guard?: GuardConfig;
65
+ }
66
+ export interface ModifySessionSuccessResponsePayload {
67
+ walletAddress: string;
68
+ sessionAddress: string;
69
+ }
70
+ export interface SignatureSuccessResponse {
71
+ signature: Hex.Hex;
72
+ walletAddress: string;
73
+ }
74
+ export interface SendWalletTransactionSuccessResponse {
75
+ transactionHash: Hex.Hex;
76
+ walletAddress: string;
77
+ }
78
+ export type WalletActionResponse = SignatureSuccessResponse | SendWalletTransactionSuccessResponse;
79
+ export interface ExplicitSessionResponsePayload {
80
+ walletAddress: string;
81
+ sessionAddress: string;
82
+ }
83
+ export type RandomPrivateKeyFn = () => Hex.Hex | Promise<Hex.Hex>;
84
+ type RequiredKeys = 'to' | 'data' | 'value';
85
+ export type Transaction = Pick<Payload.Call, RequiredKeys> & Partial<Omit<Payload.Call, RequiredKeys>>;
86
+ export type Session = {
87
+ address: Address.Address;
88
+ isImplicit: boolean;
89
+ permissions?: Signers.Session.ExplicitParams;
90
+ chainId?: number;
91
+ };
92
+ export type ChainSessionManagerEvent = 'sessionsUpdated' | 'explicitSessionResponse';
93
+ export type ExplicitSessionEventListener = (data: {
94
+ action: (typeof RequestActionType)['ADD_EXPLICIT_SESSION' | 'MODIFY_EXPLICIT_SESSION'];
95
+ response?: ExplicitSessionResponsePayload;
96
+ error?: any;
97
+ }) => void;
98
+ export type DappClientEventListener = (data?: any) => void;
99
+ export type DappClientWalletActionEventListener = (data: {
100
+ action: (typeof RequestActionType)['SIGN_MESSAGE' | 'SIGN_TYPED_DATA' | 'SEND_WALLET_TRANSACTION'];
101
+ response?: WalletActionResponse;
102
+ error?: any;
103
+ chainId: number;
104
+ }) => void;
105
+ export type DappClientExplicitSessionEventListener = (data: {
106
+ action: (typeof RequestActionType)['ADD_EXPLICIT_SESSION' | 'MODIFY_EXPLICIT_SESSION'];
107
+ response?: ExplicitSessionResponsePayload;
108
+ error?: any;
109
+ chainId: number;
110
+ }) => void;
111
+ export interface SequenceSessionStorage {
112
+ getItem(key: string): string | null | Promise<string | null>;
113
+ setItem(key: string, value: string): void | Promise<void>;
114
+ removeItem(key: string): void | Promise<void>;
115
+ }
116
+ export declare enum MessageType {
117
+ WALLET_OPENED = "WALLET_OPENED",
118
+ INIT = "INIT",
119
+ REQUEST = "REQUEST",
120
+ RESPONSE = "RESPONSE"
121
+ }
122
+ export declare enum TransportMode {
123
+ POPUP = "popup",
124
+ REDIRECT = "redirect"
125
+ }
126
+ export interface PopupModeOptions {
127
+ requestTimeoutMs?: number;
128
+ handshakeTimeoutMs?: number;
129
+ }
130
+ export interface TransportMessage<T = any> {
131
+ id: string;
132
+ type: MessageType;
133
+ sessionId?: string;
134
+ action?: string;
135
+ payload?: T;
136
+ error?: any;
137
+ }
138
+ export interface BaseRequest {
139
+ type: string;
140
+ }
141
+ export interface MessageSignatureRequest extends BaseRequest {
142
+ type: 'message_signature';
143
+ message: string;
144
+ address: Address.Address;
145
+ chainId: number;
146
+ }
147
+ export interface TypedDataSignatureRequest extends BaseRequest {
148
+ type: 'typed_data_signature';
149
+ typedData: unknown;
150
+ address: Address.Address;
151
+ chainId: number;
152
+ }
153
+ export declare const WalletSize: {
154
+ width: number;
155
+ height: number;
156
+ };
157
+ export interface PendingRequest {
158
+ resolve: (payload: any) => void;
159
+ reject: (error: any) => void;
160
+ timer: number;
161
+ action: string;
162
+ }
163
+ export interface SendRequestOptions {
164
+ timeout?: number;
165
+ path?: string;
166
+ }
167
+ export {};
168
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ // --- Public Interfaces and Constants ---
2
+ export const RequestActionType = {
3
+ CREATE_NEW_SESSION: 'createNewSession',
4
+ ADD_EXPLICIT_SESSION: 'addExplicitSession',
5
+ MODIFY_EXPLICIT_SESSION: 'modifyExplicitSession',
6
+ SIGN_MESSAGE: 'signMessage',
7
+ SIGN_TYPED_DATA: 'signTypedData',
8
+ SEND_WALLET_TRANSACTION: 'sendWalletTransaction',
9
+ };
10
+ export var MessageType;
11
+ (function (MessageType) {
12
+ MessageType["WALLET_OPENED"] = "WALLET_OPENED";
13
+ MessageType["INIT"] = "INIT";
14
+ MessageType["REQUEST"] = "REQUEST";
15
+ MessageType["RESPONSE"] = "RESPONSE";
16
+ })(MessageType || (MessageType = {}));
17
+ export var TransportMode;
18
+ (function (TransportMode) {
19
+ TransportMode["POPUP"] = "popup";
20
+ TransportMode["REDIRECT"] = "redirect";
21
+ })(TransportMode || (TransportMode = {}));
22
+ export const WalletSize = {
23
+ width: 380,
24
+ height: 600,
25
+ };
@@ -0,0 +1,6 @@
1
+ export declare const CACHE_DB_NAME = "sequence-cache";
2
+ export declare const NODES_URL = "https://nodes.sequence.app/{network}";
3
+ export declare const RELAYER_URL = "https://dev-{network}-relayer.sequence.app";
4
+ export declare const KEYMACHINE_URL = "https://v3-keymachine.sequence-dev.app";
5
+ export declare const VALUE_FORWARDER_ADDRESS = "0xABAAd93EeE2a569cF0632f39B10A9f5D734777ca";
6
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,mBAAmB,CAAA;AAC7C,eAAO,MAAM,SAAS,yCAAyC,CAAA;AAC/D,eAAO,MAAM,WAAW,+CAA+C,CAAA;AACvE,eAAO,MAAM,cAAc,2CAA2C,CAAA;AACtE,eAAO,MAAM,uBAAuB,+CAA+C,CAAA"}
@@ -0,0 +1,5 @@
1
+ export const CACHE_DB_NAME = 'sequence-cache';
2
+ export const NODES_URL = 'https://nodes.sequence.app/{network}';
3
+ export const RELAYER_URL = 'https://dev-{network}-relayer.sequence.app';
4
+ export const KEYMACHINE_URL = 'https://v3-keymachine.sequence-dev.app';
5
+ export const VALUE_FORWARDER_ADDRESS = '0xABAAd93EeE2a569cF0632f39B10A9f5D734777ca';
@@ -0,0 +1,28 @@
1
+ export declare class InitializationError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class SigningError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ export declare class TransactionError extends Error {
8
+ constructor(message: string);
9
+ }
10
+ export declare class ModifyExplicitSessionError extends Error {
11
+ constructor(message: string);
12
+ }
13
+ export declare class ConnectionError extends Error {
14
+ constructor(message: string);
15
+ }
16
+ export declare class AddExplicitSessionError extends Error {
17
+ constructor(message: string);
18
+ }
19
+ export declare class FeeOptionError extends Error {
20
+ constructor(message: string);
21
+ }
22
+ export declare class WalletRedirectError extends Error {
23
+ constructor(message: string);
24
+ }
25
+ export declare class SessionConfigError extends Error {
26
+ constructor(message: string);
27
+ }
28
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B"}
@@ -0,0 +1,54 @@
1
+ export class InitializationError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = 'InitializationError';
5
+ }
6
+ }
7
+ export class SigningError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = 'SigningError';
11
+ }
12
+ }
13
+ export class TransactionError extends Error {
14
+ constructor(message) {
15
+ super(message);
16
+ this.name = 'TransactionError';
17
+ }
18
+ }
19
+ export class ModifyExplicitSessionError extends Error {
20
+ constructor(message) {
21
+ super(message);
22
+ this.name = 'ModifyExplicitSessionError';
23
+ }
24
+ }
25
+ export class ConnectionError extends Error {
26
+ constructor(message) {
27
+ super(message);
28
+ this.name = 'ConnectionError';
29
+ }
30
+ }
31
+ export class AddExplicitSessionError extends Error {
32
+ constructor(message) {
33
+ super(message);
34
+ this.name = 'AddExplicitSessionError';
35
+ }
36
+ }
37
+ export class FeeOptionError extends Error {
38
+ constructor(message) {
39
+ super(message);
40
+ this.name = 'FeeOptionError';
41
+ }
42
+ }
43
+ export class WalletRedirectError extends Error {
44
+ constructor(message) {
45
+ super(message);
46
+ this.name = 'WalletRedirectError';
47
+ }
48
+ }
49
+ export class SessionConfigError extends Error {
50
+ constructor(message) {
51
+ super(message);
52
+ this.name = 'SessionConfigError';
53
+ }
54
+ }
@@ -0,0 +1,11 @@
1
+ import { Network } from '@0xsequence/wallet-primitives';
2
+ type JsonReplacer = (key: string, value: any) => any;
3
+ type JsonReviver = (key: string, value: any) => any;
4
+ export declare const jsonReplacers: JsonReplacer;
5
+ export declare const jsonRevivers: JsonReviver;
6
+ export declare const getNetwork: (chainId: Network.ChainId | bigint | number) => Network.Network;
7
+ export declare const getRpcUrl: (chainId: Network.ChainId | bigint | number, nodesUrl: string, projectAccessKey: string) => string;
8
+ export declare const getRelayerUrl: (chainId: Network.ChainId | bigint | number, relayerUrl: string) => string;
9
+ export declare const getExplorerUrl: (chainId: Network.ChainId | bigint | number, txHash: string) => string;
10
+ export {};
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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;AAIvD,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;AAwFnD,eAAO,MAAM,aAAa,cAAuD,CAAA;AAEjF,eAAO,MAAM,YAAY,aAAoD,CAAA;AAuB7E,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"}
@@ -0,0 +1,135 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { Network } from '@0xsequence/wallet-primitives';
3
+ import { Bytes, Hex } from 'ox';
4
+ /**
5
+ * Creates a single JSON replacer by chaining multiple replacers.
6
+ * The first replacer to transform a value wins.
7
+ */
8
+ function chainReplacers(replacers) {
9
+ return function (key, value) {
10
+ for (const replacer of replacers) {
11
+ const replacedValue = replacer(key, value);
12
+ if (replacedValue !== value) {
13
+ return replacedValue;
14
+ }
15
+ }
16
+ return value;
17
+ };
18
+ }
19
+ /**
20
+ * Creates a single JSON reviver by chaining multiple revivers.
21
+ * The output of one reviver becomes the input for the next.
22
+ */
23
+ function chainRevivers(revivers) {
24
+ return function (key, value) {
25
+ let currentValue = value;
26
+ for (const reviver of revivers) {
27
+ currentValue = reviver(key, currentValue);
28
+ }
29
+ return currentValue;
30
+ };
31
+ }
32
+ /**
33
+ * A JSON replacer that serializes BigInt values into a structured object.
34
+ */
35
+ const bigIntReplacer = (_key, value) => {
36
+ if (typeof value === 'bigint') {
37
+ return {
38
+ _isBigInt: true,
39
+ data: value.toString(),
40
+ };
41
+ }
42
+ return value;
43
+ };
44
+ /**
45
+ * A JSON replacer that serializes Uint8Array values into a structured object.
46
+ */
47
+ const uint8ArrayReplacer = (_key, value) => {
48
+ if (value instanceof Uint8Array) {
49
+ return {
50
+ _isUint8Array: true,
51
+ data: Hex.from(value),
52
+ };
53
+ }
54
+ return value;
55
+ };
56
+ /**
57
+ * A JSON reviver that deserializes a structured object back into a BigInt.
58
+ */
59
+ const bigIntReviver = (key, value) => {
60
+ if (value !== null && typeof value === 'object' && value._isBigInt === true && typeof value.data === 'string') {
61
+ try {
62
+ return BigInt(value.data);
63
+ }
64
+ catch (e) {
65
+ console.error(`Failed to revive BigInt for key "${key}":`, e);
66
+ return value; // Return original object if revival fails
67
+ }
68
+ }
69
+ return value;
70
+ };
71
+ /**
72
+ * A JSON reviver that deserializes a structured object back into a Uint8Array.
73
+ */
74
+ const uint8ArrayReviver = (key, value) => {
75
+ if (value !== null && typeof value === 'object' && value._isUint8Array === true && typeof value.data === 'string') {
76
+ try {
77
+ return Bytes.from(value.data);
78
+ }
79
+ catch (e) {
80
+ console.error(`Failed to revive Uint8Array for key "${key}":`, e);
81
+ return value; // Return original object if revival fails
82
+ }
83
+ }
84
+ return value;
85
+ };
86
+ export const jsonReplacers = chainReplacers([bigIntReplacer, uint8ArrayReplacer]);
87
+ export const jsonRevivers = chainRevivers([bigIntReviver, uint8ArrayReviver]);
88
+ /**
89
+ * Apply a template to a string.
90
+ *
91
+ * Example:
92
+ * applyTemplate('https://v3-{network}-relayer.sequence.app', { network: 'arbitrum' })
93
+ * returns 'https://v3-arbitrum-relayer.sequence.app'
94
+ *
95
+ * @param template - The template to apply.
96
+ * @param values - The values to apply to the template.
97
+ * @returns The template with the values applied.
98
+ */
99
+ function applyTemplate(template, values) {
100
+ return template.replace(/{(.*?)}/g, (_, key) => {
101
+ const value = values[key];
102
+ if (value === undefined) {
103
+ throw new Error(`Missing template value for ${template}: ${key}`);
104
+ }
105
+ return value;
106
+ });
107
+ }
108
+ export const getNetwork = (chainId) => {
109
+ const network = Network.getNetworkFromChainId(chainId);
110
+ if (!network) {
111
+ throw new Error(`Network with chainId ${chainId} not found`);
112
+ }
113
+ return network;
114
+ };
115
+ export const getRpcUrl = (chainId, nodesUrl, projectAccessKey) => {
116
+ const network = getNetwork(chainId);
117
+ let url = applyTemplate(nodesUrl, { network: network.name });
118
+ if (nodesUrl.includes('sequence')) {
119
+ url = `${url}/${projectAccessKey}`;
120
+ }
121
+ return url;
122
+ };
123
+ export const getRelayerUrl = (chainId, relayerUrl) => {
124
+ const network = getNetwork(chainId);
125
+ const url = applyTemplate(relayerUrl, { network: network.name });
126
+ return url;
127
+ };
128
+ export const getExplorerUrl = (chainId, txHash) => {
129
+ const network = getNetwork(chainId);
130
+ const explorerUrl = network.blockExplorer?.url;
131
+ if (!explorerUrl) {
132
+ throw new Error(`Explorer URL not found for chainId ${chainId}`);
133
+ }
134
+ return `${explorerUrl}/tx/${txHash}`;
135
+ };
@@ -0,0 +1,64 @@
1
+ import { Attestation } from '@0xsequence/wallet-primitives';
2
+ import { Address, Hex } from 'ox';
3
+ import { AddExplicitSessionPayload, CreateNewSessionPayload, ModifySessionPayload, LoginMethod, SignMessagePayload, SignTypedDataPayload, GuardConfig, SendWalletTransactionPayload } from '../types/index.js';
4
+ export interface ExplicitSessionData {
5
+ pk: Hex.Hex;
6
+ walletAddress: Address.Address;
7
+ chainId: number;
8
+ loginMethod?: LoginMethod;
9
+ userEmail?: string;
10
+ guard?: GuardConfig;
11
+ }
12
+ export interface ImplicitSessionData {
13
+ pk: Hex.Hex;
14
+ walletAddress: Address.Address;
15
+ attestation: Attestation.Attestation;
16
+ identitySignature: Hex.Hex;
17
+ chainId: number;
18
+ loginMethod?: LoginMethod;
19
+ userEmail?: string;
20
+ guard?: GuardConfig;
21
+ }
22
+ export type PendingPayload = CreateNewSessionPayload | AddExplicitSessionPayload | ModifySessionPayload | SignMessagePayload | SignTypedDataPayload | SendWalletTransactionPayload;
23
+ export interface PendingRequestContext {
24
+ chainId: number;
25
+ action: string;
26
+ payload: PendingPayload;
27
+ }
28
+ export interface SequenceStorage {
29
+ setPendingRedirectRequest(isPending: boolean): Promise<void>;
30
+ isRedirectRequestPending(): Promise<boolean>;
31
+ saveTempSessionPk(pk: Hex.Hex): Promise<void>;
32
+ getAndClearTempSessionPk(): Promise<Hex.Hex | null>;
33
+ savePendingRequest(context: PendingRequestContext): Promise<void>;
34
+ getAndClearPendingRequest(): Promise<PendingRequestContext | null>;
35
+ peekPendingRequest(): Promise<PendingRequestContext | null>;
36
+ saveExplicitSession(sessionData: ExplicitSessionData): Promise<void>;
37
+ getExplicitSessions(): Promise<ExplicitSessionData[]>;
38
+ clearExplicitSessions(): Promise<void>;
39
+ saveImplicitSession(sessionData: ImplicitSessionData): Promise<void>;
40
+ getImplicitSession(): Promise<ImplicitSessionData | null>;
41
+ clearImplicitSession(): Promise<void>;
42
+ clearAllData(): Promise<void>;
43
+ }
44
+ export declare class WebStorage implements SequenceStorage {
45
+ private openDB;
46
+ private getIDBItem;
47
+ private setIDBItem;
48
+ private deleteIDBItem;
49
+ setPendingRedirectRequest(isPending: boolean): Promise<void>;
50
+ isRedirectRequestPending(): Promise<boolean>;
51
+ saveTempSessionPk(pk: Hex.Hex): Promise<void>;
52
+ getAndClearTempSessionPk(): Promise<Hex.Hex | null>;
53
+ savePendingRequest(context: PendingRequestContext): Promise<void>;
54
+ getAndClearPendingRequest(): Promise<PendingRequestContext | null>;
55
+ peekPendingRequest(): Promise<PendingRequestContext | null>;
56
+ saveExplicitSession(sessionData: ExplicitSessionData): Promise<void>;
57
+ getExplicitSessions(): Promise<ExplicitSessionData[]>;
58
+ clearExplicitSessions(): Promise<void>;
59
+ saveImplicitSession(sessionData: ImplicitSessionData): Promise<void>;
60
+ getImplicitSession(): Promise<ImplicitSessionData | null>;
61
+ clearImplicitSession(): Promise<void>;
62
+ clearAllData(): Promise<void>;
63
+ }
64
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/utils/storage.ts"],"names":[],"mappings":"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"}