@0xsequence/wallet-wdk 0.0.0-20250520201059
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/.env.test +3 -0
- package/.turbo/turbo-build.log +5 -0
- package/CHANGELOG.md +11 -0
- package/LICENSE +202 -0
- package/dist/dbs/auth-commitments.d.ts +17 -0
- package/dist/dbs/auth-commitments.d.ts.map +1 -0
- package/dist/dbs/auth-commitments.js +13 -0
- package/dist/dbs/auth-keys.d.ts +19 -0
- package/dist/dbs/auth-keys.d.ts.map +1 -0
- package/dist/dbs/auth-keys.js +67 -0
- package/dist/dbs/generic.d.ts +33 -0
- package/dist/dbs/generic.d.ts.map +1 -0
- package/dist/dbs/generic.js +170 -0
- package/dist/dbs/index.d.ts +12 -0
- package/dist/dbs/index.d.ts.map +1 -0
- package/dist/dbs/index.js +8 -0
- package/dist/dbs/messages.d.ts +6 -0
- package/dist/dbs/messages.d.ts.map +1 -0
- package/dist/dbs/messages.js +13 -0
- package/dist/dbs/recovery.d.ts +6 -0
- package/dist/dbs/recovery.d.ts.map +1 -0
- package/dist/dbs/recovery.js +13 -0
- package/dist/dbs/signatures.d.ts +6 -0
- package/dist/dbs/signatures.d.ts.map +1 -0
- package/dist/dbs/signatures.js +13 -0
- package/dist/dbs/transactions.d.ts +6 -0
- package/dist/dbs/transactions.d.ts.map +1 -0
- package/dist/dbs/transactions.js +13 -0
- package/dist/dbs/wallets.d.ts +6 -0
- package/dist/dbs/wallets.d.ts.map +1 -0
- package/dist/dbs/wallets.js +13 -0
- package/dist/identity/signer.d.ts +17 -0
- package/dist/identity/signer.d.ts.map +1 -0
- package/dist/identity/signer.js +58 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/sequence/cron.d.ts +19 -0
- package/dist/sequence/cron.d.ts.map +1 -0
- package/dist/sequence/cron.js +118 -0
- package/dist/sequence/devices.d.ts +14 -0
- package/dist/sequence/devices.d.ts.map +1 -0
- package/dist/sequence/devices.js +43 -0
- package/dist/sequence/handlers/authcode-pkce.d.ts +14 -0
- package/dist/sequence/handlers/authcode-pkce.d.ts.map +1 -0
- package/dist/sequence/handlers/authcode-pkce.js +48 -0
- package/dist/sequence/handlers/authcode.d.ts +25 -0
- package/dist/sequence/handlers/authcode.d.ts.map +1 -0
- package/dist/sequence/handlers/authcode.js +91 -0
- package/dist/sequence/handlers/devices.d.ts +14 -0
- package/dist/sequence/handlers/devices.d.ts.map +1 -0
- package/dist/sequence/handlers/devices.js +39 -0
- package/dist/sequence/handlers/handler.d.ts +8 -0
- package/dist/sequence/handlers/handler.d.ts.map +1 -0
- package/dist/sequence/handlers/handler.js +1 -0
- package/dist/sequence/handlers/identity.d.ts +21 -0
- package/dist/sequence/handlers/identity.d.ts.map +1 -0
- package/dist/sequence/handlers/identity.js +86 -0
- package/dist/sequence/handlers/index.d.ts +7 -0
- package/dist/sequence/handlers/index.d.ts.map +1 -0
- package/dist/sequence/handlers/index.js +5 -0
- package/dist/sequence/handlers/mnemonic.d.ts +19 -0
- package/dist/sequence/handlers/mnemonic.d.ts.map +1 -0
- package/dist/sequence/handlers/mnemonic.js +67 -0
- package/dist/sequence/handlers/otp.d.ts +20 -0
- package/dist/sequence/handlers/otp.d.ts.map +1 -0
- package/dist/sequence/handlers/otp.js +83 -0
- package/dist/sequence/handlers/passkeys.d.ts +17 -0
- package/dist/sequence/handlers/passkeys.d.ts.map +1 -0
- package/dist/sequence/handlers/passkeys.js +63 -0
- package/dist/sequence/handlers/recovery.d.ts +15 -0
- package/dist/sequence/handlers/recovery.d.ts.map +1 -0
- package/dist/sequence/handlers/recovery.js +72 -0
- package/dist/sequence/index.d.ts +12 -0
- package/dist/sequence/index.d.ts.map +1 -0
- package/dist/sequence/index.js +9 -0
- package/dist/sequence/logger.d.ts +7 -0
- package/dist/sequence/logger.d.ts.map +1 -0
- package/dist/sequence/logger.js +11 -0
- package/dist/sequence/manager.d.ts +287 -0
- package/dist/sequence/manager.d.ts.map +1 -0
- package/dist/sequence/manager.js +356 -0
- package/dist/sequence/messages.d.ts +18 -0
- package/dist/sequence/messages.d.ts.map +1 -0
- package/dist/sequence/messages.js +115 -0
- package/dist/sequence/recovery.d.ts +30 -0
- package/dist/sequence/recovery.d.ts.map +1 -0
- package/dist/sequence/recovery.js +314 -0
- package/dist/sequence/sessions.d.ts +26 -0
- package/dist/sequence/sessions.d.ts.map +1 -0
- package/dist/sequence/sessions.js +169 -0
- package/dist/sequence/signatures.d.ts +21 -0
- package/dist/sequence/signatures.d.ts.map +1 -0
- package/dist/sequence/signatures.js +192 -0
- package/dist/sequence/signers.d.ts +14 -0
- package/dist/sequence/signers.d.ts.map +1 -0
- package/dist/sequence/signers.js +74 -0
- package/dist/sequence/transactions.d.ts +26 -0
- package/dist/sequence/transactions.d.ts.map +1 -0
- package/dist/sequence/transactions.js +201 -0
- package/dist/sequence/types/index.d.ts +9 -0
- package/dist/sequence/types/index.d.ts.map +1 -0
- package/dist/sequence/types/index.js +2 -0
- package/dist/sequence/types/message-request.d.ts +23 -0
- package/dist/sequence/types/message-request.d.ts.map +1 -0
- package/dist/sequence/types/message-request.js +1 -0
- package/dist/sequence/types/recovery.d.ts +15 -0
- package/dist/sequence/types/recovery.d.ts.map +1 -0
- package/dist/sequence/types/recovery.js +1 -0
- package/dist/sequence/types/signature-request.d.ts +76 -0
- package/dist/sequence/types/signature-request.d.ts.map +1 -0
- package/dist/sequence/types/signature-request.js +11 -0
- package/dist/sequence/types/signer.d.ts +28 -0
- package/dist/sequence/types/signer.d.ts.map +1 -0
- package/dist/sequence/types/signer.js +10 -0
- package/dist/sequence/types/transaction-request.d.ts +41 -0
- package/dist/sequence/types/transaction-request.d.ts.map +1 -0
- package/dist/sequence/types/transaction-request.js +1 -0
- package/dist/sequence/types/wallet.d.ts +21 -0
- package/dist/sequence/types/wallet.d.ts.map +1 -0
- package/dist/sequence/types/wallet.js +1 -0
- package/dist/sequence/wallets.d.ts +121 -0
- package/dist/sequence/wallets.d.ts.map +1 -0
- package/dist/sequence/wallets.js +632 -0
- package/package.json +40 -0
- package/src/dbs/auth-commitments.ts +26 -0
- package/src/dbs/auth-keys.ts +85 -0
- package/src/dbs/generic.ts +194 -0
- package/src/dbs/index.ts +13 -0
- package/src/dbs/messages.ts +16 -0
- package/src/dbs/recovery.ts +15 -0
- package/src/dbs/signatures.ts +15 -0
- package/src/dbs/transactions.ts +16 -0
- package/src/dbs/wallets.ts +16 -0
- package/src/identity/signer.ts +78 -0
- package/src/index.ts +2 -0
- package/src/sequence/cron.ts +134 -0
- package/src/sequence/devices.ts +53 -0
- package/src/sequence/handlers/authcode-pkce.ts +70 -0
- package/src/sequence/handlers/authcode.ts +116 -0
- package/src/sequence/handlers/devices.ts +53 -0
- package/src/sequence/handlers/handler.ts +14 -0
- package/src/sequence/handlers/identity.ts +101 -0
- package/src/sequence/handlers/index.ts +6 -0
- package/src/sequence/handlers/mnemonic.ts +88 -0
- package/src/sequence/handlers/otp.ts +107 -0
- package/src/sequence/handlers/passkeys.ts +84 -0
- package/src/sequence/handlers/recovery.ts +88 -0
- package/src/sequence/index.ts +25 -0
- package/src/sequence/logger.ts +11 -0
- package/src/sequence/manager.ts +634 -0
- package/src/sequence/messages.ts +146 -0
- package/src/sequence/recovery.ts +429 -0
- package/src/sequence/sessions.ts +238 -0
- package/src/sequence/signatures.ts +263 -0
- package/src/sequence/signers.ts +88 -0
- package/src/sequence/transactions.ts +281 -0
- package/src/sequence/types/index.ts +27 -0
- package/src/sequence/types/message-request.ts +26 -0
- package/src/sequence/types/recovery.ts +15 -0
- package/src/sequence/types/signature-request.ts +89 -0
- package/src/sequence/types/signer.ts +32 -0
- package/src/sequence/types/transaction-request.ts +47 -0
- package/src/sequence/types/wallet.ts +24 -0
- package/src/sequence/wallets.ts +853 -0
- package/test/constants.ts +62 -0
- package/test/recovery.test.ts +211 -0
- package/test/sessions.test.ts +324 -0
- package/test/setup.ts +63 -0
- package/test/transactions.test.ts +464 -0
- package/test/wallets.test.ts +381 -0
- package/tsconfig.json +10 -0
- package/vitest.config.ts +11 -0
|
@@ -0,0 +1,634 @@
|
|
|
1
|
+
import { Signers as CoreSigners, Relayer, State } from '@0xsequence/wallet-core'
|
|
2
|
+
|
|
3
|
+
import { IdentityInstrument } from '@0xsequence/identity-instrument'
|
|
4
|
+
import { createAttestationVerifyingFetch } from '@0xsequence/tee-verifier'
|
|
5
|
+
import {
|
|
6
|
+
Attestation,
|
|
7
|
+
Config,
|
|
8
|
+
Constants,
|
|
9
|
+
Context,
|
|
10
|
+
Extensions,
|
|
11
|
+
Network,
|
|
12
|
+
Payload,
|
|
13
|
+
Signature as SequenceSignature,
|
|
14
|
+
SessionConfig,
|
|
15
|
+
} from '@0xsequence/wallet-primitives'
|
|
16
|
+
import { Address } from 'ox'
|
|
17
|
+
import * as Db from '../dbs/index.js'
|
|
18
|
+
import { Cron } from './cron.js'
|
|
19
|
+
import { Devices } from './devices.js'
|
|
20
|
+
import { AuthCodeHandler } from './handlers/authcode.js'
|
|
21
|
+
import {
|
|
22
|
+
AuthCodePkceHandler,
|
|
23
|
+
DevicesHandler,
|
|
24
|
+
Handler,
|
|
25
|
+
MnemonicHandler,
|
|
26
|
+
OtpHandler,
|
|
27
|
+
PasskeysHandler,
|
|
28
|
+
} from './handlers/index.js'
|
|
29
|
+
import { RecoveryHandler } from './handlers/recovery.js'
|
|
30
|
+
import { Logger } from './logger.js'
|
|
31
|
+
import { Messages } from './messages.js'
|
|
32
|
+
import { Recovery } from './recovery.js'
|
|
33
|
+
import { AuthorizeImplicitSessionArgs, Sessions } from './sessions.js'
|
|
34
|
+
import { Signatures } from './signatures.js'
|
|
35
|
+
import { Signers } from './signers.js'
|
|
36
|
+
import { Transactions } from './transactions.js'
|
|
37
|
+
import { BaseSignatureRequest, QueuedRecoveryPayload, SignatureRequest, Wallet } from './types/index.js'
|
|
38
|
+
import { Message, MessageRequest } from './types/message-request.js'
|
|
39
|
+
import { Kinds, RecoverySigner } from './types/signer.js'
|
|
40
|
+
import { Transaction, TransactionRequest } from './types/transaction-request.js'
|
|
41
|
+
import { WalletSelectionUiHandler } from './types/wallet.js'
|
|
42
|
+
import { CompleteRedirectArgs, LoginArgs, SignupArgs, StartSignUpWithRedirectArgs, Wallets } from './wallets.js'
|
|
43
|
+
|
|
44
|
+
export type ManagerOptions = {
|
|
45
|
+
verbose?: boolean
|
|
46
|
+
|
|
47
|
+
extensions?: Extensions.Extensions
|
|
48
|
+
context?: Context.Context
|
|
49
|
+
guest?: Address.Address
|
|
50
|
+
|
|
51
|
+
encryptedPksDb?: CoreSigners.Pk.Encrypted.EncryptedPksDb
|
|
52
|
+
managerDb?: Db.Wallets
|
|
53
|
+
transactionsDb?: Db.Transactions
|
|
54
|
+
signaturesDb?: Db.Signatures
|
|
55
|
+
messagesDb?: Db.Messages
|
|
56
|
+
authCommitmentsDb?: Db.AuthCommitments
|
|
57
|
+
authKeysDb?: Db.AuthKeys
|
|
58
|
+
recoveryDb?: Db.Recovery
|
|
59
|
+
|
|
60
|
+
dbPruningInterval?: number
|
|
61
|
+
|
|
62
|
+
stateProvider?: State.Provider
|
|
63
|
+
networks?: Network.Network[]
|
|
64
|
+
relayers?: Relayer.Relayer[] | (() => Relayer.Relayer[])
|
|
65
|
+
|
|
66
|
+
defaultGuardTopology?: Config.Topology
|
|
67
|
+
defaultRecoverySettings?: RecoverySettings
|
|
68
|
+
|
|
69
|
+
identity?: {
|
|
70
|
+
url?: string
|
|
71
|
+
fetch?: typeof window.fetch
|
|
72
|
+
verifyAttestation?: boolean
|
|
73
|
+
expectedPcr0?: string[]
|
|
74
|
+
email?: {
|
|
75
|
+
enabled: boolean
|
|
76
|
+
}
|
|
77
|
+
google?: {
|
|
78
|
+
enabled: boolean
|
|
79
|
+
clientId: string
|
|
80
|
+
}
|
|
81
|
+
apple?: {
|
|
82
|
+
enabled: boolean
|
|
83
|
+
clientId: string
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export const ManagerOptionsDefaults = {
|
|
89
|
+
verbose: false,
|
|
90
|
+
|
|
91
|
+
extensions: Extensions.Dev1,
|
|
92
|
+
context: Context.Dev1,
|
|
93
|
+
guest: Constants.DefaultGuest,
|
|
94
|
+
|
|
95
|
+
encryptedPksDb: new CoreSigners.Pk.Encrypted.EncryptedPksDb(),
|
|
96
|
+
managerDb: new Db.Wallets(),
|
|
97
|
+
signaturesDb: new Db.Signatures(),
|
|
98
|
+
transactionsDb: new Db.Transactions(),
|
|
99
|
+
messagesDb: new Db.Messages(),
|
|
100
|
+
authCommitmentsDb: new Db.AuthCommitments(),
|
|
101
|
+
recoveryDb: new Db.Recovery(),
|
|
102
|
+
authKeysDb: new Db.AuthKeys(),
|
|
103
|
+
|
|
104
|
+
dbPruningInterval: 1000 * 60 * 60 * 24, // 24 hours
|
|
105
|
+
|
|
106
|
+
stateProvider: new State.Local.Provider(new State.Local.IndexedDbStore()),
|
|
107
|
+
networks: Network.All,
|
|
108
|
+
relayers: () => [Relayer.Local.LocalRelayer.createFromWindow(window)].filter((r) => r !== undefined),
|
|
109
|
+
|
|
110
|
+
defaultGuardTopology: {
|
|
111
|
+
// TODO: Move this somewhere else
|
|
112
|
+
type: 'signer',
|
|
113
|
+
address: '0xf71eC72C8C03a0857DD7601ACeF1e42b85983e99',
|
|
114
|
+
weight: 1n,
|
|
115
|
+
} as Config.SignerLeaf,
|
|
116
|
+
|
|
117
|
+
defaultSessionsTopology: {
|
|
118
|
+
// TODO: Move this somewhere else
|
|
119
|
+
type: 'sapient-signer',
|
|
120
|
+
address: Constants.DefaultSessionManager,
|
|
121
|
+
weight: 10n,
|
|
122
|
+
} as Omit<Config.SapientSignerLeaf, 'imageHash'>,
|
|
123
|
+
|
|
124
|
+
defaultRecoverySettings: {
|
|
125
|
+
requiredDeltaTime: 2592000n, // 30 days (in seconds)
|
|
126
|
+
minTimestamp: 0n,
|
|
127
|
+
},
|
|
128
|
+
|
|
129
|
+
identity: {
|
|
130
|
+
// TODO: change to prod url once deployed
|
|
131
|
+
url: 'https://dev-identity.sequence-dev.app',
|
|
132
|
+
fetch: window.fetch,
|
|
133
|
+
verifyAttestation: true,
|
|
134
|
+
email: {
|
|
135
|
+
enabled: false,
|
|
136
|
+
},
|
|
137
|
+
google: {
|
|
138
|
+
enabled: false,
|
|
139
|
+
clientId: '',
|
|
140
|
+
},
|
|
141
|
+
apple: {
|
|
142
|
+
enabled: false,
|
|
143
|
+
clientId: '',
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export const CreateWalletOptionsDefaults = {
|
|
149
|
+
useGuard: false,
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export function applyManagerOptionsDefaults(options?: ManagerOptions) {
|
|
153
|
+
return {
|
|
154
|
+
...ManagerOptionsDefaults,
|
|
155
|
+
...options,
|
|
156
|
+
identity: { ...ManagerOptionsDefaults.identity, ...options?.identity },
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export type RecoverySettings = {
|
|
161
|
+
requiredDeltaTime: bigint
|
|
162
|
+
minTimestamp: bigint
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export type Databases = {
|
|
166
|
+
readonly encryptedPks: CoreSigners.Pk.Encrypted.EncryptedPksDb
|
|
167
|
+
readonly manager: Db.Wallets
|
|
168
|
+
readonly signatures: Db.Signatures
|
|
169
|
+
readonly messages: Db.Messages
|
|
170
|
+
readonly transactions: Db.Transactions
|
|
171
|
+
readonly authCommitments: Db.AuthCommitments
|
|
172
|
+
readonly authKeys: Db.AuthKeys
|
|
173
|
+
readonly recovery: Db.Recovery
|
|
174
|
+
|
|
175
|
+
readonly pruningInterval: number
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export type Sequence = {
|
|
179
|
+
readonly context: Context.Context
|
|
180
|
+
readonly extensions: Extensions.Extensions
|
|
181
|
+
readonly guest: Address.Address
|
|
182
|
+
|
|
183
|
+
readonly stateProvider: State.Provider
|
|
184
|
+
|
|
185
|
+
readonly networks: Network.Network[]
|
|
186
|
+
readonly relayers: Relayer.Relayer[]
|
|
187
|
+
|
|
188
|
+
readonly defaultGuardTopology: Config.Topology
|
|
189
|
+
readonly defaultSessionsTopology: Omit<Config.SapientSignerLeaf, 'imageHash'>
|
|
190
|
+
readonly defaultRecoverySettings: RecoverySettings
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export type Modules = {
|
|
194
|
+
readonly logger: Logger
|
|
195
|
+
readonly devices: Devices
|
|
196
|
+
readonly wallets: Wallets
|
|
197
|
+
readonly sessions: Sessions
|
|
198
|
+
readonly signers: Signers
|
|
199
|
+
readonly signatures: Signatures
|
|
200
|
+
readonly transactions: Transactions
|
|
201
|
+
readonly messages: Messages
|
|
202
|
+
readonly recovery: Recovery
|
|
203
|
+
readonly cron: Cron
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export type Shared = {
|
|
207
|
+
readonly verbose: boolean
|
|
208
|
+
|
|
209
|
+
readonly sequence: Sequence
|
|
210
|
+
readonly databases: Databases
|
|
211
|
+
|
|
212
|
+
readonly handlers: Map<string, Handler>
|
|
213
|
+
|
|
214
|
+
modules: Modules
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export class Manager {
|
|
218
|
+
private readonly shared: Shared
|
|
219
|
+
|
|
220
|
+
private readonly mnemonicHandler: MnemonicHandler
|
|
221
|
+
private readonly devicesHandler: DevicesHandler
|
|
222
|
+
private readonly passkeysHandler: PasskeysHandler
|
|
223
|
+
private readonly recoveryHandler: RecoveryHandler
|
|
224
|
+
|
|
225
|
+
private readonly otpHandler?: OtpHandler
|
|
226
|
+
|
|
227
|
+
constructor(options?: ManagerOptions) {
|
|
228
|
+
const ops = applyManagerOptionsDefaults(options)
|
|
229
|
+
|
|
230
|
+
const shared: Shared = {
|
|
231
|
+
verbose: ops.verbose,
|
|
232
|
+
|
|
233
|
+
sequence: {
|
|
234
|
+
context: ops.context,
|
|
235
|
+
extensions: ops.extensions,
|
|
236
|
+
guest: ops.guest,
|
|
237
|
+
|
|
238
|
+
stateProvider: ops.stateProvider,
|
|
239
|
+
networks: ops.networks,
|
|
240
|
+
relayers: typeof ops.relayers === 'function' ? ops.relayers() : ops.relayers,
|
|
241
|
+
|
|
242
|
+
defaultGuardTopology: ops.defaultGuardTopology,
|
|
243
|
+
defaultSessionsTopology: ops.defaultSessionsTopology,
|
|
244
|
+
defaultRecoverySettings: ops.defaultRecoverySettings,
|
|
245
|
+
},
|
|
246
|
+
|
|
247
|
+
databases: {
|
|
248
|
+
encryptedPks: ops.encryptedPksDb,
|
|
249
|
+
manager: ops.managerDb,
|
|
250
|
+
signatures: ops.signaturesDb,
|
|
251
|
+
transactions: ops.transactionsDb,
|
|
252
|
+
messages: ops.messagesDb,
|
|
253
|
+
authCommitments: ops.authCommitmentsDb,
|
|
254
|
+
authKeys: ops.authKeysDb,
|
|
255
|
+
recovery: ops.recoveryDb,
|
|
256
|
+
|
|
257
|
+
pruningInterval: ops.dbPruningInterval,
|
|
258
|
+
},
|
|
259
|
+
|
|
260
|
+
modules: {} as any,
|
|
261
|
+
handlers: new Map(),
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
const modules: Modules = {
|
|
265
|
+
cron: new Cron(shared),
|
|
266
|
+
logger: new Logger(shared),
|
|
267
|
+
devices: new Devices(shared),
|
|
268
|
+
wallets: new Wallets(shared),
|
|
269
|
+
sessions: new Sessions(shared),
|
|
270
|
+
signers: new Signers(shared),
|
|
271
|
+
signatures: new Signatures(shared),
|
|
272
|
+
transactions: new Transactions(shared),
|
|
273
|
+
messages: new Messages(shared),
|
|
274
|
+
recovery: new Recovery(shared),
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
this.devicesHandler = new DevicesHandler(modules.signatures, modules.devices)
|
|
278
|
+
shared.handlers.set(Kinds.LocalDevice, this.devicesHandler)
|
|
279
|
+
|
|
280
|
+
this.passkeysHandler = new PasskeysHandler(
|
|
281
|
+
modules.signatures,
|
|
282
|
+
shared.sequence.extensions,
|
|
283
|
+
shared.sequence.stateProvider,
|
|
284
|
+
)
|
|
285
|
+
shared.handlers.set(Kinds.LoginPasskey, this.passkeysHandler)
|
|
286
|
+
|
|
287
|
+
this.mnemonicHandler = new MnemonicHandler(modules.signatures)
|
|
288
|
+
shared.handlers.set(Kinds.LoginMnemonic, this.mnemonicHandler)
|
|
289
|
+
|
|
290
|
+
this.recoveryHandler = new RecoveryHandler(modules.signatures, modules.recovery)
|
|
291
|
+
shared.handlers.set(Kinds.Recovery, this.recoveryHandler)
|
|
292
|
+
|
|
293
|
+
const verifyingFetch = ops.identity.verifyAttestation
|
|
294
|
+
? createAttestationVerifyingFetch({
|
|
295
|
+
fetch: ops.identity.fetch,
|
|
296
|
+
expectedPCRs: ops.identity.expectedPcr0 ? new Map([[0, ops.identity.expectedPcr0]]) : undefined,
|
|
297
|
+
logTiming: true,
|
|
298
|
+
})
|
|
299
|
+
: ops.identity.fetch
|
|
300
|
+
const identityInstrument = new IdentityInstrument(ops.identity.url, verifyingFetch)
|
|
301
|
+
|
|
302
|
+
if (ops.identity.email?.enabled) {
|
|
303
|
+
this.otpHandler = new OtpHandler(identityInstrument, modules.signatures, shared.databases.authKeys)
|
|
304
|
+
shared.handlers.set(Kinds.LoginEmailOtp, this.otpHandler)
|
|
305
|
+
}
|
|
306
|
+
if (ops.identity.google?.enabled) {
|
|
307
|
+
shared.handlers.set(
|
|
308
|
+
Kinds.LoginGooglePkce,
|
|
309
|
+
new AuthCodePkceHandler(
|
|
310
|
+
'google-pkce',
|
|
311
|
+
'https://accounts.google.com',
|
|
312
|
+
ops.identity.google.clientId,
|
|
313
|
+
identityInstrument,
|
|
314
|
+
modules.signatures,
|
|
315
|
+
shared.databases.authCommitments,
|
|
316
|
+
shared.databases.authKeys,
|
|
317
|
+
),
|
|
318
|
+
)
|
|
319
|
+
}
|
|
320
|
+
if (ops.identity.apple?.enabled) {
|
|
321
|
+
shared.handlers.set(
|
|
322
|
+
Kinds.LoginApple,
|
|
323
|
+
new AuthCodeHandler(
|
|
324
|
+
'apple',
|
|
325
|
+
'https://appleid.apple.com',
|
|
326
|
+
ops.identity.apple.clientId,
|
|
327
|
+
identityInstrument,
|
|
328
|
+
modules.signatures,
|
|
329
|
+
shared.databases.authCommitments,
|
|
330
|
+
shared.databases.authKeys,
|
|
331
|
+
),
|
|
332
|
+
)
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
shared.modules = modules
|
|
336
|
+
this.shared = shared
|
|
337
|
+
|
|
338
|
+
// Initialize modules
|
|
339
|
+
for (const module of Object.values(modules)) {
|
|
340
|
+
if ('initialize' in module && typeof module.initialize === 'function') {
|
|
341
|
+
module.initialize()
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// Wallets
|
|
347
|
+
|
|
348
|
+
public async startSignUpWithRedirect(args: StartSignUpWithRedirectArgs) {
|
|
349
|
+
return this.shared.modules.wallets.startSignUpWithRedirect(args)
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
public async completeRedirect(args: CompleteRedirectArgs) {
|
|
353
|
+
return this.shared.modules.wallets.completeRedirect(args)
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
public async signUp(options: SignupArgs) {
|
|
357
|
+
return this.shared.modules.wallets.signUp(options)
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
public async logout(wallet: Address.Address, options?: { skipRemoveDevice?: boolean }) {
|
|
361
|
+
return this.shared.modules.wallets.logout(wallet, options)
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
public async completeLogout(requestId: string, options?: { skipValidateSave?: boolean }) {
|
|
365
|
+
return this.shared.modules.wallets.completeLogout(requestId, options)
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
public async login(args: LoginArgs) {
|
|
369
|
+
return this.shared.modules.wallets.login(args)
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
public async completeLogin(requestId: string) {
|
|
373
|
+
return this.shared.modules.wallets.completeLogin(requestId)
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
public async listWallets() {
|
|
377
|
+
return this.shared.modules.wallets.list()
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
public async hasWallet(address: Address.Address) {
|
|
381
|
+
return this.shared.modules.wallets.exists(address)
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
public onWalletsUpdate(cb: (wallets: Wallet[]) => void, trigger?: boolean) {
|
|
385
|
+
return this.shared.modules.wallets.onWalletsUpdate(cb, trigger)
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
public registerWalletSelector(handler: WalletSelectionUiHandler) {
|
|
389
|
+
return this.shared.modules.wallets.registerWalletSelector(handler)
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
public unregisterWalletSelector(handler?: WalletSelectionUiHandler) {
|
|
393
|
+
return this.shared.modules.wallets.unregisterWalletSelector(handler)
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
public async getConfiguration(wallet: Address.Address) {
|
|
397
|
+
return this.shared.modules.wallets.getConfiguration(wallet)
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
public async getOnchainConfiguration(wallet: Address.Address, chainId: bigint) {
|
|
401
|
+
return this.shared.modules.wallets.getOnchainConfiguration(wallet, chainId)
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
public async isUpdatedOnchain(wallet: Address.Address, chainId: bigint) {
|
|
405
|
+
return this.shared.modules.wallets.isUpdatedOnchain(wallet, chainId)
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
// Signatures
|
|
409
|
+
|
|
410
|
+
public async listSignatureRequests(): Promise<SignatureRequest[]> {
|
|
411
|
+
return this.shared.modules.signatures.list()
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
public async getSignatureRequest(requestId: string): Promise<SignatureRequest> {
|
|
415
|
+
return this.shared.modules.signatures.get(requestId)
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
public onSignatureRequestsUpdate(cb: (requests: BaseSignatureRequest[]) => void, trigger?: boolean) {
|
|
419
|
+
return this.shared.modules.signatures.onSignatureRequestsUpdate(cb, trigger)
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
public onSignatureRequestUpdate(
|
|
423
|
+
requestId: string,
|
|
424
|
+
cb: (requests: SignatureRequest) => void,
|
|
425
|
+
onError?: (error: Error) => void,
|
|
426
|
+
trigger?: boolean,
|
|
427
|
+
) {
|
|
428
|
+
return this.shared.modules.signatures.onSignatureRequestUpdate(requestId, cb, onError, trigger)
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
public async cancelSignatureRequest(requestId: string) {
|
|
432
|
+
return this.shared.modules.signatures.cancel(requestId)
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
// Transactions
|
|
436
|
+
|
|
437
|
+
public async requestTransaction(
|
|
438
|
+
from: Address.Address,
|
|
439
|
+
chainId: bigint,
|
|
440
|
+
txs: TransactionRequest[],
|
|
441
|
+
options?: { skipDefineGas?: boolean; source?: string; noConfigUpdate?: boolean },
|
|
442
|
+
) {
|
|
443
|
+
return this.shared.modules.transactions.request(from, chainId, txs, options)
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
public async defineTransaction(
|
|
447
|
+
transactionId: string,
|
|
448
|
+
changes?: { nonce?: bigint; space?: bigint; calls?: Pick<Payload.Call, 'gasLimit'>[] },
|
|
449
|
+
) {
|
|
450
|
+
return this.shared.modules.transactions.define(transactionId, changes)
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
public async selectTransactionRelayer(transactionId: string, relayerOptionId: string) {
|
|
454
|
+
return this.shared.modules.transactions.selectRelayer(transactionId, relayerOptionId)
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
public async relayTransaction(transactionOrSignatureId: string) {
|
|
458
|
+
return this.shared.modules.transactions.relay(transactionOrSignatureId)
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
public async deleteTransaction(transactionId: string) {
|
|
462
|
+
return this.shared.modules.transactions.delete(transactionId)
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
public onTransactionsUpdate(cb: (transactions: Transaction[]) => void, trigger?: boolean) {
|
|
466
|
+
return this.shared.modules.transactions.onTransactionsUpdate(cb, trigger)
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
public onTransactionUpdate(transactionId: string, cb: (transaction: Transaction) => void, trigger?: boolean) {
|
|
470
|
+
return this.shared.modules.transactions.onTransactionUpdate(transactionId, cb, trigger)
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
public getTransaction(transactionId: string): Promise<Transaction> {
|
|
474
|
+
return this.shared.modules.transactions.get(transactionId)
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
public registerMnemonicUI(onPromptMnemonic: (respond: (mnemonic: string) => Promise<void>) => Promise<void>) {
|
|
478
|
+
return this.mnemonicHandler.registerUI(onPromptMnemonic)
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
public registerOtpUI(onPromptOtp: (recipient: string, respond: (otp: string) => Promise<void>) => Promise<void>) {
|
|
482
|
+
return this.otpHandler?.registerUI(onPromptOtp) || (() => {})
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
public async setRedirectPrefix(prefix: string) {
|
|
486
|
+
this.shared.handlers.forEach((handler) => {
|
|
487
|
+
if (handler instanceof AuthCodeHandler) {
|
|
488
|
+
handler.setRedirectUri(prefix + '/' + handler.signupKind)
|
|
489
|
+
}
|
|
490
|
+
})
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
// Messages
|
|
494
|
+
|
|
495
|
+
public async listMessageRequests() {
|
|
496
|
+
return this.shared.modules.messages.list()
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
public async getMessageRequest(messageOrSignatureId: string) {
|
|
500
|
+
return this.shared.modules.messages.get(messageOrSignatureId)
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
public onMessageRequestsUpdate(cb: (messages: Message[]) => void, trigger?: boolean) {
|
|
504
|
+
return this.shared.modules.messages.onMessagesUpdate(cb, trigger)
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
public onMessageRequestUpdate(messageOrSignatureId: string, cb: (message: Message) => void, trigger?: boolean) {
|
|
508
|
+
return this.shared.modules.messages.onMessageUpdate(messageOrSignatureId, cb, trigger)
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
public async requestMessageSignature(
|
|
512
|
+
wallet: Address.Address,
|
|
513
|
+
message: MessageRequest,
|
|
514
|
+
chainId?: bigint,
|
|
515
|
+
options?: { source?: string },
|
|
516
|
+
) {
|
|
517
|
+
return this.shared.modules.messages.request(wallet, message, chainId, options)
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
public async completedMessageSignature(messageOrSignatureId: string) {
|
|
521
|
+
return this.shared.modules.messages.complete(messageOrSignatureId)
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
public async deleteMessageRequest(messageOrSignatureId: string) {
|
|
525
|
+
return this.shared.modules.messages.delete(messageOrSignatureId)
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
// Sessions
|
|
529
|
+
|
|
530
|
+
public async getSessionTopology(walletAddress: Address.Address): Promise<SessionConfig.SessionsTopology> {
|
|
531
|
+
return this.shared.modules.sessions.getSessionTopology(walletAddress)
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
public async prepareAuthorizeImplicitSession(
|
|
535
|
+
walletAddress: Address.Address,
|
|
536
|
+
sessionAddress: Address.Address,
|
|
537
|
+
args: AuthorizeImplicitSessionArgs,
|
|
538
|
+
): Promise<string> {
|
|
539
|
+
return this.shared.modules.sessions.prepareAuthorizeImplicitSession(walletAddress, sessionAddress, args)
|
|
540
|
+
// Run completeAuthorizeImplicitSession next
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
public async completeAuthorizeImplicitSession(requestId: string): Promise<{
|
|
544
|
+
attestation: Attestation.Attestation
|
|
545
|
+
signature: SequenceSignature.RSY
|
|
546
|
+
}> {
|
|
547
|
+
return this.shared.modules.sessions.completeAuthorizeImplicitSession(requestId)
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
public async addExplicitSession(
|
|
551
|
+
walletAddress: Address.Address,
|
|
552
|
+
sessionAddress: Address.Address,
|
|
553
|
+
permissions: CoreSigners.Session.ExplicitParams,
|
|
554
|
+
): Promise<string> {
|
|
555
|
+
return this.shared.modules.sessions.addExplicitSession(walletAddress, sessionAddress, permissions)
|
|
556
|
+
// Run completeSessionUpdate next
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
public async removeExplicitSession(walletAddress: Address.Address, sessionAddress: Address.Address): Promise<string> {
|
|
560
|
+
return this.shared.modules.sessions.removeExplicitSession(walletAddress, sessionAddress)
|
|
561
|
+
// Run completeSessionUpdate next
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
public async addBlacklistAddress(walletAddress: Address.Address, address: Address.Address): Promise<string> {
|
|
565
|
+
return this.shared.modules.sessions.addBlacklistAddress(walletAddress, address)
|
|
566
|
+
// Run completeSessionUpdate next
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
public async removeBlacklistAddress(walletAddress: Address.Address, address: Address.Address): Promise<string> {
|
|
570
|
+
return this.shared.modules.sessions.removeBlacklistAddress(walletAddress, address)
|
|
571
|
+
// Run completeSessionUpdate next
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
public async completeSessionUpdate(requestId: string) {
|
|
575
|
+
return this.shared.modules.sessions.completeSessionUpdate(requestId)
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
// Recovery
|
|
579
|
+
|
|
580
|
+
public async getRecoverySigners(wallet: Address.Address): Promise<RecoverySigner[] | undefined> {
|
|
581
|
+
return this.shared.modules.recovery.getRecoverySigners(wallet)
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
public onQueuedRecoveryPayloadsUpdate(
|
|
585
|
+
wallet: Address.Address,
|
|
586
|
+
cb: (payloads: QueuedRecoveryPayload[]) => void,
|
|
587
|
+
trigger?: boolean,
|
|
588
|
+
) {
|
|
589
|
+
return this.shared.modules.recovery.onQueuedRecoveryPayloadsUpdate(wallet, cb, trigger)
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
public async queueRecoveryPayload(wallet: Address.Address, chainId: bigint, payload: Payload.Calls) {
|
|
593
|
+
return this.shared.modules.recovery.queueRecoveryPayload(wallet, chainId, payload)
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
public async completeRecoveryPayload(requestId: string) {
|
|
597
|
+
return this.shared.modules.recovery.completeRecoveryPayload(requestId)
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
public async addRecoveryMnemonic(wallet: Address.Address, mnemonic: string) {
|
|
601
|
+
return this.shared.modules.recovery.addRecoveryMnemonic(wallet, mnemonic)
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
public async addRecoverySigner(wallet: Address.Address, address: Address.Address) {
|
|
605
|
+
return this.shared.modules.recovery.addRecoverySigner(wallet, address)
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
public async removeRecoverySigner(wallet: Address.Address, address: Address.Address) {
|
|
609
|
+
return this.shared.modules.recovery.removeRecoverySigner(wallet, address)
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
public async completeRecoveryUpdate(requestId: string) {
|
|
613
|
+
return this.shared.modules.recovery.completeRecoveryUpdate(requestId)
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
public async updateQueuedRecoveryPayloads() {
|
|
617
|
+
return this.shared.modules.recovery.updateQueuedRecoveryPayloads()
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
// DBs
|
|
621
|
+
|
|
622
|
+
public async stop() {
|
|
623
|
+
await this.shared.modules.cron.stop()
|
|
624
|
+
|
|
625
|
+
await Promise.all([
|
|
626
|
+
this.shared.databases.authKeys.close(),
|
|
627
|
+
this.shared.databases.authCommitments.close(),
|
|
628
|
+
this.shared.databases.manager.close(),
|
|
629
|
+
this.shared.databases.recovery.close(),
|
|
630
|
+
this.shared.databases.signatures.close(),
|
|
631
|
+
this.shared.databases.transactions.close(),
|
|
632
|
+
])
|
|
633
|
+
}
|
|
634
|
+
}
|