@cartridge/controller-wasm 0.8.0 → 0.9.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cartridge/controller-wasm",
3
- "version": "0.8.0",
3
+ "version": "0.9.1",
4
4
  "description": "Wasm bindings for Cartridge Controller and Session Account",
5
5
  "type": "module",
6
6
  "main": "./pkg-controller/account_wasm.js",
@@ -1,121 +1,11 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
3
  /**
4
- * Computes the Starknet contract address for a controller account without needing a full instance.
5
- *
6
- * # Arguments
7
- *
8
- * * `class_hash` - The class hash of the account contract (JsFelt).
9
- * * `owner` - The owner configuration for the account.
10
- * * `salt` - The salt used for address calculation (JsFelt).
11
- *
12
- * # Returns
13
- *
14
- * The computed Starknet contract address as a `JsFelt`.
15
- */
16
- export function computeAccountAddress(class_hash: JsFelt, owner: Owner, salt: JsFelt): JsFelt;
17
- /**
18
- * Subscribes to the creation of a session for a given controller, session_key_guid and cartridge api url.
19
- * The goal of this function is to know from any place when the register session flow has been completed, and to
20
- * get the authorization.
4
+ * Result type for signExecuteFromOutside containing both the OutsideExecution and signature
21
5
  */
22
- export function subscribeCreateSession(session_key_guid: JsFelt, cartridge_api_url: string): Promise<JsSubscribeSessionResult>;
23
- export function signerToGuid(signer: Signer): JsFelt;
24
- export enum ErrorCode {
25
- StarknetFailedToReceiveTransaction = 1,
26
- StarknetContractNotFound = 20,
27
- StarknetBlockNotFound = 24,
28
- StarknetInvalidTransactionIndex = 27,
29
- StarknetClassHashNotFound = 28,
30
- StarknetTransactionHashNotFound = 29,
31
- StarknetPageSizeTooBig = 31,
32
- StarknetNoBlocks = 32,
33
- StarknetInvalidContinuationToken = 33,
34
- StarknetTooManyKeysInFilter = 34,
35
- StarknetContractError = 40,
36
- StarknetTransactionExecutionError = 41,
37
- StarknetClassAlreadyDeclared = 51,
38
- StarknetInvalidTransactionNonce = 52,
39
- StarknetInsufficientMaxFee = 53,
40
- StarknetInsufficientAccountBalance = 54,
41
- StarknetValidationFailure = 55,
42
- StarknetCompilationFailed = 56,
43
- StarknetContractClassSizeIsTooLarge = 57,
44
- StarknetNonAccount = 58,
45
- StarknetDuplicateTx = 59,
46
- StarknetCompiledClassHashMismatch = 60,
47
- StarknetUnsupportedTxVersion = 61,
48
- StarknetUnsupportedContractClassVersion = 62,
49
- StarknetUnexpectedError = 63,
50
- StarknetNoTraceAvailable = 10,
51
- StarknetReplacementTransactionUnderpriced = 64,
52
- StarknetFeeBelowMinimum = 65,
53
- SignError = 101,
54
- StorageError = 102,
55
- AccountFactoryError = 103,
56
- PaymasterExecutionTimeNotReached = 104,
57
- PaymasterExecutionTimePassed = 105,
58
- PaymasterInvalidCaller = 106,
59
- PaymasterRateLimitExceeded = 107,
60
- PaymasterNotSupported = 108,
61
- PaymasterHttp = 109,
62
- PaymasterExcecution = 110,
63
- PaymasterSerialization = 111,
64
- CartridgeControllerNotDeployed = 112,
65
- InsufficientBalance = 113,
66
- OriginError = 114,
67
- EncodingError = 115,
68
- SerdeWasmBindgenError = 116,
69
- CairoSerdeError = 117,
70
- CairoShortStringToFeltError = 118,
71
- DeviceCreateCredential = 119,
72
- DeviceGetAssertion = 120,
73
- DeviceBadAssertion = 121,
74
- DeviceChannel = 122,
75
- DeviceOrigin = 123,
76
- AccountSigning = 124,
77
- AccountProvider = 125,
78
- AccountClassHashCalculation = 126,
79
- AccountFeeOutOfRange = 128,
80
- ProviderRateLimited = 129,
81
- ProviderArrayLengthMismatch = 130,
82
- ProviderOther = 131,
83
- SessionAlreadyRegistered = 132,
84
- UrlParseError = 133,
85
- Base64DecodeError = 134,
86
- CoseError = 135,
87
- PolicyChainIdMismatch = 136,
88
- InvalidOwner = 137,
89
- GasPriceTooHigh = 138,
90
- TransactionTimeout = 139,
91
- ConversionError = 140,
92
- InvalidChainId = 141,
93
- SessionRefreshRequired = 142,
94
- ManualExecutionRequired = 143,
95
- ForbiddenEntrypoint = 144,
96
- GasAmountTooHigh = 145,
97
- ApproveExecutionRequired = 146,
98
- }
99
- export interface JsCall {
100
- contractAddress: JsFelt;
101
- entrypoint: string;
102
- calldata: JsFelt[];
103
- }
104
-
105
- export type JsPriceUnit = "WEI" | "FRI";
106
-
107
- export interface JsEstimateFeeDetails {
108
- nonce: JsFelt;
109
- }
110
-
111
- export interface JsFeeEstimate {
112
- l1_gas_consumed: number;
113
- l1_gas_price: number;
114
- l2_gas_consumed: number;
115
- l2_gas_price: number;
116
- l1_data_gas_consumed: number;
117
- l1_data_gas_price: number;
118
- overall_fee: number;
6
+ export interface JsSignedOutsideExecution {
7
+ outside_execution: JsOutsideExecutionV3;
8
+ signature: JsFelt[];
119
9
  }
120
10
 
121
11
  /**
@@ -129,12 +19,16 @@ export interface JsOutsideExecutionV3 {
129
19
  nonce: [JsFelt, JsFelt];
130
20
  }
131
21
 
132
- /**
133
- * Result type for signExecuteFromOutside containing both the OutsideExecution and signature
134
- */
135
- export interface JsSignedOutsideExecution {
136
- outside_execution: JsOutsideExecutionV3;
137
- signature: JsFelt[];
22
+ export type Felts = JsFelt[];
23
+
24
+ export type JsFeeSource = "PAYMASTER" | "CREDITS";
25
+
26
+ export type JsFelt = Felt;
27
+
28
+ export interface JsCall {
29
+ contractAddress: JsFelt;
30
+ entrypoint: string;
31
+ calldata: JsFelt[];
138
32
  }
139
33
 
140
34
  export interface Owner {
@@ -148,11 +42,6 @@ export interface CallPolicy {
148
42
  authorized?: boolean;
149
43
  }
150
44
 
151
- export interface TypedDataPolicy {
152
- scope_hash: JsFelt;
153
- authorized?: boolean;
154
- }
155
-
156
45
  export interface ApprovalPolicy {
157
46
  target: JsFelt;
158
47
  spender: JsFelt;
@@ -161,9 +50,12 @@ export interface ApprovalPolicy {
161
50
 
162
51
  export type Policy = CallPolicy | TypedDataPolicy | ApprovalPolicy;
163
52
 
164
- export type JsRegister = RegisterInput;
53
+ export interface TypedDataPolicy {
54
+ scope_hash: JsFelt;
55
+ authorized?: boolean;
56
+ }
165
57
 
166
- export type JsRegisterResponse = ResponseData;
58
+ export type JsAddSignerInput = SignerInput;
167
59
 
168
60
  export interface WebauthnSigner {
169
61
  rpId: string;
@@ -175,6 +67,8 @@ export interface StarknetSigner {
175
67
  privateKey: JsFelt;
176
68
  }
177
69
 
70
+ export type JsRemoveSignerInput = SignerInput;
71
+
178
72
  export interface Eip191Signer {
179
73
  address: string;
180
74
  }
@@ -186,20 +80,10 @@ export interface Signer {
186
80
  eip191?: Eip191Signer;
187
81
  }
188
82
 
189
- export type JsAddSignerInput = SignerInput;
190
-
191
- export type JsRemoveSignerInput = SignerInput;
192
-
193
- export type JsFelt = Felt;
194
-
195
- export type Felts = JsFelt[];
196
-
197
- export type JsFeeSource = "PAYMASTER" | "CREDITS";
83
+ export type JsRevokableSession = RevokableSession;
198
84
 
199
85
  export type JsSubscribeSessionResult = SubscribeCreateSessionSubscribeCreateSession;
200
86
 
201
- export type JsRevokableSession = RevokableSession;
202
-
203
87
  export interface AuthorizedSession {
204
88
  session: Session;
205
89
  authorization: JsFelt[] | null;
@@ -211,6 +95,11 @@ export interface AuthorizedSession {
211
95
  guardianKeyGuid: JsFelt;
212
96
  }
213
97
 
98
+ export interface Credentials {
99
+ authorization: JsFelt[];
100
+ privateKey: JsFelt;
101
+ }
102
+
214
103
  export interface Session {
215
104
  policies: Policy[];
216
105
  expiresAt: number;
@@ -219,25 +108,34 @@ export interface Session {
219
108
  guardianKeyGuid: JsFelt;
220
109
  }
221
110
 
222
- export interface Credentials {
223
- authorization: JsFelt[];
224
- privateKey: JsFelt;
111
+ export interface JsFeeEstimate {
112
+ l1_gas_consumed: number;
113
+ l1_gas_price: number;
114
+ l2_gas_consumed: number;
115
+ l2_gas_price: number;
116
+ l1_data_gas_consumed: number;
117
+ l1_data_gas_price: number;
118
+ overall_fee: number;
119
+ }
120
+
121
+ export type JsPriceUnit = "WEI" | "FRI";
122
+
123
+ export interface JsEstimateFeeDetails {
124
+ nonce: JsFelt;
225
125
  }
226
126
 
127
+ export type JsRegister = RegisterInput;
128
+
129
+ export type JsRegisterResponse = ResponseData;
130
+
131
+
227
132
  export class CartridgeAccount {
228
133
  private constructor();
229
134
  free(): void;
230
135
  [Symbol.dispose](): void;
231
- /**
232
- * Creates a new `CartridgeAccount` instance.
233
- *
234
- * # Parameters
235
- * - `rpc_url`: The URL of the JSON-RPC endpoint.
236
- * - `address`: The blockchain address associated with the account.
237
- * - `username`: Username associated with the account.
238
- * - `owner`: A Owner struct containing the owner signer and associated data.
239
- */
240
- static new(class_hash: JsFelt, rpc_url: string, address: JsFelt, username: string, owner: Owner, cartridge_api_url: string): Promise<CartridgeAccountWithMeta>;
136
+ disconnect(): Promise<void>;
137
+ deploySelf(max_fee?: JsFeeEstimate | null): Promise<any>;
138
+ static fromStorage(cartridge_api_url: string): Promise<CartridgeAccountWithMeta | undefined>;
241
139
  /**
242
140
  * Creates a new `CartridgeAccount` instance with a randomly generated Starknet signer.
243
141
  * The controller address is computed internally based on the generated signer.
@@ -247,32 +145,31 @@ export class CartridgeAccount {
247
145
  * - `username`: Username associated with the account.
248
146
  */
249
147
  static newHeadless(class_hash: JsFelt, rpc_url: string, username: string, cartridge_api_url: string): Promise<CartridgeAccountWithMeta>;
250
- static fromStorage(cartridge_api_url: string): Promise<CartridgeAccountWithMeta | undefined>;
251
- disconnect(): Promise<void>;
252
- registerSession(app_id: string, policies: Policy[], expires_at: bigint, public_key: JsFelt, max_fee?: JsFeeEstimate | null): Promise<any>;
253
- registerSessionCalldata(policies: Policy[], expires_at: bigint, public_key: JsFelt): Promise<any>;
254
- upgrade(new_class_hash: JsFelt): Promise<JsCall>;
255
- register(register: JsRegister): Promise<JsRegisterResponse>;
256
- createSession(app_id: string, policies: Policy[], expires_at: bigint, authorize_user_execution?: boolean | null): Promise<AuthorizedSession | undefined>;
257
- skipSession(app_id: string, policies: Policy[]): Promise<void>;
258
- addOwner(owner?: Signer | null, signer_input?: JsAddSignerInput | null, rp_id?: string | null): Promise<void>;
259
148
  removeOwner(signer: JsRemoveSignerInput): Promise<void>;
260
- createPasskeySigner(rp_id: string): Promise<JsAddSignerInput>;
261
- estimateInvokeFee(calls: JsCall[]): Promise<JsFeeEstimate>;
262
- execute(calls: JsCall[], max_fee?: JsFeeEstimate | null, fee_source?: JsFeeSource | null): Promise<any>;
263
- executeFromOutsideV2(calls: JsCall[], fee_source?: JsFeeSource | null): Promise<any>;
264
- executeFromOutsideV3(calls: JsCall[], fee_source?: JsFeeSource | null): Promise<any>;
265
- trySessionExecute(app_id: string, calls: JsCall[], fee_source?: JsFeeSource | null): Promise<any>;
266
- isRegisteredSessionAuthorized(policies: Policy[], public_key?: JsFelt | null): Promise<AuthorizedSession | undefined>;
267
- hasRequestedSession(app_id: string, policies: Policy[]): Promise<boolean>;
149
+ signMessage(typed_data: string): Promise<Felts>;
150
+ skipSession(app_id: string, policies: Policy[]): Promise<void>;
151
+ createSession(app_id: string, policies: Policy[], expires_at: bigint, authorize_user_execution?: boolean | null): Promise<AuthorizedSession | undefined>;
268
152
  revokeSession(session: JsRevokableSession): Promise<void>;
269
153
  revokeSessions(sessions: JsRevokableSession[]): Promise<void>;
270
- signMessage(typed_data: string): Promise<Felts>;
271
- getNonce(): Promise<any>;
272
- deploySelf(max_fee?: JsFeeEstimate | null): Promise<any>;
273
154
  delegateAccount(): Promise<JsFelt>;
274
- hasAuthorizedPoliciesForCalls(app_id: string, calls: JsCall[]): Promise<boolean>;
275
- hasAuthorizedPoliciesForMessage(app_id: string, typed_data: string): Promise<boolean>;
155
+ registerSession(app_id: string, policies: Policy[], expires_at: bigint, public_key: JsFelt, max_fee?: JsFeeEstimate | null): Promise<any>;
156
+ estimateInvokeFee(calls: JsCall[]): Promise<JsFeeEstimate>;
157
+ trySessionExecute(app_id: string, calls: JsCall[], fee_source?: JsFeeSource | null): Promise<any>;
158
+ createPasskeySigner(rp_id: string): Promise<JsAddSignerInput>;
159
+ hasRequestedSession(app_id: string, policies: Policy[]): Promise<boolean>;
160
+ executeFromOutsideV2(calls: JsCall[], fee_source?: JsFeeSource | null): Promise<any>;
161
+ executeFromOutsideV3(calls: JsCall[], fee_source?: JsFeeSource | null): Promise<any>;
162
+ /**
163
+ * Checks if there are stored policies for a given app_id.
164
+ *
165
+ * # Parameters
166
+ * - `app_id`: The application identifier to check for stored policies
167
+ *
168
+ * # Returns
169
+ * `true` if policies exist for the given app_id, `false` otherwise
170
+ */
171
+ hasPoliciesForAppId(app_id: string): Promise<boolean>;
172
+ registerSessionCalldata(policies: Policy[], expires_at: bigint, public_key: JsFelt): Promise<any>;
276
173
  /**
277
174
  * Signs an OutsideExecution V3 transaction and returns both the OutsideExecution object and its signature.
278
175
  *
@@ -283,56 +180,47 @@ export class CartridgeAccount {
283
180
  * A `JsSignedOutsideExecution` containing the OutsideExecution V3 object and its signature
284
181
  */
285
182
  signExecuteFromOutside(calls: JsCall[]): Promise<JsSignedOutsideExecution>;
183
+ isRegisteredSessionAuthorized(policies: Policy[], public_key?: JsFelt | null): Promise<AuthorizedSession | undefined>;
184
+ hasAuthorizedPoliciesForCalls(app_id: string, calls: JsCall[]): Promise<boolean>;
185
+ hasAuthorizedPoliciesForMessage(app_id: string, typed_data: string): Promise<boolean>;
286
186
  /**
287
- * Checks if there are stored policies for a given app_id.
187
+ * Creates a new `CartridgeAccount` instance.
288
188
  *
289
189
  * # Parameters
290
- * - `app_id`: The application identifier to check for stored policies
291
- *
292
- * # Returns
293
- * `true` if policies exist for the given app_id, `false` otherwise
190
+ * - `rpc_url`: The URL of the JSON-RPC endpoint.
191
+ * - `address`: The blockchain address associated with the account.
192
+ * - `username`: Username associated with the account.
193
+ * - `owner`: A Owner struct containing the owner signer and associated data.
294
194
  */
295
- hasPoliciesForAppId(app_id: string): Promise<boolean>;
195
+ static new(class_hash: JsFelt, rpc_url: string, address: JsFelt, username: string, owner: Owner, cartridge_api_url: string): Promise<CartridgeAccountWithMeta>;
196
+ execute(calls: JsCall[], max_fee?: JsFeeEstimate | null, fee_source?: JsFeeSource | null): Promise<any>;
197
+ upgrade(new_class_hash: JsFelt): Promise<JsCall>;
198
+ register(register: JsRegister): Promise<JsRegisterResponse>;
199
+ addOwner(owner?: Signer | null, signer_input?: JsAddSignerInput | null, rp_id?: string | null): Promise<void>;
200
+ getNonce(): Promise<any>;
296
201
  }
297
- /**
298
- * A type for accessing fixed attributes of `CartridgeAccount`.
299
- *
300
- * This type exists as concurrent mutable and immutable calls to `CartridgeAccount` are guarded
301
- * with `WasmMutex`, which only operates under an `async` context. If these getters were directly
302
- * implemented under `CartridgeAccount`:
303
- *
304
- * - calls to them would unnecessarily have to be `async` as well;
305
- * - there would be excessive locking.
306
- *
307
- * This type is supposed to only ever be borrowed immutably. So no concurrent access control would
308
- * be needed.
309
- */
202
+
310
203
  export class CartridgeAccountMeta {
311
204
  private constructor();
312
205
  free(): void;
313
206
  [Symbol.dispose](): void;
314
- username(): string;
315
- address(): string;
316
207
  classHash(): string;
208
+ ownerGuid(): JsFelt;
209
+ owner(): Owner;
210
+ address(): string;
317
211
  rpcUrl(): string;
318
212
  chainId(): string;
319
- owner(): Owner;
320
- ownerGuid(): JsFelt;
213
+ username(): string;
321
214
  }
322
- /**
323
- * A type used as the return type for constructing `CartridgeAccount` to provide an extra,
324
- * separately borrowable `meta` field for synchronously accessing fixed fields.
325
- *
326
- * This type exists instead of simply having `CartridgeAccount::new()` return a tuple as tuples
327
- * don't implement `IntoWasmAbi` which is needed for crossing JS-WASM boundary.
328
- */
215
+
329
216
  export class CartridgeAccountWithMeta {
330
217
  private constructor();
331
218
  free(): void;
332
219
  [Symbol.dispose](): void;
333
- meta(): CartridgeAccountMeta;
334
220
  intoAccount(): CartridgeAccount;
221
+ meta(): CartridgeAccountMeta;
335
222
  }
223
+
336
224
  export class ControllerFactory {
337
225
  private constructor();
338
226
  free(): void;
@@ -372,18 +260,93 @@ export class ControllerFactory {
372
260
  */
373
261
  static apiLogin(username: string, class_hash: JsFelt, rpc_url: string, address: JsFelt, owner: Owner, cartridge_api_url: string): Promise<CartridgeAccountWithMeta>;
374
262
  }
375
- /**
376
- * JavaScript-friendly chain configuration
377
- */
263
+
264
+ export enum ErrorCode {
265
+ StarknetFailedToReceiveTransaction = 1,
266
+ StarknetContractNotFound = 20,
267
+ StarknetBlockNotFound = 24,
268
+ StarknetInvalidTransactionIndex = 27,
269
+ StarknetClassHashNotFound = 28,
270
+ StarknetTransactionHashNotFound = 29,
271
+ StarknetPageSizeTooBig = 31,
272
+ StarknetNoBlocks = 32,
273
+ StarknetInvalidContinuationToken = 33,
274
+ StarknetTooManyKeysInFilter = 34,
275
+ StarknetContractError = 40,
276
+ StarknetTransactionExecutionError = 41,
277
+ StarknetClassAlreadyDeclared = 51,
278
+ StarknetInvalidTransactionNonce = 52,
279
+ StarknetInsufficientMaxFee = 53,
280
+ StarknetInsufficientAccountBalance = 54,
281
+ StarknetValidationFailure = 55,
282
+ StarknetCompilationFailed = 56,
283
+ StarknetContractClassSizeIsTooLarge = 57,
284
+ StarknetNonAccount = 58,
285
+ StarknetDuplicateTx = 59,
286
+ StarknetCompiledClassHashMismatch = 60,
287
+ StarknetUnsupportedTxVersion = 61,
288
+ StarknetUnsupportedContractClassVersion = 62,
289
+ StarknetUnexpectedError = 63,
290
+ StarknetNoTraceAvailable = 10,
291
+ StarknetReplacementTransactionUnderpriced = 64,
292
+ StarknetFeeBelowMinimum = 65,
293
+ SignError = 101,
294
+ StorageError = 102,
295
+ AccountFactoryError = 103,
296
+ PaymasterExecutionTimeNotReached = 104,
297
+ PaymasterExecutionTimePassed = 105,
298
+ PaymasterInvalidCaller = 106,
299
+ PaymasterRateLimitExceeded = 107,
300
+ PaymasterNotSupported = 108,
301
+ PaymasterHttp = 109,
302
+ PaymasterExcecution = 110,
303
+ PaymasterSerialization = 111,
304
+ CartridgeControllerNotDeployed = 112,
305
+ InsufficientBalance = 113,
306
+ OriginError = 114,
307
+ EncodingError = 115,
308
+ SerdeWasmBindgenError = 116,
309
+ CairoSerdeError = 117,
310
+ CairoShortStringToFeltError = 118,
311
+ DeviceCreateCredential = 119,
312
+ DeviceGetAssertion = 120,
313
+ DeviceBadAssertion = 121,
314
+ DeviceChannel = 122,
315
+ DeviceOrigin = 123,
316
+ AccountSigning = 124,
317
+ AccountProvider = 125,
318
+ AccountClassHashCalculation = 126,
319
+ AccountFeeOutOfRange = 128,
320
+ ProviderRateLimited = 129,
321
+ ProviderArrayLengthMismatch = 130,
322
+ ProviderOther = 131,
323
+ SessionAlreadyRegistered = 132,
324
+ UrlParseError = 133,
325
+ Base64DecodeError = 134,
326
+ CoseError = 135,
327
+ PolicyChainIdMismatch = 136,
328
+ InvalidOwner = 137,
329
+ GasPriceTooHigh = 138,
330
+ TransactionTimeout = 139,
331
+ ConversionError = 140,
332
+ InvalidChainId = 141,
333
+ SessionRefreshRequired = 142,
334
+ ManualExecutionRequired = 143,
335
+ ForbiddenEntrypoint = 144,
336
+ GasAmountTooHigh = 145,
337
+ ApproveExecutionRequired = 146,
338
+ }
339
+
378
340
  export class JsChainConfig {
379
341
  free(): void;
380
342
  [Symbol.dispose](): void;
381
343
  constructor(class_hash: JsFelt, rpc_url: string, owner: Owner, address?: JsFelt | null);
382
344
  readonly class_hash: JsFelt;
383
- readonly rpc_url: string;
384
345
  readonly owner: Owner;
385
346
  readonly address: JsFelt | undefined;
347
+ readonly rpc_url: string;
386
348
  }
349
+
387
350
  export class JsControllerError {
388
351
  private constructor();
389
352
  free(): void;
@@ -393,47 +356,68 @@ export class JsControllerError {
393
356
  get data(): string | undefined;
394
357
  set data(value: string | null | undefined);
395
358
  }
359
+
396
360
  export class LoginResult {
397
361
  private constructor();
398
362
  free(): void;
399
363
  [Symbol.dispose](): void;
400
364
  intoValues(): Array<any>;
401
365
  }
402
- /**
403
- * WASM bindings for MultiChainController
404
- */
366
+
405
367
  export class MultiChainAccount {
406
368
  private constructor();
407
369
  free(): void;
408
370
  [Symbol.dispose](): void;
409
371
  /**
410
- * Creates a new MultiChainAccount with multiple chain configurations
372
+ * Gets an account instance for a specific chain
411
373
  */
412
- static create(username: string, chain_configs: JsChainConfig[], cartridge_api_url: string): Promise<MultiChainAccount>;
374
+ controller(chain_id: JsFelt): Promise<CartridgeAccount>;
413
375
  /**
414
376
  * Loads a MultiChainAccount from storage
415
377
  */
416
378
  static fromStorage(cartridge_api_url: string): Promise<MultiChainAccount | undefined>;
417
- /**
418
- * Adds a new chain configuration
419
- */
420
- addChain(config: JsChainConfig): Promise<void>;
421
379
  /**
422
380
  * Removes a chain configuration
423
381
  */
424
382
  removeChain(chain_id: JsFelt): Promise<void>;
425
383
  /**
426
- * Gets an account instance for a specific chain
384
+ * Creates a new MultiChainAccount with multiple chain configurations
427
385
  */
428
- controller(chain_id: JsFelt): Promise<CartridgeAccount>;
386
+ static create(username: string, chain_configs: JsChainConfig[], cartridge_api_url: string): Promise<MultiChainAccount>;
387
+ /**
388
+ * Adds a new chain configuration
389
+ */
390
+ addChain(config: JsChainConfig): Promise<void>;
429
391
  }
430
- /**
431
- * Metadata for displaying multi-chain information
432
- */
392
+
433
393
  export class MultiChainAccountMeta {
434
394
  private constructor();
435
395
  free(): void;
436
396
  [Symbol.dispose](): void;
437
- readonly username: string;
438
397
  readonly chains: JsFelt[];
398
+ readonly username: string;
439
399
  }
400
+
401
+ /**
402
+ * Computes the Starknet contract address for a controller account without needing a full instance.
403
+ *
404
+ * # Arguments
405
+ *
406
+ * * `class_hash` - The class hash of the account contract (JsFelt).
407
+ * * `owner` - The owner configuration for the account.
408
+ * * `salt` - The salt used for address calculation (JsFelt).
409
+ *
410
+ * # Returns
411
+ *
412
+ * The computed Starknet contract address as a `JsFelt`.
413
+ */
414
+ export function computeAccountAddress(class_hash: JsFelt, owner: Owner, salt: JsFelt): JsFelt;
415
+
416
+ export function signerToGuid(signer: Signer): JsFelt;
417
+
418
+ /**
419
+ * Subscribes to the creation of a session for a given controller, session_key_guid and cartridge api url.
420
+ * The goal of this function is to know from any place when the register session flow has been completed, and to
421
+ * get the authorization.
422
+ */
423
+ export function subscribeCreateSession(session_key_guid: JsFelt, cartridge_api_url: string): Promise<JsSubscribeSessionResult>;