@cartridge/controller-wasm 0.7.14-24e7b0f → 0.7.14-3b036eb

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.7.14-24e7b0f",
3
+ "version": "0.7.14-3b036eb",
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 JsFelt = Felt;
25
+
26
+ export type JsFeeSource = "PAYMASTER" | "CREDITS";
27
+
28
+ export interface JsCall {
29
+ contractAddress: JsFelt;
30
+ entrypoint: string;
31
+ calldata: JsFelt[];
138
32
  }
139
33
 
140
34
  export interface Owner {
@@ -142,10 +36,12 @@ export interface Owner {
142
36
  account?: JsFelt;
143
37
  }
144
38
 
145
- export interface CallPolicy {
39
+ export type Policy = CallPolicy | TypedDataPolicy | ApprovalPolicy;
40
+
41
+ export interface ApprovalPolicy {
146
42
  target: JsFelt;
147
- method: JsFelt;
148
- authorized?: boolean;
43
+ spender: JsFelt;
44
+ amount: JsFelt;
149
45
  }
150
46
 
151
47
  export interface TypedDataPolicy {
@@ -153,28 +49,18 @@ export interface TypedDataPolicy {
153
49
  authorized?: boolean;
154
50
  }
155
51
 
156
- export interface ApprovalPolicy {
52
+ export interface CallPolicy {
157
53
  target: JsFelt;
158
- spender: JsFelt;
159
- amount: JsFelt;
160
- }
161
-
162
- export type Policy = CallPolicy | TypedDataPolicy | ApprovalPolicy;
163
-
164
- export type JsRegister = RegisterInput;
165
-
166
- export type JsRegisterResponse = ResponseData;
167
-
168
- export interface WebauthnSigner {
169
- rpId: string;
170
- credentialId: string;
171
- publicKey: string;
54
+ method: JsFelt;
55
+ authorized?: boolean;
172
56
  }
173
57
 
174
58
  export interface StarknetSigner {
175
59
  privateKey: JsFelt;
176
60
  }
177
61
 
62
+ export type JsAddSignerInput = SignerInput;
63
+
178
64
  export interface Eip191Signer {
179
65
  address: string;
180
66
  }
@@ -186,20 +72,14 @@ export interface Signer {
186
72
  eip191?: Eip191Signer;
187
73
  }
188
74
 
189
- export type JsAddSignerInput = SignerInput;
75
+ export interface WebauthnSigner {
76
+ rpId: string;
77
+ credentialId: string;
78
+ publicKey: string;
79
+ }
190
80
 
191
81
  export type JsRemoveSignerInput = SignerInput;
192
82
 
193
- export type JsFelt = Felt;
194
-
195
- export type Felts = JsFelt[];
196
-
197
- export type JsFeeSource = "PAYMASTER" | "CREDITS";
198
-
199
- export type JsSubscribeSessionResult = SubscribeCreateSessionSubscribeCreateSession;
200
-
201
- export type JsRevokableSession = RevokableSession;
202
-
203
83
  export interface AuthorizedSession {
204
84
  session: Session;
205
85
  authorization: JsFelt[] | null;
@@ -211,6 +91,10 @@ export interface AuthorizedSession {
211
91
  guardianKeyGuid: JsFelt;
212
92
  }
213
93
 
94
+ export type JsSubscribeSessionResult = SubscribeCreateSessionSubscribeCreateSession;
95
+
96
+ export type JsRevokableSession = RevokableSession;
97
+
214
98
  export interface Session {
215
99
  policies: Policy[];
216
100
  expiresAt: number;
@@ -224,20 +108,34 @@ export interface Credentials {
224
108
  privateKey: JsFelt;
225
109
  }
226
110
 
111
+ export interface JsEstimateFeeDetails {
112
+ nonce: JsFelt;
113
+ }
114
+
115
+ export interface JsFeeEstimate {
116
+ l1_gas_consumed: number;
117
+ l1_gas_price: number;
118
+ l2_gas_consumed: number;
119
+ l2_gas_price: number;
120
+ l1_data_gas_consumed: number;
121
+ l1_data_gas_price: number;
122
+ overall_fee: number;
123
+ }
124
+
125
+ export type JsPriceUnit = "WEI" | "FRI";
126
+
127
+ export type JsRegisterResponse = ResponseData;
128
+
129
+ export type JsRegister = RegisterInput;
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>;