@cartridge/controller 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts","../src/utils.ts","../src/account.ts","../src/iframe/base.ts","../src/constants.ts","../src/iframe/keychain.ts","../src/iframe/profile.ts","../src/errors.ts","../package.json","../src/icon.ts","../src/mutex.ts","../src/provider.ts","../src/controller.ts","../src/lookup.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+aa3a218/node_modules/@cartridge/presets/src/generated/controller-configs.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+aa3a218/node_modules/@cartridge/presets/src/generated/erc20-metadata.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+aa3a218/node_modules/@cartridge/presets/src/index.ts"],"names":["ResponseCodes","typedData","existingController","params","call"],"mappings":"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","file":"index.js","sourcesContent":["import {\n constants,\n BigNumberish,\n Call,\n Abi,\n InvocationsDetails,\n} from \"starknet\";\nimport {\n AddInvokeTransactionResult,\n ChainId,\n Signature,\n TypedData,\n} from \"@starknet-io/types-js\";\nimport { KeychainIFrame, ProfileIFrame } from \"./iframe\";\nimport { Policy, SessionPolicies } from \"@cartridge/presets\";\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 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 profile?: ProfileIFrame;\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\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 ): 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 paymaster?: any,\n error?: ControllerError,\n ): Promise<ExecuteReply | ConnectError>;\n signMessage(\n typedData: TypedData,\n account: string,\n async?: boolean,\n ): Promise<Signature | ConnectError>;\n logout(): Promise<void>;\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}\n\nexport interface Profile {\n navigate(path: string): 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 &\n KeychainOptions &\n ProfileOptions;\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};\n\nexport type ProfileOptions = IFrameOptions & {\n /** The URL of profile. Mainly for internal development purpose */\n profileUrl?: string;\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 | \"activity\";\n\nexport type Tokens = {\n erc20?: string[];\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 wasm from \"@cartridge/account-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): wasm.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 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","import {\n InvokeFunctionResponse,\n TypedData,\n WalletAccount,\n Call,\n AllowArray,\n} from \"starknet\";\n\nimport { SPEC } from \"@starknet-io/types-js\";\n\nimport {\n ConnectError,\n Keychain,\n KeychainOptions,\n Modal,\n ResponseCodes,\n} from \"./types\";\nimport { AsyncMethodReturns } from \"@cartridge/penpal\";\nimport BaseProvider from \"./provider\";\nimport { toArray } from \"./utils\";\n\nclass ControllerAccount extends WalletAccount {\n address: string;\n private keychain: AsyncMethodReturns<Keychain>;\n private modal: Modal;\n private options?: KeychainOptions;\n\n constructor(\n provider: BaseProvider,\n rpcUrl: string,\n address: string,\n keychain: AsyncMethodReturns<Keychain>,\n options: KeychainOptions,\n modal: Modal,\n ) {\n super({ nodeUrl: rpcUrl }, provider);\n\n this.address = address;\n this.keychain = keychain;\n this.options = options;\n this.modal = modal;\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: AllowArray<Call>): Promise<InvokeFunctionResponse> {\n calls = toArray(calls);\n\n return new Promise(async (resolve, reject) => {\n const sessionExecute = await this.keychain.execute(\n calls,\n undefined,\n undefined,\n false,\n );\n\n // Session call succeeded\n if (sessionExecute.code === ResponseCodes.SUCCESS) {\n resolve(sessionExecute as InvokeFunctionResponse);\n return;\n }\n\n // Propagates session txn error back to caller\n if (this.options?.propagateSessionErrors) {\n reject((sessionExecute as ConnectError).error);\n return;\n }\n\n // Session call or Paymaster flow failed.\n // Session not avaialble, manual flow fallback\n this.modal.open();\n const manualExecute = await this.keychain.execute(\n calls,\n undefined,\n undefined,\n true,\n (sessionExecute as ConnectError).error,\n );\n\n // Manual call succeeded\n if (manualExecute.code === ResponseCodes.SUCCESS) {\n resolve(manualExecute as InvokeFunctionResponse);\n this.modal.close();\n return;\n }\n\n reject((manualExecute as ConnectError).error);\n return;\n });\n }\n\n /**\n * Sign an JSON object for off-chain usage with the starknet private key and return the signature\n * This adds a message prefix so it cant be interchanged with transactions\n *\n * @param json - JSON object to be signed\n * @returns the signature of the JSON object\n * @throws {Error} if the JSON object is not a valid JSON\n */\n async signMessage(typedData: TypedData): Promise<SPEC.SIGNATURE> {\n return new Promise(async (resolve, reject) => {\n const sessionSign = await this.keychain.signMessage(typedData, \"\", true);\n\n // Session sign succeeded\n if (!(\"code\" in sessionSign)) {\n resolve(sessionSign as SPEC.SIGNATURE);\n return;\n }\n\n // Session not avaialble, manual flow fallback\n this.modal.open();\n const manualSign = await this.keychain.signMessage(typedData, \"\", false);\n\n if (!(\"code\" in manualSign)) {\n resolve(manualSign as SPEC.SIGNATURE);\n } else {\n reject((manualSign as ConnectError).error);\n }\n this.modal.close();\n });\n }\n}\n\nexport default ControllerAccount;\n","import { AsyncMethodReturns, connectToChild } from \"@cartridge/penpal\";\nimport { ControllerOptions, Modal } from \"../types\";\n\nexport type IFrameOptions<CallSender> = Omit<\n ConstructorParameters<typeof IFrame>[0],\n \"id\" | \"url\" | \"onConnect\"\n> & {\n url?: string;\n onConnect: (child: AsyncMethodReturns<CallSender>) => void;\n};\n\nexport class IFrame<CallSender extends {}> implements Modal {\n url?: URL;\n private iframe?: HTMLIFrameElement;\n private container?: HTMLDivElement;\n private onClose?: () => void;\n\n constructor({\n id,\n url,\n preset,\n onClose,\n onConnect,\n methods = {},\n }: Pick<ControllerOptions, \"preset\"> & {\n id: string;\n url: URL;\n onClose?: () => void;\n onConnect: (child: AsyncMethodReturns<CallSender>) => void;\n methods?: { [key: string]: (...args: any[]) => void };\n }) {\n if (typeof document === \"undefined\") {\n return;\n }\n\n if (preset) {\n url.searchParams.set(\"preset\", preset);\n }\n\n this.url = url;\n\n const iframe = document.createElement(\"iframe\");\n iframe.src = url.toString();\n iframe.id = id;\n iframe.style.border = \"none\";\n iframe.sandbox.add(\"allow-forms\");\n iframe.sandbox.add(\"allow-popups\");\n iframe.sandbox.add(\"allow-scripts\");\n iframe.sandbox.add(\"allow-same-origin\");\n iframe.allow =\n \"publickey-credentials-create *; publickey-credentials-get *; clipboard-write\";\n if (!!document.hasStorageAccess) {\n iframe.sandbox.add(\"allow-storage-access-by-user-activation\");\n }\n\n const container = document.createElement(\"div\");\n container.id = \"controller\";\n container.style.position = \"fixed\";\n container.style.height = \"100%\";\n container.style.width = \"100%\";\n container.style.top = \"0\";\n container.style.left = \"0\";\n container.style.zIndex = \"10000\";\n container.style.backgroundColor = \"rgba(0,0,0,0.6)\";\n container.style.display = \"flex\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.visibility = \"hidden\";\n container.style.opacity = \"0\";\n container.style.transition = \"opacity 0.2s ease\";\n container.appendChild(iframe);\n\n this.iframe = iframe;\n this.container = container;\n\n connectToChild<CallSender>({\n iframe: this.iframe,\n methods: { close: () => this.close(), ...methods },\n }).promise.then(onConnect);\n\n this.resize();\n window.addEventListener(\"resize\", () => this.resize());\n\n const observer = new MutationObserver(() => {\n const existingController = document.getElementById(\"controller\");\n if (document.body) {\n if (\n (id === \"controller-keychain\" && !existingController) ||\n id === \"controller-profile\"\n ) {\n document.body.appendChild(container);\n observer.disconnect();\n }\n }\n });\n\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n });\n\n const existingController = document.getElementById(\"controller\");\n if (document.body) {\n if (\n (id === \"controller-keychain\" && !existingController) ||\n id === \"controller-profile\"\n ) {\n document.body.appendChild(container);\n }\n }\n\n this.onClose = onClose;\n }\n\n open() {\n if (!this.container) return;\n document.body.style.overflow = \"hidden\";\n\n this.container.style.visibility = \"visible\";\n this.container.style.opacity = \"1\";\n }\n\n close() {\n if (!this.container) return;\n this.onClose?.();\n\n document.body.style.overflow = \"auto\";\n\n this.container.style.visibility = \"hidden\";\n this.container.style.opacity = \"0\";\n }\n\n sendBackward() {\n if (!this.container) return;\n this.container.style.zIndex = \"9999\";\n }\n\n sendForward() {\n if (!this.container) return;\n this.container.style.zIndex = \"10000\";\n }\n\n private resize() {\n if (!this.iframe) return;\n\n this.iframe.style.userSelect = \"none\";\n\n if (window.innerWidth < 768) {\n this.iframe.style.height = \"100%\";\n this.iframe.style.width = \"100%\";\n this.iframe.style.borderRadius = \"0\";\n return;\n }\n\n this.iframe.style.height = \"600px\";\n this.iframe.style.width = \"432px\";\n this.iframe.style.borderRadius = \"8px\";\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","import { KEYCHAIN_URL } from \"../constants\";\nimport { Keychain, KeychainOptions } from \"../types\";\nimport { IFrame, IFrameOptions } from \"./base\";\n\ntype KeychainIframeOptions = IFrameOptions<Keychain> & KeychainOptions;\n\nexport class KeychainIFrame extends IFrame<Keychain> {\n constructor({ url, policies, ...iframeOptions }: KeychainIframeOptions) {\n const _url = new URL(url ?? KEYCHAIN_URL);\n\n if (policies) {\n _url.searchParams.set(\n \"policies\",\n encodeURIComponent(JSON.stringify(policies)),\n );\n }\n\n super({\n ...iframeOptions,\n id: \"controller-keychain\",\n url: _url,\n });\n }\n}\n","import { PROFILE_URL } from \"../constants\";\nimport { Profile, ProfileOptions } from \"../types\";\nimport { IFrame, IFrameOptions } from \"./base\";\n\nexport type ProfileIFrameOptions = IFrameOptions<Profile> &\n ProfileOptions & {\n rpcUrl: string;\n version?: string;\n username: string;\n slot?: string;\n namespace?: string;\n };\n\nexport class ProfileIFrame extends IFrame<Profile> {\n constructor({\n profileUrl,\n rpcUrl,\n version,\n username,\n slot,\n namespace,\n tokens,\n ...iframeOptions\n }: ProfileIFrameOptions) {\n const _profileUrl = (profileUrl || PROFILE_URL).replace(/\\/$/, \"\");\n let _url = new URL(\n slot\n ? namespace\n ? `${_profileUrl}/account/${username}/slot/${slot}?ps=${encodeURIComponent(\n slot,\n )}&ns=${encodeURIComponent(namespace)}`\n : `${_profileUrl}/account/${username}/slot/${slot}?ps=${encodeURIComponent(\n slot,\n )}`\n : `${_profileUrl}/account/${username}`,\n );\n\n if (version) {\n _url.searchParams.set(\"v\", encodeURIComponent(version));\n }\n\n _url.searchParams.set(\"rpcUrl\", encodeURIComponent(rpcUrl));\n\n if (tokens?.erc20) {\n _url.searchParams.set(\n \"erc20\",\n encodeURIComponent(tokens.erc20.toString()),\n );\n }\n\n super({\n ...iframeOptions,\n id: \"controller-profile\",\n url: _url,\n });\n }\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","{\n \"name\": \"@cartridge/controller\",\n \"version\": \"0.7.2\",\n \"description\": \"Cartridge Controller\",\n \"module\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"type\": \"module\",\n \"scripts\": {\n \"build:deps\": \"tsup\",\n \"build\": \"pnpm build:deps\",\n \"format\": \"prettier --write \\\"src/**/*.ts\\\"\",\n \"format:check\": \"prettier --check \\\"src/**/*.ts\\\"\",\n \"test\": \"jest\",\n \"version\": \"pnpm pkg get version\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./session\": {\n \"types\": \"./dist/session/index.d.ts\",\n \"import\": \"./dist/session/index.js\",\n \"require\": \"./dist/session/index.cjs\"\n },\n \"./session/node\": {\n \"types\": \"./dist/node/index.d.ts\",\n \"import\": \"./dist/node/index.js\",\n \"require\": \"./dist/node/index.cjs\"\n },\n \"./provider\": {\n \"types\": \"./dist/provider/index.d.ts\",\n \"import\": \"./dist/provider/index.js\"\n },\n \"./types\": {\n \"types\": \"./dist/types/index.d.ts\",\n \"import\": \"./dist/types/index.js\"\n }\n },\n \"tsup\": {\n \"entry\": [\n \"src/index.ts\",\n \"src/controller.ts\",\n \"src/lookup.ts\",\n \"src/session/index.ts\",\n \"src/node/index.ts\"\n ],\n \"format\": [\n \"esm\",\n \"cjs\"\n ],\n \"splitting\": false,\n \"sourcemap\": true,\n \"clean\": true,\n \"dts\": true,\n \"treeshake\": {\n \"preset\": \"recommended\"\n },\n \"exports\": \"named\"\n },\n \"peerDependencies\": {\n \"starknet\": \"catalog:\",\n \"open\": \"^10.1.0\"\n },\n \"dependencies\": {\n \"@cartridge/account-wasm\": \"workspace:*\",\n \"@cartridge/penpal\": \"catalog:\",\n \"@starknet-io/types-js\": \"catalog:\",\n \"@telegram-apps/sdk\": \"^2.4.0\",\n \"base64url\": \"catalog:\",\n \"cbor-x\": \"^1.5.0\",\n \"fast-deep-equal\": \"catalog:\"\n },\n \"devDependencies\": {\n \"@cartridge/tsconfig\": \"workspace:*\",\n \"@types/jest\": \"^29.5.14\",\n \"@types/node\": \"catalog:\",\n \"jest\": \"^29.7.0\",\n \"prettier\": \"catalog:\",\n \"ts-jest\": \"^29.2.5\",\n \"tsup\": \"catalog:\",\n \"typescript\": \"catalog:\"\n }\n}\n","export const icon =\n \"data:image/png;base64,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\";\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 { WalletAccount } from \"starknet\";\nimport {\n AddInvokeTransactionParameters,\n AddStarknetChainParameters,\n Errors,\n Permission,\n RequestAccountsParameters,\n RequestFn,\n StarknetWindowObject,\n SwitchStarknetChainParameters,\n TypedData,\n WalletEventHandlers,\n WalletEventListener,\n WalletEvents,\n} from \"@starknet-io/types-js\";\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 Errors.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 Errors.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 Errors.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 Errors.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 Errors.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 Errors.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 Errors.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","import { AsyncMethodReturns } from \"@cartridge/penpal\";\n\nimport ControllerAccount from \"./account\";\nimport { KeychainIFrame, ProfileIFrame } from \"./iframe\";\nimport { NotReadyToConnect } from \"./errors\";\nimport {\n Keychain,\n ResponseCodes,\n ConnectReply,\n ProbeReply,\n ControllerOptions,\n ConnectError,\n Profile,\n IFrames,\n ProfileContextTypeVariant,\n Chain,\n} from \"./types\";\nimport BaseProvider from \"./provider\";\nimport { WalletAccount } from \"starknet\";\nimport { Policy } from \"@cartridge/presets\";\nimport { AddStarknetChainParameters, ChainId } from \"@starknet-io/types-js\";\nimport { parseChainId } from \"./utils\";\n\nexport default class ControllerProvider extends BaseProvider {\n private keychain?: AsyncMethodReturns<Keychain>;\n private profile?: AsyncMethodReturns<Profile>;\n private options: ControllerOptions;\n private iframes: IFrames;\n private selectedChain: ChainId;\n private chains: Map<ChainId, Chain>;\n\n constructor(options: ControllerOptions) {\n super();\n\n const chains = new Map<ChainId, Chain>();\n\n for (const chain of options.chains) {\n const url = new URL(chain.rpcUrl);\n const chainId = parseChainId(url);\n chains.set(chainId, chain);\n }\n\n if (\n options.policies?.messages?.length &&\n options.policies.messages.length !== chains.size\n ) {\n console.warn(\n \"Each message policy is associated with a specific chain. \" +\n \"The number of message policies does not match the number of chains specified - \" +\n \"session message signing may not work on some chains.\",\n );\n }\n\n this.chains = chains;\n this.selectedChain = options.defaultChainId;\n\n if (!this.chains.has(this.selectedChain)) {\n throw new Error(\n `Chain ${this.selectedChain} not found in configured chains`,\n );\n }\n\n this.iframes = {\n keychain: new KeychainIFrame({\n ...options,\n onClose: this.keychain?.reset,\n onConnect: (keychain) => {\n this.keychain = keychain;\n },\n }),\n };\n\n this.options = options;\n\n if (typeof window !== \"undefined\") {\n (window as any).starknet_controller = this;\n }\n }\n\n async probe(): Promise<WalletAccount | undefined> {\n try {\n await this.waitForKeychain();\n\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n const response = (await this.keychain.probe(this.rpcUrl())) as ProbeReply;\n\n // For backwards compat with controller <=0.6.0\n let rpcUrl = response?.rpcUrl || this.rpcUrl();\n this.account = new ControllerAccount(\n this,\n rpcUrl,\n response.address,\n this.keychain,\n this.options,\n this.iframes.keychain,\n );\n } catch (e) {\n console.error(e);\n return;\n }\n\n if (!this.iframes.profile) {\n const username = await this.keychain.username();\n\n this.iframes.profile = new ProfileIFrame({\n ...this.options,\n onConnect: (profile) => {\n this.profile = profile;\n },\n methods: {\n openSettings: () => this.openSettings.bind(this),\n openPurchaseCredits: () => this.openPurchaseCredits.bind(this),\n openExecute: () => this.openExecute.bind(this),\n },\n rpcUrl: this.rpcUrl(),\n username,\n version: this.version,\n });\n }\n\n return this.account;\n }\n\n async connect(): Promise<WalletAccount | undefined> {\n if (this.account) {\n return this.account;\n }\n\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n if (!!document.hasStorageAccess) {\n const ok = await document.hasStorageAccess();\n if (!ok) {\n await document.requestStorageAccess();\n }\n }\n\n this.iframes.keychain.open();\n\n try {\n let response = await this.keychain.connect(\n this.options.policies || {},\n this.rpcUrl(),\n );\n if (response.code !== ResponseCodes.SUCCESS) {\n throw new Error(response.message);\n }\n\n response = response as ConnectReply;\n this.account = new ControllerAccount(\n this,\n this.rpcUrl(),\n response.address,\n this.keychain,\n this.options,\n this.iframes.keychain,\n );\n\n return this.account;\n } catch (e) {\n console.log(e);\n } finally {\n this.iframes.keychain.close();\n }\n }\n\n async switchStarknetChain(chainId: string): Promise<boolean> {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return false;\n }\n\n try {\n this.selectedChain = chainId;\n const response = (await this.keychain.probe(this.rpcUrl())) as ProbeReply;\n\n if (response.rpcUrl === this.rpcUrl()) {\n return true;\n }\n\n await this.keychain.switchChain(this.rpcUrl());\n } catch (e) {\n console.error(e);\n return false;\n }\n\n this.emitNetworkChanged(chainId);\n return true;\n }\n\n addStarknetChain(_chain: AddStarknetChainParameters): Promise<boolean> {\n return Promise.resolve(true);\n }\n\n async disconnect() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n if (!!document.hasStorageAccess) {\n const ok = await document.hasStorageAccess();\n if (!ok) {\n await document.requestStorageAccess();\n }\n }\n\n this.account = undefined;\n return this.keychain.disconnect();\n }\n\n async openProfile(tab: ProfileContextTypeVariant = \"inventory\") {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(`${this.iframes.profile.url?.pathname}/${tab}`);\n this.iframes.profile.open();\n }\n\n async openProfileTo(to: string) {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(`${this.iframes.profile.url?.pathname}/${to}`);\n this.iframes.profile.open();\n }\n\n async openProfileAt(at: string) {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(at);\n this.iframes.profile.open();\n }\n\n async openSettings() {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n if (this.iframes.profile?.sendBackward) {\n this.iframes.profile?.sendBackward();\n } else {\n this.iframes.profile?.close();\n }\n this.iframes.keychain.open();\n const res = await this.keychain.openSettings();\n this.iframes.keychain.close();\n this.iframes.profile?.sendForward?.();\n if (res && (res as ConnectError).code === ResponseCodes.NOT_CONNECTED) {\n return false;\n }\n return true;\n }\n\n revoke(origin: string, _policy: Policy[]) {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n\n return this.keychain.revoke(origin);\n }\n\n rpcUrl(): string {\n return this.chains.get(this.selectedChain)!.rpcUrl;\n }\n\n username() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n return this.keychain.username();\n }\n\n openPurchaseCredits() {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n if (!this.iframes.profile) {\n console.error(\"Profile is not ready\");\n return;\n }\n this.iframes.profile.close();\n this.iframes.keychain.open();\n this.keychain.openPurchaseCredits();\n }\n\n async openExecute(calls: any, chainId?: string) {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n if (!this.iframes.profile) {\n console.error(\"Profile is not ready\");\n return;\n }\n // Switch to the chain if provided\n let currentChainId = this.selectedChain;\n if (chainId) {\n this.switchStarknetChain(chainId);\n }\n // Switch iframes\n this.iframes.profile?.sendBackward();\n this.iframes.keychain.open();\n this.iframes.profile?.close();\n // Invoke execute\n const res = await this.keychain.execute(calls, undefined, undefined, true);\n // Switch back iframes\n this.iframes.profile?.open();\n this.iframes.keychain.close();\n this.iframes.profile?.sendForward();\n // Switch back to the original chain\n if (chainId) {\n this.switchStarknetChain(currentChainId);\n }\n return !(\n res &&\n ((res as ConnectError).code === ResponseCodes.NOT_CONNECTED ||\n (res as ConnectError).code === ResponseCodes.CANCELED)\n );\n }\n\n async delegateAccount() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n\n return await this.keychain.delegateAccount();\n }\n\n private waitForKeychain({\n timeout = 50000,\n interval = 100,\n }:\n | {\n timeout?: number;\n interval?: number;\n }\n | undefined = {}) {\n return new Promise<void>((resolve, reject) => {\n const startTime = Date.now();\n const id = setInterval(() => {\n if (Date.now() - startTime > timeout) {\n clearInterval(id);\n reject(new Error(\"Timeout waiting for keychain\"));\n return;\n }\n\n if (!this.keychain) return;\n\n clearInterval(id);\n resolve();\n }, interval);\n });\n }\n}\n","import { LookupRequest, LookupResponse } from \"./types\";\nimport { num } from \"starknet\";\nimport { API_URL } from \"./constants\";\n\nconst cache = new Map<string, string>();\n\nasync function lookup(request: LookupRequest): Promise<LookupResponse> {\n if (!request.addresses?.length && !request.usernames?.length) {\n return { results: [] };\n }\n\n const response = await fetch(`${API_URL}/lookup`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(request),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n return response.json();\n}\n\nexport async function lookupUsernames(\n usernames: string[],\n): Promise<Map<string, string>> {\n const uncachedUsernames = usernames.filter((name) => !cache.has(name));\n\n if (uncachedUsernames.length > 0) {\n const response = await lookup({ usernames: uncachedUsernames });\n\n response.results.forEach((result) => {\n cache.set(result.username, result.addresses[0]); // TODO: handle multiple controller addresses\n });\n }\n\n return new Map(\n usernames\n .map((name) => [name, cache.get(name)] as [string, string])\n .filter((entry): entry is [string, string] => entry[1] !== undefined),\n );\n}\n\nexport async function lookupAddresses(\n addresses: string[],\n): Promise<Map<string, string>> {\n addresses = addresses.map(num.toHex);\n const uncachedAddresses = addresses.filter((addr) => !cache.has(addr));\n\n if (uncachedAddresses.length > 0) {\n const response = await lookup({\n addresses: uncachedAddresses,\n });\n\n response.results.forEach((result) => {\n cache.set(result.addresses[0], result.username); // TODO: handle multiple controller addresses\n });\n }\n\n return new Map(\n addresses\n .map((addr) => [addr, cache.get(addr)] as [string, string])\n .filter((entry): entry is [string, string] => entry[1] !== undefined),\n );\n}\n","// This file is auto-generated. DO NOT EDIT IT MANUALLY.\nimport { ControllerConfigs } from \"../\";\n\nexport const configs: ControllerConfigs = {\n \"blob-arena\": {\n origin: \"blobarena.xyz\",\n theme: {\n colors: {\n primary: \"#980f06\",\n },\n cover: \"https://static.cartridge.gg/presets/blob-arena/cover.png\",\n icon: \"https://static.cartridge.gg/presets/blob-arena/icon.png\",\n name: \"Blob Arena\",\n },\n },\n cartridge: {\n origin: \"*\",\n theme: {\n name: \"Cartridge\",\n icon: \"https://static.cartridge.gg/presets/cartridge/icon.svg\",\n cover: {\n light: \"https://static.cartridge.gg/presets/cartridge/cover-light.png\",\n dark: \"https://static.cartridge.gg/presets/cartridge/cover-dark.png\",\n },\n },\n },\n \"dark-shuffle\": {\n origin: \"darkshuffle.io\",\n theme: {\n colors: {\n primary: \"#F59100\",\n },\n cover: \"https://static.cartridge.gg/presets/dark-shuffle/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dark-shuffle/icon.svg\",\n name: \"Dark Shuffle\",\n },\n },\n \"dope-wars\": {\n origin: \"dopewars.game\",\n policies: {\n contracts: {\n \"0x051Fea4450Da9D6aeE758BDEbA88B2f665bCbf549D2C61421AA724E9AC0Ced8F\": {\n name: \"VRF Provider\",\n description: \"Provides verifiable random functions\",\n methods: [\n {\n name: \"Request Random\",\n description: \"Request a random number\",\n entrypoint: \"request_random\",\n },\n ],\n },\n \"0x0410466536b5ae074f7fea81e5533b8134a9fa08b3dd077dd9db08f64997d113\": {\n name: \"Paper Token\",\n description: \"Manages paper approvals\",\n methods: [\n {\n name: \"Approve\",\n description: \"Approve paper usage\",\n entrypoint: \"approve\",\n },\n ],\n },\n \"0x044a23BbfE03FFe90D3C23Fb6e5A8AD0341036C039363DfA6F3513278Aa51fCA\": {\n name: \"Game Contract\",\n description: \"Core game mechanics\",\n methods: [\n {\n name: \"Create Game\",\n description: \"Start a new game\",\n entrypoint: \"create_game\",\n },\n {\n name: \"Travel\",\n description: \"Travel to a new location\",\n entrypoint: \"travel\",\n },\n {\n name: \"Decide\",\n description: \"Make a game decision\",\n entrypoint: \"decide\",\n },\n {\n name: \"End Game\",\n description: \"End the current game\",\n entrypoint: \"end_game\",\n },\n ],\n },\n \"0x0412445e644070C69fEa16b964cC81Cd6dEBF6A4DBf683E2E9686a45ad088de8\": {\n name: \"Laundromat Contract\",\n description: \"Manages game scoring and laundering\",\n methods: [\n {\n name: \"Register Score\",\n description: \"Register a game score\",\n entrypoint: \"register_score\",\n },\n {\n name: \"Claim\",\n description: \"Claim rewards\",\n entrypoint: \"claim\",\n },\n {\n name: \"Launder\",\n description: \"Launder resources\",\n entrypoint: \"launder\",\n },\n ],\n },\n },\n },\n theme: {\n colors: {\n primary: \"#11ED83\",\n },\n cover: \"https://static.cartridge.gg/presets/dope-wars/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dope-wars/icon.png\",\n name: \"Dope Wars\",\n },\n },\n dragark: {\n origin: \"dragark.net\",\n theme: {\n colors: {\n primary: \"#71EB34\",\n },\n cover: \"https://static.cartridge.gg/presets/dragark/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dragark/icon.png\",\n name: \"Dragark\",\n },\n },\n eternum: {\n origin: [\"eternum.realms.world\", \"empire.realms.world\"],\n policies: {\n contracts: {\n \"0x4ed3a7c5f53c6e96186eaf1b670bd2e2a3699c08e070aedf4e5fc6ac246ddc1\": {\n name: \"Pillage\",\n description: \"Allows you to raid a structure and pillage resources\",\n methods: [\n {\n name: \"Battle Pillage\",\n description: \"Pillage a structure\",\n entrypoint: \"battle_pillage\",\n },\n ],\n },\n \"0x2620f65aa2fd72d705306ada1ee7410023a3df03da9291f1ccb744fabfebc0\": {\n name: \"Battle contract\",\n description: \"Required to engage in battles\",\n methods: [\n {\n name: \"Battle Start\",\n description: \"Start a battle\",\n entrypoint: \"battle_start\",\n },\n {\n name: \"Battle Force Start\",\n description: \"Force start a battle\",\n entrypoint: \"battle_force_start\",\n },\n {\n name: \"Battle Join\",\n description: \"Join a battle\",\n entrypoint: \"battle_join\",\n },\n {\n name: \"Battle Leave\",\n description: \"Leave a battle\",\n entrypoint: \"battle_leave\",\n },\n {\n name: \"Battle Claim\",\n description: \"Claim a structure after a battle\",\n entrypoint: \"battle_claim\",\n },\n {\n name: \"Battle Resolve\",\n description: \"Reopens the bank after battle\",\n entrypoint: \"battle_resolve\",\n },\n ],\n },\n \"0x6bf57710571fd159e71b1ed155bb0759027e416c88a06556f321c94c214e768\": {\n name: \"Leave battle contract\",\n description: \"Allows armies to leave a battle\",\n methods: [\n {\n name: \"Leave Battle\",\n description: \"Leave a battle\",\n entrypoint: \"leave_battle\",\n },\n {\n name: \"Leave Battle If Ended\",\n description: \"Leave a battle if its ended\",\n entrypoint: \"leave_battle_if_ended\",\n },\n ],\n },\n \"0x4b6a35c0c541467674ebb9640113a6d79c6f5a468796e9299b8e484a770032a\": {\n name: \"Building contract\",\n description: \"Allows to manage buildings\",\n methods: [\n {\n name: \"Create\",\n description: \"Create a building\",\n entrypoint: \"create\",\n },\n {\n name: \"Pause Production\",\n description: \"Pause the production of a building\",\n entrypoint: \"pause_production\",\n },\n {\n name: \"Resume Production\",\n description: \"Resume production of a building\",\n entrypoint: \"resume_production\",\n },\n {\n name: \"Destroy a building\",\n description: \"Destroy a building\",\n entrypoint: \"destroy\",\n },\n ],\n },\n \"0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4\": {\n name: \"Guild contract\",\n description: \"Allows guild utilities\",\n methods: [\n {\n name: \"Create Guild\",\n description: \"Creates a new guild\",\n entrypoint: \"create_guild\",\n },\n {\n name: \"Join Guild\",\n description: \"Join an existing guild\",\n entrypoint: \"join_guild\",\n },\n {\n name: \"Whitelist Player\",\n description: \"Add a player to the guild's whitelist\",\n entrypoint: \"whitelist_player\",\n },\n {\n name: \"Transfer Guild Ownership\",\n description: \"Transfer ownership of the guild to another player\",\n entrypoint: \"transfer_guild_ownership\",\n },\n {\n name: \"Remove Guild Member\",\n description: \"Remove a member from the guild\",\n entrypoint: \"remove_guild_member\",\n },\n {\n name: \"Remove Player From Whitelist\",\n description: \"Remove a player from the guild's whitelist\",\n entrypoint: \"remove_player_from_whitelist\",\n },\n ],\n },\n \"0x2fcc3c1691387321c2f4d6310eda7a14365bd274c1a37ed3948d2e93a56f821\": {\n name: \"Hyperstructure contract\",\n description: \"Handles the creation and management of hyperstructures\",\n methods: [\n {\n name: \"Get Points\",\n description: \"Gets your total number of points\",\n entrypoint: \"get_points\",\n },\n {\n name: \"Create\",\n description: \"Create a new hyperstructure\",\n entrypoint: \"create\",\n },\n {\n name: \"Contribute To Construction\",\n description:\n \"Contribute resources to hyperstructure construction\",\n entrypoint: \"contribute_to_construction\",\n },\n {\n name: \"Set Co Owners\",\n description: \"Set additional owners for the hyperstructure\",\n entrypoint: \"set_co_owners\",\n },\n {\n name: \"End Game\",\n description:\n \"Terminates the current game season once you've reached enough points\",\n entrypoint: \"end_game\",\n },\n {\n name: \"Set Access\",\n description:\n \"Configure access permissions for contributions to the hyperstructure\",\n entrypoint: \"set_access\",\n },\n ],\n },\n \"0xa052c5ca082356bcc8457f0f805eaf18f97d0fdddde3f90f5b238923859ed4\": {\n name: \"AMM liquidity contract\",\n description: \"Manages liquidity for the Automated Market Maker\",\n methods: [\n {\n name: \"Add\",\n description: \"Add liquidity to the pool\",\n entrypoint: \"add\",\n },\n {\n name: \"Remove\",\n description: \"Remove liquidity from the pool\",\n entrypoint: \"remove\",\n },\n ],\n },\n \"0x4a212c52c4035bc9bd170125216604f406dcd75b41be11d3b4d89047366d84d\": {\n name: \"Exploration contract\",\n description: \"Allows you to move to unexplored hexes on the map\",\n methods: [\n {\n name: \"Explore\",\n description: \"Explore an uncharted hex on the game map\",\n entrypoint: \"explore\",\n },\n ],\n },\n \"0x7e3bae0e253a0131063b63ee4d7b27b50329c617ae88b82d529a70f1a11c63\": {\n name: \"Naming contract\",\n description: \"Manages entity naming in the game\",\n methods: [\n {\n name: \"Set Entity Name\",\n description: \"Assign a custom name to a game entity\",\n entrypoint: \"set_entity_name\",\n },\n {\n name: \"Set Address Name\",\n description: \"Assign a custom name to a user's address\",\n entrypoint: \"set_address_name\",\n },\n ],\n },\n \"0x1b480f620ea35431ab43dba634795b14f547ef3e77370db6f0a31f2fdc21d86\": {\n name: \"Realms contract\",\n description: \"Manages realm-related actions\",\n methods: [\n {\n name: \"Create a realm\",\n description: \"Create a new realm\",\n entrypoint: \"create\",\n },\n {\n name: \"Upgrade Level\",\n description: \"Upgrade the level of a realm\",\n entrypoint: \"upgrade_level\",\n },\n {\n name: \"Quest Claim\",\n description: \"Claim rewards from completed quests\",\n entrypoint: \"quest_claim\",\n },\n ],\n },\n \"0x691a60b709ca5c1c5ff86824831f84deb26f0f5d07d70c0f807eab48110d2f6\": {\n name: \"Resource bridge contract\",\n description: \"Manages bridge transfers between L2 and Eternum\",\n methods: [\n {\n name: \"Deposit Initial\",\n description: \"Initial deposit of resources for bridge transfer\",\n entrypoint: \"deposit_initial\",\n },\n {\n name: \"Deposit\",\n description: \"Deposit additional resources for bridge transfer\",\n entrypoint: \"deposit\",\n },\n {\n name: \"Start Withdraw\",\n description: \"Initiate a withdrawal process\",\n entrypoint: \"start_withdraw\",\n },\n {\n name: \"Finish Withdraw\",\n description: \"Finalize a withdrawal process\",\n entrypoint: \"finish_withdraw\",\n },\n ],\n },\n \"0x42c0303a2119a9e20daa60e83c48221cdf1bb2a4c009bab031d1cd3555a127e\": {\n name: \"Resource contract\",\n description: \"In-game resource management\",\n methods: [\n {\n name: \"Approve\",\n description: \"Approve resource transfer\",\n entrypoint: \"approve\",\n },\n {\n name: \"Send\",\n description: \"Send resources to another entity\",\n entrypoint: \"send\",\n },\n {\n name: \"Pickup\",\n description: \"Collect available resources after approval\",\n entrypoint: \"pickup\",\n },\n ],\n },\n \"0x4f92a1d00d3aec8cece60fc2d0fc236fe1d95c54ff0ceb2f393fbc7e0863d8e\": {\n name: \"AMM swap contract\",\n description: \"Handles token swaps in the Automated Market Maker\",\n methods: [\n {\n name: \"Buy\",\n description: \"Purchase tokens from the liquidity pool\",\n entrypoint: \"buy\",\n },\n {\n name: \"Sell\",\n description: \"Sell tokens to the liquidity pool\",\n entrypoint: \"sell\",\n },\n ],\n },\n \"0x7e2b1334398fafbe640f34bacae99b649d633417960ee397b6a8fb117fec819\": {\n name: \"Market contract\",\n description: \"Manages trading orders in the in-game market\",\n methods: [\n {\n name: \"Create Order\",\n description: \"Create a new trading order\",\n entrypoint: \"create_order\",\n },\n {\n name: \"Accept Order\",\n description: \"Accept a trading order\",\n entrypoint: \"accept_order\",\n },\n {\n name: \"Accept Partial Order\",\n description: \"Accept a partial trading order\",\n entrypoint: \"accept_partial_order\",\n },\n {\n name: \"Cancel Order\",\n description: \"Cancel a trading order\",\n entrypoint: \"cancel_order\",\n },\n ],\n },\n \"0x4069c2be57f08fef9f31afc85a5b4c03c208ebdb278b9d853606caa7a9cbee6\": {\n name: \"Map travel contract\",\n description: \"Manages player movement across the game map\",\n methods: [\n {\n name: \"Travel Hex\",\n description: \"Move to a specific hex on the map\",\n entrypoint: \"travel_hex\",\n },\n ],\n },\n \"0x26be0ed574aa9ee6f73b53b12f0a199ddbf4ac697470316cdb3d9d1f5680cab\": {\n name: \"Army contract\",\n description: \"Manages army-related actions\",\n methods: [\n {\n name: \"Army Create\",\n description: \"Create a new army\",\n entrypoint: \"army_create\",\n },\n {\n name: \"Army Delete\",\n description: \"Delete an existing army\",\n entrypoint: \"army_delete\",\n },\n {\n name: \"Army Buy Troops\",\n description: \"Buy troops for an army\",\n entrypoint: \"army_buy_troops\",\n },\n {\n name: \"Army Merge Troops\",\n description: \"Merge troops from multiple armies\",\n entrypoint: \"army_merge_troops\",\n },\n ],\n },\n \"0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f\": {\n name: \"VRF Provider\",\n description:\n \"Verifiable Random Function contract, allows randomness in the game\",\n methods: [\n {\n name: \"Request Random\",\n description:\n \"Allows requesting random numbers from the VRF provider\",\n entrypoint: \"request_random\",\n },\n ],\n },\n \"0x057675b9c0bd62b096a2e15502a37b290fa766ead21c33eda42993e48a714b80\": {\n name: \"Season pass ERC20 contract\",\n description: \"Manages the season passes\",\n methods: [\n {\n name: \"Approve for all\",\n description: \"Approves transfer of season pass\",\n entrypoint: \"set_approval_for_all\",\n },\n ],\n },\n \"0x4b5e65a9617c7ba3c7ea64324ff4338a400adb1a3cfe903b3f8b647cbb59fb7\": {\n name: \"Season Systems\",\n description: \"Register and claim\",\n methods: [\n {\n name: \"Register\",\n description: \"Registers to leaderboard\",\n entrypoint: \"register_to_leaderboard\",\n },\n {\n name: \"Claim\",\n description: \"Claim\",\n entrypoint: \"claim_leaderboard_rewards\",\n },\n ],\n },\n },\n messages: [\n {\n types: {\n StarknetDomain: [\n {\n name: \"name\",\n type: \"shortstring\",\n },\n {\n name: \"version\",\n type: \"shortstring\",\n },\n {\n name: \"chainId\",\n type: \"shortstring\",\n },\n {\n name: \"revision\",\n type: \"shortstring\",\n },\n ],\n \"s0_eternum-Message\": [\n {\n name: \"identity\",\n type: \"ContractAddress\",\n },\n {\n name: \"channel\",\n type: \"shortstring\",\n },\n {\n name: \"content\",\n type: \"string\",\n },\n {\n name: \"timestamp\",\n type: \"felt\",\n },\n {\n name: \"salt\",\n type: \"felt\",\n },\n ],\n },\n primaryType: \"s0_eternum-Message\",\n domain: {\n name: \"Eternum\",\n version: \"1\",\n chainId: \"SN_MAIN\",\n revision: \"1\",\n },\n },\n ],\n },\n theme: {\n name: \"Eternum\",\n icon: \"https://static.cartridge.gg/presets/eternum/icon.svg\",\n cover: \"https://static.cartridge.gg/presets/eternum/cover.png\",\n colors: {\n primary: \"#dc8b07\",\n },\n },\n },\n flippyflop: {\n origin: \"flippyflop.gg\",\n theme: {\n colors: {\n primary: \"#F38332\",\n },\n cover: \"https://static.cartridge.gg/presets/flippyflop/cover.png\",\n icon: \"https://static.cartridge.gg/presets/flippyflop/icon.png\",\n name: \"FlippyFlop\",\n },\n },\n \"force-prime\": {\n origin: \"forceprime.io\",\n theme: {\n colors: {\n primary: \"#E1CC89\",\n },\n cover: \"https://static.cartridge.gg/presets/force-prime/cover.png\",\n icon: \"https://static.cartridge.gg/presets/force-prime/icon.png\",\n name: \"Force Prime\",\n },\n },\n \"jokers-of-neon\": {\n origin: \"jokersofneon.com\",\n theme: {\n colors: {\n primary: \"#A144B2\",\n },\n cover: \"https://static.cartridge.gg/presets/jokers-of-neon/cover.png\",\n icon: \"https://static.cartridge.gg/presets/jokers-of-neon/icon.png\",\n name: \"Jokers of Neon\",\n },\n },\n \"loot-survivor\": {\n origin: \"lootsurvivor.io\",\n policies: {\n contracts: {\n \"0x0305f26ad19e0a10715d9f3137573d3a543de7b707967cd85d11234d6ec0fb7e\": {\n methods: [\n {\n entrypoint: \"attack\",\n },\n {\n entrypoint: \"drop\",\n },\n {\n entrypoint: \"equip\",\n },\n {\n entrypoint: \"explore\",\n },\n {\n entrypoint: \"flee\",\n },\n {\n entrypoint: \"new_game\",\n },\n {\n entrypoint: \"transfer_from\",\n },\n {\n entrypoint: \"upgrade\",\n },\n ],\n },\n \"0x3347382d530ff6acb9283ac1d78471187aae8a4690e9316bb4e3c3365ff7a86\": {\n methods: [\n {\n entrypoint: \"enter_tournament\",\n },\n {\n entrypoint: \"start_tournament\",\n },\n ],\n },\n },\n },\n theme: {\n colors: {\n primary: \"#33FF33\",\n },\n cover: \"https://static.cartridge.gg/presets/loot-survivor/cover.png\",\n icon: \"https://static.cartridge.gg/presets/loot-survivor/icon.png\",\n name: \"Loot Survivor\",\n },\n },\n paved: {\n origin: \"paved.gg\",\n theme: {\n colors: {\n primary: \"#B0CAF8\",\n },\n cover: \"https://static.cartridge.gg/presets/paved/cover.png\",\n icon: \"https://static.cartridge.gg/presets/paved/icon.svg\",\n name: \"Paved\",\n },\n },\n pistols: {\n origin: \"pistols.underware.gg\",\n theme: {\n colors: {\n primary: \"#EF9758\",\n },\n cover: \"https://static.cartridge.gg/presets/pistols/cover.png\",\n icon: \"https://static.cartridge.gg/presets/pistols/icon.png\",\n name: \"Pistols at Ten Blocks\",\n },\n },\n pixelaw: {\n origin: \"dojo.pixelaw.xyz\",\n theme: {\n colors: {\n primary: \"#7C00B1\",\n primaryForeground: \"white\",\n },\n cover: \"https://static.cartridge.gg/presets/pixelaw/cover.png\",\n icon: \"https://static.cartridge.gg/presets/pixelaw/icon.svg\",\n name: \"Pixelaw\",\n },\n },\n \"realm-of-ra\": {\n origin: \"mancala.realmofra.com\",\n theme: {\n colors: {\n primary: \"#de9534\",\n },\n cover: \"https://static.cartridge.gg/presets/realm-of-ra/cover.png\",\n icon: \"https://static.cartridge.gg/presets/realm-of-ra/icon.png\",\n name: \"Realm of Ra\",\n },\n },\n \"savage-summit\": {\n origin: \"savagesummit.io\",\n theme: {\n colors: {\n primary: \"#fbf7da\",\n },\n cover: \"https://static.cartridge.gg/presets/savage-summit/cover.png\",\n icon: \"https://static.cartridge.gg/presets/savage-summit/icon.png\",\n name: \"Savage Summit\",\n },\n },\n \"tale-weaver\": {\n origin: \"\",\n theme: {\n colors: {\n primary: \"#fce377\",\n },\n cover: \"https://static.cartridge.gg/presets/tale-weaver/cover.png\",\n icon: \"https://static.cartridge.gg/presets/tale-weaver/icon.png\",\n name: \"Tale Weaver\",\n },\n },\n zkastle: {\n origin: \"zkastle.vercel.app\",\n theme: {\n colors: {\n primary: \"#E50D2C\",\n },\n cover: \"https://static.cartridge.gg/presets/zkastle/cover.png\",\n icon: \"https://static.cartridge.gg/presets/zkastle/icon.svg\",\n name: \"zKastle\",\n },\n },\n zktt: {\n origin: \"zktable.top\",\n theme: {\n colors: {\n primary: \"#FFFFFF\",\n },\n cover: \"https://static.cartridge.gg/presets/zktt/cover.png\",\n icon: \"https://static.cartridge.gg/presets/zktt/icon.png\",\n name: \"zKTT\",\n },\n },\n zkube: {\n origin: \"app.zkube.xyz\",\n theme: {\n colors: {\n primary: \"#5bc3e6\",\n },\n cover: \"https://static.cartridge.gg/presets/zkube/cover.png\",\n icon: \"https://static.cartridge.gg/presets/zkube/icon.png\",\n name: \"zKube\",\n },\n },\n};\n","// This file is auto-generated. DO NOT EDIT IT MANUALLY.\nimport { EkuboERC20Metadata } from \"../\";\n\nexport const metadata: EkuboERC20Metadata[] = [\n {\n name: \"Wrapped BTC\",\n symbol: \"WBTC\",\n decimals: 8,\n l2_token_address:\n \"0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac\",\n sort_order: 0,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/7dcb2db2-a7a7-44af-660b-8262e057a100/logo\",\n },\n {\n name: \"USD Coin\",\n symbol: \"USDC\",\n decimals: 6,\n l2_token_address:\n \"0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8\",\n sort_order: 5,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e5aaa970-a998-47e8-bd43-4a3b56b87200/logo\",\n },\n {\n name: \"Tether USD\",\n symbol: \"USDT\",\n decimals: 6,\n l2_token_address:\n \"0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8\",\n sort_order: 4,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/c8a721d1-07c3-46e4-ab4e-523977c30b00/logo\",\n },\n {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18,\n l2_token_address:\n \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\",\n sort_order: 3,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e07829b7-0382-4e03-7ecd-a478c5aa9f00/logo\",\n },\n {\n name: \"Dai Stablecoin\",\n symbol: \"DAI\",\n decimals: 18,\n l2_token_address:\n \"0x05574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad\",\n sort_order: 4,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/919e761b-56f7-4f53-32aa-5e066f7f6200/logo\",\n },\n {\n name: \"Wrapped liquid staked Ether 2.0\",\n symbol: \"wstETH\",\n decimals: 18,\n l2_token_address:\n \"0x042b8f0484674ca266ac5d08e4ac6a3fe65bd3129795def2dca5c34ecc5f96d2\",\n sort_order: 1,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/dbbcbdea-1a92-437d-3701-4a5ee129d000/logo\",\n },\n {\n name: \"Rocket Pool ETH\",\n symbol: \"rETH\",\n decimals: 18,\n l2_token_address:\n \"0x0319111a5037cbec2b3e638cc34a3474e2d2608299f3e62866e9cc683208c610\",\n sort_order: 1,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/c9f2d6fe-fbc6-4384-0990-923dfcb7a200/logo\",\n },\n {\n name: \"Paper\",\n symbol: \"PAPER\",\n decimals: 18,\n l2_token_address:\n \"0x0410466536b5ae074f7fea81e5533b8134a9fa08b3dd077dd9db08f64997d113\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/811f019a-0461-4cff-6c1e-442102863f00/logo\",\n },\n {\n name: \"Uniswap\",\n symbol: \"UNI\",\n decimals: 18,\n l2_token_address:\n \"0x049210ffc442172463f3177147c1aeaa36c51d152c1b0630f2364c300d4f48ee\",\n sort_order: 1,\n total_supply: 1000000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/361b018e-bd53-4019-27c8-7cf8d9031b00/logo\",\n },\n {\n name: \"Starknet\",\n symbol: \"STRK\",\n decimals: 18,\n l2_token_address:\n \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\",\n sort_order: 2,\n total_supply: 10000000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/1b126320-367c-48ed-cf5a-ba7580e49600/logo\",\n },\n {\n name: \"Ekubo Protocol\",\n symbol: \"EKUBO\",\n decimals: 18,\n l2_token_address:\n \"0x075afe6402ad5a5c20dd25e10ec3b3986acaa647b77e4ae24b0cbc9a54a27a87\",\n sort_order: 1,\n total_supply: 10000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/634d9c36-2f0b-4781-93e6-72d701b5af00/logo\",\n },\n {\n name: \"Nostra\",\n symbol: \"NSTR\",\n decimals: 18,\n l2_token_address:\n \"0x00c530f2c0aa4c16a0806365b0898499fba372e5df7a7172dc6fe9ba777e8007\",\n sort_order: 1,\n total_supply: 100000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/a45c2224-17a7-4269-ea7e-3924e9755800/logo\",\n },\n {\n name: \"Carmine\",\n symbol: \"CRM\",\n decimals: 18,\n l2_token_address:\n \"0x51c4b1fe3bf6774b87ad0b15ef5d1472759076e42944fff9b9f641ff13e5bbe\",\n sort_order: 1,\n total_supply: 100000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6ab817f1-8075-4a94-6e14-f112f1f89d00/logo\",\n },\n {\n name: \"Cash\",\n symbol: \"CASH\",\n decimals: 18,\n l2_token_address:\n \"0x498edfaf50ca5855666a700c25dd629d577eb9afccdf3b5977aec79aee55ada\",\n sort_order: 3,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6bd6d156-f509-4b51-5dfc-3ee566143600/logo\",\n },\n {\n name: \"Lords\",\n symbol: \"LORDS\",\n decimals: 18,\n l2_token_address:\n \"0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49\",\n sort_order: 1,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/coin.png\",\n },\n {\n name: \"Ancien Fragments\",\n symbol: \"ANCIENT_FRAGMENT\",\n decimals: 18,\n l2_token_address:\n \"0x0695b08ecdfdd828c2e6267da62f59e6d7543e690ef56a484df25c8566b332a5\",\n sort_order: 2,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/29.png\",\n },\n {\n name: \"Knight\",\n symbol: \"KNIGHT\",\n decimals: 18,\n l2_token_address:\n \"0x00ac965f9e67164723c16735a9da8dbc9eb8e43b1bd0323591e87c056badf606\",\n sort_order: 3,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/icons/250.png\",\n },\n {\n name: \"Crossbowman\",\n symbol: \"CROSSBOWMAN\",\n decimals: 18,\n l2_token_address:\n \"0x067e4ac00a241be06ba6afc11fa2715ec7da0c42c05a67ef6ecfcfeda725aaa8\",\n sort_order: 4,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/icons/251.png\",\n },\n {\n name: \"Paladin\",\n symbol: \"PALADIN\",\n decimals: 18,\n l2_token_address:\n \"0x03bc86299bee061c7c8d7546ccb62b9daf9bffc653b1508facb722c6593874bc\",\n sort_order: 5,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/icons/252.png\",\n },\n {\n name: \"Donkey\",\n symbol: \"DONKEY\",\n decimals: 18,\n l2_token_address:\n \"0x0264be95a4a2ace20add68cb321acdccd2f9f8440ee1c7abd85da44ddab01085\",\n sort_order: 6,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/buildings/thumb/trade.png\",\n },\n {\n name: \"Wheat\",\n symbol: \"WHEAT\",\n decimals: 18,\n l2_token_address:\n \"0x057a3f1ee475e072ce3be41785c0e889b7295d7a0dcc22b992c5b9408dbeb280\",\n sort_order: 7,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/254.png\",\n },\n {\n name: \"Fish\",\n symbol: \"FISH\",\n decimals: 18,\n l2_token_address:\n \"0x027719173cfe10f1aa38d2aaed0a075b6077290f1e817aa3485d2b828394f4d9\",\n sort_order: 8,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/255.png\",\n },\n {\n name: \"Wood\",\n symbol: \"WOOD\",\n decimals: 18,\n l2_token_address:\n \"0x040d8907cec0f7ae9c364dfb12485a1314d84c129bf1898d2f3d4b7fcc7d44f4\",\n sort_order: 9,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/1.png\",\n },\n {\n name: \"Stone\",\n symbol: \"STONE\",\n decimals: 18,\n l2_token_address:\n \"0x0439a1c010e3e1bb2d43d43411000893c0042bd88f6c701611a0ea914d426da4\",\n sort_order: 10,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/2.png\",\n },\n {\n name: \"Coal\",\n symbol: \"COAL\",\n decimals: 18,\n l2_token_address:\n \"0x00ce635e3f241b0ae78c46a929d84a9101910188f9c4024eaa7559556503c31a\",\n sort_order: 11,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/3.png\",\n },\n {\n name: \"Copper\",\n symbol: \"COPPER\",\n decimals: 18,\n l2_token_address:\n \"0x066ed5c928ee027a9419ace1cbea8389885161db5572a7c5c4fef2310e9bf494\",\n sort_order: 12,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/4.png\",\n },\n {\n name: \"Obsidian\",\n symbol: \"OBSIDIAN\",\n decimals: 18,\n l2_token_address:\n \"0x03b6448d09dcd023507376402686261f5d6739455fa02f804907b066e488da66\",\n sort_order: 13,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/5.png\",\n },\n {\n name: \"Silver\",\n symbol: \"SILVER\",\n decimals: 18,\n l2_token_address:\n \"0x06fe21d2d4a8a05bdb70f09c9250af9870020d5dcc35f410b4a39d6605c3e353\",\n sort_order: 14,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/6.png\",\n },\n {\n name: \"Ironwood\",\n symbol: \"IRONWOOD\",\n decimals: 18,\n l2_token_address:\n \"0x01720cf6318bff45e62acc588680ae3cd4d5f8465b1d52cb710533c9299b031a\",\n sort_order: 15,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/7.png\",\n },\n {\n name: \"Cold Iron\",\n symbol: \"COLDIRON\",\n decimals: 18,\n l2_token_address:\n \"0x0555d713e59d4ff96b7960447e9bc9e79bfdeab5b0eea74e3df81bce61cfbc77\",\n sort_order: 16,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/8.png\",\n },\n {\n name: \"Gold\",\n symbol: \"GOLD\",\n decimals: 18,\n l2_token_address:\n \"0x000dff9dca192609c4e86ab3be22c7ec1e968876c992d21986f3c542be97fa2f\",\n sort_order: 17,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/9.png\",\n },\n {\n name: \"Hartwood\",\n symbol: \"HARTWOOD\",\n decimals: 18,\n l2_token_address:\n \"0x05620aa7170cd66dbcbc37d03087bfe4633ffef91d3e4d97b501de906004f79b\",\n sort_order: 18,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/10.png\",\n },\n {\n name: \"Diamonds\",\n symbol: \"DIAMONDS\",\n decimals: 18,\n l2_token_address:\n \"0x00e03ea8ae385f64754820af5c01c36abf1b8130dd6797d3fd9d430e4114e876\",\n sort_order: 19,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/11.png\",\n },\n {\n name: \"Sapphire\",\n symbol: \"SAPPHIRE\",\n decimals: 18,\n l2_token_address:\n \"0x02f8dd022568af8f9f718aa37707a9b858529db56910633a160456838b6cbcbc\",\n sort_order: 20,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/12.png\",\n },\n {\n name: \"Ruby\",\n symbol: \"RUBY\",\n decimals: 18,\n l2_token_address:\n \"0x03d9b66720959d0e7687b898292c10e62e78626f2dba5e1909961a2ce3f86612\",\n sort_order: 21,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/13.png\",\n },\n {\n name: \"Deep Crystal\",\n symbol: \"DEEPCRYSTAL\",\n decimals: 18,\n l2_token_address:\n \"0x01d655ac834d38df7921074fc1588411e202b1af83307cbd996983aff52db3a8\",\n sort_order: 22,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/14.png\",\n },\n {\n name: \"Ignium\",\n symbol: \"IGNIUM\",\n decimals: 18,\n l2_token_address:\n \"0x0625c1f789b03ebebc7a9322366f38ebad1f693b84b2abd8cb8f5b2748b0cdd5\",\n sort_order: 23,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/15.png\",\n },\n {\n name: \"Ethereal Silica\",\n symbol: \"ETHEREALSILICA\",\n decimals: 18,\n l2_token_address:\n \"0x068b6e23cbbd58a644700f55e96c83580921e9f521b6e5175396b53ba7910e7d\",\n sort_order: 24,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/16.png\",\n },\n {\n name: \"True Ice\",\n symbol: \"TRUEICE\",\n decimals: 18,\n l2_token_address:\n \"0x04485f5a6e16562e1c761cd348e63256d00389e3ddf4f5d98afe7ab44c57c481\",\n sort_order: 25,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/17.png\",\n },\n {\n name: \"Twilight Quartz\",\n symbol: \"TWILIGHTQUARTZ\",\n decimals: 18,\n l2_token_address:\n \"0x035e24c02409c3cfe8d5646399a62c4d102bb782938d5f5180e92c9c62d3faf7\",\n sort_order: 26,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/18.png\",\n },\n {\n name: \"Alchemical Silver\",\n symbol: \"ALCHEMICALSILVER\",\n decimals: 18,\n l2_token_address:\n \"0x03956a5301e99522038a2e7dcb9c2a89bf087ffa79310ee0a508b5538efd8ddd\",\n sort_order: 27,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/19.png\",\n },\n {\n name: \"Adamantine\",\n symbol: \"ADAMANTINE\",\n decimals: 18,\n l2_token_address:\n \"0x0367f838f85a2f5e1580d6f011e4476f581083314cff8721ba3dda9706076eed\",\n sort_order: 28,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/20.png\",\n },\n {\n name: \"Mithral\",\n symbol: \"MITHRAL\",\n decimals: 18,\n l2_token_address:\n \"0x0067ba235c569c23877064b2ac6ebd4d79f32d3c00f5fab8e28a3b5700b957f6\",\n sort_order: 29,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/21.png\",\n },\n {\n name: \"Dragon Hide\",\n symbol: \"DRAGONHIDE\",\n decimals: 18,\n l2_token_address:\n \"0x03bf856515bece3c93f5061b7941b8645f817a0acab93c758b8c7b4bc0afa3c6\",\n sort_order: 30,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/22.png\",\n },\n {\n name: \"Demon Hide\",\n symbol: \"DEMONHIDE\",\n decimals: 18,\n l2_token_address:\n \"0x03b847fbef9d344ba968edc945100e6ab0258a4b1b91f8665f85a3d814c3e4d4\",\n sort_order: 31,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/22.png\",\n },\n];\n","import { configs } from \"./generated/controller-configs\";\nimport { TypedData } from \"@starknet-io/types-js\";\nimport { metadata } from \"./generated/erc20-metadata\";\n\nexport const controllerConfigs = configs;\nexport const erc20Metadata = metadata;\nexport const defaultTheme = configs[\"cartridge\"].theme!;\n\nexport type EkuboERC20Metadata = {\n name: string;\n symbol: string;\n decimals: number;\n l2_token_address: string;\n sort_order: number;\n total_supply: number | null;\n logo_url?: string;\n hidden?: boolean;\n disabled?: boolean;\n};\n\nexport type Policy = CallPolicy | TypedDataPolicy;\n\nexport type CallPolicy = {\n target: string;\n method: string;\n description?: string;\n};\n\nexport type TypedDataPolicy = Omit<TypedData, \"message\">;\n\nexport type Policies = Policy[] | SessionPolicies;\n\nexport type SessionPolicies = {\n /** The key must be the contract address */\n contracts?: ContractPolicies;\n messages?: SignMessagePolicy[];\n};\n\nexport type ContractPolicies = Record<string, ContractPolicy>;\n\nexport type ContractPolicy = {\n name?: string;\n description?: string;\n methods: Method[];\n};\n\nexport type Method = {\n name?: string;\n description?: string;\n entrypoint: string;\n};\n\nexport type SignMessagePolicy = TypedDataPolicy & {\n name?: string;\n description?: string;\n};\n\nexport type ControllerConfig = {\n origin: string | string[];\n policies?: SessionPolicies;\n theme?: ControllerTheme;\n};\n\nexport type ControllerConfigs = Record<string, ControllerConfig>;\n\nexport type ColorMode = \"light\" | \"dark\";\n\nexport type ControllerTheme = {\n name: string;\n icon: string;\n cover: ThemeValue<string>;\n colors?: ControllerColors;\n};\n\nexport type ControllerColors = {\n primary?: ControllerColor;\n primaryForeground?: ControllerColor;\n};\n\nexport type ControllerColor = ThemeValue<string>;\n\nexport type ThemeValue<T> = T | { dark: T; light: T };\n"]}
1
+ {"version":3,"sources":["../src/types.ts","../src/utils.ts","../src/account.ts","../src/iframe/base.ts","../src/constants.ts","../src/iframe/keychain.ts","../src/iframe/profile.ts","../src/errors.ts","../package.json","../src/icon.ts","../src/mutex.ts","../src/provider.ts","../src/controller.ts","../src/lookup.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+aa3a218/node_modules/@cartridge/presets/src/generated/controller-configs.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+aa3a218/node_modules/@cartridge/presets/src/generated/erc20-metadata.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+aa3a218/node_modules/@cartridge/presets/src/index.ts"],"names":["ResponseCodes","typedData","existingController","params","call"],"mappings":"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","file":"index.js","sourcesContent":["import {\n constants,\n BigNumberish,\n Call,\n Abi,\n InvocationsDetails,\n} from \"starknet\";\nimport {\n AddInvokeTransactionResult,\n ChainId,\n Signature,\n TypedData,\n} from \"@starknet-io/types-js\";\nimport { KeychainIFrame, ProfileIFrame } from \"./iframe\";\nimport { Policy, SessionPolicies } from \"@cartridge/presets\";\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 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 profile?: ProfileIFrame;\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\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 ): 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 paymaster?: any,\n error?: ControllerError,\n ): Promise<ExecuteReply | ConnectError>;\n signMessage(\n typedData: TypedData,\n account: string,\n async?: boolean,\n ): Promise<Signature | ConnectError>;\n logout(): Promise<void>;\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}\n\nexport interface Profile {\n navigate(path: string): 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 &\n KeychainOptions &\n ProfileOptions;\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};\n\nexport type ProfileOptions = IFrameOptions & {\n /** The URL of profile. Mainly for internal development purpose */\n profileUrl?: string;\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 | \"activity\";\n\nexport type Tokens = {\n erc20?: string[];\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 wasm from \"@cartridge/account-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): wasm.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 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","import {\n InvokeFunctionResponse,\n TypedData,\n WalletAccount,\n Call,\n AllowArray,\n} from \"starknet\";\n\nimport { SPEC } from \"@starknet-io/types-js\";\n\nimport {\n ConnectError,\n Keychain,\n KeychainOptions,\n Modal,\n ResponseCodes,\n} from \"./types\";\nimport { AsyncMethodReturns } from \"@cartridge/penpal\";\nimport BaseProvider from \"./provider\";\nimport { toArray } from \"./utils\";\n\nclass ControllerAccount extends WalletAccount {\n address: string;\n private keychain: AsyncMethodReturns<Keychain>;\n private modal: Modal;\n private options?: KeychainOptions;\n\n constructor(\n provider: BaseProvider,\n rpcUrl: string,\n address: string,\n keychain: AsyncMethodReturns<Keychain>,\n options: KeychainOptions,\n modal: Modal,\n ) {\n super({ nodeUrl: rpcUrl }, provider);\n\n this.address = address;\n this.keychain = keychain;\n this.options = options;\n this.modal = modal;\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: AllowArray<Call>): Promise<InvokeFunctionResponse> {\n calls = toArray(calls);\n\n return new Promise(async (resolve, reject) => {\n const sessionExecute = await this.keychain.execute(\n calls,\n undefined,\n undefined,\n false,\n );\n\n // Session call succeeded\n if (sessionExecute.code === ResponseCodes.SUCCESS) {\n resolve(sessionExecute as InvokeFunctionResponse);\n return;\n }\n\n // Propagates session txn error back to caller\n if (this.options?.propagateSessionErrors) {\n reject((sessionExecute as ConnectError).error);\n return;\n }\n\n // Session call or Paymaster flow failed.\n // Session not avaialble, manual flow fallback\n this.modal.open();\n const manualExecute = await this.keychain.execute(\n calls,\n undefined,\n undefined,\n true,\n (sessionExecute as ConnectError).error,\n );\n\n // Manual call succeeded\n if (manualExecute.code === ResponseCodes.SUCCESS) {\n resolve(manualExecute as InvokeFunctionResponse);\n this.modal.close();\n return;\n }\n\n reject((manualExecute as ConnectError).error);\n return;\n });\n }\n\n /**\n * Sign an JSON object for off-chain usage with the starknet private key and return the signature\n * This adds a message prefix so it cant be interchanged with transactions\n *\n * @param json - JSON object to be signed\n * @returns the signature of the JSON object\n * @throws {Error} if the JSON object is not a valid JSON\n */\n async signMessage(typedData: TypedData): Promise<SPEC.SIGNATURE> {\n return new Promise(async (resolve, reject) => {\n const sessionSign = await this.keychain.signMessage(typedData, \"\", true);\n\n // Session sign succeeded\n if (!(\"code\" in sessionSign)) {\n resolve(sessionSign as SPEC.SIGNATURE);\n return;\n }\n\n // Session not avaialble, manual flow fallback\n this.modal.open();\n const manualSign = await this.keychain.signMessage(typedData, \"\", false);\n\n if (!(\"code\" in manualSign)) {\n resolve(manualSign as SPEC.SIGNATURE);\n } else {\n reject((manualSign as ConnectError).error);\n }\n this.modal.close();\n });\n }\n}\n\nexport default ControllerAccount;\n","import { AsyncMethodReturns, connectToChild } from \"@cartridge/penpal\";\nimport { ControllerOptions, Modal } from \"../types\";\n\nexport type IFrameOptions<CallSender> = Omit<\n ConstructorParameters<typeof IFrame>[0],\n \"id\" | \"url\" | \"onConnect\"\n> & {\n url?: string;\n onConnect: (child: AsyncMethodReturns<CallSender>) => void;\n};\n\nexport class IFrame<CallSender extends {}> implements Modal {\n url?: URL;\n private iframe?: HTMLIFrameElement;\n private container?: HTMLDivElement;\n private onClose?: () => void;\n\n constructor({\n id,\n url,\n preset,\n onClose,\n onConnect,\n methods = {},\n }: Pick<ControllerOptions, \"preset\"> & {\n id: string;\n url: URL;\n onClose?: () => void;\n onConnect: (child: AsyncMethodReturns<CallSender>) => void;\n methods?: { [key: string]: (...args: any[]) => void };\n }) {\n if (typeof document === \"undefined\") {\n return;\n }\n\n if (preset) {\n url.searchParams.set(\"preset\", preset);\n }\n\n this.url = url;\n\n const iframe = document.createElement(\"iframe\");\n iframe.src = url.toString();\n iframe.id = id;\n iframe.style.border = \"none\";\n iframe.sandbox.add(\"allow-forms\");\n iframe.sandbox.add(\"allow-popups\");\n iframe.sandbox.add(\"allow-scripts\");\n iframe.sandbox.add(\"allow-same-origin\");\n iframe.allow =\n \"publickey-credentials-create *; publickey-credentials-get *; clipboard-write\";\n if (!!document.hasStorageAccess) {\n iframe.sandbox.add(\"allow-storage-access-by-user-activation\");\n }\n\n const container = document.createElement(\"div\");\n container.id = \"controller\";\n container.style.position = \"fixed\";\n container.style.height = \"100%\";\n container.style.width = \"100%\";\n container.style.top = \"0\";\n container.style.left = \"0\";\n container.style.zIndex = \"10000\";\n container.style.backgroundColor = \"rgba(0,0,0,0.6)\";\n container.style.display = \"flex\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.visibility = \"hidden\";\n container.style.opacity = \"0\";\n container.style.transition = \"opacity 0.2s ease\";\n container.appendChild(iframe);\n\n this.iframe = iframe;\n this.container = container;\n\n connectToChild<CallSender>({\n iframe: this.iframe,\n methods: { close: () => this.close(), ...methods },\n }).promise.then(onConnect);\n\n this.resize();\n window.addEventListener(\"resize\", () => this.resize());\n\n const observer = new MutationObserver(() => {\n const existingController = document.getElementById(\"controller\");\n if (document.body) {\n if (\n (id === \"controller-keychain\" && !existingController) ||\n id === \"controller-profile\"\n ) {\n document.body.appendChild(container);\n observer.disconnect();\n }\n }\n });\n\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n });\n\n const existingController = document.getElementById(\"controller\");\n if (document.body) {\n if (\n (id === \"controller-keychain\" && !existingController) ||\n id === \"controller-profile\"\n ) {\n document.body.appendChild(container);\n }\n }\n\n this.onClose = onClose;\n }\n\n open() {\n if (!this.container) return;\n document.body.style.overflow = \"hidden\";\n\n this.container.style.visibility = \"visible\";\n this.container.style.opacity = \"1\";\n }\n\n close() {\n if (!this.container) return;\n this.onClose?.();\n\n document.body.style.overflow = \"auto\";\n\n this.container.style.visibility = \"hidden\";\n this.container.style.opacity = \"0\";\n }\n\n sendBackward() {\n if (!this.container) return;\n this.container.style.zIndex = \"9999\";\n }\n\n sendForward() {\n if (!this.container) return;\n this.container.style.zIndex = \"10000\";\n }\n\n private resize() {\n if (!this.iframe) return;\n\n this.iframe.style.userSelect = \"none\";\n\n if (window.innerWidth < 768) {\n this.iframe.style.height = \"100%\";\n this.iframe.style.width = \"100%\";\n this.iframe.style.borderRadius = \"0\";\n return;\n }\n\n this.iframe.style.height = \"600px\";\n this.iframe.style.width = \"432px\";\n this.iframe.style.borderRadius = \"8px\";\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","import { KEYCHAIN_URL } from \"../constants\";\nimport { Keychain, KeychainOptions } from \"../types\";\nimport { IFrame, IFrameOptions } from \"./base\";\n\ntype KeychainIframeOptions = IFrameOptions<Keychain> & KeychainOptions;\n\nexport class KeychainIFrame extends IFrame<Keychain> {\n constructor({ url, policies, ...iframeOptions }: KeychainIframeOptions) {\n const _url = new URL(url ?? KEYCHAIN_URL);\n\n if (policies) {\n _url.searchParams.set(\n \"policies\",\n encodeURIComponent(JSON.stringify(policies)),\n );\n }\n\n super({\n ...iframeOptions,\n id: \"controller-keychain\",\n url: _url,\n });\n }\n}\n","import { PROFILE_URL } from \"../constants\";\nimport { Profile, ProfileOptions } from \"../types\";\nimport { IFrame, IFrameOptions } from \"./base\";\n\nexport type ProfileIFrameOptions = IFrameOptions<Profile> &\n ProfileOptions & {\n rpcUrl: string;\n version?: string;\n username: string;\n slot?: string;\n namespace?: string;\n };\n\nexport class ProfileIFrame extends IFrame<Profile> {\n constructor({\n profileUrl,\n rpcUrl,\n version,\n username,\n slot,\n namespace,\n tokens,\n ...iframeOptions\n }: ProfileIFrameOptions) {\n const _profileUrl = (profileUrl || PROFILE_URL).replace(/\\/$/, \"\");\n let _url = new URL(\n slot\n ? namespace\n ? `${_profileUrl}/account/${username}/slot/${slot}?ps=${encodeURIComponent(\n slot,\n )}&ns=${encodeURIComponent(namespace)}`\n : `${_profileUrl}/account/${username}/slot/${slot}?ps=${encodeURIComponent(\n slot,\n )}`\n : `${_profileUrl}/account/${username}`,\n );\n\n if (version) {\n _url.searchParams.set(\"v\", encodeURIComponent(version));\n }\n\n _url.searchParams.set(\"rpcUrl\", encodeURIComponent(rpcUrl));\n\n if (tokens?.erc20) {\n _url.searchParams.set(\n \"erc20\",\n encodeURIComponent(tokens.erc20.toString()),\n );\n }\n\n super({\n ...iframeOptions,\n id: \"controller-profile\",\n url: _url,\n });\n }\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","{\n \"name\": \"@cartridge/controller\",\n \"version\": \"0.7.3\",\n \"description\": \"Cartridge Controller\",\n \"module\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"type\": \"module\",\n \"scripts\": {\n \"build:deps\": \"tsup\",\n \"build\": \"pnpm build:deps\",\n \"format\": \"prettier --write \\\"src/**/*.ts\\\"\",\n \"format:check\": \"prettier --check \\\"src/**/*.ts\\\"\",\n \"test\": \"jest\",\n \"version\": \"pnpm pkg get version\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./session\": {\n \"types\": \"./dist/session/index.d.ts\",\n \"import\": \"./dist/session/index.js\",\n \"require\": \"./dist/session/index.cjs\"\n },\n \"./session/node\": {\n \"types\": \"./dist/node/index.d.ts\",\n \"import\": \"./dist/node/index.js\",\n \"require\": \"./dist/node/index.cjs\"\n },\n \"./provider\": {\n \"types\": \"./dist/provider/index.d.ts\",\n \"import\": \"./dist/provider/index.js\"\n },\n \"./types\": {\n \"types\": \"./dist/types/index.d.ts\",\n \"import\": \"./dist/types/index.js\"\n }\n },\n \"tsup\": {\n \"entry\": [\n \"src/index.ts\",\n \"src/controller.ts\",\n \"src/lookup.ts\",\n \"src/session/index.ts\",\n \"src/node/index.ts\"\n ],\n \"format\": [\n \"esm\",\n \"cjs\"\n ],\n \"splitting\": false,\n \"sourcemap\": true,\n \"clean\": true,\n \"dts\": true,\n \"treeshake\": {\n \"preset\": \"recommended\"\n },\n \"exports\": \"named\"\n },\n \"peerDependencies\": {\n \"starknet\": \"catalog:\",\n \"open\": \"^10.1.0\"\n },\n \"dependencies\": {\n \"@cartridge/account-wasm\": \"workspace:*\",\n \"@cartridge/penpal\": \"catalog:\",\n \"@starknet-io/types-js\": \"catalog:\",\n \"@telegram-apps/sdk\": \"^2.4.0\",\n \"base64url\": \"catalog:\",\n \"cbor-x\": \"^1.5.0\",\n \"fast-deep-equal\": \"catalog:\"\n },\n \"devDependencies\": {\n \"@cartridge/tsconfig\": \"workspace:*\",\n \"@types/jest\": \"^29.5.14\",\n \"@types/node\": \"catalog:\",\n \"jest\": \"^29.7.0\",\n \"prettier\": \"catalog:\",\n \"ts-jest\": \"^29.2.5\",\n \"tsup\": \"catalog:\",\n \"typescript\": \"catalog:\"\n }\n}\n","export const icon =\n \"data:image/png;base64,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\";\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 { WalletAccount } from \"starknet\";\nimport {\n AddInvokeTransactionParameters,\n AddStarknetChainParameters,\n Errors,\n Permission,\n RequestAccountsParameters,\n RequestFn,\n StarknetWindowObject,\n SwitchStarknetChainParameters,\n TypedData,\n WalletEventHandlers,\n WalletEventListener,\n WalletEvents,\n} from \"@starknet-io/types-js\";\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 Errors.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 Errors.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 Errors.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 Errors.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 Errors.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 Errors.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 Errors.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","import { AsyncMethodReturns } from \"@cartridge/penpal\";\n\nimport ControllerAccount from \"./account\";\nimport { KeychainIFrame, ProfileIFrame } from \"./iframe\";\nimport { NotReadyToConnect } from \"./errors\";\nimport {\n Keychain,\n ResponseCodes,\n ConnectReply,\n ProbeReply,\n ControllerOptions,\n ConnectError,\n Profile,\n IFrames,\n ProfileContextTypeVariant,\n Chain,\n} from \"./types\";\nimport BaseProvider from \"./provider\";\nimport { WalletAccount } from \"starknet\";\nimport { Policy } from \"@cartridge/presets\";\nimport { AddStarknetChainParameters, ChainId } from \"@starknet-io/types-js\";\nimport { parseChainId } from \"./utils\";\n\nexport default class ControllerProvider extends BaseProvider {\n private keychain?: AsyncMethodReturns<Keychain>;\n private profile?: AsyncMethodReturns<Profile>;\n private options: ControllerOptions;\n private iframes: IFrames;\n private selectedChain: ChainId;\n private chains: Map<ChainId, Chain>;\n\n constructor(options: ControllerOptions) {\n super();\n\n const chains = new Map<ChainId, Chain>();\n\n for (const chain of options.chains) {\n const url = new URL(chain.rpcUrl);\n const chainId = parseChainId(url);\n chains.set(chainId, chain);\n }\n\n if (\n options.policies?.messages?.length &&\n options.policies.messages.length !== chains.size\n ) {\n console.warn(\n \"Each message policy is associated with a specific chain. \" +\n \"The number of message policies does not match the number of chains specified - \" +\n \"session message signing may not work on some chains.\",\n );\n }\n\n this.chains = chains;\n this.selectedChain = options.defaultChainId;\n\n if (!this.chains.has(this.selectedChain)) {\n throw new Error(\n `Chain ${this.selectedChain} not found in configured chains`,\n );\n }\n\n this.iframes = {\n keychain: new KeychainIFrame({\n ...options,\n onClose: this.keychain?.reset,\n onConnect: (keychain) => {\n this.keychain = keychain;\n },\n }),\n };\n\n this.options = options;\n\n if (typeof window !== \"undefined\") {\n (window as any).starknet_controller = this;\n }\n }\n\n async probe(): Promise<WalletAccount | undefined> {\n try {\n await this.waitForKeychain();\n\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n const response = (await this.keychain.probe(this.rpcUrl())) as ProbeReply;\n\n // For backwards compat with controller <=0.6.0\n let rpcUrl = response?.rpcUrl || this.rpcUrl();\n this.account = new ControllerAccount(\n this,\n rpcUrl,\n response.address,\n this.keychain,\n this.options,\n this.iframes.keychain,\n );\n } catch (e) {\n console.error(e);\n return;\n }\n\n if (!this.iframes.profile) {\n const username = await this.keychain.username();\n\n this.iframes.profile = new ProfileIFrame({\n ...this.options,\n onConnect: (profile) => {\n this.profile = profile;\n },\n methods: {\n openSettings: () => this.openSettings.bind(this),\n openPurchaseCredits: () => this.openPurchaseCredits.bind(this),\n openExecute: () => this.openExecute.bind(this),\n },\n rpcUrl: this.rpcUrl(),\n username,\n version: this.version,\n });\n }\n\n return this.account;\n }\n\n async connect(): Promise<WalletAccount | undefined> {\n if (this.account) {\n return this.account;\n }\n\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n if (!!document.hasStorageAccess) {\n const ok = await document.hasStorageAccess();\n if (!ok) {\n await document.requestStorageAccess();\n }\n }\n\n this.iframes.keychain.open();\n\n try {\n let response = await this.keychain.connect(\n this.options.policies || {},\n this.rpcUrl(),\n );\n if (response.code !== ResponseCodes.SUCCESS) {\n throw new Error(response.message);\n }\n\n response = response as ConnectReply;\n this.account = new ControllerAccount(\n this,\n this.rpcUrl(),\n response.address,\n this.keychain,\n this.options,\n this.iframes.keychain,\n );\n\n return this.account;\n } catch (e) {\n console.log(e);\n } finally {\n this.iframes.keychain.close();\n }\n }\n\n async switchStarknetChain(chainId: string): Promise<boolean> {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return false;\n }\n\n try {\n this.selectedChain = chainId;\n const response = (await this.keychain.probe(this.rpcUrl())) as ProbeReply;\n\n if (response.rpcUrl === this.rpcUrl()) {\n return true;\n }\n\n await this.keychain.switchChain(this.rpcUrl());\n } catch (e) {\n console.error(e);\n return false;\n }\n\n this.emitNetworkChanged(chainId);\n return true;\n }\n\n addStarknetChain(_chain: AddStarknetChainParameters): Promise<boolean> {\n return Promise.resolve(true);\n }\n\n async disconnect() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n if (!!document.hasStorageAccess) {\n const ok = await document.hasStorageAccess();\n if (!ok) {\n await document.requestStorageAccess();\n }\n }\n\n this.account = undefined;\n return this.keychain.disconnect();\n }\n\n async openProfile(tab: ProfileContextTypeVariant = \"inventory\") {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(`${this.iframes.profile.url?.pathname}/${tab}`);\n this.iframes.profile.open();\n }\n\n async openProfileTo(to: string) {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(`${this.iframes.profile.url?.pathname}/${to}`);\n this.iframes.profile.open();\n }\n\n async openProfileAt(at: string) {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(at);\n this.iframes.profile.open();\n }\n\n async openSettings() {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n if (this.iframes.profile?.sendBackward) {\n this.iframes.profile?.sendBackward();\n } else {\n this.iframes.profile?.close();\n }\n this.iframes.keychain.open();\n const res = await this.keychain.openSettings();\n this.iframes.keychain.close();\n this.iframes.profile?.sendForward?.();\n if (res && (res as ConnectError).code === ResponseCodes.NOT_CONNECTED) {\n return false;\n }\n return true;\n }\n\n revoke(origin: string, _policy: Policy[]) {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n\n return this.keychain.revoke(origin);\n }\n\n rpcUrl(): string {\n return this.chains.get(this.selectedChain)!.rpcUrl;\n }\n\n username() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n return this.keychain.username();\n }\n\n openPurchaseCredits() {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n if (!this.iframes.profile) {\n console.error(\"Profile is not ready\");\n return;\n }\n this.iframes.profile.close();\n this.iframes.keychain.open();\n this.keychain.openPurchaseCredits();\n }\n\n async openExecute(calls: any, chainId?: string) {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n if (!this.iframes.profile) {\n console.error(\"Profile is not ready\");\n return;\n }\n // Switch to the chain if provided\n let currentChainId = this.selectedChain;\n if (chainId) {\n this.switchStarknetChain(chainId);\n }\n // Switch iframes\n this.iframes.profile?.sendBackward();\n this.iframes.keychain.open();\n this.iframes.profile?.close();\n // Invoke execute\n const res = await this.keychain.execute(calls, undefined, undefined, true);\n // Switch back iframes\n this.iframes.profile?.open();\n this.iframes.keychain.close();\n this.iframes.profile?.sendForward();\n // Switch back to the original chain\n if (chainId) {\n this.switchStarknetChain(currentChainId);\n }\n return !(\n res &&\n ((res as ConnectError).code === ResponseCodes.NOT_CONNECTED ||\n (res as ConnectError).code === ResponseCodes.CANCELED)\n );\n }\n\n async delegateAccount() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n\n return await this.keychain.delegateAccount();\n }\n\n private waitForKeychain({\n timeout = 50000,\n interval = 100,\n }:\n | {\n timeout?: number;\n interval?: number;\n }\n | undefined = {}) {\n return new Promise<void>((resolve, reject) => {\n const startTime = Date.now();\n const id = setInterval(() => {\n if (Date.now() - startTime > timeout) {\n clearInterval(id);\n reject(new Error(\"Timeout waiting for keychain\"));\n return;\n }\n\n if (!this.keychain) return;\n\n clearInterval(id);\n resolve();\n }, interval);\n });\n }\n}\n","import { LookupRequest, LookupResponse } from \"./types\";\nimport { num } from \"starknet\";\nimport { API_URL } from \"./constants\";\n\nconst cache = new Map<string, string>();\n\nasync function lookup(request: LookupRequest): Promise<LookupResponse> {\n if (!request.addresses?.length && !request.usernames?.length) {\n return { results: [] };\n }\n\n const response = await fetch(`${API_URL}/lookup`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(request),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n return response.json();\n}\n\nexport async function lookupUsernames(\n usernames: string[],\n): Promise<Map<string, string>> {\n const uncachedUsernames = usernames.filter((name) => !cache.has(name));\n\n if (uncachedUsernames.length > 0) {\n const response = await lookup({ usernames: uncachedUsernames });\n\n response.results.forEach((result) => {\n cache.set(result.username, result.addresses[0]); // TODO: handle multiple controller addresses\n });\n }\n\n return new Map(\n usernames\n .map((name) => [name, cache.get(name)] as [string, string])\n .filter((entry): entry is [string, string] => entry[1] !== undefined),\n );\n}\n\nexport async function lookupAddresses(\n addresses: string[],\n): Promise<Map<string, string>> {\n addresses = addresses.map(num.toHex);\n const uncachedAddresses = addresses.filter((addr) => !cache.has(addr));\n\n if (uncachedAddresses.length > 0) {\n const response = await lookup({\n addresses: uncachedAddresses,\n });\n\n response.results.forEach((result) => {\n cache.set(result.addresses[0], result.username); // TODO: handle multiple controller addresses\n });\n }\n\n return new Map(\n addresses\n .map((addr) => [addr, cache.get(addr)] as [string, string])\n .filter((entry): entry is [string, string] => entry[1] !== undefined),\n );\n}\n","// This file is auto-generated. DO NOT EDIT IT MANUALLY.\nimport { ControllerConfigs } from \"../\";\n\nexport const configs: ControllerConfigs = {\n \"blob-arena\": {\n origin: \"blobarena.xyz\",\n theme: {\n colors: {\n primary: \"#980f06\",\n },\n cover: \"https://static.cartridge.gg/presets/blob-arena/cover.png\",\n icon: \"https://static.cartridge.gg/presets/blob-arena/icon.png\",\n name: \"Blob Arena\",\n },\n },\n cartridge: {\n origin: \"*\",\n theme: {\n name: \"Cartridge\",\n icon: \"https://static.cartridge.gg/presets/cartridge/icon.svg\",\n cover: {\n light: \"https://static.cartridge.gg/presets/cartridge/cover-light.png\",\n dark: \"https://static.cartridge.gg/presets/cartridge/cover-dark.png\",\n },\n },\n },\n \"dark-shuffle\": {\n origin: \"darkshuffle.io\",\n theme: {\n colors: {\n primary: \"#F59100\",\n },\n cover: \"https://static.cartridge.gg/presets/dark-shuffle/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dark-shuffle/icon.svg\",\n name: \"Dark Shuffle\",\n },\n },\n \"dope-wars\": {\n origin: \"dopewars.game\",\n policies: {\n contracts: {\n \"0x051Fea4450Da9D6aeE758BDEbA88B2f665bCbf549D2C61421AA724E9AC0Ced8F\": {\n name: \"VRF Provider\",\n description: \"Provides verifiable random functions\",\n methods: [\n {\n name: \"Request Random\",\n description: \"Request a random number\",\n entrypoint: \"request_random\",\n },\n ],\n },\n \"0x0410466536b5ae074f7fea81e5533b8134a9fa08b3dd077dd9db08f64997d113\": {\n name: \"Paper Token\",\n description: \"Manages paper approvals\",\n methods: [\n {\n name: \"Approve\",\n description: \"Approve paper usage\",\n entrypoint: \"approve\",\n },\n ],\n },\n \"0x044a23BbfE03FFe90D3C23Fb6e5A8AD0341036C039363DfA6F3513278Aa51fCA\": {\n name: \"Game Contract\",\n description: \"Core game mechanics\",\n methods: [\n {\n name: \"Create Game\",\n description: \"Start a new game\",\n entrypoint: \"create_game\",\n },\n {\n name: \"Travel\",\n description: \"Travel to a new location\",\n entrypoint: \"travel\",\n },\n {\n name: \"Decide\",\n description: \"Make a game decision\",\n entrypoint: \"decide\",\n },\n {\n name: \"End Game\",\n description: \"End the current game\",\n entrypoint: \"end_game\",\n },\n ],\n },\n \"0x0412445e644070C69fEa16b964cC81Cd6dEBF6A4DBf683E2E9686a45ad088de8\": {\n name: \"Laundromat Contract\",\n description: \"Manages game scoring and laundering\",\n methods: [\n {\n name: \"Register Score\",\n description: \"Register a game score\",\n entrypoint: \"register_score\",\n },\n {\n name: \"Claim\",\n description: \"Claim rewards\",\n entrypoint: \"claim\",\n },\n {\n name: \"Launder\",\n description: \"Launder resources\",\n entrypoint: \"launder\",\n },\n ],\n },\n },\n },\n theme: {\n colors: {\n primary: \"#11ED83\",\n },\n cover: \"https://static.cartridge.gg/presets/dope-wars/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dope-wars/icon.png\",\n name: \"Dope Wars\",\n },\n },\n dragark: {\n origin: \"dragark.net\",\n theme: {\n colors: {\n primary: \"#71EB34\",\n },\n cover: \"https://static.cartridge.gg/presets/dragark/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dragark/icon.png\",\n name: \"Dragark\",\n },\n },\n eternum: {\n origin: [\"eternum.realms.world\", \"empire.realms.world\"],\n policies: {\n contracts: {\n \"0x4ed3a7c5f53c6e96186eaf1b670bd2e2a3699c08e070aedf4e5fc6ac246ddc1\": {\n name: \"Pillage\",\n description: \"Allows you to raid a structure and pillage resources\",\n methods: [\n {\n name: \"Battle Pillage\",\n description: \"Pillage a structure\",\n entrypoint: \"battle_pillage\",\n },\n ],\n },\n \"0x2620f65aa2fd72d705306ada1ee7410023a3df03da9291f1ccb744fabfebc0\": {\n name: \"Battle contract\",\n description: \"Required to engage in battles\",\n methods: [\n {\n name: \"Battle Start\",\n description: \"Start a battle\",\n entrypoint: \"battle_start\",\n },\n {\n name: \"Battle Force Start\",\n description: \"Force start a battle\",\n entrypoint: \"battle_force_start\",\n },\n {\n name: \"Battle Join\",\n description: \"Join a battle\",\n entrypoint: \"battle_join\",\n },\n {\n name: \"Battle Leave\",\n description: \"Leave a battle\",\n entrypoint: \"battle_leave\",\n },\n {\n name: \"Battle Claim\",\n description: \"Claim a structure after a battle\",\n entrypoint: \"battle_claim\",\n },\n {\n name: \"Battle Resolve\",\n description: \"Reopens the bank after battle\",\n entrypoint: \"battle_resolve\",\n },\n ],\n },\n \"0x6bf57710571fd159e71b1ed155bb0759027e416c88a06556f321c94c214e768\": {\n name: \"Leave battle contract\",\n description: \"Allows armies to leave a battle\",\n methods: [\n {\n name: \"Leave Battle\",\n description: \"Leave a battle\",\n entrypoint: \"leave_battle\",\n },\n {\n name: \"Leave Battle If Ended\",\n description: \"Leave a battle if its ended\",\n entrypoint: \"leave_battle_if_ended\",\n },\n ],\n },\n \"0x4b6a35c0c541467674ebb9640113a6d79c6f5a468796e9299b8e484a770032a\": {\n name: \"Building contract\",\n description: \"Allows to manage buildings\",\n methods: [\n {\n name: \"Create\",\n description: \"Create a building\",\n entrypoint: \"create\",\n },\n {\n name: \"Pause Production\",\n description: \"Pause the production of a building\",\n entrypoint: \"pause_production\",\n },\n {\n name: \"Resume Production\",\n description: \"Resume production of a building\",\n entrypoint: \"resume_production\",\n },\n {\n name: \"Destroy a building\",\n description: \"Destroy a building\",\n entrypoint: \"destroy\",\n },\n ],\n },\n \"0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4\": {\n name: \"Guild contract\",\n description: \"Allows guild utilities\",\n methods: [\n {\n name: \"Create Guild\",\n description: \"Creates a new guild\",\n entrypoint: \"create_guild\",\n },\n {\n name: \"Join Guild\",\n description: \"Join an existing guild\",\n entrypoint: \"join_guild\",\n },\n {\n name: \"Whitelist Player\",\n description: \"Add a player to the guild's whitelist\",\n entrypoint: \"whitelist_player\",\n },\n {\n name: \"Transfer Guild Ownership\",\n description: \"Transfer ownership of the guild to another player\",\n entrypoint: \"transfer_guild_ownership\",\n },\n {\n name: \"Remove Guild Member\",\n description: \"Remove a member from the guild\",\n entrypoint: \"remove_guild_member\",\n },\n {\n name: \"Remove Player From Whitelist\",\n description: \"Remove a player from the guild's whitelist\",\n entrypoint: \"remove_player_from_whitelist\",\n },\n ],\n },\n \"0x2fcc3c1691387321c2f4d6310eda7a14365bd274c1a37ed3948d2e93a56f821\": {\n name: \"Hyperstructure contract\",\n description: \"Handles the creation and management of hyperstructures\",\n methods: [\n {\n name: \"Get Points\",\n description: \"Gets your total number of points\",\n entrypoint: \"get_points\",\n },\n {\n name: \"Create\",\n description: \"Create a new hyperstructure\",\n entrypoint: \"create\",\n },\n {\n name: \"Contribute To Construction\",\n description:\n \"Contribute resources to hyperstructure construction\",\n entrypoint: \"contribute_to_construction\",\n },\n {\n name: \"Set Co Owners\",\n description: \"Set additional owners for the hyperstructure\",\n entrypoint: \"set_co_owners\",\n },\n {\n name: \"End Game\",\n description:\n \"Terminates the current game season once you've reached enough points\",\n entrypoint: \"end_game\",\n },\n {\n name: \"Set Access\",\n description:\n \"Configure access permissions for contributions to the hyperstructure\",\n entrypoint: \"set_access\",\n },\n ],\n },\n \"0xa052c5ca082356bcc8457f0f805eaf18f97d0fdddde3f90f5b238923859ed4\": {\n name: \"AMM liquidity contract\",\n description: \"Manages liquidity for the Automated Market Maker\",\n methods: [\n {\n name: \"Add\",\n description: \"Add liquidity to the pool\",\n entrypoint: \"add\",\n },\n {\n name: \"Remove\",\n description: \"Remove liquidity from the pool\",\n entrypoint: \"remove\",\n },\n ],\n },\n \"0x4a212c52c4035bc9bd170125216604f406dcd75b41be11d3b4d89047366d84d\": {\n name: \"Exploration contract\",\n description: \"Allows you to move to unexplored hexes on the map\",\n methods: [\n {\n name: \"Explore\",\n description: \"Explore an uncharted hex on the game map\",\n entrypoint: \"explore\",\n },\n ],\n },\n \"0x7e3bae0e253a0131063b63ee4d7b27b50329c617ae88b82d529a70f1a11c63\": {\n name: \"Naming contract\",\n description: \"Manages entity naming in the game\",\n methods: [\n {\n name: \"Set Entity Name\",\n description: \"Assign a custom name to a game entity\",\n entrypoint: \"set_entity_name\",\n },\n {\n name: \"Set Address Name\",\n description: \"Assign a custom name to a user's address\",\n entrypoint: \"set_address_name\",\n },\n ],\n },\n \"0x1b480f620ea35431ab43dba634795b14f547ef3e77370db6f0a31f2fdc21d86\": {\n name: \"Realms contract\",\n description: \"Manages realm-related actions\",\n methods: [\n {\n name: \"Create a realm\",\n description: \"Create a new realm\",\n entrypoint: \"create\",\n },\n {\n name: \"Upgrade Level\",\n description: \"Upgrade the level of a realm\",\n entrypoint: \"upgrade_level\",\n },\n {\n name: \"Quest Claim\",\n description: \"Claim rewards from completed quests\",\n entrypoint: \"quest_claim\",\n },\n ],\n },\n \"0x691a60b709ca5c1c5ff86824831f84deb26f0f5d07d70c0f807eab48110d2f6\": {\n name: \"Resource bridge contract\",\n description: \"Manages bridge transfers between L2 and Eternum\",\n methods: [\n {\n name: \"Deposit Initial\",\n description: \"Initial deposit of resources for bridge transfer\",\n entrypoint: \"deposit_initial\",\n },\n {\n name: \"Deposit\",\n description: \"Deposit additional resources for bridge transfer\",\n entrypoint: \"deposit\",\n },\n {\n name: \"Start Withdraw\",\n description: \"Initiate a withdrawal process\",\n entrypoint: \"start_withdraw\",\n },\n {\n name: \"Finish Withdraw\",\n description: \"Finalize a withdrawal process\",\n entrypoint: \"finish_withdraw\",\n },\n ],\n },\n \"0x42c0303a2119a9e20daa60e83c48221cdf1bb2a4c009bab031d1cd3555a127e\": {\n name: \"Resource contract\",\n description: \"In-game resource management\",\n methods: [\n {\n name: \"Approve\",\n description: \"Approve resource transfer\",\n entrypoint: \"approve\",\n },\n {\n name: \"Send\",\n description: \"Send resources to another entity\",\n entrypoint: \"send\",\n },\n {\n name: \"Pickup\",\n description: \"Collect available resources after approval\",\n entrypoint: \"pickup\",\n },\n ],\n },\n \"0x4f92a1d00d3aec8cece60fc2d0fc236fe1d95c54ff0ceb2f393fbc7e0863d8e\": {\n name: \"AMM swap contract\",\n description: \"Handles token swaps in the Automated Market Maker\",\n methods: [\n {\n name: \"Buy\",\n description: \"Purchase tokens from the liquidity pool\",\n entrypoint: \"buy\",\n },\n {\n name: \"Sell\",\n description: \"Sell tokens to the liquidity pool\",\n entrypoint: \"sell\",\n },\n ],\n },\n \"0x7e2b1334398fafbe640f34bacae99b649d633417960ee397b6a8fb117fec819\": {\n name: \"Market contract\",\n description: \"Manages trading orders in the in-game market\",\n methods: [\n {\n name: \"Create Order\",\n description: \"Create a new trading order\",\n entrypoint: \"create_order\",\n },\n {\n name: \"Accept Order\",\n description: \"Accept a trading order\",\n entrypoint: \"accept_order\",\n },\n {\n name: \"Accept Partial Order\",\n description: \"Accept a partial trading order\",\n entrypoint: \"accept_partial_order\",\n },\n {\n name: \"Cancel Order\",\n description: \"Cancel a trading order\",\n entrypoint: \"cancel_order\",\n },\n ],\n },\n \"0x4069c2be57f08fef9f31afc85a5b4c03c208ebdb278b9d853606caa7a9cbee6\": {\n name: \"Map travel contract\",\n description: \"Manages player movement across the game map\",\n methods: [\n {\n name: \"Travel Hex\",\n description: \"Move to a specific hex on the map\",\n entrypoint: \"travel_hex\",\n },\n ],\n },\n \"0x26be0ed574aa9ee6f73b53b12f0a199ddbf4ac697470316cdb3d9d1f5680cab\": {\n name: \"Army contract\",\n description: \"Manages army-related actions\",\n methods: [\n {\n name: \"Army Create\",\n description: \"Create a new army\",\n entrypoint: \"army_create\",\n },\n {\n name: \"Army Delete\",\n description: \"Delete an existing army\",\n entrypoint: \"army_delete\",\n },\n {\n name: \"Army Buy Troops\",\n description: \"Buy troops for an army\",\n entrypoint: \"army_buy_troops\",\n },\n {\n name: \"Army Merge Troops\",\n description: \"Merge troops from multiple armies\",\n entrypoint: \"army_merge_troops\",\n },\n ],\n },\n \"0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f\": {\n name: \"VRF Provider\",\n description:\n \"Verifiable Random Function contract, allows randomness in the game\",\n methods: [\n {\n name: \"Request Random\",\n description:\n \"Allows requesting random numbers from the VRF provider\",\n entrypoint: \"request_random\",\n },\n ],\n },\n \"0x057675b9c0bd62b096a2e15502a37b290fa766ead21c33eda42993e48a714b80\": {\n name: \"Season pass ERC20 contract\",\n description: \"Manages the season passes\",\n methods: [\n {\n name: \"Approve for all\",\n description: \"Approves transfer of season pass\",\n entrypoint: \"set_approval_for_all\",\n },\n ],\n },\n \"0x4b5e65a9617c7ba3c7ea64324ff4338a400adb1a3cfe903b3f8b647cbb59fb7\": {\n name: \"Season Systems\",\n description: \"Register and claim\",\n methods: [\n {\n name: \"Register\",\n description: \"Registers to leaderboard\",\n entrypoint: \"register_to_leaderboard\",\n },\n {\n name: \"Claim\",\n description: \"Claim\",\n entrypoint: \"claim_leaderboard_rewards\",\n },\n ],\n },\n },\n messages: [\n {\n types: {\n StarknetDomain: [\n {\n name: \"name\",\n type: \"shortstring\",\n },\n {\n name: \"version\",\n type: \"shortstring\",\n },\n {\n name: \"chainId\",\n type: \"shortstring\",\n },\n {\n name: \"revision\",\n type: \"shortstring\",\n },\n ],\n \"s0_eternum-Message\": [\n {\n name: \"identity\",\n type: \"ContractAddress\",\n },\n {\n name: \"channel\",\n type: \"shortstring\",\n },\n {\n name: \"content\",\n type: \"string\",\n },\n {\n name: \"timestamp\",\n type: \"felt\",\n },\n {\n name: \"salt\",\n type: \"felt\",\n },\n ],\n },\n primaryType: \"s0_eternum-Message\",\n domain: {\n name: \"Eternum\",\n version: \"1\",\n chainId: \"SN_MAIN\",\n revision: \"1\",\n },\n },\n ],\n },\n theme: {\n name: \"Eternum\",\n icon: \"https://static.cartridge.gg/presets/eternum/icon.svg\",\n cover: \"https://static.cartridge.gg/presets/eternum/cover.png\",\n colors: {\n primary: \"#dc8b07\",\n },\n },\n },\n flippyflop: {\n origin: \"flippyflop.gg\",\n theme: {\n colors: {\n primary: \"#F38332\",\n },\n cover: \"https://static.cartridge.gg/presets/flippyflop/cover.png\",\n icon: \"https://static.cartridge.gg/presets/flippyflop/icon.png\",\n name: \"FlippyFlop\",\n },\n },\n \"force-prime\": {\n origin: \"forceprime.io\",\n theme: {\n colors: {\n primary: \"#E1CC89\",\n },\n cover: \"https://static.cartridge.gg/presets/force-prime/cover.png\",\n icon: \"https://static.cartridge.gg/presets/force-prime/icon.png\",\n name: \"Force Prime\",\n },\n },\n \"jokers-of-neon\": {\n origin: \"jokersofneon.com\",\n theme: {\n colors: {\n primary: \"#A144B2\",\n },\n cover: \"https://static.cartridge.gg/presets/jokers-of-neon/cover.png\",\n icon: \"https://static.cartridge.gg/presets/jokers-of-neon/icon.png\",\n name: \"Jokers of Neon\",\n },\n },\n \"loot-survivor\": {\n origin: \"lootsurvivor.io\",\n policies: {\n contracts: {\n \"0x0305f26ad19e0a10715d9f3137573d3a543de7b707967cd85d11234d6ec0fb7e\": {\n methods: [\n {\n entrypoint: \"attack\",\n },\n {\n entrypoint: \"drop\",\n },\n {\n entrypoint: \"equip\",\n },\n {\n entrypoint: \"explore\",\n },\n {\n entrypoint: \"flee\",\n },\n {\n entrypoint: \"new_game\",\n },\n {\n entrypoint: \"transfer_from\",\n },\n {\n entrypoint: \"upgrade\",\n },\n ],\n },\n \"0x3347382d530ff6acb9283ac1d78471187aae8a4690e9316bb4e3c3365ff7a86\": {\n methods: [\n {\n entrypoint: \"enter_tournament\",\n },\n {\n entrypoint: \"start_tournament\",\n },\n ],\n },\n },\n },\n theme: {\n colors: {\n primary: \"#33FF33\",\n },\n cover: \"https://static.cartridge.gg/presets/loot-survivor/cover.png\",\n icon: \"https://static.cartridge.gg/presets/loot-survivor/icon.png\",\n name: \"Loot Survivor\",\n },\n },\n paved: {\n origin: \"paved.gg\",\n theme: {\n colors: {\n primary: \"#B0CAF8\",\n },\n cover: \"https://static.cartridge.gg/presets/paved/cover.png\",\n icon: \"https://static.cartridge.gg/presets/paved/icon.svg\",\n name: \"Paved\",\n },\n },\n pistols: {\n origin: \"pistols.underware.gg\",\n theme: {\n colors: {\n primary: \"#EF9758\",\n },\n cover: \"https://static.cartridge.gg/presets/pistols/cover.png\",\n icon: \"https://static.cartridge.gg/presets/pistols/icon.png\",\n name: \"Pistols at Ten Blocks\",\n },\n },\n pixelaw: {\n origin: \"dojo.pixelaw.xyz\",\n theme: {\n colors: {\n primary: \"#7C00B1\",\n primaryForeground: \"white\",\n },\n cover: \"https://static.cartridge.gg/presets/pixelaw/cover.png\",\n icon: \"https://static.cartridge.gg/presets/pixelaw/icon.svg\",\n name: \"Pixelaw\",\n },\n },\n \"realm-of-ra\": {\n origin: \"mancala.realmofra.com\",\n theme: {\n colors: {\n primary: \"#de9534\",\n },\n cover: \"https://static.cartridge.gg/presets/realm-of-ra/cover.png\",\n icon: \"https://static.cartridge.gg/presets/realm-of-ra/icon.png\",\n name: \"Realm of Ra\",\n },\n },\n \"savage-summit\": {\n origin: \"savagesummit.io\",\n theme: {\n colors: {\n primary: \"#fbf7da\",\n },\n cover: \"https://static.cartridge.gg/presets/savage-summit/cover.png\",\n icon: \"https://static.cartridge.gg/presets/savage-summit/icon.png\",\n name: \"Savage Summit\",\n },\n },\n \"tale-weaver\": {\n origin: \"\",\n theme: {\n colors: {\n primary: \"#fce377\",\n },\n cover: \"https://static.cartridge.gg/presets/tale-weaver/cover.png\",\n icon: \"https://static.cartridge.gg/presets/tale-weaver/icon.png\",\n name: \"Tale Weaver\",\n },\n },\n zkastle: {\n origin: \"zkastle.vercel.app\",\n theme: {\n colors: {\n primary: \"#E50D2C\",\n },\n cover: \"https://static.cartridge.gg/presets/zkastle/cover.png\",\n icon: \"https://static.cartridge.gg/presets/zkastle/icon.svg\",\n name: \"zKastle\",\n },\n },\n zktt: {\n origin: \"zktable.top\",\n theme: {\n colors: {\n primary: \"#FFFFFF\",\n },\n cover: \"https://static.cartridge.gg/presets/zktt/cover.png\",\n icon: \"https://static.cartridge.gg/presets/zktt/icon.png\",\n name: \"zKTT\",\n },\n },\n zkube: {\n origin: \"app.zkube.xyz\",\n theme: {\n colors: {\n primary: \"#5bc3e6\",\n },\n cover: \"https://static.cartridge.gg/presets/zkube/cover.png\",\n icon: \"https://static.cartridge.gg/presets/zkube/icon.png\",\n name: \"zKube\",\n },\n },\n};\n","// This file is auto-generated. DO NOT EDIT IT MANUALLY.\nimport { EkuboERC20Metadata } from \"../\";\n\nexport const metadata: EkuboERC20Metadata[] = [\n {\n name: \"Wrapped BTC\",\n symbol: \"WBTC\",\n decimals: 8,\n l2_token_address:\n \"0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac\",\n sort_order: 0,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/7dcb2db2-a7a7-44af-660b-8262e057a100/logo\",\n },\n {\n name: \"USD Coin\",\n symbol: \"USDC\",\n decimals: 6,\n l2_token_address:\n \"0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8\",\n sort_order: 5,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e5aaa970-a998-47e8-bd43-4a3b56b87200/logo\",\n },\n {\n name: \"Tether USD\",\n symbol: \"USDT\",\n decimals: 6,\n l2_token_address:\n \"0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8\",\n sort_order: 4,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/c8a721d1-07c3-46e4-ab4e-523977c30b00/logo\",\n },\n {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18,\n l2_token_address:\n \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\",\n sort_order: 3,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e07829b7-0382-4e03-7ecd-a478c5aa9f00/logo\",\n },\n {\n name: \"Dai Stablecoin\",\n symbol: \"DAI\",\n decimals: 18,\n l2_token_address:\n \"0x05574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad\",\n sort_order: 4,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/919e761b-56f7-4f53-32aa-5e066f7f6200/logo\",\n },\n {\n name: \"Wrapped liquid staked Ether 2.0\",\n symbol: \"wstETH\",\n decimals: 18,\n l2_token_address:\n \"0x042b8f0484674ca266ac5d08e4ac6a3fe65bd3129795def2dca5c34ecc5f96d2\",\n sort_order: 1,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/dbbcbdea-1a92-437d-3701-4a5ee129d000/logo\",\n },\n {\n name: \"Rocket Pool ETH\",\n symbol: \"rETH\",\n decimals: 18,\n l2_token_address:\n \"0x0319111a5037cbec2b3e638cc34a3474e2d2608299f3e62866e9cc683208c610\",\n sort_order: 1,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/c9f2d6fe-fbc6-4384-0990-923dfcb7a200/logo\",\n },\n {\n name: \"Paper\",\n symbol: \"PAPER\",\n decimals: 18,\n l2_token_address:\n \"0x0410466536b5ae074f7fea81e5533b8134a9fa08b3dd077dd9db08f64997d113\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/811f019a-0461-4cff-6c1e-442102863f00/logo\",\n },\n {\n name: \"Uniswap\",\n symbol: \"UNI\",\n decimals: 18,\n l2_token_address:\n \"0x049210ffc442172463f3177147c1aeaa36c51d152c1b0630f2364c300d4f48ee\",\n sort_order: 1,\n total_supply: 1000000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/361b018e-bd53-4019-27c8-7cf8d9031b00/logo\",\n },\n {\n name: \"Starknet\",\n symbol: \"STRK\",\n decimals: 18,\n l2_token_address:\n \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\",\n sort_order: 2,\n total_supply: 10000000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/1b126320-367c-48ed-cf5a-ba7580e49600/logo\",\n },\n {\n name: \"Ekubo Protocol\",\n symbol: \"EKUBO\",\n decimals: 18,\n l2_token_address:\n \"0x075afe6402ad5a5c20dd25e10ec3b3986acaa647b77e4ae24b0cbc9a54a27a87\",\n sort_order: 1,\n total_supply: 10000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/634d9c36-2f0b-4781-93e6-72d701b5af00/logo\",\n },\n {\n name: \"Nostra\",\n symbol: \"NSTR\",\n decimals: 18,\n l2_token_address:\n \"0x00c530f2c0aa4c16a0806365b0898499fba372e5df7a7172dc6fe9ba777e8007\",\n sort_order: 1,\n total_supply: 100000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/a45c2224-17a7-4269-ea7e-3924e9755800/logo\",\n },\n {\n name: \"Carmine\",\n symbol: \"CRM\",\n decimals: 18,\n l2_token_address:\n \"0x51c4b1fe3bf6774b87ad0b15ef5d1472759076e42944fff9b9f641ff13e5bbe\",\n sort_order: 1,\n total_supply: 100000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6ab817f1-8075-4a94-6e14-f112f1f89d00/logo\",\n },\n {\n name: \"Cash\",\n symbol: \"CASH\",\n decimals: 18,\n l2_token_address:\n \"0x498edfaf50ca5855666a700c25dd629d577eb9afccdf3b5977aec79aee55ada\",\n sort_order: 3,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6bd6d156-f509-4b51-5dfc-3ee566143600/logo\",\n },\n {\n name: \"Lords\",\n symbol: \"LORDS\",\n decimals: 18,\n l2_token_address:\n \"0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49\",\n sort_order: 1,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/coin.png\",\n },\n {\n name: \"Ancien Fragments\",\n symbol: \"ANCIENT_FRAGMENT\",\n decimals: 18,\n l2_token_address:\n \"0x0695b08ecdfdd828c2e6267da62f59e6d7543e690ef56a484df25c8566b332a5\",\n sort_order: 2,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/29.png\",\n },\n {\n name: \"Knight\",\n symbol: \"KNIGHT\",\n decimals: 18,\n l2_token_address:\n \"0x00ac965f9e67164723c16735a9da8dbc9eb8e43b1bd0323591e87c056badf606\",\n sort_order: 3,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/icons/250.png\",\n },\n {\n name: \"Crossbowman\",\n symbol: \"CROSSBOWMAN\",\n decimals: 18,\n l2_token_address:\n \"0x067e4ac00a241be06ba6afc11fa2715ec7da0c42c05a67ef6ecfcfeda725aaa8\",\n sort_order: 4,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/icons/251.png\",\n },\n {\n name: \"Paladin\",\n symbol: \"PALADIN\",\n decimals: 18,\n l2_token_address:\n \"0x03bc86299bee061c7c8d7546ccb62b9daf9bffc653b1508facb722c6593874bc\",\n sort_order: 5,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/icons/252.png\",\n },\n {\n name: \"Donkey\",\n symbol: \"DONKEY\",\n decimals: 18,\n l2_token_address:\n \"0x0264be95a4a2ace20add68cb321acdccd2f9f8440ee1c7abd85da44ddab01085\",\n sort_order: 6,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/buildings/thumb/trade.png\",\n },\n {\n name: \"Wheat\",\n symbol: \"WHEAT\",\n decimals: 18,\n l2_token_address:\n \"0x057a3f1ee475e072ce3be41785c0e889b7295d7a0dcc22b992c5b9408dbeb280\",\n sort_order: 7,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/254.png\",\n },\n {\n name: \"Fish\",\n symbol: \"FISH\",\n decimals: 18,\n l2_token_address:\n \"0x027719173cfe10f1aa38d2aaed0a075b6077290f1e817aa3485d2b828394f4d9\",\n sort_order: 8,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/255.png\",\n },\n {\n name: \"Wood\",\n symbol: \"WOOD\",\n decimals: 18,\n l2_token_address:\n \"0x040d8907cec0f7ae9c364dfb12485a1314d84c129bf1898d2f3d4b7fcc7d44f4\",\n sort_order: 9,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/1.png\",\n },\n {\n name: \"Stone\",\n symbol: \"STONE\",\n decimals: 18,\n l2_token_address:\n \"0x0439a1c010e3e1bb2d43d43411000893c0042bd88f6c701611a0ea914d426da4\",\n sort_order: 10,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/2.png\",\n },\n {\n name: \"Coal\",\n symbol: \"COAL\",\n decimals: 18,\n l2_token_address:\n \"0x00ce635e3f241b0ae78c46a929d84a9101910188f9c4024eaa7559556503c31a\",\n sort_order: 11,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/3.png\",\n },\n {\n name: \"Copper\",\n symbol: \"COPPER\",\n decimals: 18,\n l2_token_address:\n \"0x066ed5c928ee027a9419ace1cbea8389885161db5572a7c5c4fef2310e9bf494\",\n sort_order: 12,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/4.png\",\n },\n {\n name: \"Obsidian\",\n symbol: \"OBSIDIAN\",\n decimals: 18,\n l2_token_address:\n \"0x03b6448d09dcd023507376402686261f5d6739455fa02f804907b066e488da66\",\n sort_order: 13,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/5.png\",\n },\n {\n name: \"Silver\",\n symbol: \"SILVER\",\n decimals: 18,\n l2_token_address:\n \"0x06fe21d2d4a8a05bdb70f09c9250af9870020d5dcc35f410b4a39d6605c3e353\",\n sort_order: 14,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/6.png\",\n },\n {\n name: \"Ironwood\",\n symbol: \"IRONWOOD\",\n decimals: 18,\n l2_token_address:\n \"0x01720cf6318bff45e62acc588680ae3cd4d5f8465b1d52cb710533c9299b031a\",\n sort_order: 15,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/7.png\",\n },\n {\n name: \"Cold Iron\",\n symbol: \"COLDIRON\",\n decimals: 18,\n l2_token_address:\n \"0x0555d713e59d4ff96b7960447e9bc9e79bfdeab5b0eea74e3df81bce61cfbc77\",\n sort_order: 16,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/8.png\",\n },\n {\n name: \"Gold\",\n symbol: \"GOLD\",\n decimals: 18,\n l2_token_address:\n \"0x000dff9dca192609c4e86ab3be22c7ec1e968876c992d21986f3c542be97fa2f\",\n sort_order: 17,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/9.png\",\n },\n {\n name: \"Hartwood\",\n symbol: \"HARTWOOD\",\n decimals: 18,\n l2_token_address:\n \"0x05620aa7170cd66dbcbc37d03087bfe4633ffef91d3e4d97b501de906004f79b\",\n sort_order: 18,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/10.png\",\n },\n {\n name: \"Diamonds\",\n symbol: \"DIAMONDS\",\n decimals: 18,\n l2_token_address:\n \"0x00e03ea8ae385f64754820af5c01c36abf1b8130dd6797d3fd9d430e4114e876\",\n sort_order: 19,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/11.png\",\n },\n {\n name: \"Sapphire\",\n symbol: \"SAPPHIRE\",\n decimals: 18,\n l2_token_address:\n \"0x02f8dd022568af8f9f718aa37707a9b858529db56910633a160456838b6cbcbc\",\n sort_order: 20,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/12.png\",\n },\n {\n name: \"Ruby\",\n symbol: \"RUBY\",\n decimals: 18,\n l2_token_address:\n \"0x03d9b66720959d0e7687b898292c10e62e78626f2dba5e1909961a2ce3f86612\",\n sort_order: 21,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/13.png\",\n },\n {\n name: \"Deep Crystal\",\n symbol: \"DEEPCRYSTAL\",\n decimals: 18,\n l2_token_address:\n \"0x01d655ac834d38df7921074fc1588411e202b1af83307cbd996983aff52db3a8\",\n sort_order: 22,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/14.png\",\n },\n {\n name: \"Ignium\",\n symbol: \"IGNIUM\",\n decimals: 18,\n l2_token_address:\n \"0x0625c1f789b03ebebc7a9322366f38ebad1f693b84b2abd8cb8f5b2748b0cdd5\",\n sort_order: 23,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/15.png\",\n },\n {\n name: \"Ethereal Silica\",\n symbol: \"ETHEREALSILICA\",\n decimals: 18,\n l2_token_address:\n \"0x068b6e23cbbd58a644700f55e96c83580921e9f521b6e5175396b53ba7910e7d\",\n sort_order: 24,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/16.png\",\n },\n {\n name: \"True Ice\",\n symbol: \"TRUEICE\",\n decimals: 18,\n l2_token_address:\n \"0x04485f5a6e16562e1c761cd348e63256d00389e3ddf4f5d98afe7ab44c57c481\",\n sort_order: 25,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/17.png\",\n },\n {\n name: \"Twilight Quartz\",\n symbol: \"TWILIGHTQUARTZ\",\n decimals: 18,\n l2_token_address:\n \"0x035e24c02409c3cfe8d5646399a62c4d102bb782938d5f5180e92c9c62d3faf7\",\n sort_order: 26,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/18.png\",\n },\n {\n name: \"Alchemical Silver\",\n symbol: \"ALCHEMICALSILVER\",\n decimals: 18,\n l2_token_address:\n \"0x03956a5301e99522038a2e7dcb9c2a89bf087ffa79310ee0a508b5538efd8ddd\",\n sort_order: 27,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/19.png\",\n },\n {\n name: \"Adamantine\",\n symbol: \"ADAMANTINE\",\n decimals: 18,\n l2_token_address:\n \"0x0367f838f85a2f5e1580d6f011e4476f581083314cff8721ba3dda9706076eed\",\n sort_order: 28,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/20.png\",\n },\n {\n name: \"Mithral\",\n symbol: \"MITHRAL\",\n decimals: 18,\n l2_token_address:\n \"0x0067ba235c569c23877064b2ac6ebd4d79f32d3c00f5fab8e28a3b5700b957f6\",\n sort_order: 29,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/21.png\",\n },\n {\n name: \"Dragon Hide\",\n symbol: \"DRAGONHIDE\",\n decimals: 18,\n l2_token_address:\n \"0x03bf856515bece3c93f5061b7941b8645f817a0acab93c758b8c7b4bc0afa3c6\",\n sort_order: 30,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/22.png\",\n },\n {\n name: \"Demon Hide\",\n symbol: \"DEMONHIDE\",\n decimals: 18,\n l2_token_address:\n \"0x03b847fbef9d344ba968edc945100e6ab0258a4b1b91f8665f85a3d814c3e4d4\",\n sort_order: 31,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/22.png\",\n },\n];\n","import { configs } from \"./generated/controller-configs\";\nimport { TypedData } from \"@starknet-io/types-js\";\nimport { metadata } from \"./generated/erc20-metadata\";\n\nexport const controllerConfigs = configs;\nexport const erc20Metadata = metadata;\nexport const defaultTheme = configs[\"cartridge\"].theme!;\n\nexport type EkuboERC20Metadata = {\n name: string;\n symbol: string;\n decimals: number;\n l2_token_address: string;\n sort_order: number;\n total_supply: number | null;\n logo_url?: string;\n hidden?: boolean;\n disabled?: boolean;\n};\n\nexport type Policy = CallPolicy | TypedDataPolicy;\n\nexport type CallPolicy = {\n target: string;\n method: string;\n description?: string;\n};\n\nexport type TypedDataPolicy = Omit<TypedData, \"message\">;\n\nexport type Policies = Policy[] | SessionPolicies;\n\nexport type SessionPolicies = {\n /** The key must be the contract address */\n contracts?: ContractPolicies;\n messages?: SignMessagePolicy[];\n};\n\nexport type ContractPolicies = Record<string, ContractPolicy>;\n\nexport type ContractPolicy = {\n name?: string;\n description?: string;\n methods: Method[];\n};\n\nexport type Method = {\n name?: string;\n description?: string;\n entrypoint: string;\n};\n\nexport type SignMessagePolicy = TypedDataPolicy & {\n name?: string;\n description?: string;\n};\n\nexport type ControllerConfig = {\n origin: string | string[];\n policies?: SessionPolicies;\n theme?: ControllerTheme;\n};\n\nexport type ControllerConfigs = Record<string, ControllerConfig>;\n\nexport type ColorMode = \"light\" | \"dark\";\n\nexport type ControllerTheme = {\n name: string;\n icon: string;\n cover: ThemeValue<string>;\n colors?: ControllerColors;\n};\n\nexport type ControllerColors = {\n primary?: ControllerColor;\n primaryForeground?: ControllerColor;\n};\n\nexport type ControllerColor = ThemeValue<string>;\n\nexport type ThemeValue<T> = T | { dark: T; light: T };\n"]}