@cartridge/controller 0.9.0 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- import { shortString as i, constants as o, CallData as g, addAddressPadding as A, getChecksumAddress as y, typedData as D, TypedDataRevision as I, hash as z } from "starknet";
2
- const T = "0.9.0", d = {
1
+ import { shortString as n, constants as o, CallData as g, addAddressPadding as A, getChecksumAddress as y, typedData as D, TypedDataRevision as I, hash as z } from "starknet";
2
+ const T = "0.9.2", d = {
3
3
  version: T
4
4
  };
5
5
  var w = /* @__PURE__ */ ((e) => (e.SUCCESS = "SUCCESS", e.NOT_CONNECTED = "NOT_CONNECTED", e.ERROR = "ERROR", e.CANCELED = "CANCELED", e.USER_INTERACTION_REQUIRED = "USER_INTERACTION_REQUIRED", e))(w || {}), l = /* @__PURE__ */ ((e) => (e.PAYMASTER = "PAYMASTER", e.CREDITS = "CREDITS", e))(l || {});
@@ -22,7 +22,7 @@ function s(e, t) {
22
22
  return m(t), e[t];
23
23
  }
24
24
  function Q(e) {
25
- return n(e).map((t) => ({
25
+ return r(e).map((t) => ({
26
26
  entrypoint: t.entrypoint,
27
27
  contractAddress: A(t.contractAddress),
28
28
  calldata: g.toHex(t.calldata)
@@ -34,7 +34,7 @@ function x(e) {
34
34
  if (s(M, "target")) {
35
35
  const N = y(
36
36
  s(M, "target")
37
- ), a = s(M, "method"), r = s(
37
+ ), a = s(M, "method"), i = s(
38
38
  t,
39
39
  "contracts"
40
40
  ), c = {
@@ -42,13 +42,13 @@ function x(e) {
42
42
  entrypoint: a,
43
43
  description: s(M, "description")
44
44
  };
45
- if (N in r) {
46
- const u = n(r[N].methods);
47
- r[N] = {
45
+ if (N in i) {
46
+ const u = r(i[N].methods);
47
+ i[N] = {
48
48
  methods: [...u, c]
49
49
  };
50
50
  } else
51
- r[N] = {
51
+ i[N] = {
52
52
  methods: [c]
53
53
  };
54
54
  } else
@@ -61,7 +61,7 @@ function x(e) {
61
61
  function U(e) {
62
62
  return [
63
63
  ...Object.entries(e.contracts ?? {}).flatMap(
64
- ([t, { methods: M }]) => n(M).map((N) => ({
64
+ ([t, { methods: M }]) => r(M).map((N) => ({
65
65
  target: t,
66
66
  method: N.entrypoint,
67
67
  authorized: N.authorized
@@ -85,7 +85,7 @@ function U(e) {
85
85
  })
86
86
  ];
87
87
  }
88
- function n(e) {
88
+ function r(e) {
89
89
  return Array.isArray(e) ? e : [e];
90
90
  }
91
91
  function h(e) {
@@ -97,7 +97,7 @@ function k(e) {
97
97
  if (typeof XMLHttpRequest > "u")
98
98
  return console.warn(
99
99
  `Cannot make synchronous HTTP call in Node.js environment for ${e.toString()}`
100
- ), i.encodeShortString("LOCALHOST");
100
+ ), n.encodeShortString("LOCALHOST");
101
101
  const M = new XMLHttpRequest();
102
102
  M.open("POST", e.toString(), !1), M.setRequestHeader("Content-Type", "application/json");
103
103
  const N = JSON.stringify({
@@ -127,11 +127,11 @@ function k(e) {
127
127
  } else if (t.length >= 3) {
128
128
  const M = t[2];
129
129
  if (t.includes("katana"))
130
- return i.encodeShortString(
130
+ return n.encodeShortString(
131
131
  `WP_${M.toUpperCase().replace(/-/g, "_")}`
132
132
  );
133
133
  if (t.includes("mainnet"))
134
- return i.encodeShortString(
134
+ return n.encodeShortString(
135
135
  `GG_${M.toUpperCase().replace(/-/g, "_")}`
136
136
  );
137
137
  }
@@ -142,7 +142,7 @@ class j extends Error {
142
142
  super("Not ready to connect"), Object.setPrototypeOf(this, j.prototype);
143
143
  }
144
144
  }
145
- const f = "https://x.cartridge.gg", P = "https://profile.cartridge.gg", b = "https://api.cartridge.gg", O = {
145
+ const f = "https://x.cartridge.gg", P = "https://api.cartridge.gg", O = {
146
146
  ACCOUNTS: "accounts"
147
147
  }, L = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjgwMCIgdmlld0JveD0iMCAwIDgwMCA4MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2RfNTExMl83ODIpIj4KPHBhdGggZD0iTTQ2OS4yMzYgNzBDNDgyLjM5IDcwIDQ5My4wNTMgODAuNjYzIDQ5My4wNTMgOTMuODE2NFYxNDcuMTQ3TDUxNS4zMzggMTQ3LjE0N0w1MTUuNDI4IDE0Ny4xNDdMNTE1LjU1NCAxNDcuMTQ3TDUxNS44MjYgMTQ3LjE0OUM1MTYuMDE2IDE0Ny4xNTEgNTE2LjIyNSAxNDcuMTUzIDUxNi40NTEgMTQ3LjE1N0M1MTYuOTA0IDE0Ny4xNjQgNTE3LjQyOCAxNDcuMTc2IDUxOC4wMiAxNDcuMTk1QzUxOS4yMDEgMTQ3LjIzNCA1MjAuNjYgMTQ3LjMwNCA1MjIuMzYxIDE0Ny40MjRDNTI1Ljc0MSAxNDcuNjYzIDUzMC4xODUgMTQ4LjExNCA1MzUuMzYzIDE0OC45NjlDNTQ1LjAwMSAxNTAuNTYyIDU1OC41NTYgMTUzLjc4IDU3Mi45MTggMTYwLjYwM0w3MzAuNDIgMjI2LjY3MUw3MzIuMTAxIDIyNy41MDVDNzcxLjc4NyAyNDcuMTc3IDc4OS45OTMgMjg2LjI5NiA3ODkuOTkzIDMyMi4wMzZWNTg1Ljg2NUM3ODkuOTkzIDU4Ni4wNTQgNzg5Ljk5NCA1ODYuMjU0IDc4OS45OTQgNTg2LjQ2M0w3ODkuOTk2IDU4Ni45MTNDNzkwLjAzOCA1OTcuMDk2IDc5MC4xNjEgNjI2Ljk5NiA3NjQuMjMxIDY1Mi44MjNMNzE0Ljc2IDcwMi4wOTVMNzE0LjY0MSA3MDIuMjE1QzcwNC42MDEgNzEyLjI3NSA2OTIuMTIzIDcyMC42NTIgNjc2LjI4NCA3MjQuODc5QzY2NC4zOSA3MjguMDU0IDY1Mi44MjcgNzI3Ljk2NiA2NDguNjM3IDcyNy45MzRMNjQ4LjYxOSA3MjcuOTMzQzY0OC40MDkgNzI3LjkzMiA2NDguMjE5IDcyNy45MyA2NDguMDQ3IDcyNy45M0w2NDcuNzUyIDcyNy45MjlINDgwLjcyMUM0NzQuMDk0IDcyNy45MjkgNDY4LjcyMSA3MjIuNTU2IDQ2OC43MjEgNzE1LjkyOVY2NjguMzg4SDMyOC41ODZDMzI4LjU4NiA2NzIuNjI5IDMyOC41NzIgNjk4LjA1MiAzMjguNTYxIDcxNS45NDRDMzI4LjU1NyA3MjIuNTY5IDMyMy4xODYgNzI3LjkyOSAzMTYuNTYxIDcyNy45MjlIMTUyLjI0NkMxNTIuMTA0IDcyNy45MjkgMTUxLjk0MiA3MjcuOTI5IDE1MS43NjIgNzI3LjkzMUwxNTEuMzYyIDcyNy45MzRDMTQ3LjE3MiA3MjcuOTY2IDEzNS42MDkgNzI4LjA1NCAxMjMuNzE0IDcyNC44NzlDMTA3Ljg3MyA3MjAuNjUxIDk1LjM5MzggNzEyLjI3MiA4NS4zNTI5IDcwMi4yMUw4NS4yMzg2IDcwMi4wOTVMMzUuNjcgNjUyLjcyNUwzNS41NzIzIDY1Mi42MjdDOS44NjI0MiA2MjYuNzggOS45NjY3IDU5Ny4xODUgMTAuMDAzIDU4Ni44NzRDMTAuMDA0MyA1ODYuNTEzIDEwLjAwNTUgNTg2LjE3NyAxMC4wMDU1IDU4NS44NjVWMzIyLjAzNkMxMC4wMDU1IDI4Ni40MyAyOC4xNjYyIDI0Ny4xOTkgNjcuODk3NyAyMjcuNTA1TDY5LjU3OSAyMjYuNjcxTDIyNy4wODEgMTYwLjYwM0MyNDEuNDQzIDE1My43OCAyNTQuOTk4IDE1MC41NjIgMjY0LjYzNiAxNDguOTY5QzI2OS44MTQgMTQ4LjExNCAyNzQuMjU4IDE0Ny42NjMgMjc3LjYzOCAxNDcuNDI0QzI3OS4zMzggMTQ3LjMwNCAyODAuNzk4IDE0Ny4yMzQgMjgxLjk3OSAxNDcuMTk1QzI4Mi41NzEgMTQ3LjE3NiAyODMuMDk1IDE0Ny4xNjQgMjgzLjU0NyAxNDcuMTU3TDI4My45MTcgMTQ3LjE1MkwyODQuMTczIDE0Ny4xNDlMMjg0LjQ0NSAxNDcuMTQ3TDI4NC41NzEgMTQ3LjE0N0wyODQuNjYgMTQ3LjE0N0wzMDYuOTQyIDE0Ny4xNDdWOTMuODE2NEMzMDYuOTQyIDgwLjY2MyAzMTcuNjA1IDcwIDMzMC43NTggNzBINDY5LjIzNloiIGZpbGw9IiMxOTFBMUEiLz4KPHBhdGggZD0iTTM2Ni40ODMgMTI5LjU0SDQzMy41MTJWMjA2LjY4N0gzNjYuNDgzVjEyOS41NFoiIGZpbGw9IiNGQkNCNEEiLz4KPHBhdGggZD0iTTI2OS4wMSA2MDIuNDI5SDE0NC4wMDhDMTM1Ljc2OCA2MDIuNDI5IDEzNS43NjggNTk0LjE0NiAxMzUuNzY4IDU5NC4xNDZWMjgwLjg1QzEzNS43NjggMjgwLjg1IDEzNS43NjggMjcyLjY0NCAxNDQuMDA4IDI3Mi42NDRIMzY2LjQ4M0wzNjYuNDgzIDIwNi42ODdIMjg0LjY5QzI4NC42OSAyMDYuNjg3IDI2OC4xMzQgMjA2LjY4NyAyNTEuNTc5IDIxNC44OTNMOTQuMzQxNCAyODAuODVDNzcuNzg2MSAyODkuMDU3IDY5LjU0NjkgMzA1LjYyMyA2OS41NDY5IDMyMi4wMzVWNTg1Ljg2M0M2OS41NDY5IDU5NC4xNDcgNjkuNTQ2OSA2MDIuMzUzIDc3Ljc4NjEgNjEwLjYzNkwxMjcuNDUyIDY2MC4xMDRDMTM1LjY5MSA2NjguMzg3IDE0MS45MjggNjY4LjM4NyAxNTIuMjQ3IDY2OC4zODdIMjY5LjAyOUMyNjkuMDM3IDY0OC4zNCAyNjkuMDQ2IDYyNC42NTUgMjY5LjA1NCA2MDIuODg3SDUyOC4wMTNWNjY4LjM4N0g2NDcuNzUzQzY1OC4wNzEgNjY4LjM4NyA2NjQuMzA4IDY2OC4zODcgNjcyLjU0NyA2NjAuMTA0TDcyMi4yMTMgNjEwLjYzNkM3MzAuNDUzIDYwMi40MjkgNzMwLjQ1MyA1OTQuMTQ3IDczMC40NTMgNTg1Ljg2M1YzMjIuMDM1QzczMC40NTMgMzA1LjU0NiA3MjIuMjEzIDI4OS4wNTcgNzA1LjY1OCAyODAuODVMNTQ4LjQyMSAyMTQuODkzQzUzMS44NjUgMjA2LjY4NyA1MTUuMzEgMjA2LjY4NyA1MTUuMzEgMjA2LjY4N0g0MzMuNTEyTDQzMy41MTIgMjcyLjY0NEg2NTYuMDY5QzY2NC4zMDggMjcyLjY0NCA2NjQuMzA4IDI4MC44NSA2NjQuMzA4IDI4MC44NVY1OTQuMTQ2QzY2NC4zMDggNTk0LjE0NiA2NjQuMzA4IDYwMi40MjkgNjU2LjA2OSA2MDIuNDI5SDUyOC4yNjJWNTM3LjM5NkgyNjkuMDc1QzI2OS4wNzUgNTQzLjcwNyAyNjkuMDE3IDU5Ni45MTIgMjY5LjAxIDYwMi40MjlaIiBmaWxsPSIjRkJDQjRBIi8+CjxwYXRoIGQ9Ik0yNjkuMDA5IDQzNi4xNzJINTI4LjI2MlYzNzAuNjgxSDI2OS4wNzVDMjY5LjA3NSAzNzcuMzczIDI2OS4wMDkgNDM2Ljc4OCAyNjkuMDA5IDQzNi4xNzJaIiBmaWxsPSIjRkJDQjRBIi8+CjwvZz4KPGRlZnM+CjxmaWx0ZXIgaWQ9ImZpbHRlcjBfZF81MTEyXzc4MiIgeD0iLTQiIHk9IjAiIHdpZHRoPSI4MDgiIGhlaWdodD0iODA4IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+CjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPgo8ZmVPZmZzZXQgZHk9IjQiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMiIvPgo8ZmVDb21wb3NpdGUgaW4yPSJoYXJkQWxwaGEiIG9wZXJhdG9yPSJvdXQiLz4KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAuMjUgMCIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9ImVmZmVjdDFfZHJvcFNoYWRvd181MTEyXzc4MiIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImVmZmVjdDFfZHJvcFNoYWRvd181MTEyXzc4MiIgcmVzdWx0PSJzaGFwZSIvPgo8L2ZpbHRlcj4KPC9kZWZzPgo8L3N2Zz4K";
148
148
  function E() {
@@ -160,8 +160,8 @@ class S {
160
160
  return this.m_lastPromise = new Promise((a) => M = a), await N, M;
161
161
  }
162
162
  }
163
- const p = new S();
164
- class Z {
163
+ const Y = new S();
164
+ class b {
165
165
  id = "controller";
166
166
  name = "Controller";
167
167
  version = d.version;
@@ -174,7 +174,7 @@ class Z {
174
174
  return this.account;
175
175
  if (this._probePromise)
176
176
  return this._probePromise;
177
- const t = await p.obtain();
177
+ const t = await Y.obtain();
178
178
  return await new Promise(async (M) => {
179
179
  try {
180
180
  this._probePromise = this.probe();
@@ -292,19 +292,18 @@ class Z {
292
292
  }
293
293
  }
294
294
  export {
295
- b as A,
296
- Z as B,
295
+ P as A,
296
+ b as B,
297
297
  l as F,
298
298
  f as K,
299
299
  j as N,
300
- P,
301
300
  w as R,
302
301
  x as a,
303
302
  U as b,
304
303
  h,
305
304
  Q as n,
306
305
  k as p,
307
- n as t,
306
+ r as t,
308
307
  T as v
309
308
  };
310
- //# sourceMappingURL=provider-B9Ikz5hr.js.map
309
+ //# sourceMappingURL=provider-C1UeMjUr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-C1UeMjUr.js","sources":["../src/types.ts","../src/utils.ts","../src/errors.ts","../src/constants.ts","../../../node_modules/.pnpm/@starknet-io+types-js@0.8.4/node_modules/@starknet-io/types-js/dist/esm/wallet-api/constants.js","../src/icon.ts","../src/mutex.ts","../src/provider.ts"],"sourcesContent":["import { Policy, SessionPolicies } from \"@cartridge/presets\";\nimport {\n AddInvokeTransactionResult,\n ChainId,\n Signature,\n TypedData,\n} from \"@starknet-io/types-js\";\nimport {\n Abi,\n BigNumberish,\n Call,\n constants,\n InvocationsDetails,\n} from \"starknet\";\nimport { KeychainIFrame } from \"./iframe\";\nimport {\n ExternalWallet,\n ExternalWalletResponse,\n ExternalWalletType,\n} from \"./wallets/types\";\n\nexport type Session = {\n chainId: constants.StarknetChainId;\n policies: Policy[];\n maxFee: BigNumberish;\n expiresAt: bigint;\n credentials: {\n authorization: string[];\n privateKey: string;\n };\n};\n\nexport type AuthOption =\n | \"webauthn\"\n | \"discord\"\n | \"walletconnect\"\n | ExternalWalletType;\n\nexport type AuthOptions = Omit<AuthOption, \"phantom\" | \"argent\">[];\n\nexport enum ResponseCodes {\n SUCCESS = \"SUCCESS\",\n NOT_CONNECTED = \"NOT_CONNECTED\",\n ERROR = \"ERROR\",\n CANCELED = \"CANCELED\",\n USER_INTERACTION_REQUIRED = \"USER_INTERACTION_REQUIRED\",\n}\n\nexport type ConnectError = {\n code: ResponseCodes;\n message: string;\n error?: ControllerError;\n};\n\nexport type ControllerError = {\n code: Number;\n message: string;\n data?: any;\n};\n\nexport type ConnectReply = {\n code: ResponseCodes.SUCCESS;\n address: string;\n policies?: SessionPolicies;\n};\n\nexport type ExecuteReply =\n | (AddInvokeTransactionResult & {\n code: ResponseCodes.SUCCESS;\n })\n | {\n code: ResponseCodes.USER_INTERACTION_REQUIRED;\n };\n\nexport type ProbeReply = {\n code: ResponseCodes.SUCCESS;\n address: string;\n rpcUrl?: string;\n};\n\nexport type DeployReply = {\n code: ResponseCodes.SUCCESS;\n transaction_hash: string;\n};\n\nexport type IFrames = {\n keychain: KeychainIFrame;\n version?: number;\n};\n\nexport interface LookupRequest {\n usernames?: string[];\n addresses?: string[];\n}\n\nexport interface LookupResult {\n username: string;\n addresses: string[];\n}\n\nexport interface LookupResponse {\n results: LookupResult[];\n}\n\nexport enum FeeSource {\n PAYMASTER = \"PAYMASTER\",\n CREDITS = \"CREDITS\",\n}\n\ntype ContractAddress = string;\ntype CartridgeID = string;\nexport type ControllerAccounts = Record<ContractAddress, CartridgeID>;\n\nexport interface Keychain {\n probe(rpcUrl: string): Promise<ProbeReply | ConnectError>;\n connect(\n policies: SessionPolicies,\n rpcUrl: string,\n signupOptions?: AuthOptions,\n ): Promise<ConnectReply | ConnectError>;\n disconnect(): void;\n\n reset(): void;\n revoke(origin: string): void;\n\n deploy(): Promise<DeployReply | ConnectError>;\n execute(\n calls: Call | Call[],\n abis?: Abi[],\n transactionsDetail?: InvocationsDetails,\n sync?: boolean,\n feeSource?: any,\n error?: ControllerError,\n ): Promise<ExecuteReply | ConnectError>;\n signMessage(\n typedData: TypedData,\n account: string,\n async?: boolean,\n ): Promise<Signature | ConnectError>;\n openSettings(): Promise<void | ConnectError>;\n session(): Promise<Session>;\n sessions(): Promise<{\n [key: string]: Session;\n }>;\n delegateAccount(): string;\n username(): string;\n openPurchaseCredits(): void;\n openExecute(calls: Call[]): Promise<void>;\n switchChain(rpcUrl: string): Promise<void>;\n openStarterPack(starterpackId: string): void;\n navigate(path: string): Promise<void>;\n\n // External wallet methods\n externalDetectWallets(): Promise<ExternalWallet[]>;\n externalConnectWallet(\n type: ExternalWalletType,\n address?: string,\n ): Promise<ExternalWalletResponse>;\n externalSignMessage(\n type: ExternalWalletType,\n message: string,\n ): Promise<ExternalWalletResponse>;\n externalSignTypedData(\n type: ExternalWalletType,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any,\n ): Promise<ExternalWalletResponse>;\n externalGetBalance(\n type: ExternalWalletType,\n tokenAddress?: string,\n ): Promise<ExternalWalletResponse>;\n}\n\nexport interface Profile {\n navigate(path: string): void;\n switchChain(rpcUrl: string): Promise<void>;\n}\n\nexport interface Modal {\n open: () => void;\n close: () => void;\n}\n\n/**\n * Options for configuring the controller\n */\nexport type ControllerOptions = ProviderOptions & KeychainOptions;\n\nexport type IFrameOptions = {\n /** The ID of the starter pack to use */\n starterPackId?: string;\n /** The preset to use */\n preset?: string;\n};\n\nexport type Chain = {\n rpcUrl: string;\n};\n\nexport type ProviderOptions = {\n defaultChainId?: ChainId;\n chains?: Chain[];\n};\n\nexport type KeychainOptions = IFrameOptions & {\n policies?: SessionPolicies;\n /** The URL of keychain */\n url?: string;\n /** The origin of keychain */\n origin?: string;\n /** Propagate transaction errors back to caller instead of showing modal */\n propagateSessionErrors?: boolean;\n /** The fee source to use for execute from outside */\n feeSource?: FeeSource;\n /** Signup options (the order of the options is reflected in the UI. It's recommended to group socials and wallets together ) */\n signupOptions?: AuthOptions;\n /** When true, manually provided policies will override preset policies. Default is false. */\n shouldOverridePresetPolicies?: boolean;\n /** The project name of Slot instance. */\n slot?: string;\n /** The namespace to use to fetch trophies data from indexer. Will be mandatory once profile page is in production */\n namespace?: string;\n /** The tokens to be listed on Inventory modal */\n tokens?: Tokens;\n};\n\nexport type ProfileContextTypeVariant =\n | \"inventory\"\n | \"trophies\"\n | \"achievements\"\n | \"leaderboard\"\n | \"activity\";\n\nexport type Token = \"eth\" | \"strk\" | \"lords\" | \"usdc\" | \"usdt\";\n\nexport type Tokens = {\n erc20?: Token[];\n};\n","import {\n addAddressPadding,\n Call,\n CallData,\n constants,\n getChecksumAddress,\n hash,\n shortString,\n typedData,\n TypedDataRevision,\n} from \"starknet\";\nimport { Policy } from \"@cartridge/controller-wasm/controller\";\nimport { Policies, SessionPolicies } from \"@cartridge/presets\";\nimport { ChainId } from \"@starknet-io/types-js\";\nimport { ParsedSessionPolicies } from \"./policies\";\n\n// Whitelist of allowed property names to prevent prototype pollution\nconst ALLOWED_PROPERTIES = new Set([\n \"contracts\",\n \"messages\",\n \"target\",\n \"method\",\n \"name\",\n \"description\",\n \"types\",\n \"domain\",\n \"primaryType\",\n]);\n\nfunction validatePropertyName(prop: string): void {\n if (!ALLOWED_PROPERTIES.has(prop)) {\n throw new Error(`Invalid property name: ${prop}`);\n }\n}\n\nfunction safeObjectAccess<T>(obj: any, prop: string): T {\n validatePropertyName(prop);\n return obj[prop];\n}\n\nexport function normalizeCalls(calls: Call | Call[]) {\n return toArray(calls).map((call) => {\n return {\n entrypoint: call.entrypoint,\n contractAddress: addAddressPadding(call.contractAddress),\n calldata: CallData.toHex(call.calldata),\n };\n });\n}\n\nexport function toSessionPolicies(policies: Policies): SessionPolicies {\n return Array.isArray(policies)\n ? policies.reduce<SessionPolicies>(\n (prev, p) => {\n if (safeObjectAccess<string>(p, \"target\")) {\n const target = getChecksumAddress(\n safeObjectAccess<string>(p, \"target\"),\n );\n const entrypoint = safeObjectAccess<string>(p, \"method\");\n const contracts = safeObjectAccess<Record<string, any>>(\n prev,\n \"contracts\",\n );\n const item = {\n name: humanizeString(entrypoint),\n entrypoint: entrypoint,\n description: safeObjectAccess<string>(p, \"description\"),\n };\n\n if (target in contracts) {\n const methods = toArray(contracts[target].methods);\n contracts[target] = {\n methods: [...methods, item],\n };\n } else {\n contracts[target] = {\n methods: [item],\n };\n }\n } else {\n const messages = safeObjectAccess<any[]>(prev, \"messages\");\n messages.push(p);\n }\n\n return prev;\n },\n { contracts: {}, messages: [] },\n )\n : policies;\n}\n\nexport function toWasmPolicies(policies: ParsedSessionPolicies): Policy[] {\n return [\n ...Object.entries(policies.contracts ?? {}).flatMap(\n ([target, { methods }]) =>\n toArray(methods).map((m) => ({\n target,\n method: m.entrypoint,\n authorized: m.authorized,\n })),\n ),\n ...(policies.messages ?? []).map((p) => {\n const domainHash = typedData.getStructHash(\n p.types,\n \"StarknetDomain\",\n p.domain,\n TypedDataRevision.ACTIVE,\n );\n const typeHash = typedData.getTypeHash(\n p.types,\n p.primaryType,\n TypedDataRevision.ACTIVE,\n );\n\n return {\n scope_hash: hash.computePoseidonHash(domainHash, typeHash),\n authorized: p.authorized,\n };\n }),\n ];\n}\n\nexport function toArray<T>(val: T | T[]): T[] {\n return Array.isArray(val) ? val : [val];\n}\n\nexport function humanizeString(str: string): string {\n return (\n str\n // Convert from camelCase or snake_case\n .replace(/([a-z])([A-Z])/g, \"$1 $2\") // camelCase to spaces\n .replace(/_/g, \" \") // snake_case to spaces\n .toLowerCase()\n // Capitalize first letter\n .replace(/^\\w/, (c) => c.toUpperCase())\n );\n}\n\nexport function parseChainId(url: URL): ChainId {\n const parts = url.pathname.split(\"/\");\n\n // Handle localhost URLs by making a synchronous call to getChainId\n if (\n url.hostname === \"localhost\" ||\n url.hostname === \"127.0.0.1\" ||\n url.hostname === \"0.0.0.0\"\n ) {\n // Check if we're in a browser environment\n if (typeof XMLHttpRequest === \"undefined\") {\n // In Node.js environment (like tests), we can't make synchronous HTTP calls\n // For now, we'll use a placeholder chainId for localhost in tests\n console.warn(\n `Cannot make synchronous HTTP call in Node.js environment for ${url.toString()}`,\n );\n return shortString.encodeShortString(\"LOCALHOST\") as ChainId;\n }\n\n // Use a synchronous XMLHttpRequest to get the chain ID\n const xhr = new XMLHttpRequest();\n xhr.open(\"POST\", url.toString(), false); // false makes it synchronous\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n\n const requestBody = JSON.stringify({\n jsonrpc: \"2.0\",\n method: \"starknet_chainId\",\n params: [],\n id: 1,\n });\n\n try {\n xhr.send(requestBody);\n\n if (xhr.status === 200) {\n const response = JSON.parse(xhr.responseText);\n if (response.result) {\n return response.result as ChainId;\n }\n }\n\n throw new Error(\n `Failed to get chain ID from ${url.toString()}: ${xhr.status} ${xhr.statusText}`,\n );\n } catch (error) {\n throw new Error(`Failed to connect to ${url.toString()}: ${error}`);\n }\n }\n\n if (parts.includes(\"starknet\")) {\n if (parts.includes(\"mainnet\")) {\n return constants.StarknetChainId.SN_MAIN;\n } else if (parts.includes(\"sepolia\")) {\n return constants.StarknetChainId.SN_SEPOLIA;\n }\n } else if (parts.length >= 3) {\n const projectName = parts[2];\n if (parts.includes(\"katana\")) {\n return shortString.encodeShortString(\n `WP_${projectName.toUpperCase().replace(/-/g, \"_\")}`,\n ) as ChainId;\n } else if (parts.includes(\"mainnet\")) {\n return shortString.encodeShortString(\n `GG_${projectName.toUpperCase().replace(/-/g, \"_\")}`,\n ) as ChainId;\n }\n }\n\n throw new Error(`Chain ${url.toString()} not supported`);\n}\n","export class NotReadyToConnect extends Error {\n constructor() {\n super(\"Not ready to connect\");\n\n Object.setPrototypeOf(this, NotReadyToConnect.prototype);\n }\n}\n","export const KEYCHAIN_URL = \"https://x.cartridge.gg\";\nexport const PROFILE_URL = \"https://profile.cartridge.gg\";\nexport const API_URL = \"https://api.cartridge.gg\";\n","export const Permission = {\n ACCOUNTS: 'accounts',\n};\n//# sourceMappingURL=constants.js.map","export const icon =\n \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjgwMCIgdmlld0JveD0iMCAwIDgwMCA4MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2RfNTExMl83ODIpIj4KPHBhdGggZD0iTTQ2OS4yMzYgNzBDNDgyLjM5IDcwIDQ5My4wNTMgODAuNjYzIDQ5My4wNTMgOTMuODE2NFYxNDcuMTQ3TDUxNS4zMzggMTQ3LjE0N0w1MTUuNDI4IDE0Ny4xNDdMNTE1LjU1NCAxNDcuMTQ3TDUxNS44MjYgMTQ3LjE0OUM1MTYuMDE2IDE0Ny4xNTEgNTE2LjIyNSAxNDcuMTUzIDUxNi40NTEgMTQ3LjE1N0M1MTYuOTA0IDE0Ny4xNjQgNTE3LjQyOCAxNDcuMTc2IDUxOC4wMiAxNDcuMTk1QzUxOS4yMDEgMTQ3LjIzNCA1MjAuNjYgMTQ3LjMwNCA1MjIuMzYxIDE0Ny40MjRDNTI1Ljc0MSAxNDcuNjYzIDUzMC4xODUgMTQ4LjExNCA1MzUuMzYzIDE0OC45NjlDNTQ1LjAwMSAxNTAuNTYyIDU1OC41NTYgMTUzLjc4IDU3Mi45MTggMTYwLjYwM0w3MzAuNDIgMjI2LjY3MUw3MzIuMTAxIDIyNy41MDVDNzcxLjc4NyAyNDcuMTc3IDc4OS45OTMgMjg2LjI5NiA3ODkuOTkzIDMyMi4wMzZWNTg1Ljg2NUM3ODkuOTkzIDU4Ni4wNTQgNzg5Ljk5NCA1ODYuMjU0IDc4OS45OTQgNTg2LjQ2M0w3ODkuOTk2IDU4Ni45MTNDNzkwLjAzOCA1OTcuMDk2IDc5MC4xNjEgNjI2Ljk5NiA3NjQuMjMxIDY1Mi44MjNMNzE0Ljc2IDcwMi4wOTVMNzE0LjY0MSA3MDIuMjE1QzcwNC42MDEgNzEyLjI3NSA2OTIuMTIzIDcyMC42NTIgNjc2LjI4NCA3MjQuODc5QzY2NC4zOSA3MjguMDU0IDY1Mi44MjcgNzI3Ljk2NiA2NDguNjM3IDcyNy45MzRMNjQ4LjYxOSA3MjcuOTMzQzY0OC40MDkgNzI3LjkzMiA2NDguMjE5IDcyNy45MyA2NDguMDQ3IDcyNy45M0w2NDcuNzUyIDcyNy45MjlINDgwLjcyMUM0NzQuMDk0IDcyNy45MjkgNDY4LjcyMSA3MjIuNTU2IDQ2OC43MjEgNzE1LjkyOVY2NjguMzg4SDMyOC41ODZDMzI4LjU4NiA2NzIuNjI5IDMyOC41NzIgNjk4LjA1MiAzMjguNTYxIDcxNS45NDRDMzI4LjU1NyA3MjIuNTY5IDMyMy4xODYgNzI3LjkyOSAzMTYuNTYxIDcyNy45MjlIMTUyLjI0NkMxNTIuMTA0IDcyNy45MjkgMTUxLjk0MiA3MjcuOTI5IDE1MS43NjIgNzI3LjkzMUwxNTEuMzYyIDcyNy45MzRDMTQ3LjE3MiA3MjcuOTY2IDEzNS42MDkgNzI4LjA1NCAxMjMuNzE0IDcyNC44NzlDMTA3Ljg3MyA3MjAuNjUxIDk1LjM5MzggNzEyLjI3MiA4NS4zNTI5IDcwMi4yMUw4NS4yMzg2IDcwMi4wOTVMMzUuNjcgNjUyLjcyNUwzNS41NzIzIDY1Mi42MjdDOS44NjI0MiA2MjYuNzggOS45NjY3IDU5Ny4xODUgMTAuMDAzIDU4Ni44NzRDMTAuMDA0MyA1ODYuNTEzIDEwLjAwNTUgNTg2LjE3NyAxMC4wMDU1IDU4NS44NjVWMzIyLjAzNkMxMC4wMDU1IDI4Ni40MyAyOC4xNjYyIDI0Ny4xOTkgNjcuODk3NyAyMjcuNTA1TDY5LjU3OSAyMjYuNjcxTDIyNy4wODEgMTYwLjYwM0MyNDEuNDQzIDE1My43OCAyNTQuOTk4IDE1MC41NjIgMjY0LjYzNiAxNDguOTY5QzI2OS44MTQgMTQ4LjExNCAyNzQuMjU4IDE0Ny42NjMgMjc3LjYzOCAxNDcuNDI0QzI3OS4zMzggMTQ3LjMwNCAyODAuNzk4IDE0Ny4yMzQgMjgxLjk3OSAxNDcuMTk1QzI4Mi41NzEgMTQ3LjE3NiAyODMuMDk1IDE0Ny4xNjQgMjgzLjU0NyAxNDcuMTU3TDI4My45MTcgMTQ3LjE1MkwyODQuMTczIDE0Ny4xNDlMMjg0LjQ0NSAxNDcuMTQ3TDI4NC41NzEgMTQ3LjE0N0wyODQuNjYgMTQ3LjE0N0wzMDYuOTQyIDE0Ny4xNDdWOTMuODE2NEMzMDYuOTQyIDgwLjY2MyAzMTcuNjA1IDcwIDMzMC43NTggNzBINDY5LjIzNloiIGZpbGw9IiMxOTFBMUEiLz4KPHBhdGggZD0iTTM2Ni40ODMgMTI5LjU0SDQzMy41MTJWMjA2LjY4N0gzNjYuNDgzVjEyOS41NFoiIGZpbGw9IiNGQkNCNEEiLz4KPHBhdGggZD0iTTI2OS4wMSA2MDIuNDI5SDE0NC4wMDhDMTM1Ljc2OCA2MDIuNDI5IDEzNS43NjggNTk0LjE0NiAxMzUuNzY4IDU5NC4xNDZWMjgwLjg1QzEzNS43NjggMjgwLjg1IDEzNS43NjggMjcyLjY0NCAxNDQuMDA4IDI3Mi42NDRIMzY2LjQ4M0wzNjYuNDgzIDIwNi42ODdIMjg0LjY5QzI4NC42OSAyMDYuNjg3IDI2OC4xMzQgMjA2LjY4NyAyNTEuNTc5IDIxNC44OTNMOTQuMzQxNCAyODAuODVDNzcuNzg2MSAyODkuMDU3IDY5LjU0NjkgMzA1LjYyMyA2OS41NDY5IDMyMi4wMzVWNTg1Ljg2M0M2OS41NDY5IDU5NC4xNDcgNjkuNTQ2OSA2MDIuMzUzIDc3Ljc4NjEgNjEwLjYzNkwxMjcuNDUyIDY2MC4xMDRDMTM1LjY5MSA2NjguMzg3IDE0MS45MjggNjY4LjM4NyAxNTIuMjQ3IDY2OC4zODdIMjY5LjAyOUMyNjkuMDM3IDY0OC4zNCAyNjkuMDQ2IDYyNC42NTUgMjY5LjA1NCA2MDIuODg3SDUyOC4wMTNWNjY4LjM4N0g2NDcuNzUzQzY1OC4wNzEgNjY4LjM4NyA2NjQuMzA4IDY2OC4zODcgNjcyLjU0NyA2NjAuMTA0TDcyMi4yMTMgNjEwLjYzNkM3MzAuNDUzIDYwMi40MjkgNzMwLjQ1MyA1OTQuMTQ3IDczMC40NTMgNTg1Ljg2M1YzMjIuMDM1QzczMC40NTMgMzA1LjU0NiA3MjIuMjEzIDI4OS4wNTcgNzA1LjY1OCAyODAuODVMNTQ4LjQyMSAyMTQuODkzQzUzMS44NjUgMjA2LjY4NyA1MTUuMzEgMjA2LjY4NyA1MTUuMzEgMjA2LjY4N0g0MzMuNTEyTDQzMy41MTIgMjcyLjY0NEg2NTYuMDY5QzY2NC4zMDggMjcyLjY0NCA2NjQuMzA4IDI4MC44NSA2NjQuMzA4IDI4MC44NVY1OTQuMTQ2QzY2NC4zMDggNTk0LjE0NiA2NjQuMzA4IDYwMi40MjkgNjU2LjA2OSA2MDIuNDI5SDUyOC4yNjJWNTM3LjM5NkgyNjkuMDc1QzI2OS4wNzUgNTQzLjcwNyAyNjkuMDE3IDU5Ni45MTIgMjY5LjAxIDYwMi40MjlaIiBmaWxsPSIjRkJDQjRBIi8+CjxwYXRoIGQ9Ik0yNjkuMDA5IDQzNi4xNzJINTI4LjI2MlYzNzAuNjgxSDI2OS4wNzVDMjY5LjA3NSAzNzcuMzczIDI2OS4wMDkgNDM2Ljc4OCAyNjkuMDA5IDQzNi4xNzJaIiBmaWxsPSIjRkJDQjRBIi8+CjwvZz4KPGRlZnM+CjxmaWx0ZXIgaWQ9ImZpbHRlcjBfZF81MTEyXzc4MiIgeD0iLTQiIHk9IjAiIHdpZHRoPSI4MDgiIGhlaWdodD0iODA4IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+CjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPgo8ZmVPZmZzZXQgZHk9IjQiLz4KPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMiIvPgo8ZmVDb21wb3NpdGUgaW4yPSJoYXJkQWxwaGEiIG9wZXJhdG9yPSJvdXQiLz4KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAuMjUgMCIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9ImVmZmVjdDFfZHJvcFNoYWRvd181MTEyXzc4MiIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImVmZmVjdDFfZHJvcFNoYWRvd181MTEyXzc4MiIgcmVzdWx0PSJzaGFwZSIvPgo8L2ZpbHRlcj4KPC9kZWZzPgo8L3N2Zz4K\";\n","function releaseStub() {}\n\n/**\n * A simple mutual exclusion lock. It allows you to obtain and release a lock,\n * ensuring that only one task can access a critical section at a time.\n */\nexport class Mutex {\n private m_lastPromise: Promise<void> = Promise.resolve();\n\n /**\n * Acquire lock\n * @param [bypass=false] option to skip lock acquisition\n */\n public async obtain(bypass = false): Promise<() => void> {\n let release = releaseStub;\n if (bypass) return release;\n const lastPromise = this.m_lastPromise;\n this.m_lastPromise = new Promise<void>((resolve) => (release = resolve));\n await lastPromise;\n return release;\n }\n}\n","import {\n AddInvokeTransactionParameters,\n AddStarknetChainParameters,\n Permission,\n RequestAccountsParameters,\n RequestFn,\n StarknetWindowObject,\n SwitchStarknetChainParameters,\n TypedData,\n UNEXPECTED_ERROR,\n WalletEventHandlers,\n WalletEventListener,\n WalletEvents,\n} from \"@starknet-io/types-js\";\nimport { WalletAccount } from \"starknet\";\nimport manifest from \"../package.json\";\n\nimport { icon } from \"./icon\";\nimport { Mutex } from \"./mutex\";\n\nconst mutex = new Mutex();\n\nexport default abstract class BaseProvider implements StarknetWindowObject {\n public id = \"controller\";\n public name = \"Controller\";\n public version = manifest.version;\n public icon = icon;\n\n public account?: WalletAccount;\n public subscriptions: WalletEvents[] = [];\n\n private _probePromise: Promise<WalletAccount | undefined> | null = null;\n\n protected async safeProbe(): Promise<WalletAccount | undefined> {\n // If we already have an account, return it\n if (this.account) {\n return this.account;\n }\n\n // If we're already probing, wait for the existing probe\n if (this._probePromise) {\n return this._probePromise;\n }\n\n const release = await mutex.obtain();\n return await new Promise<WalletAccount | undefined>(async (resolve) => {\n try {\n this._probePromise = this.probe();\n const result = await this._probePromise;\n resolve(result);\n } finally {\n this._probePromise = null;\n }\n }).finally(() => {\n release();\n });\n }\n\n request: RequestFn = async (call) => {\n switch (call.type) {\n case \"wallet_getPermissions\":\n await this.safeProbe();\n\n if (this.account) {\n return [Permission.ACCOUNTS];\n }\n\n return [];\n\n case \"wallet_requestAccounts\": {\n if (this.account) {\n return [this.account.address];\n }\n\n const silentMode =\n call.params && (call.params as RequestAccountsParameters).silent_mode;\n\n this.account = await this.safeProbe();\n\n if (!this.account && !silentMode) {\n this.account = await this.connect();\n }\n\n if (this.account) {\n return [this.account.address];\n }\n\n return [];\n }\n\n case \"wallet_watchAsset\":\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"wallet_watchAsset not implemented\",\n } as UNEXPECTED_ERROR;\n\n case \"wallet_addStarknetChain\": {\n let params = call.params as AddStarknetChainParameters;\n return this.addStarknetChain(params);\n }\n\n case \"wallet_switchStarknetChain\": {\n let params = call.params as SwitchStarknetChainParameters;\n return this.switchStarknetChain(params.chainId);\n }\n\n case \"wallet_requestChainId\":\n if (!this.account) {\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"Account not initialized\",\n } as UNEXPECTED_ERROR;\n }\n\n return await this.account.getChainId();\n\n case \"wallet_deploymentData\":\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"wallet_deploymentData not implemented\",\n } as UNEXPECTED_ERROR;\n\n case \"wallet_addInvokeTransaction\":\n if (!this.account) {\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"Account not initialized\",\n } as UNEXPECTED_ERROR;\n }\n\n let params = call.params as AddInvokeTransactionParameters;\n return await this.account.execute(\n params.calls.map((call) => ({\n contractAddress: call.contract_address,\n entrypoint: call.entry_point,\n calldata: call.calldata,\n })),\n );\n\n case \"wallet_addDeclareTransaction\":\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"wallet_addDeclareTransaction not implemented\",\n } as UNEXPECTED_ERROR;\n\n case \"wallet_signTypedData\": {\n if (!this.account) {\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"Account not initialized\",\n } as UNEXPECTED_ERROR;\n }\n\n return await this.account.signMessage(call.params as TypedData);\n }\n\n case \"wallet_supportedSpecs\":\n return [];\n case \"wallet_supportedWalletApi\":\n return [];\n default:\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: `Unknown RPC call type: ${call.type}`,\n } as UNEXPECTED_ERROR;\n }\n };\n\n on: WalletEventListener = <E extends keyof WalletEventHandlers>(\n event: E,\n handler: WalletEventHandlers[E],\n ): void => {\n if (event !== \"accountsChanged\" && event !== \"networkChanged\") {\n throw new Error(`Unknown event: ${event}`);\n }\n this.subscriptions.push({ type: event, handler } as WalletEvents);\n };\n\n off: WalletEventListener = <E extends keyof WalletEventHandlers>(\n event: E,\n handler: WalletEventHandlers[E],\n ): void => {\n if (event !== \"accountsChanged\" && event !== \"networkChanged\") {\n throw new Error(`Unknown event: ${event}`);\n }\n const idx = this.subscriptions.findIndex(\n (sub) => sub.type === event && sub.handler === handler,\n );\n if (idx >= 0) {\n this.subscriptions.splice(idx, 1);\n }\n };\n\n protected emitNetworkChanged(chainId: string) {\n this.subscriptions\n .filter((sub) => sub.type === \"networkChanged\")\n .forEach((sub) => {\n (sub.handler as WalletEventHandlers[\"networkChanged\"])(chainId);\n });\n }\n\n protected emitAccountsChanged(accounts: string[]) {\n this.subscriptions\n .filter((sub) => sub.type === \"accountsChanged\")\n .forEach((sub) => {\n (sub.handler as WalletEventHandlers[\"accountsChanged\"])(accounts);\n });\n }\n\n abstract probe(): Promise<WalletAccount | undefined>;\n abstract connect(): Promise<WalletAccount | undefined>;\n abstract switchStarknetChain(chainId: string): Promise<boolean>;\n abstract addStarknetChain(\n chain: AddStarknetChainParameters,\n ): Promise<boolean>;\n}\n"],"names":["ResponseCodes","FeeSource","ALLOWED_PROPERTIES","validatePropertyName","prop","safeObjectAccess","obj","normalizeCalls","calls","toArray","call","addAddressPadding","CallData","toSessionPolicies","policies","prev","p","target","getChecksumAddress","entrypoint","contracts","item","humanizeString","methods","toWasmPolicies","m","domainHash","typedData","TypedDataRevision","typeHash","hash","val","str","c","parseChainId","url","parts","shortString","xhr","requestBody","response","error","constants","projectName","NotReadyToConnect","KEYCHAIN_URL","API_URL","Permission","icon","releaseStub","Mutex","bypass","release","lastPromise","resolve","mutex","BaseProvider","manifest","result","silentMode","params","event","handler","idx","sub","chainId","accounts"],"mappings":"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","x_google_ignoreList":[4]}
package/dist/session.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { WalletAccount as N, stark as F, ec as T } from "starknet";
2
- import * as C from "../../../node_modules/.pnpm/@cartridge+controller-wasm@0.2.1/node_modules/@cartridge/controller-wasm/pkg-session/session_wasm_bg.wasm";
3
- import { n as J, B as z, K, b as E } from "./provider-B9Ikz5hr.js";
4
- import { F as Y, N as X, R as Z } from "./provider-B9Ikz5hr.js";
2
+ import * as C from "../../../node_modules/.pnpm/@cartridge+controller-wasm@0.2.3/node_modules/@cartridge/controller-wasm/pkg-session/session_wasm_bg.wasm";
3
+ import { n as J, B as z, K, b as E } from "./provider-C1UeMjUr.js";
4
+ import { F as Y, N as X, R as Z } from "./provider-C1UeMjUr.js";
5
5
  let a;
6
6
  function j(n) {
7
7
  a = n;
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sources":["../../../node_modules/.pnpm/@cartridge+controller-wasm@0.2.1/node_modules/@cartridge/controller-wasm/pkg-session/session_wasm_bg.js","../../../node_modules/.pnpm/@cartridge+controller-wasm@0.2.1/node_modules/@cartridge/controller-wasm/pkg-session/session_wasm.js","../src/session/account.ts","../src/session/provider.ts"],"sourcesContent":["import { Mutex } from './snippets/account-wasm-35da9c7350cbc3ae/src/wasm-mutex.js';\n\nlet wasm;\nexport function __wbg_set_wasm(val) {\n wasm = val;\n}\n\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet WASM_VECTOR_LEN = 0;\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nconst lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder;\n\nlet cachedTextEncoder = new lTextEncoder('utf-8');\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nconst lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder;\n\nlet cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_export_2(addHeapObject(e));\n }\n}\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nconst CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(state => {\n wasm.__wbindgen_export_4.get(state.dtor)(state.a, state.b)\n});\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_4.get(state.dtor)(a, state.b);\n CLOSURE_DTORS.unregister(state);\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n CLOSURE_DTORS.register(real, state, state);\n return real;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4, 4) >>> 0;\n const mem = getDataViewMemory0();\n for (let i = 0; i < array.length; i++) {\n mem.setUint32(ptr + 4 * i, addHeapObject(array[i]), true);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\nfunction __wbg_adapter_42(arg0, arg1) {\n wasm.__wbindgen_export_5(arg0, arg1);\n}\n\nfunction __wbg_adapter_45(arg0, arg1, arg2) {\n wasm.__wbindgen_export_6(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_199(arg0, arg1, arg2, arg3) {\n wasm.__wbindgen_export_7(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\n/**\n * @enum {1 | 20 | 24 | 27 | 28 | 29 | 31 | 32 | 33 | 34 | 40 | 41 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 10 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137}\n */\nexport const ErrorCode = Object.freeze({\n StarknetFailedToReceiveTransaction: 1, \"1\": \"StarknetFailedToReceiveTransaction\",\n StarknetContractNotFound: 20, \"20\": \"StarknetContractNotFound\",\n StarknetBlockNotFound: 24, \"24\": \"StarknetBlockNotFound\",\n StarknetInvalidTransactionIndex: 27, \"27\": \"StarknetInvalidTransactionIndex\",\n StarknetClassHashNotFound: 28, \"28\": \"StarknetClassHashNotFound\",\n StarknetTransactionHashNotFound: 29, \"29\": \"StarknetTransactionHashNotFound\",\n StarknetPageSizeTooBig: 31, \"31\": \"StarknetPageSizeTooBig\",\n StarknetNoBlocks: 32, \"32\": \"StarknetNoBlocks\",\n StarknetInvalidContinuationToken: 33, \"33\": \"StarknetInvalidContinuationToken\",\n StarknetTooManyKeysInFilter: 34, \"34\": \"StarknetTooManyKeysInFilter\",\n StarknetContractError: 40, \"40\": \"StarknetContractError\",\n StarknetTransactionExecutionError: 41, \"41\": \"StarknetTransactionExecutionError\",\n StarknetClassAlreadyDeclared: 51, \"51\": \"StarknetClassAlreadyDeclared\",\n StarknetInvalidTransactionNonce: 52, \"52\": \"StarknetInvalidTransactionNonce\",\n StarknetInsufficientMaxFee: 53, \"53\": \"StarknetInsufficientMaxFee\",\n StarknetInsufficientAccountBalance: 54, \"54\": \"StarknetInsufficientAccountBalance\",\n StarknetValidationFailure: 55, \"55\": \"StarknetValidationFailure\",\n StarknetCompilationFailed: 56, \"56\": \"StarknetCompilationFailed\",\n StarknetContractClassSizeIsTooLarge: 57, \"57\": \"StarknetContractClassSizeIsTooLarge\",\n StarknetNonAccount: 58, \"58\": \"StarknetNonAccount\",\n StarknetDuplicateTx: 59, \"59\": \"StarknetDuplicateTx\",\n StarknetCompiledClassHashMismatch: 60, \"60\": \"StarknetCompiledClassHashMismatch\",\n StarknetUnsupportedTxVersion: 61, \"61\": \"StarknetUnsupportedTxVersion\",\n StarknetUnsupportedContractClassVersion: 62, \"62\": \"StarknetUnsupportedContractClassVersion\",\n StarknetUnexpectedError: 63, \"63\": \"StarknetUnexpectedError\",\n StarknetNoTraceAvailable: 10, \"10\": \"StarknetNoTraceAvailable\",\n SignError: 101, \"101\": \"SignError\",\n StorageError: 102, \"102\": \"StorageError\",\n AccountFactoryError: 103, \"103\": \"AccountFactoryError\",\n PaymasterExecutionTimeNotReached: 104, \"104\": \"PaymasterExecutionTimeNotReached\",\n PaymasterExecutionTimePassed: 105, \"105\": \"PaymasterExecutionTimePassed\",\n PaymasterInvalidCaller: 106, \"106\": \"PaymasterInvalidCaller\",\n PaymasterRateLimitExceeded: 107, \"107\": \"PaymasterRateLimitExceeded\",\n PaymasterNotSupported: 108, \"108\": \"PaymasterNotSupported\",\n PaymasterHttp: 109, \"109\": \"PaymasterHttp\",\n PaymasterExcecution: 110, \"110\": \"PaymasterExcecution\",\n PaymasterSerialization: 111, \"111\": \"PaymasterSerialization\",\n CartridgeControllerNotDeployed: 112, \"112\": \"CartridgeControllerNotDeployed\",\n InsufficientBalance: 113, \"113\": \"InsufficientBalance\",\n OriginError: 114, \"114\": \"OriginError\",\n EncodingError: 115, \"115\": \"EncodingError\",\n SerdeWasmBindgenError: 116, \"116\": \"SerdeWasmBindgenError\",\n CairoSerdeError: 117, \"117\": \"CairoSerdeError\",\n CairoShortStringToFeltError: 118, \"118\": \"CairoShortStringToFeltError\",\n DeviceCreateCredential: 119, \"119\": \"DeviceCreateCredential\",\n DeviceGetAssertion: 120, \"120\": \"DeviceGetAssertion\",\n DeviceBadAssertion: 121, \"121\": \"DeviceBadAssertion\",\n DeviceChannel: 122, \"122\": \"DeviceChannel\",\n DeviceOrigin: 123, \"123\": \"DeviceOrigin\",\n AccountSigning: 124, \"124\": \"AccountSigning\",\n AccountProvider: 125, \"125\": \"AccountProvider\",\n AccountClassHashCalculation: 126, \"126\": \"AccountClassHashCalculation\",\n AccountFeeOutOfRange: 128, \"128\": \"AccountFeeOutOfRange\",\n ProviderRateLimited: 129, \"129\": \"ProviderRateLimited\",\n ProviderArrayLengthMismatch: 130, \"130\": \"ProviderArrayLengthMismatch\",\n ProviderOther: 131, \"131\": \"ProviderOther\",\n SessionAlreadyRegistered: 132, \"132\": \"SessionAlreadyRegistered\",\n UrlParseError: 133, \"133\": \"UrlParseError\",\n Base64DecodeError: 134, \"134\": \"Base64DecodeError\",\n CoseError: 135, \"135\": \"CoseError\",\n PolicyChainIdMismatch: 136, \"136\": \"PolicyChainIdMismatch\",\n InvalidOwner: 137, \"137\": \"InvalidOwner\",\n});\n\nconst __wbindgen_enum_RequestCredentials = [\"omit\", \"same-origin\", \"include\"];\n\nconst __wbindgen_enum_RequestMode = [\"same-origin\", \"no-cors\", \"cors\", \"navigate\"];\n\nconst CartridgeSessionAccountFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_cartridgesessionaccount_free(ptr >>> 0, 1));\n\nexport class CartridgeSessionAccount {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CartridgeSessionAccount.prototype);\n obj.__wbg_ptr = ptr;\n CartridgeSessionAccountFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CartridgeSessionAccountFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_cartridgesessionaccount_free(ptr, 0);\n }\n /**\n * @param {string} rpc_url\n * @param {JsFelt} signer\n * @param {JsFelt} address\n * @param {JsFelt} chain_id\n * @param {JsFelt[]} session_authorization\n * @param {Session} session\n * @returns {CartridgeSessionAccount}\n */\n static new(rpc_url, signer, address, chain_id, session_authorization, session) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(rpc_url, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayJsValueToWasm0(session_authorization, wasm.__wbindgen_export_0);\n const len1 = WASM_VECTOR_LEN;\n wasm.cartridgesessionaccount_new(retptr, ptr0, len0, addHeapObject(signer), addHeapObject(address), addHeapObject(chain_id), ptr1, len1, addHeapObject(session));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n return CartridgeSessionAccount.__wrap(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} rpc_url\n * @param {JsFelt} signer\n * @param {JsFelt} address\n * @param {JsFelt} owner_guid\n * @param {JsFelt} chain_id\n * @param {Session} session\n * @returns {CartridgeSessionAccount}\n */\n static newAsRegistered(rpc_url, signer, address, owner_guid, chain_id, session) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(rpc_url, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.cartridgesessionaccount_newAsRegistered(retptr, ptr0, len0, addHeapObject(signer), addHeapObject(address), addHeapObject(owner_guid), addHeapObject(chain_id), addHeapObject(session));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n return CartridgeSessionAccount.__wrap(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {JsFelt} hash\n * @param {JsCall[]} calls\n * @returns {Promise<Felts>}\n */\n sign(hash, calls) {\n const ptr0 = passArrayJsValueToWasm0(calls, wasm.__wbindgen_export_0);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.cartridgesessionaccount_sign(this.__wbg_ptr, addHeapObject(hash), ptr0, len0);\n return takeObject(ret);\n }\n /**\n * @param {JsCall[]} calls\n * @returns {Promise<any>}\n */\n execute(calls) {\n const ptr0 = passArrayJsValueToWasm0(calls, wasm.__wbindgen_export_0);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.cartridgesessionaccount_execute(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * @param {JsCall[]} calls\n * @returns {Promise<any>}\n */\n executeFromOutside(calls) {\n const ptr0 = passArrayJsValueToWasm0(calls, wasm.__wbindgen_export_0);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.cartridgesessionaccount_executeFromOutside(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n}\n\nconst JsControllerErrorFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_jscontrollererror_free(ptr >>> 0, 1));\n\nexport class JsControllerError {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(JsControllerError.prototype);\n obj.__wbg_ptr = ptr;\n JsControllerErrorFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n JsControllerErrorFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_jscontrollererror_free(ptr, 0);\n }\n /**\n * @returns {ErrorCode}\n */\n get code() {\n const ret = wasm.__wbg_get_jscontrollererror_code(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {ErrorCode} arg0\n */\n set code(arg0) {\n wasm.__wbg_set_jscontrollererror_code(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {string}\n */\n get message() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.__wbg_get_jscontrollererror_message(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_3(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} arg0\n */\n set message(arg0) {\n const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.__wbg_set_jscontrollererror_message(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string | undefined}\n */\n get data() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.__wbg_get_jscontrollererror_data(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n let v1;\n if (r0 !== 0) {\n v1 = getStringFromWasm0(r0, r1).slice();\n wasm.__wbindgen_export_3(r0, r1 * 1, 1);\n }\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string | null} [arg0]\n */\n set data(arg0) {\n var ptr0 = isLikeNone(arg0) ? 0 : passStringToWasm0(arg0, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len0 = WASM_VECTOR_LEN;\n wasm.__wbg_set_jscontrollererror_data(this.__wbg_ptr, ptr0, len0);\n }\n}\n\nexport function __wbg_String_8f0eb39a4a4c2f66(arg0, arg1) {\n const ret = String(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n};\n\nexport function __wbg_abort_410ec47a64ac6117(arg0, arg1) {\n getObject(arg0).abort(getObject(arg1));\n};\n\nexport function __wbg_abort_775ef1d17fc65868(arg0) {\n getObject(arg0).abort();\n};\n\nexport function __wbg_append_8c7dd8d641a5f01b() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).append(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n}, arguments) };\n\nexport function __wbg_arrayBuffer_d1b44c4390db422f() { return handleError(function (arg0) {\n const ret = getObject(arg0).arrayBuffer();\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_buffer_609cc3eee51ed158(arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n};\n\nexport function __wbg_call_672a4d21634d4a24() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_call_7cccdd69e0791ae2() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_clearTimeout_0b53d391c1b94dda(arg0) {\n const ret = clearTimeout(takeObject(arg0));\n return addHeapObject(ret);\n};\n\nexport function __wbg_credentials_f1256c3bb1216690(arg0) {\n const ret = getObject(arg0).credentials;\n return addHeapObject(ret);\n};\n\nexport function __wbg_crypto_574e78ad8b13b65f(arg0) {\n const ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n};\n\nexport function __wbg_done_769e5ede4b31c67b(arg0) {\n const ret = getObject(arg0).done;\n return ret;\n};\n\nexport function __wbg_fetch_11bff8299d0ecd2b(arg0) {\n const ret = fetch(getObject(arg0));\n return addHeapObject(ret);\n};\n\nexport function __wbg_fetch_509096533071c657(arg0, arg1) {\n const ret = getObject(arg0).fetch(getObject(arg1));\n return addHeapObject(ret);\n};\n\nexport function __wbg_fetch_f1856afdb49415d1(arg0) {\n const ret = fetch(getObject(arg0));\n return addHeapObject(ret);\n};\n\nexport function __wbg_getClientExtensionResults_f486a52e95c84a1a(arg0) {\n const ret = getObject(arg0).getClientExtensionResults();\n return addHeapObject(ret);\n};\n\nexport function __wbg_getRandomValues_b8f5dbd5f3995a9e() { return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n}, arguments) };\n\nexport function __wbg_getTime_46267b1c24877e30(arg0) {\n const ret = getObject(arg0).getTime();\n return ret;\n};\n\nexport function __wbg_get_67b2ba62fc30de12() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_get_d5bb96e3856d8afd() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).get(getObject(arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_getwithrefkey_1dc361bd10053bfe(arg0, arg1) {\n const ret = getObject(arg0)[getObject(arg1)];\n return addHeapObject(ret);\n};\n\nexport function __wbg_has_a5ea9117f258a0ec() { return handleError(function (arg0, arg1) {\n const ret = Reflect.has(getObject(arg0), getObject(arg1));\n return ret;\n}, arguments) };\n\nexport function __wbg_headers_9cb51cfd2ac780a4(arg0) {\n const ret = getObject(arg0).headers;\n return addHeapObject(ret);\n};\n\nexport function __wbg_instanceof_ArrayBuffer_e14585432e3737fc(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n};\n\nexport function __wbg_instanceof_Object_7f2dcef8f78644a4(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Object;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n};\n\nexport function __wbg_instanceof_Response_f2cc20d9f7dfd644(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Response;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n};\n\nexport function __wbg_instanceof_Uint8Array_17156bcf118086a9(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n};\n\nexport function __wbg_instanceof_Window_def73ea0955fc569(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n};\n\nexport function __wbg_iterator_9a24c88df860dc65() {\n const ret = Symbol.iterator;\n return addHeapObject(ret);\n};\n\nexport function __wbg_jscontrollererror_new(arg0) {\n const ret = JsControllerError.__wrap(arg0);\n return addHeapObject(ret);\n};\n\nexport function __wbg_length_a446193dc22c12f8(arg0) {\n const ret = getObject(arg0).length;\n return ret;\n};\n\nexport function __wbg_location_350d99456c2f3693(arg0) {\n const ret = getObject(arg0).location;\n return addHeapObject(ret);\n};\n\nexport function __wbg_log_c222819a41e063d3(arg0) {\n console.log(getObject(arg0));\n};\n\nexport function __wbg_msCrypto_a61aeb35a24c1329(arg0) {\n const ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n};\n\nexport function __wbg_navigator_1577371c070c8947(arg0) {\n const ret = getObject(arg0).navigator;\n return addHeapObject(ret);\n};\n\nexport function __wbg_new0_f788a2397c7ca929() {\n const ret = new Date();\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_018dcc2d6c8c2f6a() { return handleError(function () {\n const ret = new Headers();\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_new_23a2665fac83c611(arg0, arg1) {\n try {\n var state0 = {a: arg0, b: arg1};\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wbg_adapter_199(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n const ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n};\n\nexport function __wbg_new_2658d63118834d8e() {\n const ret = new Mutex();\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_405e22f390576ce2() {\n const ret = new Object();\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_78feb108b6472713() {\n const ret = new Array();\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_a12002a7f91c75be(arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_e25e5aab09ff45db() { return handleError(function () {\n const ret = new AbortController();\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_newnoargs_105ed471475aaf50(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n};\n\nexport function __wbg_newwithbyteoffsetandlength_d97e637ebe145a9a(arg0, arg1, arg2) {\n const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n};\n\nexport function __wbg_newwithlength_a381634e90c276d4(arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n};\n\nexport function __wbg_newwithstrandinit_06c535e0a867c635() { return handleError(function (arg0, arg1, arg2) {\n const ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_next_25feadfc0913fea9(arg0) {\n const ret = getObject(arg0).next;\n return addHeapObject(ret);\n};\n\nexport function __wbg_next_6574e1a8a62d1055() { return handleError(function (arg0) {\n const ret = getObject(arg0).next();\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_node_905d3e251edff8a2(arg0) {\n const ret = getObject(arg0).node;\n return addHeapObject(ret);\n};\n\nexport function __wbg_obtain_a9626b3b96e6dc2c(arg0) {\n const ret = getObject(arg0).obtain();\n return addHeapObject(ret);\n};\n\nexport function __wbg_origin_7c5d649acdace3ea() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg1).origin;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n}, arguments) };\n\nexport function __wbg_process_dc0fbacc7c1c06f7(arg0) {\n const ret = getObject(arg0).process;\n return addHeapObject(ret);\n};\n\nexport function __wbg_push_737cfc8c1432c2c6(arg0, arg1) {\n const ret = getObject(arg0).push(getObject(arg1));\n return ret;\n};\n\nexport function __wbg_queueMicrotask_97d92b4fcc8a61c5(arg0) {\n queueMicrotask(getObject(arg0));\n};\n\nexport function __wbg_queueMicrotask_d3219def82552485(arg0) {\n const ret = getObject(arg0).queueMicrotask;\n return addHeapObject(ret);\n};\n\nexport function __wbg_randomFillSync_ac0988aba3254290() { return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n}, arguments) };\n\nexport function __wbg_require_60cc747a6bc5215a() { return handleError(function () {\n const ret = module.require;\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_resolve_4851785c9c5f573d(arg0) {\n const ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n};\n\nexport function __wbg_setTimeout_73ce8df12de4f2f2(arg0, arg1) {\n const ret = setTimeout(getObject(arg0), arg1);\n return addHeapObject(ret);\n};\n\nexport function __wbg_set_37837023f3d740e8(arg0, arg1, arg2) {\n getObject(arg0)[arg1 >>> 0] = takeObject(arg2);\n};\n\nexport function __wbg_set_3f1d0b984ed272ed(arg0, arg1, arg2) {\n getObject(arg0)[takeObject(arg1)] = takeObject(arg2);\n};\n\nexport function __wbg_set_3fda3bac07393de4(arg0, arg1, arg2) {\n getObject(arg0)[takeObject(arg1)] = takeObject(arg2);\n};\n\nexport function __wbg_set_65595bdd868b3009(arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n};\n\nexport function __wbg_set_bb8cecf6a62b9f46() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n}, arguments) };\n\nexport function __wbg_setbody_5923b78a95eedf29(arg0, arg1) {\n getObject(arg0).body = getObject(arg1);\n};\n\nexport function __wbg_setcredentials_c3a22f1cd105a2c6(arg0, arg1) {\n getObject(arg0).credentials = __wbindgen_enum_RequestCredentials[arg1];\n};\n\nexport function __wbg_setheaders_834c0bdb6a8949ad(arg0, arg1) {\n getObject(arg0).headers = getObject(arg1);\n};\n\nexport function __wbg_setmethod_3c5280fe5d890842(arg0, arg1, arg2) {\n getObject(arg0).method = getStringFromWasm0(arg1, arg2);\n};\n\nexport function __wbg_setmode_5dc300b865044b65(arg0, arg1) {\n getObject(arg0).mode = __wbindgen_enum_RequestMode[arg1];\n};\n\nexport function __wbg_setsignal_75b21ef3a81de905(arg0, arg1) {\n getObject(arg0).signal = getObject(arg1);\n};\n\nexport function __wbg_signMessage_c732ea9d998cac79() { return handleError(function (arg0, arg1, arg2, arg3) {\n let deferred0_0;\n let deferred0_1;\n let deferred1_0;\n let deferred1_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n deferred1_0 = arg2;\n deferred1_1 = arg3;\n const ret = window.keychain_wallets.signMessage(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));\n return addHeapObject(ret);\n } finally {\n wasm.__wbindgen_export_3(deferred0_0, deferred0_1, 1);\n wasm.__wbindgen_export_3(deferred1_0, deferred1_1, 1);\n }\n}, arguments) };\n\nexport function __wbg_signal_aaf9ad74119f20a4(arg0) {\n const ret = getObject(arg0).signal;\n return addHeapObject(ret);\n};\n\nexport function __wbg_static_accessor_GLOBAL_88a902d13a557d07() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n};\n\nexport function __wbg_static_accessor_GLOBAL_THIS_56578be7e9f832b0() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n};\n\nexport function __wbg_static_accessor_SELF_37c5d418e4bf5819() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n};\n\nexport function __wbg_static_accessor_WINDOW_5de37043a91a9c40() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n};\n\nexport function __wbg_status_f6360336ca686bf0(arg0) {\n const ret = getObject(arg0).status;\n return ret;\n};\n\nexport function __wbg_stringify_f7ed6987935b4a24() { return handleError(function (arg0) {\n const ret = JSON.stringify(getObject(arg0));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_subarray_aa9065fa9dc5df96(arg0, arg1, arg2) {\n const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n};\n\nexport function __wbg_text_7805bea50de2af49() { return handleError(function (arg0) {\n const ret = getObject(arg0).text();\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_then_44b73946d2fb3e7d(arg0, arg1) {\n const ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n};\n\nexport function __wbg_then_48b406749878a531(arg0, arg1, arg2) {\n const ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n};\n\nexport function __wbg_url_ae10c34ca209681d(arg0, arg1) {\n const ret = getObject(arg1).url;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n};\n\nexport function __wbg_value_cd1ffa7b1ab794f1(arg0) {\n const ret = getObject(arg0).value;\n return addHeapObject(ret);\n};\n\nexport function __wbg_versions_c01dfd4722a88165(arg0) {\n const ret = getObject(arg0).versions;\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_boolean_get(arg0) {\n const v = getObject(arg0);\n const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;\n return ret;\n};\n\nexport function __wbindgen_cb_drop(arg0) {\n const obj = takeObject(arg0).original;\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n const ret = false;\n return ret;\n};\n\nexport function __wbindgen_closure_wrapper2805(arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 361, __wbg_adapter_42);\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_closure_wrapper2938(arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 395, __wbg_adapter_45);\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_debug_string(arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n};\n\nexport function __wbindgen_error_new(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_in(arg0, arg1) {\n const ret = getObject(arg0) in getObject(arg1);\n return ret;\n};\n\nexport function __wbindgen_is_function(arg0) {\n const ret = typeof(getObject(arg0)) === 'function';\n return ret;\n};\n\nexport function __wbindgen_is_object(arg0) {\n const val = getObject(arg0);\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n};\n\nexport function __wbindgen_is_string(arg0) {\n const ret = typeof(getObject(arg0)) === 'string';\n return ret;\n};\n\nexport function __wbindgen_is_undefined(arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n};\n\nexport function __wbindgen_json_parse(arg0, arg1) {\n const ret = JSON.parse(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_json_serialize(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = JSON.stringify(obj === undefined ? null : obj);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n};\n\nexport function __wbindgen_jsval_loose_eq(arg0, arg1) {\n const ret = getObject(arg0) == getObject(arg1);\n return ret;\n};\n\nexport function __wbindgen_memory() {\n const ret = wasm.memory;\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_number_get(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n};\n\nexport function __wbindgen_number_new(arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_object_clone_ref(arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_object_drop_ref(arg0) {\n takeObject(arg0);\n};\n\nexport function __wbindgen_string_get(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n};\n\nexport function __wbindgen_string_new(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_throw(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n};\n\n","import * as wasm from \"./session_wasm_bg.wasm\";\nexport * from \"./session_wasm_bg.js\";\nimport { __wbg_set_wasm } from \"./session_wasm_bg.js\";\n__wbg_set_wasm(wasm);","import { Policy } from \"@cartridge/controller-wasm\";\nimport { CartridgeSessionAccount } from \"@cartridge/controller-wasm/session\";\nimport { Call, InvokeFunctionResponse, WalletAccount } from \"starknet\";\n\nimport { normalizeCalls } from \"../utils\";\nimport BaseProvider from \"../provider\";\n\nexport * from \"../errors\";\nexport * from \"../types\";\n\nexport default class SessionAccount extends WalletAccount {\n public controller: CartridgeSessionAccount;\n\n constructor(\n provider: BaseProvider,\n {\n rpcUrl,\n privateKey,\n address,\n ownerGuid,\n chainId,\n expiresAt,\n policies,\n guardianKeyGuid,\n metadataHash,\n sessionKeyGuid,\n }: {\n rpcUrl: string;\n privateKey: string;\n address: string;\n ownerGuid: string;\n chainId: string;\n expiresAt: number;\n policies: Policy[];\n guardianKeyGuid: string;\n metadataHash: string;\n sessionKeyGuid: string;\n },\n ) {\n super({ nodeUrl: rpcUrl }, provider, address);\n\n this.controller = CartridgeSessionAccount.newAsRegistered(\n rpcUrl,\n privateKey,\n address,\n ownerGuid,\n chainId,\n {\n expiresAt,\n policies,\n guardianKeyGuid,\n metadataHash,\n sessionKeyGuid,\n },\n );\n }\n\n /**\n * Invoke execute function in account contract\n *\n * @param calls the invocation object or an array of them, containing:\n * - contractAddress - the address of the contract\n * - entrypoint - the entrypoint of the contract\n * - calldata - (defaults to []) the calldata\n * - signature - (defaults to []) the signature\n * @param abis (optional) the abi of the contract for better displaying\n *\n * @returns response from addTransaction\n */\n async execute(calls: Call | Call[]): Promise<InvokeFunctionResponse> {\n return this.controller.execute(normalizeCalls(calls));\n }\n}\n","import { ec, stark, WalletAccount } from \"starknet\";\n\nimport SessionAccount from \"./account\";\nimport { KEYCHAIN_URL } from \"../constants\";\nimport BaseProvider from \"../provider\";\nimport { toWasmPolicies } from \"../utils\";\nimport { SessionPolicies } from \"@cartridge/presets\";\nimport { AddStarknetChainParameters } from \"@starknet-io/types-js\";\nimport { ParsedSessionPolicies } from \"../policies\";\n\ninterface SessionRegistration {\n username: string;\n address: string;\n ownerGuid: string;\n transactionHash?: string;\n expiresAt: string;\n guardianKeyGuid: string;\n metadataHash: string;\n sessionKeyGuid: string;\n}\n\nexport type SessionOptions = {\n rpc: string;\n chainId: string;\n policies: SessionPolicies;\n redirectUrl: string;\n keychainUrl?: string;\n};\n\nexport default class SessionProvider extends BaseProvider {\n public id = \"controller_session\";\n public name = \"Controller Session\";\n\n protected _chainId: string;\n protected _rpcUrl: string;\n protected _username?: string;\n protected _redirectUrl: string;\n protected _policies: ParsedSessionPolicies;\n protected _keychainUrl: string;\n\n constructor({\n rpc,\n chainId,\n policies,\n redirectUrl,\n keychainUrl,\n }: SessionOptions) {\n super();\n\n this._policies = {\n verified: false,\n contracts: policies.contracts\n ? Object.fromEntries(\n Object.entries(policies.contracts).map(([address, contract]) => [\n address,\n {\n ...contract,\n methods: contract.methods.map((method) => ({\n ...method,\n authorized: true,\n })),\n },\n ]),\n )\n : undefined,\n messages: policies.messages?.map((message) => ({\n ...message,\n authorized: true,\n })),\n };\n\n this._rpcUrl = rpc;\n this._chainId = chainId;\n this._redirectUrl = redirectUrl;\n this._keychainUrl = keychainUrl || KEYCHAIN_URL;\n\n if (typeof window !== \"undefined\") {\n (window as any).starknet_controller_session = this;\n }\n }\n\n private validatePoliciesSubset(\n newPolicies: ParsedSessionPolicies,\n existingPolicies: ParsedSessionPolicies,\n ): boolean {\n if (newPolicies.contracts) {\n if (!existingPolicies.contracts) return false;\n\n for (const [address, contract] of Object.entries(newPolicies.contracts)) {\n const existingContract = existingPolicies.contracts[address];\n if (!existingContract) return false;\n\n for (const method of contract.methods) {\n const existingMethod = existingContract.methods.find(\n (m) => m.entrypoint === method.entrypoint,\n );\n if (!existingMethod || !existingMethod.authorized) return false;\n }\n }\n }\n\n if (newPolicies.messages) {\n if (!existingPolicies.messages) return false;\n\n for (const message of newPolicies.messages) {\n const existingMessage = existingPolicies.messages.find(\n (m) =>\n JSON.stringify(m.domain) === JSON.stringify(message.domain) &&\n JSON.stringify(m.types) === JSON.stringify(message.types),\n );\n if (!existingMessage || !existingMessage.authorized) return false;\n }\n }\n\n return true;\n }\n\n async username() {\n await this.tryRetrieveFromQueryOrStorage();\n return this._username;\n }\n\n async probe(): Promise<WalletAccount | undefined> {\n if (this.account) {\n return this.account;\n }\n\n this.account = await this.tryRetrieveFromQueryOrStorage();\n return this.account;\n }\n\n async connect(): Promise<WalletAccount | undefined> {\n if (this.account) {\n return this.account;\n }\n\n this.account = await this.tryRetrieveFromQueryOrStorage();\n if (this.account) {\n return this.account;\n }\n\n const pk = stark.randomAddress();\n const publicKey = ec.starkCurve.getStarkKey(pk);\n\n localStorage.setItem(\n \"sessionSigner\",\n JSON.stringify({\n privKey: pk,\n pubKey: publicKey,\n }),\n );\n\n localStorage.setItem(\"sessionPolicies\", JSON.stringify(this._policies));\n\n const url = `${\n this._keychainUrl\n }/session?public_key=${publicKey}&redirect_uri=${\n this._redirectUrl\n }&redirect_query_name=startapp&policies=${JSON.stringify(\n this._policies,\n )}&rpc_url=${this._rpcUrl}`;\n\n localStorage.setItem(\"lastUsedConnector\", this.id);\n window.open(url, \"_blank\");\n\n return this.account;\n }\n\n switchStarknetChain(_chainId: string): Promise<boolean> {\n throw new Error(\"switchStarknetChain not implemented\");\n }\n\n addStarknetChain(_chain: AddStarknetChainParameters): Promise<boolean> {\n throw new Error(\"addStarknetChain not implemented\");\n }\n\n disconnect(): Promise<void> {\n localStorage.removeItem(\"sessionSigner\");\n localStorage.removeItem(\"session\");\n localStorage.removeItem(\"sessionPolicies\");\n this.account = undefined;\n this._username = undefined;\n return Promise.resolve();\n }\n\n async tryRetrieveFromQueryOrStorage() {\n if (this.account) {\n return this.account;\n }\n\n const signerString = localStorage.getItem(\"sessionSigner\");\n const signer = signerString ? JSON.parse(signerString) : null;\n let sessionRegistration: SessionRegistration | null = null;\n\n if (window.location.search.includes(\"startapp\")) {\n const params = new URLSearchParams(window.location.search);\n const session = params.get(\"startapp\");\n if (session) {\n sessionRegistration = JSON.parse(atob(session));\n localStorage.setItem(\"session\", JSON.stringify(sessionRegistration));\n\n // Remove the session query parameter\n params.delete(\"startapp\");\n const newUrl =\n window.location.pathname +\n (params.toString() ? `?${params.toString()}` : \"\") +\n window.location.hash;\n window.history.replaceState({}, document.title, newUrl);\n }\n }\n\n if (!sessionRegistration) {\n const sessionString = localStorage.getItem(\"session\");\n if (sessionString) {\n sessionRegistration = JSON.parse(sessionString);\n }\n }\n\n if (!sessionRegistration || !signer) {\n return;\n }\n\n // Check expiration\n const expirationTime = parseInt(sessionRegistration.expiresAt) * 1000;\n if (Date.now() >= expirationTime) {\n this.clearStoredSession();\n return;\n }\n\n // Check stored policies\n const storedPoliciesStr = localStorage.getItem(\"sessionPolicies\");\n if (storedPoliciesStr) {\n const storedPolicies = JSON.parse(\n storedPoliciesStr,\n ) as ParsedSessionPolicies;\n\n const isValid = this.validatePoliciesSubset(\n this._policies,\n storedPolicies,\n );\n\n if (!isValid) {\n this.clearStoredSession();\n return;\n }\n }\n\n this._username = sessionRegistration.username;\n this.account = new SessionAccount(this, {\n rpcUrl: this._rpcUrl,\n privateKey: signer.privKey,\n address: sessionRegistration.address,\n ownerGuid: sessionRegistration.ownerGuid,\n chainId: this._chainId,\n expiresAt: parseInt(sessionRegistration.expiresAt),\n policies: toWasmPolicies(this._policies),\n guardianKeyGuid: sessionRegistration.guardianKeyGuid,\n metadataHash: sessionRegistration.metadataHash,\n sessionKeyGuid: sessionRegistration.sessionKeyGuid,\n });\n\n return this.account;\n }\n\n private clearStoredSession(): void {\n localStorage.removeItem(\"sessionSigner\");\n localStorage.removeItem(\"session\");\n localStorage.removeItem(\"sessionPolicies\");\n }\n}\n"],"names":["wasm","__wbg_set_wasm","val","heap","getObject","idx","WASM_VECTOR_LEN","cachedUint8ArrayMemory0","getUint8ArrayMemory0","lTextEncoder","cachedTextEncoder","encodeString","arg","view","buf","passStringToWasm0","malloc","realloc","ptr","len","mem","offset","code","ret","cachedDataViewMemory0","getDataViewMemory0","lTextDecoder","cachedTextDecoder","heap_next","addHeapObject","obj","dropObject","takeObject","state","passArrayJsValueToWasm0","array","i","CartridgeSessionAccountFinalization","CartridgeSessionAccount","rpc_url","signer","address","chain_id","session_authorization","session","retptr","ptr0","len0","ptr1","len1","r0","r1","r2","owner_guid","hash","calls","SessionAccount","WalletAccount","provider","rpcUrl","privateKey","ownerGuid","chainId","expiresAt","policies","guardianKeyGuid","metadataHash","sessionKeyGuid","normalizeCalls","SessionProvider","BaseProvider","rpc","redirectUrl","keychainUrl","contract","method","message","KEYCHAIN_URL","newPolicies","existingPolicies","existingContract","existingMethod","m","existingMessage","pk","stark","publicKey","ec","url","_chainId","_chain","signerString","sessionRegistration","params","newUrl","sessionString","expirationTime","storedPoliciesStr","storedPolicies","toWasmPolicies"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"session.js","sources":["../../../node_modules/.pnpm/@cartridge+controller-wasm@0.2.3/node_modules/@cartridge/controller-wasm/pkg-session/session_wasm_bg.js","../../../node_modules/.pnpm/@cartridge+controller-wasm@0.2.3/node_modules/@cartridge/controller-wasm/pkg-session/session_wasm.js","../src/session/account.ts","../src/session/provider.ts"],"sourcesContent":["import { Mutex } from './snippets/account-wasm-35da9c7350cbc3ae/src/wasm-mutex.js';\n\nlet wasm;\nexport function __wbg_set_wasm(val) {\n wasm = val;\n}\n\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet WASM_VECTOR_LEN = 0;\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nconst lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder;\n\nlet cachedTextEncoder = new lTextEncoder('utf-8');\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nconst lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder;\n\nlet cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_export_2(addHeapObject(e));\n }\n}\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nconst CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(state => {\n wasm.__wbindgen_export_4.get(state.dtor)(state.a, state.b)\n});\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_4.get(state.dtor)(a, state.b);\n CLOSURE_DTORS.unregister(state);\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n CLOSURE_DTORS.register(real, state, state);\n return real;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4, 4) >>> 0;\n const mem = getDataViewMemory0();\n for (let i = 0; i < array.length; i++) {\n mem.setUint32(ptr + 4 * i, addHeapObject(array[i]), true);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\nfunction __wbg_adapter_42(arg0, arg1) {\n wasm.__wbindgen_export_5(arg0, arg1);\n}\n\nfunction __wbg_adapter_45(arg0, arg1, arg2) {\n wasm.__wbindgen_export_6(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_199(arg0, arg1, arg2, arg3) {\n wasm.__wbindgen_export_7(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\n/**\n * @enum {1 | 20 | 24 | 27 | 28 | 29 | 31 | 32 | 33 | 34 | 40 | 41 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 10 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137}\n */\nexport const ErrorCode = Object.freeze({\n StarknetFailedToReceiveTransaction: 1, \"1\": \"StarknetFailedToReceiveTransaction\",\n StarknetContractNotFound: 20, \"20\": \"StarknetContractNotFound\",\n StarknetBlockNotFound: 24, \"24\": \"StarknetBlockNotFound\",\n StarknetInvalidTransactionIndex: 27, \"27\": \"StarknetInvalidTransactionIndex\",\n StarknetClassHashNotFound: 28, \"28\": \"StarknetClassHashNotFound\",\n StarknetTransactionHashNotFound: 29, \"29\": \"StarknetTransactionHashNotFound\",\n StarknetPageSizeTooBig: 31, \"31\": \"StarknetPageSizeTooBig\",\n StarknetNoBlocks: 32, \"32\": \"StarknetNoBlocks\",\n StarknetInvalidContinuationToken: 33, \"33\": \"StarknetInvalidContinuationToken\",\n StarknetTooManyKeysInFilter: 34, \"34\": \"StarknetTooManyKeysInFilter\",\n StarknetContractError: 40, \"40\": \"StarknetContractError\",\n StarknetTransactionExecutionError: 41, \"41\": \"StarknetTransactionExecutionError\",\n StarknetClassAlreadyDeclared: 51, \"51\": \"StarknetClassAlreadyDeclared\",\n StarknetInvalidTransactionNonce: 52, \"52\": \"StarknetInvalidTransactionNonce\",\n StarknetInsufficientMaxFee: 53, \"53\": \"StarknetInsufficientMaxFee\",\n StarknetInsufficientAccountBalance: 54, \"54\": \"StarknetInsufficientAccountBalance\",\n StarknetValidationFailure: 55, \"55\": \"StarknetValidationFailure\",\n StarknetCompilationFailed: 56, \"56\": \"StarknetCompilationFailed\",\n StarknetContractClassSizeIsTooLarge: 57, \"57\": \"StarknetContractClassSizeIsTooLarge\",\n StarknetNonAccount: 58, \"58\": \"StarknetNonAccount\",\n StarknetDuplicateTx: 59, \"59\": \"StarknetDuplicateTx\",\n StarknetCompiledClassHashMismatch: 60, \"60\": \"StarknetCompiledClassHashMismatch\",\n StarknetUnsupportedTxVersion: 61, \"61\": \"StarknetUnsupportedTxVersion\",\n StarknetUnsupportedContractClassVersion: 62, \"62\": \"StarknetUnsupportedContractClassVersion\",\n StarknetUnexpectedError: 63, \"63\": \"StarknetUnexpectedError\",\n StarknetNoTraceAvailable: 10, \"10\": \"StarknetNoTraceAvailable\",\n SignError: 101, \"101\": \"SignError\",\n StorageError: 102, \"102\": \"StorageError\",\n AccountFactoryError: 103, \"103\": \"AccountFactoryError\",\n PaymasterExecutionTimeNotReached: 104, \"104\": \"PaymasterExecutionTimeNotReached\",\n PaymasterExecutionTimePassed: 105, \"105\": \"PaymasterExecutionTimePassed\",\n PaymasterInvalidCaller: 106, \"106\": \"PaymasterInvalidCaller\",\n PaymasterRateLimitExceeded: 107, \"107\": \"PaymasterRateLimitExceeded\",\n PaymasterNotSupported: 108, \"108\": \"PaymasterNotSupported\",\n PaymasterHttp: 109, \"109\": \"PaymasterHttp\",\n PaymasterExcecution: 110, \"110\": \"PaymasterExcecution\",\n PaymasterSerialization: 111, \"111\": \"PaymasterSerialization\",\n CartridgeControllerNotDeployed: 112, \"112\": \"CartridgeControllerNotDeployed\",\n InsufficientBalance: 113, \"113\": \"InsufficientBalance\",\n OriginError: 114, \"114\": \"OriginError\",\n EncodingError: 115, \"115\": \"EncodingError\",\n SerdeWasmBindgenError: 116, \"116\": \"SerdeWasmBindgenError\",\n CairoSerdeError: 117, \"117\": \"CairoSerdeError\",\n CairoShortStringToFeltError: 118, \"118\": \"CairoShortStringToFeltError\",\n DeviceCreateCredential: 119, \"119\": \"DeviceCreateCredential\",\n DeviceGetAssertion: 120, \"120\": \"DeviceGetAssertion\",\n DeviceBadAssertion: 121, \"121\": \"DeviceBadAssertion\",\n DeviceChannel: 122, \"122\": \"DeviceChannel\",\n DeviceOrigin: 123, \"123\": \"DeviceOrigin\",\n AccountSigning: 124, \"124\": \"AccountSigning\",\n AccountProvider: 125, \"125\": \"AccountProvider\",\n AccountClassHashCalculation: 126, \"126\": \"AccountClassHashCalculation\",\n AccountFeeOutOfRange: 128, \"128\": \"AccountFeeOutOfRange\",\n ProviderRateLimited: 129, \"129\": \"ProviderRateLimited\",\n ProviderArrayLengthMismatch: 130, \"130\": \"ProviderArrayLengthMismatch\",\n ProviderOther: 131, \"131\": \"ProviderOther\",\n SessionAlreadyRegistered: 132, \"132\": \"SessionAlreadyRegistered\",\n UrlParseError: 133, \"133\": \"UrlParseError\",\n Base64DecodeError: 134, \"134\": \"Base64DecodeError\",\n CoseError: 135, \"135\": \"CoseError\",\n PolicyChainIdMismatch: 136, \"136\": \"PolicyChainIdMismatch\",\n InvalidOwner: 137, \"137\": \"InvalidOwner\",\n});\n\nconst __wbindgen_enum_RequestCredentials = [\"omit\", \"same-origin\", \"include\"];\n\nconst __wbindgen_enum_RequestMode = [\"same-origin\", \"no-cors\", \"cors\", \"navigate\"];\n\nconst CartridgeSessionAccountFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_cartridgesessionaccount_free(ptr >>> 0, 1));\n\nexport class CartridgeSessionAccount {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(CartridgeSessionAccount.prototype);\n obj.__wbg_ptr = ptr;\n CartridgeSessionAccountFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n CartridgeSessionAccountFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_cartridgesessionaccount_free(ptr, 0);\n }\n /**\n * @param {string} rpc_url\n * @param {JsFelt} signer\n * @param {JsFelt} address\n * @param {JsFelt} chain_id\n * @param {JsFelt[]} session_authorization\n * @param {Session} session\n * @returns {CartridgeSessionAccount}\n */\n static new(rpc_url, signer, address, chain_id, session_authorization, session) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(rpc_url, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayJsValueToWasm0(session_authorization, wasm.__wbindgen_export_0);\n const len1 = WASM_VECTOR_LEN;\n wasm.cartridgesessionaccount_new(retptr, ptr0, len0, addHeapObject(signer), addHeapObject(address), addHeapObject(chain_id), ptr1, len1, addHeapObject(session));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n return CartridgeSessionAccount.__wrap(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} rpc_url\n * @param {JsFelt} signer\n * @param {JsFelt} address\n * @param {JsFelt} owner_guid\n * @param {JsFelt} chain_id\n * @param {Session} session\n * @returns {CartridgeSessionAccount}\n */\n static newAsRegistered(rpc_url, signer, address, owner_guid, chain_id, session) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(rpc_url, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.cartridgesessionaccount_newAsRegistered(retptr, ptr0, len0, addHeapObject(signer), addHeapObject(address), addHeapObject(owner_guid), addHeapObject(chain_id), addHeapObject(session));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n return CartridgeSessionAccount.__wrap(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {JsFelt} hash\n * @param {JsCall[]} calls\n * @returns {Promise<Felts>}\n */\n sign(hash, calls) {\n const ptr0 = passArrayJsValueToWasm0(calls, wasm.__wbindgen_export_0);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.cartridgesessionaccount_sign(this.__wbg_ptr, addHeapObject(hash), ptr0, len0);\n return takeObject(ret);\n }\n /**\n * @param {JsCall[]} calls\n * @returns {Promise<any>}\n */\n execute(calls) {\n const ptr0 = passArrayJsValueToWasm0(calls, wasm.__wbindgen_export_0);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.cartridgesessionaccount_execute(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * @param {JsCall[]} calls\n * @returns {Promise<any>}\n */\n executeFromOutside(calls) {\n const ptr0 = passArrayJsValueToWasm0(calls, wasm.__wbindgen_export_0);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.cartridgesessionaccount_executeFromOutside(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n}\n\nconst JsControllerErrorFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_jscontrollererror_free(ptr >>> 0, 1));\n\nexport class JsControllerError {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(JsControllerError.prototype);\n obj.__wbg_ptr = ptr;\n JsControllerErrorFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n JsControllerErrorFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_jscontrollererror_free(ptr, 0);\n }\n /**\n * @returns {ErrorCode}\n */\n get code() {\n const ret = wasm.__wbg_get_jscontrollererror_code(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {ErrorCode} arg0\n */\n set code(arg0) {\n wasm.__wbg_set_jscontrollererror_code(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {string}\n */\n get message() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.__wbg_get_jscontrollererror_message(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_3(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} arg0\n */\n set message(arg0) {\n const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.__wbg_set_jscontrollererror_message(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {string | undefined}\n */\n get data() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.__wbg_get_jscontrollererror_data(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n let v1;\n if (r0 !== 0) {\n v1 = getStringFromWasm0(r0, r1).slice();\n wasm.__wbindgen_export_3(r0, r1 * 1, 1);\n }\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string | null} [arg0]\n */\n set data(arg0) {\n var ptr0 = isLikeNone(arg0) ? 0 : passStringToWasm0(arg0, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len0 = WASM_VECTOR_LEN;\n wasm.__wbg_set_jscontrollererror_data(this.__wbg_ptr, ptr0, len0);\n }\n}\n\nexport function __wbg_String_8f0eb39a4a4c2f66(arg0, arg1) {\n const ret = String(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n};\n\nexport function __wbg_abort_410ec47a64ac6117(arg0, arg1) {\n getObject(arg0).abort(getObject(arg1));\n};\n\nexport function __wbg_abort_775ef1d17fc65868(arg0) {\n getObject(arg0).abort();\n};\n\nexport function __wbg_append_8c7dd8d641a5f01b() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).append(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n}, arguments) };\n\nexport function __wbg_arrayBuffer_d1b44c4390db422f() { return handleError(function (arg0) {\n const ret = getObject(arg0).arrayBuffer();\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_buffer_609cc3eee51ed158(arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n};\n\nexport function __wbg_call_672a4d21634d4a24() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_call_7cccdd69e0791ae2() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_clearTimeout_0b53d391c1b94dda(arg0) {\n const ret = clearTimeout(takeObject(arg0));\n return addHeapObject(ret);\n};\n\nexport function __wbg_credentials_f1256c3bb1216690(arg0) {\n const ret = getObject(arg0).credentials;\n return addHeapObject(ret);\n};\n\nexport function __wbg_crypto_574e78ad8b13b65f(arg0) {\n const ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n};\n\nexport function __wbg_done_769e5ede4b31c67b(arg0) {\n const ret = getObject(arg0).done;\n return ret;\n};\n\nexport function __wbg_fetch_11bff8299d0ecd2b(arg0) {\n const ret = fetch(getObject(arg0));\n return addHeapObject(ret);\n};\n\nexport function __wbg_fetch_509096533071c657(arg0, arg1) {\n const ret = getObject(arg0).fetch(getObject(arg1));\n return addHeapObject(ret);\n};\n\nexport function __wbg_fetch_f1856afdb49415d1(arg0) {\n const ret = fetch(getObject(arg0));\n return addHeapObject(ret);\n};\n\nexport function __wbg_getClientExtensionResults_f486a52e95c84a1a(arg0) {\n const ret = getObject(arg0).getClientExtensionResults();\n return addHeapObject(ret);\n};\n\nexport function __wbg_getRandomValues_b8f5dbd5f3995a9e() { return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n}, arguments) };\n\nexport function __wbg_getTime_46267b1c24877e30(arg0) {\n const ret = getObject(arg0).getTime();\n return ret;\n};\n\nexport function __wbg_get_67b2ba62fc30de12() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_get_d5bb96e3856d8afd() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).get(getObject(arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_getwithrefkey_1dc361bd10053bfe(arg0, arg1) {\n const ret = getObject(arg0)[getObject(arg1)];\n return addHeapObject(ret);\n};\n\nexport function __wbg_has_a5ea9117f258a0ec() { return handleError(function (arg0, arg1) {\n const ret = Reflect.has(getObject(arg0), getObject(arg1));\n return ret;\n}, arguments) };\n\nexport function __wbg_headers_9cb51cfd2ac780a4(arg0) {\n const ret = getObject(arg0).headers;\n return addHeapObject(ret);\n};\n\nexport function __wbg_instanceof_ArrayBuffer_e14585432e3737fc(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n};\n\nexport function __wbg_instanceof_Object_7f2dcef8f78644a4(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Object;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n};\n\nexport function __wbg_instanceof_Response_f2cc20d9f7dfd644(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Response;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n};\n\nexport function __wbg_instanceof_Uint8Array_17156bcf118086a9(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n};\n\nexport function __wbg_instanceof_Window_def73ea0955fc569(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n};\n\nexport function __wbg_iterator_9a24c88df860dc65() {\n const ret = Symbol.iterator;\n return addHeapObject(ret);\n};\n\nexport function __wbg_jscontrollererror_new(arg0) {\n const ret = JsControllerError.__wrap(arg0);\n return addHeapObject(ret);\n};\n\nexport function __wbg_length_a446193dc22c12f8(arg0) {\n const ret = getObject(arg0).length;\n return ret;\n};\n\nexport function __wbg_location_350d99456c2f3693(arg0) {\n const ret = getObject(arg0).location;\n return addHeapObject(ret);\n};\n\nexport function __wbg_log_c222819a41e063d3(arg0) {\n console.log(getObject(arg0));\n};\n\nexport function __wbg_msCrypto_a61aeb35a24c1329(arg0) {\n const ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n};\n\nexport function __wbg_navigator_1577371c070c8947(arg0) {\n const ret = getObject(arg0).navigator;\n return addHeapObject(ret);\n};\n\nexport function __wbg_new0_f788a2397c7ca929() {\n const ret = new Date();\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_018dcc2d6c8c2f6a() { return handleError(function () {\n const ret = new Headers();\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_new_23a2665fac83c611(arg0, arg1) {\n try {\n var state0 = {a: arg0, b: arg1};\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wbg_adapter_199(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n const ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n};\n\nexport function __wbg_new_2658d63118834d8e() {\n const ret = new Mutex();\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_405e22f390576ce2() {\n const ret = new Object();\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_78feb108b6472713() {\n const ret = new Array();\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_a12002a7f91c75be(arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_e25e5aab09ff45db() { return handleError(function () {\n const ret = new AbortController();\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_newnoargs_105ed471475aaf50(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n};\n\nexport function __wbg_newwithbyteoffsetandlength_d97e637ebe145a9a(arg0, arg1, arg2) {\n const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n};\n\nexport function __wbg_newwithlength_a381634e90c276d4(arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n};\n\nexport function __wbg_newwithstrandinit_06c535e0a867c635() { return handleError(function (arg0, arg1, arg2) {\n const ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_next_25feadfc0913fea9(arg0) {\n const ret = getObject(arg0).next;\n return addHeapObject(ret);\n};\n\nexport function __wbg_next_6574e1a8a62d1055() { return handleError(function (arg0) {\n const ret = getObject(arg0).next();\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_node_905d3e251edff8a2(arg0) {\n const ret = getObject(arg0).node;\n return addHeapObject(ret);\n};\n\nexport function __wbg_obtain_a9626b3b96e6dc2c(arg0) {\n const ret = getObject(arg0).obtain();\n return addHeapObject(ret);\n};\n\nexport function __wbg_origin_7c5d649acdace3ea() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg1).origin;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n}, arguments) };\n\nexport function __wbg_process_dc0fbacc7c1c06f7(arg0) {\n const ret = getObject(arg0).process;\n return addHeapObject(ret);\n};\n\nexport function __wbg_push_737cfc8c1432c2c6(arg0, arg1) {\n const ret = getObject(arg0).push(getObject(arg1));\n return ret;\n};\n\nexport function __wbg_queueMicrotask_97d92b4fcc8a61c5(arg0) {\n queueMicrotask(getObject(arg0));\n};\n\nexport function __wbg_queueMicrotask_d3219def82552485(arg0) {\n const ret = getObject(arg0).queueMicrotask;\n return addHeapObject(ret);\n};\n\nexport function __wbg_randomFillSync_ac0988aba3254290() { return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n}, arguments) };\n\nexport function __wbg_require_60cc747a6bc5215a() { return handleError(function () {\n const ret = module.require;\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_resolve_4851785c9c5f573d(arg0) {\n const ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n};\n\nexport function __wbg_setTimeout_73ce8df12de4f2f2(arg0, arg1) {\n const ret = setTimeout(getObject(arg0), arg1);\n return addHeapObject(ret);\n};\n\nexport function __wbg_set_37837023f3d740e8(arg0, arg1, arg2) {\n getObject(arg0)[arg1 >>> 0] = takeObject(arg2);\n};\n\nexport function __wbg_set_3f1d0b984ed272ed(arg0, arg1, arg2) {\n getObject(arg0)[takeObject(arg1)] = takeObject(arg2);\n};\n\nexport function __wbg_set_3fda3bac07393de4(arg0, arg1, arg2) {\n getObject(arg0)[takeObject(arg1)] = takeObject(arg2);\n};\n\nexport function __wbg_set_65595bdd868b3009(arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n};\n\nexport function __wbg_set_bb8cecf6a62b9f46() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n}, arguments) };\n\nexport function __wbg_setbody_5923b78a95eedf29(arg0, arg1) {\n getObject(arg0).body = getObject(arg1);\n};\n\nexport function __wbg_setcredentials_c3a22f1cd105a2c6(arg0, arg1) {\n getObject(arg0).credentials = __wbindgen_enum_RequestCredentials[arg1];\n};\n\nexport function __wbg_setheaders_834c0bdb6a8949ad(arg0, arg1) {\n getObject(arg0).headers = getObject(arg1);\n};\n\nexport function __wbg_setmethod_3c5280fe5d890842(arg0, arg1, arg2) {\n getObject(arg0).method = getStringFromWasm0(arg1, arg2);\n};\n\nexport function __wbg_setmode_5dc300b865044b65(arg0, arg1) {\n getObject(arg0).mode = __wbindgen_enum_RequestMode[arg1];\n};\n\nexport function __wbg_setsignal_75b21ef3a81de905(arg0, arg1) {\n getObject(arg0).signal = getObject(arg1);\n};\n\nexport function __wbg_signMessage_c732ea9d998cac79() { return handleError(function (arg0, arg1, arg2, arg3) {\n let deferred0_0;\n let deferred0_1;\n let deferred1_0;\n let deferred1_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n deferred1_0 = arg2;\n deferred1_1 = arg3;\n const ret = window.keychain_wallets.signMessage(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));\n return addHeapObject(ret);\n } finally {\n wasm.__wbindgen_export_3(deferred0_0, deferred0_1, 1);\n wasm.__wbindgen_export_3(deferred1_0, deferred1_1, 1);\n }\n}, arguments) };\n\nexport function __wbg_signal_aaf9ad74119f20a4(arg0) {\n const ret = getObject(arg0).signal;\n return addHeapObject(ret);\n};\n\nexport function __wbg_static_accessor_GLOBAL_88a902d13a557d07() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n};\n\nexport function __wbg_static_accessor_GLOBAL_THIS_56578be7e9f832b0() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n};\n\nexport function __wbg_static_accessor_SELF_37c5d418e4bf5819() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n};\n\nexport function __wbg_static_accessor_WINDOW_5de37043a91a9c40() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n};\n\nexport function __wbg_status_f6360336ca686bf0(arg0) {\n const ret = getObject(arg0).status;\n return ret;\n};\n\nexport function __wbg_stringify_f7ed6987935b4a24() { return handleError(function (arg0) {\n const ret = JSON.stringify(getObject(arg0));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_subarray_aa9065fa9dc5df96(arg0, arg1, arg2) {\n const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n};\n\nexport function __wbg_text_7805bea50de2af49() { return handleError(function (arg0) {\n const ret = getObject(arg0).text();\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_then_44b73946d2fb3e7d(arg0, arg1) {\n const ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n};\n\nexport function __wbg_then_48b406749878a531(arg0, arg1, arg2) {\n const ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n};\n\nexport function __wbg_url_ae10c34ca209681d(arg0, arg1) {\n const ret = getObject(arg1).url;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n};\n\nexport function __wbg_value_cd1ffa7b1ab794f1(arg0) {\n const ret = getObject(arg0).value;\n return addHeapObject(ret);\n};\n\nexport function __wbg_versions_c01dfd4722a88165(arg0) {\n const ret = getObject(arg0).versions;\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_boolean_get(arg0) {\n const v = getObject(arg0);\n const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;\n return ret;\n};\n\nexport function __wbindgen_cb_drop(arg0) {\n const obj = takeObject(arg0).original;\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n const ret = false;\n return ret;\n};\n\nexport function __wbindgen_closure_wrapper2845(arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 363, __wbg_adapter_42);\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_closure_wrapper2978(arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 396, __wbg_adapter_45);\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_debug_string(arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n};\n\nexport function __wbindgen_error_new(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_in(arg0, arg1) {\n const ret = getObject(arg0) in getObject(arg1);\n return ret;\n};\n\nexport function __wbindgen_is_function(arg0) {\n const ret = typeof(getObject(arg0)) === 'function';\n return ret;\n};\n\nexport function __wbindgen_is_object(arg0) {\n const val = getObject(arg0);\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n};\n\nexport function __wbindgen_is_string(arg0) {\n const ret = typeof(getObject(arg0)) === 'string';\n return ret;\n};\n\nexport function __wbindgen_is_undefined(arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n};\n\nexport function __wbindgen_json_parse(arg0, arg1) {\n const ret = JSON.parse(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_json_serialize(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = JSON.stringify(obj === undefined ? null : obj);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n};\n\nexport function __wbindgen_jsval_loose_eq(arg0, arg1) {\n const ret = getObject(arg0) == getObject(arg1);\n return ret;\n};\n\nexport function __wbindgen_memory() {\n const ret = wasm.memory;\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_number_get(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n};\n\nexport function __wbindgen_number_new(arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_object_clone_ref(arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_object_drop_ref(arg0) {\n takeObject(arg0);\n};\n\nexport function __wbindgen_string_get(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n};\n\nexport function __wbindgen_string_new(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_throw(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n};\n\n","import * as wasm from \"./session_wasm_bg.wasm\";\nexport * from \"./session_wasm_bg.js\";\nimport { __wbg_set_wasm } from \"./session_wasm_bg.js\";\n__wbg_set_wasm(wasm);","import { Policy } from \"@cartridge/controller-wasm\";\nimport { CartridgeSessionAccount } from \"@cartridge/controller-wasm/session\";\nimport { Call, InvokeFunctionResponse, WalletAccount } from \"starknet\";\n\nimport { normalizeCalls } from \"../utils\";\nimport BaseProvider from \"../provider\";\n\nexport * from \"../errors\";\nexport * from \"../types\";\n\nexport default class SessionAccount extends WalletAccount {\n public controller: CartridgeSessionAccount;\n\n constructor(\n provider: BaseProvider,\n {\n rpcUrl,\n privateKey,\n address,\n ownerGuid,\n chainId,\n expiresAt,\n policies,\n guardianKeyGuid,\n metadataHash,\n sessionKeyGuid,\n }: {\n rpcUrl: string;\n privateKey: string;\n address: string;\n ownerGuid: string;\n chainId: string;\n expiresAt: number;\n policies: Policy[];\n guardianKeyGuid: string;\n metadataHash: string;\n sessionKeyGuid: string;\n },\n ) {\n super({ nodeUrl: rpcUrl }, provider, address);\n\n this.controller = CartridgeSessionAccount.newAsRegistered(\n rpcUrl,\n privateKey,\n address,\n ownerGuid,\n chainId,\n {\n expiresAt,\n policies,\n guardianKeyGuid,\n metadataHash,\n sessionKeyGuid,\n },\n );\n }\n\n /**\n * Invoke execute function in account contract\n *\n * @param calls the invocation object or an array of them, containing:\n * - contractAddress - the address of the contract\n * - entrypoint - the entrypoint of the contract\n * - calldata - (defaults to []) the calldata\n * - signature - (defaults to []) the signature\n * @param abis (optional) the abi of the contract for better displaying\n *\n * @returns response from addTransaction\n */\n async execute(calls: Call | Call[]): Promise<InvokeFunctionResponse> {\n return this.controller.execute(normalizeCalls(calls));\n }\n}\n","import { ec, stark, WalletAccount } from \"starknet\";\n\nimport SessionAccount from \"./account\";\nimport { KEYCHAIN_URL } from \"../constants\";\nimport BaseProvider from \"../provider\";\nimport { toWasmPolicies } from \"../utils\";\nimport { SessionPolicies } from \"@cartridge/presets\";\nimport { AddStarknetChainParameters } from \"@starknet-io/types-js\";\nimport { ParsedSessionPolicies } from \"../policies\";\n\ninterface SessionRegistration {\n username: string;\n address: string;\n ownerGuid: string;\n transactionHash?: string;\n expiresAt: string;\n guardianKeyGuid: string;\n metadataHash: string;\n sessionKeyGuid: string;\n}\n\nexport type SessionOptions = {\n rpc: string;\n chainId: string;\n policies: SessionPolicies;\n redirectUrl: string;\n keychainUrl?: string;\n};\n\nexport default class SessionProvider extends BaseProvider {\n public id = \"controller_session\";\n public name = \"Controller Session\";\n\n protected _chainId: string;\n protected _rpcUrl: string;\n protected _username?: string;\n protected _redirectUrl: string;\n protected _policies: ParsedSessionPolicies;\n protected _keychainUrl: string;\n\n constructor({\n rpc,\n chainId,\n policies,\n redirectUrl,\n keychainUrl,\n }: SessionOptions) {\n super();\n\n this._policies = {\n verified: false,\n contracts: policies.contracts\n ? Object.fromEntries(\n Object.entries(policies.contracts).map(([address, contract]) => [\n address,\n {\n ...contract,\n methods: contract.methods.map((method) => ({\n ...method,\n authorized: true,\n })),\n },\n ]),\n )\n : undefined,\n messages: policies.messages?.map((message) => ({\n ...message,\n authorized: true,\n })),\n };\n\n this._rpcUrl = rpc;\n this._chainId = chainId;\n this._redirectUrl = redirectUrl;\n this._keychainUrl = keychainUrl || KEYCHAIN_URL;\n\n if (typeof window !== \"undefined\") {\n (window as any).starknet_controller_session = this;\n }\n }\n\n private validatePoliciesSubset(\n newPolicies: ParsedSessionPolicies,\n existingPolicies: ParsedSessionPolicies,\n ): boolean {\n if (newPolicies.contracts) {\n if (!existingPolicies.contracts) return false;\n\n for (const [address, contract] of Object.entries(newPolicies.contracts)) {\n const existingContract = existingPolicies.contracts[address];\n if (!existingContract) return false;\n\n for (const method of contract.methods) {\n const existingMethod = existingContract.methods.find(\n (m) => m.entrypoint === method.entrypoint,\n );\n if (!existingMethod || !existingMethod.authorized) return false;\n }\n }\n }\n\n if (newPolicies.messages) {\n if (!existingPolicies.messages) return false;\n\n for (const message of newPolicies.messages) {\n const existingMessage = existingPolicies.messages.find(\n (m) =>\n JSON.stringify(m.domain) === JSON.stringify(message.domain) &&\n JSON.stringify(m.types) === JSON.stringify(message.types),\n );\n if (!existingMessage || !existingMessage.authorized) return false;\n }\n }\n\n return true;\n }\n\n async username() {\n await this.tryRetrieveFromQueryOrStorage();\n return this._username;\n }\n\n async probe(): Promise<WalletAccount | undefined> {\n if (this.account) {\n return this.account;\n }\n\n this.account = await this.tryRetrieveFromQueryOrStorage();\n return this.account;\n }\n\n async connect(): Promise<WalletAccount | undefined> {\n if (this.account) {\n return this.account;\n }\n\n this.account = await this.tryRetrieveFromQueryOrStorage();\n if (this.account) {\n return this.account;\n }\n\n const pk = stark.randomAddress();\n const publicKey = ec.starkCurve.getStarkKey(pk);\n\n localStorage.setItem(\n \"sessionSigner\",\n JSON.stringify({\n privKey: pk,\n pubKey: publicKey,\n }),\n );\n\n localStorage.setItem(\"sessionPolicies\", JSON.stringify(this._policies));\n\n const url = `${\n this._keychainUrl\n }/session?public_key=${publicKey}&redirect_uri=${\n this._redirectUrl\n }&redirect_query_name=startapp&policies=${JSON.stringify(\n this._policies,\n )}&rpc_url=${this._rpcUrl}`;\n\n localStorage.setItem(\"lastUsedConnector\", this.id);\n window.open(url, \"_blank\");\n\n return this.account;\n }\n\n switchStarknetChain(_chainId: string): Promise<boolean> {\n throw new Error(\"switchStarknetChain not implemented\");\n }\n\n addStarknetChain(_chain: AddStarknetChainParameters): Promise<boolean> {\n throw new Error(\"addStarknetChain not implemented\");\n }\n\n disconnect(): Promise<void> {\n localStorage.removeItem(\"sessionSigner\");\n localStorage.removeItem(\"session\");\n localStorage.removeItem(\"sessionPolicies\");\n this.account = undefined;\n this._username = undefined;\n return Promise.resolve();\n }\n\n async tryRetrieveFromQueryOrStorage() {\n if (this.account) {\n return this.account;\n }\n\n const signerString = localStorage.getItem(\"sessionSigner\");\n const signer = signerString ? JSON.parse(signerString) : null;\n let sessionRegistration: SessionRegistration | null = null;\n\n if (window.location.search.includes(\"startapp\")) {\n const params = new URLSearchParams(window.location.search);\n const session = params.get(\"startapp\");\n if (session) {\n sessionRegistration = JSON.parse(atob(session));\n localStorage.setItem(\"session\", JSON.stringify(sessionRegistration));\n\n // Remove the session query parameter\n params.delete(\"startapp\");\n const newUrl =\n window.location.pathname +\n (params.toString() ? `?${params.toString()}` : \"\") +\n window.location.hash;\n window.history.replaceState({}, document.title, newUrl);\n }\n }\n\n if (!sessionRegistration) {\n const sessionString = localStorage.getItem(\"session\");\n if (sessionString) {\n sessionRegistration = JSON.parse(sessionString);\n }\n }\n\n if (!sessionRegistration || !signer) {\n return;\n }\n\n // Check expiration\n const expirationTime = parseInt(sessionRegistration.expiresAt) * 1000;\n if (Date.now() >= expirationTime) {\n this.clearStoredSession();\n return;\n }\n\n // Check stored policies\n const storedPoliciesStr = localStorage.getItem(\"sessionPolicies\");\n if (storedPoliciesStr) {\n const storedPolicies = JSON.parse(\n storedPoliciesStr,\n ) as ParsedSessionPolicies;\n\n const isValid = this.validatePoliciesSubset(\n this._policies,\n storedPolicies,\n );\n\n if (!isValid) {\n this.clearStoredSession();\n return;\n }\n }\n\n this._username = sessionRegistration.username;\n this.account = new SessionAccount(this, {\n rpcUrl: this._rpcUrl,\n privateKey: signer.privKey,\n address: sessionRegistration.address,\n ownerGuid: sessionRegistration.ownerGuid,\n chainId: this._chainId,\n expiresAt: parseInt(sessionRegistration.expiresAt),\n policies: toWasmPolicies(this._policies),\n guardianKeyGuid: sessionRegistration.guardianKeyGuid,\n metadataHash: sessionRegistration.metadataHash,\n sessionKeyGuid: sessionRegistration.sessionKeyGuid,\n });\n\n return this.account;\n }\n\n private clearStoredSession(): void {\n localStorage.removeItem(\"sessionSigner\");\n localStorage.removeItem(\"session\");\n localStorage.removeItem(\"sessionPolicies\");\n }\n}\n"],"names":["wasm","__wbg_set_wasm","val","heap","getObject","idx","WASM_VECTOR_LEN","cachedUint8ArrayMemory0","getUint8ArrayMemory0","lTextEncoder","cachedTextEncoder","encodeString","arg","view","buf","passStringToWasm0","malloc","realloc","ptr","len","mem","offset","code","ret","cachedDataViewMemory0","getDataViewMemory0","lTextDecoder","cachedTextDecoder","heap_next","addHeapObject","obj","dropObject","takeObject","state","passArrayJsValueToWasm0","array","i","CartridgeSessionAccountFinalization","CartridgeSessionAccount","rpc_url","signer","address","chain_id","session_authorization","session","retptr","ptr0","len0","ptr1","len1","r0","r1","r2","owner_guid","hash","calls","SessionAccount","WalletAccount","provider","rpcUrl","privateKey","ownerGuid","chainId","expiresAt","policies","guardianKeyGuid","metadataHash","sessionKeyGuid","normalizeCalls","SessionProvider","BaseProvider","rpc","redirectUrl","keychainUrl","contract","method","message","KEYCHAIN_URL","newPolicies","existingPolicies","existingContract","existingMethod","m","existingMessage","pk","stark","publicKey","ec","url","_chainId","_chain","signerString","sessionRegistration","params","newUrl","sessionString","expirationTime","storedPoliciesStr","storedPolicies","toWasmPolicies"],"mappings":"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","x_google_ignoreList":[0,1]}