@cartridge/controller 0.7.7 → 0.7.8
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/.turbo/turbo-build$colon$deps.log +23 -23
- package/.turbo/turbo-build.log +31 -31
- package/dist/controller.cjs +472 -3
- package/dist/controller.cjs.map +1 -1
- package/dist/controller.d.cts +1 -1
- package/dist/controller.d.ts +1 -1
- package/dist/controller.js +472 -3
- package/dist/controller.js.map +1 -1
- package/dist/index.cjs +1908 -1214
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +46 -3
- package/dist/index.d.ts +46 -3
- package/dist/index.js +1905 -1215
- package/dist/index.js.map +1 -1
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +2 -2
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.js +1 -1
- package/dist/node/index.js.map +1 -1
- package/dist/{provider-CTDncg8U.d.cts → provider-BeCgS86X.d.cts} +64 -1
- package/dist/{provider-CTDncg8U.d.ts → provider-BeCgS86X.d.ts} +64 -1
- package/dist/session/index.cjs +1 -1
- package/dist/session/index.cjs.map +1 -1
- package/dist/session/index.d.cts +2 -2
- package/dist/session/index.d.ts +2 -2
- package/dist/session/index.js +1 -1
- package/dist/session/index.js.map +1 -1
- package/package.json +8 -5
- package/src/iframe/base.ts +1 -1
- package/src/iframe/keychain.ts +11 -0
- package/src/index.ts +1 -0
- package/src/types.ts +24 -0
- package/src/wallets/argent/index.ts +122 -0
- package/src/wallets/bridge.ts +165 -0
- package/src/wallets/index.ts +5 -0
- package/src/wallets/metamask/index.ts +210 -0
- package/src/wallets/phantom/index.ts +124 -0
- package/src/wallets/types.ts +32 -0
package/dist/index.cjs.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+420887d/node_modules/@cartridge/presets/src/generated/controller-configs.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+420887d/node_modules/@cartridge/presets/src/generated/erc20-metadata.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+420887d/node_modules/@cartridge/presets/src/index.ts"],"names":["ResponseCodes","addAddressPadding","CallData","getChecksumAddress","typedData","TypedDataRevision","hash","constants","shortString","Provider","WalletAccount","connectToChild","existingController","Permission","params","call","chain","num"],"mappings":"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","file":"index.cjs","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 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 switchChain(rpcUrl: string): Promise<void>;\n}\n\nexport interface Modal {\n open: () => void;\n close: () => void;\n}\n\n/**\n * Options for configuring the controller\n */\nexport type ControllerOptions = ProviderOptions &\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 /** The policies to use for the profile */\n policies?: SessionPolicies;\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 Provider,\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\nconst LOCAL_HOSTNAMES = [\"localhost\", \"127.0.0.1\", \"0.0.0.0\"];\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 async function parseChainId(url: URL): Promise<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 if (LOCAL_HOSTNAMES.includes(url.hostname)) {\n const provider = new Provider({\n nodeUrl: url.toString(),\n });\n return await provider.getChainId();\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 (\n this.options?.propagateSessionErrors &&\n sessionExecute.code !== ResponseCodes.USER_INTERACTION_REQUIRED\n ) {\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 policies,\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 if (policies?.contracts) {\n const methods = Object.values(policies.contracts).flatMap(\n (contract) => contract.methods,\n );\n _url.searchParams.set(\n \"methods\",\n encodeURIComponent(JSON.stringify(methods)),\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.7\",\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 { shortString, 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 this.selectedChain = options.defaultChainId;\n this.chains = new Map<ChainId, Chain>();\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 this.validateChains(options.chains);\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 await this.profile?.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 const chain = this.chains.get(this.selectedChain);\n if (!chain) {\n const availableChains = Array.from(this.chains.keys()).map((chain) =>\n shortString.decodeShortString(chain),\n );\n throw new Error(\n `Chain not found: ${shortString.decodeShortString(this.selectedChain)}. Available chains: ${availableChains.join(\", \")}`,\n );\n }\n return chain.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 async validateChains(chains: Chain[]) {\n for (const chain of chains) {\n try {\n const url = new URL(chain.rpcUrl);\n const chainId = await parseChainId(url);\n this.chains.set(chainId, chain);\n } catch (error) {\n console.error(`Failed to parse chainId for ${chain.rpcUrl}:`, error);\n }\n }\n\n if (!this.chains.has(this.selectedChain)) {\n console.warn(\n `Selected chain ${this.selectedChain} not found in configured chains. ` +\n `Available chains: ${Array.from(this.chains.keys()).join(\", \")}`,\n );\n }\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 budokan: {\n origin: \"budokan.gg\",\n policies: {\n contracts: {\n \"0x0530d9693304c79b5b506aa2fa09c27681373d71b69a839378ff5fd108aa5fc6\": {\n name: \"Budokan\",\n methods: [\n {\n entrypoint: \"create_tournament\",\n },\n {\n entrypoint: \"enter_tournament\",\n },\n {\n entrypoint: \"submit_score\",\n },\n {\n entrypoint: \"claim_prize\",\n },\n {\n entrypoint: \"add_prize\",\n },\n {\n entrypoint: \"register_token\",\n },\n ],\n },\n },\n },\n theme: {\n colors: {\n primary: \"#B1B97A\",\n },\n cover: \"https://static.cartridge.gg/presets/budokan/cover.png\",\n icon: \"https://static.cartridge.gg/presets/budokan/icon.png\",\n name: \"Budokan\",\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\", \"darkshuffle.dev\"],\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 policies: {\n contracts: {\n \"0x020fc3c9efd0dde5f53642dac7f53638aeaae98ff9af5f1642546f389ce9dec5\": {\n name: \"game_systems\",\n methods: [\n {\n entrypoint: \"mint\",\n },\n {\n entrypoint: \"start_game\",\n },\n ],\n },\n \"0x036d27fb8604302b7e4f747a73a84b7c9ae9106f3c5f65e51e934fac9f7c753f\": {\n name: \"battle_systems\",\n methods: [\n {\n entrypoint: \"battle_actions\",\n },\n ],\n },\n \"0x046f9c2f2f3144059f7332bd989151f782f462f4ea6e3755c2f7b3eac49be73d\": {\n name: \"draft_systems\",\n methods: [\n {\n entrypoint: \"pick_card\",\n },\n ],\n },\n \"0x045543452215a2b416d8c52e5a475e7e0eed2e7cbaf5a699ae5fc0599f4afae9\": {\n name: \"map_systems\",\n methods: [\n {\n entrypoint: \"generate_tree\",\n },\n {\n entrypoint: \"select_node\",\n },\n ],\n },\n \"0x0530d9693304c79b5b506aa2fa09c27681373d71b69a839378ff5fd108aa5fc6\": {\n name: \"tournament_component\",\n methods: [\n {\n entrypoint: \"enter_tournament\",\n },\n ],\n },\n },\n },\n },\n dominion: {\n origin: \"https://dominion.fun\",\n theme: {\n colors: {\n primary: \"#19cfff\",\n },\n cover: \"https://static.cartridge.gg/presets/dominion/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dominion/icon.svg\",\n name: \"Dominion\",\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 policies: {\n contracts: {\n \"0x62525c1337037a6a50a61f12045630a271758a350e57616e79a6ed14004ce74\": {\n name: \"Achievement Systems\",\n description: \"Allows you to interact with achievement features.\",\n methods: [\n {\n name: \"Claim Achievement Reward\",\n description: \"A method to claim your achievement reward.\",\n entrypoint: \"claim_achievement_reward\",\n },\n ],\n },\n \"0xa5a3284a1e3ce9887b50876acee14a1af9705659b3ad053deff80d84c5555a\": {\n name: \"Dragon Systems\",\n description: \"Allows you to interact with dragon features.\",\n methods: [\n {\n name: \"Activate Dragon\",\n description:\n \"A method to activate the Dragark NFT into the game.\",\n entrypoint: \"activate_dragon\",\n },\n {\n name: \"Deactivate Dragon\",\n description:\n \"A method to deactivate Dragark NFT out of the game.\",\n entrypoint: \"deactivate_dragon\",\n },\n {\n name: \"Claim Default Dragon\",\n description: \"A method to claim the default Dragark.\",\n entrypoint: \"claim_default_dragon\",\n },\n {\n name: \"Upgrade Dragon\",\n description: \"A method to upgrade the Dragark's level.\",\n entrypoint: \"upgrade_dragon\",\n },\n ],\n },\n \"0x456e9a70c1a8ce2e340592d1a885f2ac152349d785a6aef4d640d9a09f9a1bd\": {\n name: \"Island Systems\",\n description: \"Allows you to interact with island features.\",\n methods: [\n {\n name: \"Claim Resources\",\n description: \"A method to claim the island's rescources.\",\n entrypoint: \"claim_resources\",\n },\n {\n name: \"Claim Resources Islands\",\n description: \"A method to claim rescources on multiple islands.\",\n entrypoint: \"claim_resources_islands\",\n },\n ],\n },\n \"0x2f77a88ac64fd1473ea067ea176ae3805224a2ba5173c63c77d0f214c01ac5d\": {\n name: \"Journey Systems\",\n description: \"Allows you to interact with journey features.\",\n methods: [\n {\n name: \"Start Journey\",\n description: \"A method to start a new journey to other island.\",\n entrypoint: \"start_journey\",\n },\n {\n name: \"Finish Journey\",\n description: \"A method to finish a started journey.\",\n entrypoint: \"finish_journey\",\n },\n ],\n },\n \"0x1ca130b614f063a24dafad53db11cbb914fa7cff2eac23df1c32f5ff71a8ec2\": {\n name: \"Map Systems\",\n description: \"Allows you to interact with map features.\",\n methods: [\n {\n name: \"Join Map\",\n description: \"A method to join the map.\",\n entrypoint: \"join_map\",\n },\n {\n name: \"Rejoin Map\",\n description: \"A method to rejoin the map.\",\n entrypoint: \"re_join_map\",\n },\n ],\n },\n \"0x272741bbe4abc02c8be4b094ca642e1df573e99e06f85f649bc35dd26ae4543\": {\n name: \"Mission Systems\",\n description: \"Allows you to interact with mission features.\",\n methods: [\n {\n name: \"Claim Mission Reward\",\n description: \"A method to claim your mission reward.\",\n entrypoint: \"claim_mission_reward\",\n },\n ],\n },\n \"0x54ad7af1fc62a786c9023d9f3ef8e8abf8cf332649b784188c1b25d2cb384b2\": {\n name: \"Player Systems\",\n description: \"Allows you to interact with player features.\",\n methods: [\n {\n name: \"Buy Energy\",\n description: \"A method to buy energy used in scouting the map.\",\n entrypoint: \"buy_energy\",\n },\n {\n name: \"Claim Reward\",\n description: \"A method to claim your reward.\",\n entrypoint: \"claim_reward\",\n },\n {\n name: \"Upgrade Account Level\",\n description: \"A method to upgrade your account level.\",\n entrypoint: \"upgrade_account_level\",\n },\n {\n name: \"Upgrade Invitation Level\",\n description: \"A method to upgrade your invitation level.\",\n entrypoint: \"upgrade_invitation_level\",\n },\n {\n name: \"Redeem Invite Code\",\n description: \"A method to redeem invite code.\",\n entrypoint: \"redeem_invite_code\",\n },\n {\n name: \"Buy Resources Pack\",\n description: \"A method to buy resources pack.\",\n entrypoint: \"buy_resources_pack\",\n },\n {\n name: \"Activate Element NFT\",\n description:\n \"A method to activate the Element NFT into the game.\",\n entrypoint: \"activate_element_nft\",\n },\n {\n name: \"Claim Pool Share Reward\",\n description: \"A method to claim your Pool Share reward.\",\n entrypoint: \"claim_pool_share_reward\",\n },\n ],\n },\n \"0x68717880bd76fda6790e895e937e2c638213e7b9aa07385231bbf17dfe8a78c\": {\n name: \"Scout Systems\",\n description: \"Allows you to interact with scout features.\",\n methods: [\n {\n name: \"Scout\",\n description: \"A method to scout the map.\",\n entrypoint: \"scout\",\n },\n ],\n },\n \"0x14705481d28fab7bb37d6cb19d3392d39f838a1d5572b8c8f18e85e0c4b8918\": {\n name: \"Shield Systems\",\n description: \"Allows you to interact with shield features.\",\n methods: [\n {\n name: \"Activate Shield\",\n description:\n \"A method to activate a shield to protect your island.\",\n entrypoint: \"activate_shield\",\n },\n {\n name: \"Deactivate Shield\",\n description: \"A method to deactivate a shield from your island.\",\n entrypoint: \"deactivate_shield\",\n },\n {\n name: \"Buy Shield\",\n description: \"A method to buy a shield.\",\n entrypoint: \"buy_shield\",\n },\n ],\n },\n \"0x23d6a41c06e2d7b60437ba4da3eca857cf9a0b94f3548396829365a0a299c63\": {\n name: \"Star Shop Systems\",\n description: \"Allows you to interact with star shop features.\",\n methods: [\n {\n name: \"Buy Item Star Shop\",\n description: \"A method to buy item from the Star Shop.\",\n entrypoint: \"buy_item_star_shop\",\n },\n ],\n },\n \"0x511a78a1c4b33bedc4ff7d9b37eb7481bcdff77c5c2cb6f67390d43657749d0\": {\n name: \"Treasure Hunt Systems\",\n description: \"Allows you to interact with treasure hunt features.\",\n methods: [\n {\n name: \"Insert Dragon Treasure Hunt\",\n description:\n \"A method to insert your Dragarks to start a new treasure hunt.\",\n entrypoint: \"insert_dragon_treasure_hunt\",\n },\n {\n name: \"End Treasure Hunt\",\n description:\n \"A method to end an existing treasure hunt and claim rewards.\",\n entrypoint: \"end_treasure_hunt\",\n },\n ],\n },\n },\n },\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 nums: {\n origin: [\"nums.gg\", \"www.nums.gg\"],\n policies: {\n contracts: {\n \"0x07ccfbc43c109efd466638defa52702382ace922051d35a0554b5ccd02a8f155\": {\n name: \"Game Actions\",\n methods: [\n {\n name: \"Create Game\",\n entrypoint: \"create_game\",\n description: \"Creates a new game\",\n },\n {\n name: \"Set Slot\",\n entrypoint: \"set_slot\",\n description: \"Sets one slot for the game\",\n },\n ],\n },\n \"0x00ea44dd8e971d3af9f99568577bf14b0a80a7f7763fa6281840ab68a8a53ba9\": {\n name: \"Claim Actions\",\n methods: [\n {\n name: \"Claim Appchain Reward\",\n entrypoint: \"claim_reward\",\n description: \"Claims token rewards on Appchain\",\n },\n ],\n },\n \"0x03ee42961dc151d740df95c44b929abe85cf66e8444e0279252dd99b055c64b0\": {\n name: \"Rewards Claim\",\n methods: [\n {\n name: \"Consume Reward on Starknet\",\n entrypoint: \"consume_claim_reward\",\n description: \"Consumes a claim reward message on Starknet\",\n },\n ],\n },\n \"0x7ed472bdde3b19a5cf2334ad0f368426272f477938270b1b04259f159bdc0e2\": {\n name: \"VRF Provider\",\n methods: [\n {\n name: \"Request Random\",\n entrypoint: \"request_random\",\n description: \"Requests a random number from the VRF contract\",\n },\n ],\n },\n \"0x4d776373427434a22f7d60d0f7fe0e336fd830edf4294acec33d9f2e1275327\": {\n name: \"Social\",\n description: \"Social contract to manage your social activities\",\n methods: [\n {\n name: \"pin\",\n entrypoint: \"pin\",\n description: \"Pin an achievement.\",\n },\n {\n name: \"unpin\",\n entrypoint: \"unpin\",\n description: \"Unpin an achievement.\",\n },\n ],\n },\n },\n },\n theme: {\n colors: {\n primary: \"#9E84E9\",\n },\n cover: \"https://static.cartridge.gg/presets/nums/cover.png\",\n icon: \"https://static.cartridge.gg/presets/nums/icon.png\",\n name: \"Nums\",\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: [\n \"pistols.underware.gg\",\n \"pistols.stage.underware.gg\",\n \"play.pistols.gg\",\n ],\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 Dawn\",\n },\n policies: {\n contracts: {\n \"0x01445d46f1ba32c4f91eb61e161ffcb7ce70598649ad72e5405eaee5a2afba71\": {\n name: \"Game\",\n description: \"Game loop contract\",\n methods: [\n {\n entrypoint: \"commit_moves\",\n },\n {\n entrypoint: \"reveal_moves\",\n },\n {\n entrypoint: \"collect\",\n },\n ],\n },\n \"0x042b5966ef49614c78ca1577f617634ff3dbfee1cb811f1386cd9518b2cedd9e\": {\n name: \"Tutorial\",\n description: \"Tutorial game contract\",\n methods: [\n {\n entrypoint: \"create_tutorial\",\n },\n {\n entrypoint: \"commit_moves\",\n },\n {\n entrypoint: \"reveal_moves\",\n },\n ],\n },\n \"0x05f3df8d2895ab76f21f13114ee33292356a009900ed32e2ab5f280ac932546a\": {\n name: \"Pack token\",\n description: \"Packs ERC721 contract\",\n methods: [\n {\n entrypoint: \"claim_welcome_pack\",\n },\n {\n entrypoint: \"purchase\",\n },\n {\n entrypoint: \"open\",\n },\n ],\n },\n \"0x06afa7f3d4ddce0426572b0c2a91df17399997e2f44cc3586535ae9639939e67\": {\n name: \"Duel token\",\n description: \"Duel ERC721 contract\",\n methods: [\n {\n entrypoint: \"create_duel\",\n },\n {\n entrypoint: \"reply_duel\",\n },\n {\n entrypoint: \"transfer_to_winner\",\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 \"pistols-PlayerOnline\": [\n {\n name: \"identity\",\n type: \"ContractAddress\",\n },\n {\n name: \"timestamp\",\n type: \"felt\",\n },\n ],\n },\n primaryType: \"pistols-PlayerOnline\",\n domain: {\n name: \"Underware_gg\",\n version: \"1.0.0\",\n chainId: \"SN_MAIN\",\n revision: \"1\",\n },\n name: \"PlayerOnline\",\n description: \"Notify the server that a player is online\",\n },\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 \"pistols-PlayerBookmark\": [\n {\n name: \"identity\",\n type: \"ContractAddress\",\n },\n {\n name: \"target_address\",\n type: \"ContractAddress\",\n },\n {\n name: \"target_id\",\n type: \"u128\",\n },\n {\n name: \"enabled\",\n type: \"bool\",\n },\n ],\n },\n primaryType: \"pistols-PlayerBookmark\",\n domain: {\n name: \"Underware_gg\",\n version: \"1.0.0\",\n chainId: \"SN_MAIN\",\n revision: \"1\",\n },\n name: \"PlayerBookmark\",\n description:\n \"Notify the server that a player follows another player or token\",\n },\n ],\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 type { TypedData } from \"@starknet-io/types-js\";\nimport { configs } from \"./generated/controller-configs\";\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 * Whether the method is togglable by the user.\n * If true, user can't toggle the method.\n * @default false\n */\n isRequired?: boolean | false;\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/wallets/metamask/index.ts","../src/wallets/phantom/index.ts","../src/wallets/argent/index.ts","../src/wallets/bridge.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+b7d379e/node_modules/@cartridge/presets/src/generated/controller-configs.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+b7d379e/node_modules/@cartridge/presets/src/generated/erc20-metadata.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+b7d379e/node_modules/@cartridge/presets/src/index.ts"],"names":["ResponseCodes","addAddressPadding","CallData","getChecksumAddress","typedData","TypedDataRevision","hash","constants","shortString","Provider","WalletAccount","connectToChild","existingController","MetaMaskSDK","connect","InjectedConnector","wallet","Permission","params","call","chain","num"],"mappings":"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","file":"index.cjs","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\";\nimport {\n ExternalWallet,\n ExternalWalletResponse,\n ExternalWalletType,\n} from \"./wallets/types\";\n\nexport type Session = {\n chainId: constants.StarknetChainId;\n policies: Policy[];\n maxFee: BigNumberish;\n expiresAt: bigint;\n credentials: {\n authorization: string[];\n privateKey: string;\n };\n};\n\nexport 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 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 // External wallet methods\n externalDetectWallets(): Promise<ExternalWallet[]>;\n externalConnectWallet(\n type: ExternalWalletType,\n ): Promise<ExternalWalletResponse>;\n externalSignMessage(\n type: ExternalWalletType,\n message: string,\n ): Promise<ExternalWalletResponse>;\n externalSignTypedData(\n type: ExternalWalletType,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any,\n ): Promise<ExternalWalletResponse>;\n externalGetBalance(\n type: ExternalWalletType,\n tokenAddress?: string,\n ): Promise<ExternalWalletResponse>;\n}\n\nexport interface Profile {\n navigate(path: string): void;\n switchChain(rpcUrl: string): Promise<void>;\n}\n\nexport interface Modal {\n open: () => void;\n close: () => void;\n}\n\n/**\n * Options for configuring the controller\n */\nexport type ControllerOptions = ProviderOptions &\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 /** The policies to use for the profile */\n policies?: SessionPolicies;\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 Provider,\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\nconst LOCAL_HOSTNAMES = [\"localhost\", \"127.0.0.1\", \"0.0.0.0\"];\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 async function parseChainId(url: URL): Promise<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 if (LOCAL_HOSTNAMES.includes(url.hostname)) {\n const provider = new Provider({\n nodeUrl: url.toString(),\n });\n return await provider.getChainId();\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 (\n this.options?.propagateSessionErrors &&\n sessionExecute.code !== ResponseCodes.USER_INTERACTION_REQUIRED\n ) {\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: (_origin: string) => () => 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 {\n WalletAdapter,\n ExternalWallet,\n ExternalWalletResponse,\n ExternalWalletType,\n ExternalPlatform,\n} from \"../types\";\nimport { MetaMaskSDK } from \"@metamask/sdk\";\n\nexport class MetaMaskWallet implements WalletAdapter {\n readonly type: ExternalWalletType = \"metamask\";\n readonly platform: ExternalPlatform = \"ethereum\";\n private MMSDK: MetaMaskSDK;\n private account: string | undefined = undefined;\n\n constructor() {\n this.MMSDK = new MetaMaskSDK({\n dappMetadata: {\n name: \"Cartridge Controller\",\n url: window.location.href,\n },\n });\n }\n\n isAvailable(): boolean {\n return typeof window !== \"undefined\" && !!window.ethereum?.isMetaMask;\n }\n\n getInfo(): ExternalWallet {\n const available = this.isAvailable();\n\n return {\n type: this.type,\n available,\n version: available ? window.ethereum?.version || \"Unknown\" : undefined,\n chainId: available ? window.ethereum?.chainId : undefined,\n name: \"MetaMask\",\n platform: this.platform,\n };\n }\n\n async connect(): Promise<ExternalWalletResponse<any>> {\n if (this.account) {\n return { success: true, wallet: this.type, account: this.account };\n }\n\n try {\n if (!this.isAvailable()) {\n throw new Error(\"MetaMask is not available\");\n }\n\n const accounts = await this.MMSDK.connect();\n if (accounts && accounts.length > 0) {\n this.account = accounts[0];\n return { success: true, wallet: this.type, account: this.account };\n }\n\n throw new Error(\"No accounts found\");\n } catch (error) {\n console.error(`Error connecting to MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signTransaction(\n transaction: any,\n ): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const ethereum = this.MMSDK.getProvider();\n if (!ethereum) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const result = await ethereum.request({\n method: \"eth_sendTransaction\",\n params: [transaction],\n });\n\n return { success: true, wallet: this.type, result };\n } catch (error) {\n console.error(`Error signing transaction with MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signMessage(message: string): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const result = await this.MMSDK.connectAndSign({\n msg: message,\n });\n\n return { success: true, wallet: this.type, result };\n } catch (error) {\n console.error(`Error signing message with MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signTypedData(data: any): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const ethereum = this.MMSDK.getProvider();\n if (!ethereum) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const result = await ethereum.request({\n method: \"eth_signTypedData_v4\",\n params: [this.account, JSON.stringify(data)],\n });\n\n return { success: true, wallet: this.type, result };\n } catch (error) {\n console.error(`Error signing typed data with MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async switchChain(chainId: string): Promise<boolean> {\n try {\n if (!this.isAvailable()) {\n throw new Error(\"MetaMask is not available\");\n }\n\n const ethereum = this.MMSDK.getProvider();\n if (!ethereum) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n try {\n await ethereum.request({\n method: \"wallet_switchEthereumChain\",\n params: [{ chainId }],\n });\n return true;\n } catch (error) {\n if ((error as any).code === 4902) {\n console.warn(\"Chain not added to MetaMask\");\n }\n throw error;\n }\n } catch (error) {\n console.error(`Error switching chain for MetaMask:`, error);\n return false;\n }\n }\n\n async getBalance(\n tokenAddress?: string,\n ): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n if (tokenAddress) {\n return {\n success: false,\n wallet: this.type,\n error: \"Not implemented for ERC20\",\n };\n } else {\n const ethereum = this.MMSDK.getProvider();\n if (!ethereum) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const balance = await ethereum.request({\n method: \"eth_getBalance\",\n params: [this.account, \"latest\"],\n });\n return { success: true, wallet: this.type, result: balance };\n }\n } catch (error) {\n console.error(`Error getting balance from MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n}\n","import {\n WalletAdapter,\n ExternalWallet,\n ExternalWalletResponse,\n ExternalWalletType,\n ExternalPlatform,\n} from \"../types\";\n\nexport class PhantomWallet implements WalletAdapter {\n readonly type: ExternalWalletType = \"phantom\";\n readonly platform: ExternalPlatform = \"solana\";\n private account: string | undefined = undefined;\n\n isAvailable(): boolean {\n return typeof window !== \"undefined\" && !!window.solana?.isPhantom;\n }\n\n getInfo(): ExternalWallet {\n const available = this.isAvailable();\n\n return {\n type: this.type,\n available,\n version: \"Unknown\",\n name: \"Phantom\",\n platform: this.platform,\n };\n }\n\n async connect(): Promise<ExternalWalletResponse<any>> {\n if (this.account) {\n return { success: true, wallet: this.type, account: this.account };\n }\n\n try {\n if (!this.isAvailable()) {\n throw new Error(\"Phantom is not available\");\n }\n\n const response = await window.solana.connect();\n if (response.publicKey) {\n this.account = response.publicKey.toString();\n return { success: true, wallet: this.type, account: this.account };\n }\n\n throw new Error(\"No accounts found\");\n } catch (error) {\n console.error(`Error connecting to Phantom:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signTransaction(\n transaction: any,\n ): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"Phantom is not connected\");\n }\n\n const result = await window.solana.signTransaction(transaction);\n return { success: true, wallet: this.type, result };\n } catch (error) {\n console.error(`Error signing transaction with Phantom:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signMessage(message: string): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"Phantom is not connected\");\n }\n\n const encodedMessage = new TextEncoder().encode(message);\n const result = await window.solana.signMessage(encodedMessage, \"utf8\");\n return { success: true, wallet: this.type, result };\n } catch (error) {\n console.error(`Error signing message with Phantom:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async switchChain(_chainId: string): Promise<boolean> {\n console.warn(\"Chain switching not supported for Phantom\");\n return false;\n }\n\n async getBalance(\n _tokenAddress?: string,\n ): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"Phantom is not connected\");\n }\n\n // TODO: Implement balance fetching based on Phantom's API\n return {\n success: true,\n wallet: this.type,\n result: \"Implement based on Phantom API\",\n };\n } catch (error) {\n console.error(`Error getting balance from Phantom:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n}\n","import {\n WalletAdapter,\n ExternalWallet,\n ExternalWalletResponse,\n ExternalWalletType,\n ExternalPlatform,\n} from \"../types\";\nimport { connect, StarknetWindowObject } from \"starknetkit\";\nimport { InjectedConnector } from \"starknetkit/injected\";\nimport { TypedData } from \"@starknet-io/types-js\";\n\nexport class ArgentWallet implements WalletAdapter {\n readonly type: ExternalWalletType = \"argent\";\n readonly platform: ExternalPlatform = \"starknet\";\n private wallet: StarknetWindowObject | undefined = undefined;\n private account: string | undefined = undefined;\n\n isAvailable(): boolean {\n return typeof window !== \"undefined\" && !!window.starknet_argentX;\n }\n\n getInfo(): ExternalWallet {\n const available = this.isAvailable();\n\n return {\n type: this.type,\n available,\n version: available\n ? window.starknet_argentX?.version || \"Unknown\"\n : undefined,\n chainId: available ? window.starknet_argentX?.chainId : undefined,\n name: \"Argent\",\n platform: this.platform,\n };\n }\n\n async connect(): Promise<ExternalWalletResponse<any>> {\n if (this.account) {\n return { success: true, wallet: this.type, account: this.account };\n }\n\n try {\n if (!this.isAvailable()) {\n throw new Error(\"Argent is not available\");\n }\n\n const { wallet, connectorData } = await connect({\n connectors: [new InjectedConnector({ options: { id: \"argentX\" } })],\n });\n\n if (!wallet) {\n throw new Error(\"No wallet found\");\n }\n\n this.wallet = wallet;\n this.account = connectorData?.account;\n return { success: true, wallet: this.type, account: this.account };\n } catch (error) {\n console.error(`Error connecting to Argent:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signTypedData(data: TypedData): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.wallet) {\n throw new Error(\"Argent is not connected\");\n }\n\n console.log(\"signTypedData\", data);\n\n const sig = await this.wallet.request({\n type: \"wallet_signTypedData\",\n params: data,\n });\n\n return { success: true, wallet: this.type, result: sig };\n } catch (error) {\n console.error(`Error signing typed data with Argent:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async switchChain(_chainId: string): Promise<boolean> {\n console.warn(\n \"Chain switching for Argent may require custom implementation\",\n );\n return false;\n }\n\n async getBalance(\n _tokenAddress?: string,\n ): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.wallet) {\n throw new Error(\"Argent is not connected\");\n }\n\n // TODO: Implement balance fetching based on Argent's API\n return {\n success: true,\n wallet: this.type,\n result: \"Implement based on Argent API\",\n };\n } catch (error) {\n console.error(`Error getting balance from Argent:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n}\n","import {\n ExternalWalletType,\n WalletAdapter,\n ExternalWallet,\n ExternalWalletResponse,\n} from \"./types\";\nimport { MetaMaskWallet } from \"./metamask\";\nimport { PhantomWallet } from \"./phantom\";\nimport { ArgentWallet } from \"./argent\";\n\nexport class WalletBridge {\n private readonly walletAdapters: Map<ExternalWalletType, WalletAdapter>;\n private readonly connectedWallets: Map<ExternalWalletType, WalletAdapter> =\n new Map();\n\n constructor() {\n this.walletAdapters = new Map<ExternalWalletType, WalletAdapter>();\n this.walletAdapters.set(\"metamask\", new MetaMaskWallet());\n this.walletAdapters.set(\"phantom\", new PhantomWallet());\n this.walletAdapters.set(\"argent\", new ArgentWallet());\n\n if (typeof window !== \"undefined\") {\n window.wallet_bridge = this;\n }\n }\n\n getIFrameMethods() {\n return {\n externalDetectWallets: (_origin: string) => () => this.detectWallets(),\n externalConnectWallet: (_origin: string) => (type: ExternalWalletType) =>\n this.connectWallet(type),\n externalSignMessage:\n (_origin: string) => (type: ExternalWalletType, message: string) =>\n this.signMessage(type, message),\n externalSignTypedData:\n (_origin: string) => (type: ExternalWalletType, data: any) =>\n this.signTypedData(type, data),\n externalGetBalance:\n (_origin: string) =>\n (type: ExternalWalletType, tokenAddress?: string) =>\n this.getBalance(type, tokenAddress),\n };\n }\n\n async detectWallets(): Promise<ExternalWallet[]> {\n const wallets = Array.from(this.walletAdapters.values()).map((adapter) =>\n adapter.getInfo(),\n ) as ExternalWallet[];\n\n return wallets;\n }\n\n private getWalletAdapter(type: ExternalWalletType): WalletAdapter {\n const adapter = this.walletAdapters.get(type);\n if (!adapter) {\n throw new Error(`Unsupported wallet type: ${type}`);\n }\n return adapter;\n }\n\n private handleError(\n type: ExternalWalletType,\n error: unknown,\n operation: string,\n ): ExternalWalletResponse {\n const errorMessage =\n error instanceof Error ? error.message : \"Unknown error\";\n console.error(`Error ${operation} with ${type} wallet:`, error);\n return { success: false, wallet: type, error: errorMessage };\n }\n\n async connectWallet(\n type: ExternalWalletType,\n ): Promise<ExternalWalletResponse> {\n try {\n if (this.connectedWallets.has(type)) {\n const wallet = this.connectedWallets.get(type)!;\n return { success: true, wallet: type, account: wallet.type };\n }\n\n const wallet = this.getWalletAdapter(type);\n const response = await wallet.connect();\n\n if (response.success) {\n this.connectedWallets.set(type, wallet);\n }\n\n return response;\n } catch (error) {\n return this.handleError(type, error, \"connecting to\");\n }\n }\n\n async signMessage(\n type: ExternalWalletType,\n message: string,\n ): Promise<ExternalWalletResponse> {\n try {\n if (!this.connectedWallets.has(type)) {\n throw new Error(`Wallet ${type} is not connected`);\n }\n\n const wallet = this.connectedWallets.get(type)!;\n if (!wallet.signMessage) {\n throw new Error(`Wallet ${type} does not support signing messages`);\n }\n\n return await wallet.signMessage(message);\n } catch (error) {\n return this.handleError(type, error, \"signing message with\");\n }\n }\n\n async signTypedData(\n type: ExternalWalletType,\n data: any,\n ): Promise<ExternalWalletResponse> {\n try {\n if (!this.connectedWallets.has(type)) {\n throw new Error(`Wallet ${type} is not connected`);\n }\n\n const wallet = this.connectedWallets.get(type)!;\n if (!wallet.signTypedData) {\n throw new Error(`Wallet ${type} does not support signing typed data`);\n }\n\n return await wallet.signTypedData(data);\n } catch (error) {\n return this.handleError(type, error, \"signing typed data with\");\n }\n }\n\n async getBalance(\n type: ExternalWalletType,\n tokenAddress?: string,\n ): Promise<ExternalWalletResponse> {\n try {\n if (!this.connectedWallets.has(type)) {\n throw new Error(`Wallet ${type} is not connected`);\n }\n\n const wallet = this.connectedWallets.get(type)!;\n return await wallet.getBalance(tokenAddress);\n } catch (error) {\n return this.handleError(type, error, \"getting balance from\");\n }\n }\n}\n\ndeclare global {\n interface Window {\n ethereum?: any;\n solana?: any;\n starknet_argentX?: any;\n wallet_bridge?: WalletBridge;\n }\n}\n\nexport type {\n ExternalWalletType,\n ExternalWallet,\n ExternalWalletResponse,\n WalletAdapter,\n} from \"./types\";\n","import { KEYCHAIN_URL } from \"../constants\";\nimport { Keychain, KeychainOptions } from \"../types\";\nimport { WalletBridge } from \"../wallets/bridge\";\nimport { IFrame, IFrameOptions } from \"./base\";\n\ntype KeychainIframeOptions = IFrameOptions<Keychain> & KeychainOptions;\n\nexport class KeychainIFrame extends IFrame<Keychain> {\n private walletBridge: WalletBridge;\n\n constructor({ url, policies, ...iframeOptions }: KeychainIframeOptions) {\n const _url = new URL(url ?? KEYCHAIN_URL);\n const walletBridge = new WalletBridge();\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 methods: walletBridge.getIFrameMethods(),\n });\n\n this.walletBridge = walletBridge;\n }\n\n getWalletBridge(): WalletBridge {\n return this.walletBridge;\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 policies,\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 if (policies?.contracts) {\n const methods = Object.values(policies.contracts).flatMap(\n (contract) => contract.methods,\n );\n _url.searchParams.set(\n \"methods\",\n encodeURIComponent(JSON.stringify(methods)),\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.8\",\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 \"@phantom/wallet-sdk\": \"^0.0.23\",\n \"@metamask/sdk\": \"^0.32.1\",\n \"open\": \"^10.1.0\",\n \"starknet\": \"catalog:\",\n \"starknetkit\": \"^2.6.1\"\n },\n \"dependencies\": {\n \"@cartridge/account-wasm\": \"workspace:*\",\n \"@cartridge/penpal\": \"catalog:\",\n \"@metamask/sdk\": \"^0.32.1\",\n \"@starknet-io/types-js\": \"catalog:\",\n \"@telegram-apps/sdk\": \"^2.4.0\",\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 { shortString, 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 this.selectedChain = options.defaultChainId;\n this.chains = new Map<ChainId, Chain>();\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 this.validateChains(options.chains);\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 await this.profile?.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 const chain = this.chains.get(this.selectedChain);\n if (!chain) {\n const availableChains = Array.from(this.chains.keys()).map((chain) =>\n shortString.decodeShortString(chain),\n );\n throw new Error(\n `Chain not found: ${shortString.decodeShortString(this.selectedChain)}. Available chains: ${availableChains.join(\", \")}`,\n );\n }\n return chain.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 async validateChains(chains: Chain[]) {\n for (const chain of chains) {\n try {\n const url = new URL(chain.rpcUrl);\n const chainId = await parseChainId(url);\n this.chains.set(chainId, chain);\n } catch (error) {\n console.error(`Failed to parse chainId for ${chain.rpcUrl}:`, error);\n }\n }\n\n if (!this.chains.has(this.selectedChain)) {\n console.warn(\n `Selected chain ${this.selectedChain} not found in configured chains. ` +\n `Available chains: ${Array.from(this.chains.keys()).join(\", \")}`,\n );\n }\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 budokan: {\n origin: \"budokan.gg\",\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x0530d9693304c79b5b506aa2fa09c27681373d71b69a839378ff5fd108aa5fc6\":\n {\n name: \"Budokan\",\n methods: [\n {\n entrypoint: \"create_tournament\",\n },\n {\n entrypoint: \"enter_tournament\",\n },\n {\n entrypoint: \"submit_score\",\n },\n {\n entrypoint: \"claim_prize\",\n },\n {\n entrypoint: \"add_prize\",\n },\n {\n entrypoint: \"register_token\",\n },\n ],\n },\n },\n },\n },\n },\n theme: {\n colors: {\n primary: \"#B1B97A\",\n },\n cover: \"https://static.cartridge.gg/presets/budokan/cover.png\",\n icon: \"https://static.cartridge.gg/presets/budokan/icon.png\",\n name: \"Budokan\",\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 credit: {\n origin: \"*\",\n theme: {\n name: \"Credit\",\n icon: \"https://static.cartridge.gg/presets/credit/icon.svg\",\n cover: \"https://static.cartridge.gg/presets/credit/cover.png\",\n },\n },\n \"dark-shuffle\": {\n origin: [\"darkshuffle.io\", \"darkshuffle.dev\"],\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 chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x020fc3c9efd0dde5f53642dac7f53638aeaae98ff9af5f1642546f389ce9dec5\":\n {\n name: \"game_systems\",\n methods: [\n {\n entrypoint: \"mint\",\n },\n {\n entrypoint: \"start_game\",\n },\n ],\n },\n \"0x036d27fb8604302b7e4f747a73a84b7c9ae9106f3c5f65e51e934fac9f7c753f\":\n {\n name: \"battle_systems\",\n methods: [\n {\n entrypoint: \"battle_actions\",\n },\n ],\n },\n \"0x046f9c2f2f3144059f7332bd989151f782f462f4ea6e3755c2f7b3eac49be73d\":\n {\n name: \"draft_systems\",\n methods: [\n {\n entrypoint: \"pick_card\",\n },\n ],\n },\n \"0x045543452215a2b416d8c52e5a475e7e0eed2e7cbaf5a699ae5fc0599f4afae9\":\n {\n name: \"map_systems\",\n methods: [\n {\n entrypoint: \"generate_tree\",\n },\n {\n entrypoint: \"select_node\",\n },\n ],\n },\n \"0x0530d9693304c79b5b506aa2fa09c27681373d71b69a839378ff5fd108aa5fc6\":\n {\n name: \"tournament_component\",\n methods: [\n {\n entrypoint: \"enter_tournament\",\n },\n ],\n },\n },\n },\n },\n },\n },\n dominion: {\n origin: \"https://dominion.fun\",\n theme: {\n colors: {\n primary: \"#19cfff\",\n },\n cover: \"https://static.cartridge.gg/presets/dominion/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dominion/icon.svg\",\n name: \"Dominion\",\n },\n },\n \"dope-wars\": {\n origin: \"dopewars.game\",\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x051Fea4450Da9D6aeE758BDEbA88B2f665bCbf549D2C61421AA724E9AC0Ced8F\":\n {\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 {\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 {\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 {\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 },\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 chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x62525c1337037a6a50a61f12045630a271758a350e57616e79a6ed14004ce74\":\n {\n name: \"Achievement Systems\",\n description:\n \"Allows you to interact with achievement features.\",\n methods: [\n {\n name: \"Claim Achievement Reward\",\n description: \"A method to claim your achievement reward.\",\n entrypoint: \"claim_achievement_reward\",\n },\n ],\n },\n \"0xa5a3284a1e3ce9887b50876acee14a1af9705659b3ad053deff80d84c5555a\":\n {\n name: \"Dragon Systems\",\n description: \"Allows you to interact with dragon features.\",\n methods: [\n {\n name: \"Activate Dragon\",\n description:\n \"A method to activate the Dragark NFT into the game.\",\n entrypoint: \"activate_dragon\",\n },\n {\n name: \"Deactivate Dragon\",\n description:\n \"A method to deactivate Dragark NFT out of the game.\",\n entrypoint: \"deactivate_dragon\",\n },\n {\n name: \"Claim Default Dragon\",\n description: \"A method to claim the default Dragark.\",\n entrypoint: \"claim_default_dragon\",\n },\n {\n name: \"Upgrade Dragon\",\n description: \"A method to upgrade the Dragark's level.\",\n entrypoint: \"upgrade_dragon\",\n },\n ],\n },\n \"0x456e9a70c1a8ce2e340592d1a885f2ac152349d785a6aef4d640d9a09f9a1bd\":\n {\n name: \"Island Systems\",\n description: \"Allows you to interact with island features.\",\n methods: [\n {\n name: \"Claim Resources\",\n description: \"A method to claim the island's rescources.\",\n entrypoint: \"claim_resources\",\n },\n {\n name: \"Claim Resources Islands\",\n description:\n \"A method to claim rescources on multiple islands.\",\n entrypoint: \"claim_resources_islands\",\n },\n ],\n },\n \"0x2f77a88ac64fd1473ea067ea176ae3805224a2ba5173c63c77d0f214c01ac5d\":\n {\n name: \"Journey Systems\",\n description: \"Allows you to interact with journey features.\",\n methods: [\n {\n name: \"Start Journey\",\n description:\n \"A method to start a new journey to other island.\",\n entrypoint: \"start_journey\",\n },\n {\n name: \"Finish Journey\",\n description: \"A method to finish a started journey.\",\n entrypoint: \"finish_journey\",\n },\n ],\n },\n \"0x1ca130b614f063a24dafad53db11cbb914fa7cff2eac23df1c32f5ff71a8ec2\":\n {\n name: \"Map Systems\",\n description: \"Allows you to interact with map features.\",\n methods: [\n {\n name: \"Join Map\",\n description: \"A method to join the map.\",\n entrypoint: \"join_map\",\n },\n {\n name: \"Rejoin Map\",\n description: \"A method to rejoin the map.\",\n entrypoint: \"re_join_map\",\n },\n ],\n },\n \"0x272741bbe4abc02c8be4b094ca642e1df573e99e06f85f649bc35dd26ae4543\":\n {\n name: \"Mission Systems\",\n description: \"Allows you to interact with mission features.\",\n methods: [\n {\n name: \"Claim Mission Reward\",\n description: \"A method to claim your mission reward.\",\n entrypoint: \"claim_mission_reward\",\n },\n ],\n },\n \"0x54ad7af1fc62a786c9023d9f3ef8e8abf8cf332649b784188c1b25d2cb384b2\":\n {\n name: \"Player Systems\",\n description: \"Allows you to interact with player features.\",\n methods: [\n {\n name: \"Buy Energy\",\n description:\n \"A method to buy energy used in scouting the map.\",\n entrypoint: \"buy_energy\",\n },\n {\n name: \"Claim Reward\",\n description: \"A method to claim your reward.\",\n entrypoint: \"claim_reward\",\n },\n {\n name: \"Upgrade Account Level\",\n description: \"A method to upgrade your account level.\",\n entrypoint: \"upgrade_account_level\",\n },\n {\n name: \"Upgrade Invitation Level\",\n description: \"A method to upgrade your invitation level.\",\n entrypoint: \"upgrade_invitation_level\",\n },\n {\n name: \"Redeem Invite Code\",\n description: \"A method to redeem invite code.\",\n entrypoint: \"redeem_invite_code\",\n },\n {\n name: \"Buy Resources Pack\",\n description: \"A method to buy resources pack.\",\n entrypoint: \"buy_resources_pack\",\n },\n {\n name: \"Activate Element NFT\",\n description:\n \"A method to activate the Element NFT into the game.\",\n entrypoint: \"activate_element_nft\",\n },\n {\n name: \"Claim Pool Share Reward\",\n description: \"A method to claim your Pool Share reward.\",\n entrypoint: \"claim_pool_share_reward\",\n },\n ],\n },\n \"0x68717880bd76fda6790e895e937e2c638213e7b9aa07385231bbf17dfe8a78c\":\n {\n name: \"Scout Systems\",\n description: \"Allows you to interact with scout features.\",\n methods: [\n {\n name: \"Scout\",\n description: \"A method to scout the map.\",\n entrypoint: \"scout\",\n },\n ],\n },\n \"0x14705481d28fab7bb37d6cb19d3392d39f838a1d5572b8c8f18e85e0c4b8918\":\n {\n name: \"Shield Systems\",\n description: \"Allows you to interact with shield features.\",\n methods: [\n {\n name: \"Activate Shield\",\n description:\n \"A method to activate a shield to protect your island.\",\n entrypoint: \"activate_shield\",\n },\n {\n name: \"Deactivate Shield\",\n description:\n \"A method to deactivate a shield from your island.\",\n entrypoint: \"deactivate_shield\",\n },\n {\n name: \"Buy Shield\",\n description: \"A method to buy a shield.\",\n entrypoint: \"buy_shield\",\n },\n ],\n },\n \"0x23d6a41c06e2d7b60437ba4da3eca857cf9a0b94f3548396829365a0a299c63\":\n {\n name: \"Star Shop Systems\",\n description: \"Allows you to interact with star shop features.\",\n methods: [\n {\n name: \"Buy Item Star Shop\",\n description: \"A method to buy item from the Star Shop.\",\n entrypoint: \"buy_item_star_shop\",\n },\n ],\n },\n \"0x511a78a1c4b33bedc4ff7d9b37eb7481bcdff77c5c2cb6f67390d43657749d0\":\n {\n name: \"Treasure Hunt Systems\",\n description:\n \"Allows you to interact with treasure hunt features.\",\n methods: [\n {\n name: \"Insert Dragon Treasure Hunt\",\n description:\n \"A method to insert your Dragarks to start a new treasure hunt.\",\n entrypoint: \"insert_dragon_treasure_hunt\",\n },\n {\n name: \"End Treasure Hunt\",\n description:\n \"A method to end an existing treasure hunt and claim rewards.\",\n entrypoint: \"end_treasure_hunt\",\n },\n ],\n },\n },\n },\n },\n },\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 chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x4ed3a7c5f53c6e96186eaf1b670bd2e2a3699c08e070aedf4e5fc6ac246ddc1\":\n {\n name: \"Pillage\",\n description:\n \"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 {\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 {\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 {\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 {\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:\n \"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 {\n name: \"Hyperstructure contract\",\n description:\n \"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 {\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 {\n name: \"Exploration contract\",\n description:\n \"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 {\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 {\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 {\n name: \"Resource bridge contract\",\n description: \"Manages bridge transfers between L2 and Eternum\",\n methods: [\n {\n name: \"Deposit Initial\",\n description:\n \"Initial deposit of resources for bridge transfer\",\n entrypoint: \"deposit_initial\",\n },\n {\n name: \"Deposit\",\n description:\n \"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 {\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 {\n name: \"AMM swap contract\",\n description:\n \"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 {\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 {\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 {\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 {\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 {\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 {\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 },\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 chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x0305f26ad19e0a10715d9f3137573d3a543de7b707967cd85d11234d6ec0fb7e\":\n {\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 {\n methods: [\n {\n entrypoint: \"enter_tournament\",\n },\n {\n entrypoint: \"start_tournament\",\n },\n ],\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 nums: {\n origin: [\"nums.gg\", \"www.nums.gg\"],\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x07ccfbc43c109efd466638defa52702382ace922051d35a0554b5ccd02a8f155\":\n {\n name: \"Game Actions\",\n methods: [\n {\n name: \"Create Game\",\n entrypoint: \"create_game\",\n description: \"Creates a new game\",\n },\n {\n name: \"Set Slot\",\n entrypoint: \"set_slot\",\n description: \"Sets one slot for the game\",\n },\n ],\n },\n \"0x00ea44dd8e971d3af9f99568577bf14b0a80a7f7763fa6281840ab68a8a53ba9\":\n {\n name: \"Claim Actions\",\n methods: [\n {\n name: \"Claim Appchain Reward\",\n entrypoint: \"claim_reward\",\n description: \"Claims token rewards on Appchain\",\n },\n ],\n },\n \"0x03ee42961dc151d740df95c44b929abe85cf66e8444e0279252dd99b055c64b0\":\n {\n name: \"Rewards Claim\",\n methods: [\n {\n name: \"Consume Reward on Starknet\",\n entrypoint: \"consume_claim_reward\",\n description: \"Consumes a claim reward message on Starknet\",\n },\n ],\n },\n \"0x7ed472bdde3b19a5cf2334ad0f368426272f477938270b1b04259f159bdc0e2\":\n {\n name: \"VRF Provider\",\n methods: [\n {\n name: \"Request Random\",\n entrypoint: \"request_random\",\n description:\n \"Requests a random number from the VRF contract\",\n },\n ],\n },\n \"0x4d776373427434a22f7d60d0f7fe0e336fd830edf4294acec33d9f2e1275327\":\n {\n name: \"Social\",\n description: \"Social contract to manage your social activities\",\n methods: [\n {\n name: \"pin\",\n entrypoint: \"pin\",\n description: \"Pin an achievement.\",\n },\n {\n name: \"unpin\",\n entrypoint: \"unpin\",\n description: \"Unpin an achievement.\",\n },\n ],\n },\n },\n },\n },\n },\n theme: {\n colors: {\n primary: \"#9E84E9\",\n },\n cover: \"https://static.cartridge.gg/presets/nums/cover.png\",\n icon: \"https://static.cartridge.gg/presets/nums/icon.png\",\n name: \"Nums\",\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: [\n \"pistols.underware.gg\",\n \"pistols.stage.underware.gg\",\n \"play.pistols.gg\",\n \"stage.pistols.gg\",\n \"alpha.pistols.gg\",\n \"beta.pistols.gg\",\n \"prerelease.pistols.gg\",\n ],\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 Dawn\",\n },\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x0619c7bd5d5d635e010ef3bf9a59ecc49fa055f19bb2202e530554cfda655b59\":\n {\n description: \"Game loop contract\",\n methods: [\n {\n entrypoint: \"commit_moves\",\n description: \"Commit moves of a Duelist in a Duel\",\n },\n {\n entrypoint: \"reveal_moves\",\n description: \"Reveal moves of a Duelist in a Duel\",\n },\n {\n entrypoint: \"clear_required_action\",\n description: \"Clear the required action call for a duelist\",\n },\n {\n entrypoint: \"collect_duel\",\n description: \"Close expired duels\",\n },\n {\n entrypoint: \"collect_season\",\n description:\n \"Close the current season and start the next one\",\n },\n ],\n },\n \"0x07b04bc75c3d4ba5b37d2dfc91501424dd23f517a820aee89adeeef4ececb391\":\n {\n description: \"Packs ERC721 contract\",\n methods: [\n {\n entrypoint: \"claim_starter_pack\",\n description: \"Claim the starter pack, mint Duelists\",\n },\n {\n entrypoint: \"purchase\",\n description: \"Purchase a closed pack\",\n },\n {\n entrypoint: \"open\",\n description: \"Open a pack, mint its contents\",\n },\n ],\n },\n \"0x00899524b10391115869ab095fe4385e17dd3dfd27b3a01bcc579ed939552e4c\":\n {\n description: \"Duel ERC721 contract\",\n methods: [\n {\n entrypoint: \"create_duel\",\n description: \"Create a Duel, mint its token\",\n },\n {\n entrypoint: \"reply_duel\",\n description: \"Reply to a Duel (accept or reject)\",\n },\n ],\n },\n \"0x0611b5c48d17de65d8015d48d491e0d120361a85099e28f3630600b3a91a98b0\":\n {\n description: \"Duelist ERC721 contract\",\n methods: [\n {\n entrypoint: \"poke\",\n description: \"Reactivates an inactive Duelist\",\n },\n {\n entrypoint: \"sacrifice\",\n description: \"Sacrifices a Duelist\",\n },\n {\n entrypoint: \"memorialize\",\n description: \"Memorializes a Duelist\",\n },\n ],\n },\n \"0x05c3c66f68bf24a4f61263d18622f97769ef62497f07a0ce9b07c7f02d6aa435\":\n {\n description: \"Bank contract\",\n methods: [\n {\n entrypoint: \"sponsor_duelists\",\n description: \"Sponsor duelist starter packs with $LORDS\",\n },\n {\n entrypoint: \"sponsor_season\",\n description: \"Sponsor the current season with $LORDS\",\n },\n {\n entrypoint: \"sponsor_tournament\",\n description: \"Sponsor a tournament with $LORDS\",\n },\n ],\n },\n \"0x05355768013cba6f96d985d189c0a69362d1a79a962e0d595ba7ea114ead720c\":\n {\n description: \"Cartridge VRF Provider\",\n methods: [\n {\n entrypoint: \"request_random\",\n description: \"Request a random number\",\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 \"pistols-PlayerOnline\": [\n {\n name: \"identity\",\n type: \"ContractAddress\",\n },\n {\n name: \"timestamp\",\n type: \"felt\",\n },\n ],\n },\n primaryType: \"pistols-PlayerOnline\",\n domain: {\n name: \"Underware_gg\",\n version: \"1.0.0\",\n chainId: \"SN_MAIN\",\n revision: \"1\",\n },\n name: \"PlayerOnline\",\n description: \"Notify the server that a player is online\",\n },\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 \"pistols-PlayerBookmark\": [\n {\n name: \"identity\",\n type: \"ContractAddress\",\n },\n {\n name: \"target_address\",\n type: \"ContractAddress\",\n },\n {\n name: \"target_id\",\n type: \"u128\",\n },\n {\n name: \"enabled\",\n type: \"bool\",\n },\n ],\n },\n primaryType: \"pistols-PlayerBookmark\",\n domain: {\n name: \"Underware_gg\",\n version: \"1.0.0\",\n chainId: \"SN_MAIN\",\n revision: \"1\",\n },\n name: \"PlayerBookmark\",\n description:\n \"Notify the server that a player follows another player or token\",\n },\n ],\n },\n },\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: \"LUSD Stablecoin\",\n symbol: \"LUSD\",\n decimals: 18,\n l2_token_address:\n \"0x070a76fd48ca0ef910631754d77dd822147fe98a569b826ec85e3c33fde586ac\",\n sort_order: 3,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/dc0ae733-5498-4afa-f475-48dba677aa00/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: \"DAIv0\",\n decimals: 18,\n l2_token_address:\n \"0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3\",\n sort_order: 4,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/919e761b-56f7-4f53-32aa-5e066f7f6200/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: \"Legacy Starknet Wrapped Staked Ether\",\n symbol: \"wstETH-legacy\",\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/26162dcc-29c2-4f5e-3acd-5e6be1f07a00/logo\",\n },\n {\n name: \"Wrapped Staked Ether\",\n symbol: \"wstETH\",\n decimals: 18,\n l2_token_address:\n \"0x0057912720381af14b0e5c87aa4718ed5e527eab60b3801ebf702ab09139e38b\",\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: \"LORDS\",\n symbol: \"LORDS\",\n decimals: 18,\n l2_token_address:\n \"0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49\",\n sort_order: 1,\n total_supply: 50900000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/a3bfe959-50c4-4f89-0aef-b19207d82a00/logo\",\n },\n {\n name: \"R Stablecoin\",\n symbol: \"R\",\n decimals: 18,\n l2_token_address:\n \"0x01fa2fb85f624600112040e1f3a848f53a37ed5a7385810063d5fe6887280333\",\n sort_order: 3,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/77612e4e-f7ee-4dba-2066-af321843ef00/logo\",\n },\n {\n name: \"Frax\",\n symbol: \"FRAX\",\n decimals: 18,\n l2_token_address:\n \"0x009c6b4fb13dfaa025c1383ed6190af8ed8cbb09d9588a3bb020feb152442406\",\n sort_order: 1,\n total_supply: 649462235,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/eeaf0779-e492-474c-ef19-b27843525600/logo\",\n },\n {\n name: \"Frax Share\",\n symbol: \"FXS\",\n decimals: 18,\n l2_token_address:\n \"0x0058efd0e73c33a848ffaa88738d128ebf0af98ea78cf3c14dc757bb02d39ffb\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/98bea621-1e4f-4d63-9689-bdaef0d56500/logo\",\n },\n {\n name: \"Staked Frax Ether\",\n symbol: \"sfrxETH\",\n decimals: 18,\n l2_token_address:\n \"0x04578fffc279e61b5cb0267a5f8e24b6089d40f93158fbbad2cb23b8622c9233\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/cd6fe18a-25db-4de9-758a-daf3b364ea00/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: \"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: \"StarkPepe\",\n symbol: \"xSPEPE\",\n decimals: 18,\n l2_token_address:\n \"0x06f15ec4b6ff0b7f7a216c4b2ccdefc96cbf114d6242292ca82971592f62273b\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n disabled: true,\n },\n {\n name: \"StarkNet Token\",\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: \"zkLend Token\",\n symbol: \"ZEND\",\n decimals: 18,\n l2_token_address:\n \"0x00585c32b625999e6e5e78645ff8df7a9001cf5cf3eb6b80ccdd16cb64bd3a34\",\n sort_order: 1,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/95515b0e-1230-4158-10f1-56888f613c00/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: \"SOCKS\",\n symbol: \"SOCKS\",\n decimals: 18,\n l2_token_address:\n \"0x023ed2ba4fb5709302c5dfd739fa7613359042f143286c115b6c7f7dc2601015\",\n sort_order: 1,\n total_supply: 100000000000,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/2db5a2a6-c98e-4b80-35e0-31b489132100/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 hidden: false,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6bd6d156-f509-4b51-5dfc-3ee566143600/logo\",\n },\n {\n name: \"Nums\",\n symbol: \"NUMS\",\n decimals: 18,\n l2_token_address:\n \"0xe5f10eddc01699dc899a30dbc3c9858148fa4aa0a47c0ffd85f887ffc4653e\",\n sort_order: 1,\n total_supply: 1,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/90868d05-cb75-4c42-278c-5a540db2cf00/logo\",\n },\n {\n name: \"Flip\",\n symbol: \"FLIP\",\n decimals: 18,\n l2_token_address:\n \"0x01bfe97d729138fc7c2d93c77d6d1d8a24708d5060608017d9b384adf38f04c7\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/275f0fa8-a691-471c-ace6-0eb0315dde00/logo\",\n },\n {\n name: \"Eternum Stone\",\n symbol: \"STONE\",\n decimals: 18,\n l2_token_address:\n \"0x439a1c010e3e1bb2d43d43411000893c0042bd88f6c701611a0ea914d426da4\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/932e7f83-a4c2-40f0-3048-35af3b194100/logo\",\n },\n {\n name: \"Eternum Coal\",\n symbol: \"COAL\",\n decimals: 18,\n l2_token_address:\n \"0xce635e3f241b0ae78c46a929d84a9101910188f9c4024eaa7559556503c31a\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/cf2ee180-06bf-4443-e3aa-724d7c28e800/logo\",\n },\n {\n name: \"Eternum Wood\",\n symbol: \"WOOD\",\n decimals: 18,\n l2_token_address:\n \"0x40d8907cec0f7ae9c364dfb12485a1314d84c129bf1898d2f3d4b7fcc7d44f4\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/1db5f954-c1ef-447e-9f8f-05bd9f3b2b00/logo\",\n },\n {\n name: \"Eternum Copper\",\n symbol: \"COPPER\",\n decimals: 18,\n l2_token_address:\n \"0x66ed5c928ee027a9419ace1cbea8389885161db5572a7c5c4fef2310e9bf494\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6bbcdcc9-6146-404d-9501-92a664cf3100/logo\",\n },\n {\n name: \"Eternum Ironwood\",\n symbol: \"IRONWOOD\",\n decimals: 18,\n l2_token_address:\n \"0x1720cf6318bff45e62acc588680ae3cd4d5f8465b1d52cb710533c9299b031a\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/5af7c03b-e4ae-4aee-eba4-a4e2160a1d00/logo\",\n },\n {\n name: \"Eternum Obsidian\",\n symbol: \"OBSIDIAN\",\n decimals: 18,\n l2_token_address:\n \"0x3b6448d09dcd023507376402686261f5d6739455fa02f804907b066e488da66\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/8be9bc66-486b-4181-6804-725a1db8ad00/logo\",\n },\n {\n name: \"Eternum Gold\",\n symbol: \"GOLD\",\n decimals: 18,\n l2_token_address:\n \"0xdff9dca192609c4e86ab3be22c7ec1e968876c992d21986f3c542be97fa2f\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/fb9e90f7-3c2f-4c64-7e43-c3f694f35e00/logo\",\n },\n {\n name: \"Eternum Silver\",\n symbol: \"SILVER\",\n decimals: 18,\n l2_token_address:\n \"0x6fe21d2d4a8a05bdb70f09c9250af9870020d5dcc35f410b4a39d6605c3e353\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e443afeb-850b-46a0-a7ba-a473306d6b00/logo\",\n },\n {\n name: \"Eternum Mithral\",\n symbol: \"MITHRAL\",\n decimals: 18,\n l2_token_address:\n \"0x67ba235c569c23877064b2ac6ebd4d79f32d3c00f5fab8e28a3b5700b957f6\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/33dc517f-8a66-45eb-f2c5-de5388e47500/logo\",\n },\n {\n name: \"Eternum Alchemical Silver\",\n symbol: \"ALCHEMICALSILVER\",\n decimals: 18,\n l2_token_address:\n \"0x3956a5301e99522038a2e7dcb9c2a89bf087ffa79310ee0a508b5538efd8ddd\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/3d2e0fd8-4af8-49a0-4bdb-691a4d6ef800/logo\",\n },\n {\n name: \"Eternum Cold Iron\",\n symbol: \"COLDIRON\",\n decimals: 18,\n l2_token_address:\n \"0x555d713e59d4ff96b7960447e9bc9e79bfdeab5b0eea74e3df81bce61cfbc77\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/878c0d8a-8e2c-4281-0896-9cbbb2ef9400/logo\",\n },\n {\n name: \"Eternum Deep Crystal\",\n symbol: \"DEEPCRYSTAL\",\n decimals: 18,\n l2_token_address:\n \"0x1d655ac834d38df7921074fc1588411e202b1af83307cbd996983aff52db3a8\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/1c2c954f-448c-476b-a4a6-19b52efe3e00/logo\",\n },\n {\n name: \"Eternum Ruby\",\n symbol: \"RUBY\",\n decimals: 18,\n l2_token_address:\n \"0x3d9b66720959d0e7687b898292c10e62e78626f2dba5e1909961a2ce3f86612\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6a45b34d-3bfe-4994-45b0-f2bee8abac00/logo\",\n },\n {\n name: \"Eternum Diamonds\",\n symbol: \"DIAMONDS\",\n decimals: 18,\n l2_token_address:\n \"0xe03ea8ae385f64754820af5c01c36abf1b8130dd6797d3fd9d430e4114e876\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/b1fa609d-8799-4754-cdea-ab69514ca700/logo\",\n },\n {\n name: \"Eternum Hartwood\",\n symbol: \"HARTWOOD\",\n decimals: 18,\n l2_token_address:\n \"0x5620aa7170cd66dbcbc37d03087bfe4633ffef91d3e4d97b501de906004f79b\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/27e37e85-91bd-4ee1-0552-1e0795077400/logo\",\n },\n {\n name: \"Eternum Ignium\",\n symbol: \"IGNIUM\",\n decimals: 18,\n l2_token_address:\n \"0x625c1f789b03ebebc7a9322366f38ebad1f693b84b2abd8cb8f5b2748b0cdd5\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/58591e20-24fb-4353-417a-81d877a5a200/logo\",\n },\n {\n name: \"Eternum Twilight Quartz\",\n symbol: \"TWILIGHTQUARTZ\",\n decimals: 18,\n l2_token_address:\n \"0x35e24c02409c3cfe8d5646399a62c4d102bb782938d5f5180e92c9c62d3faf7\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/2f8cb892-e82a-4af3-bd09-316061faec00/logo\",\n },\n {\n name: \"Eternum True Ice\",\n symbol: \"TRUEICE\",\n decimals: 18,\n l2_token_address:\n \"0x4485f5a6e16562e1c761cd348e63256d00389e3ddf4f5d98afe7ab44c57c481\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/fe4bfc17-6553-4dc5-58d2-f452b4aa8a00/logo\",\n },\n {\n name: \"Eternum Adamantine\",\n symbol: \"ADAMANTINE\",\n decimals: 18,\n l2_token_address:\n \"0x367f838f85a2f5e1580d6f011e4476f581083314cff8721ba3dda9706076eed\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/13bd026b-3612-480e-0119-04cf4c505a00/logo\",\n },\n {\n name: \"Eternum Sapphire\",\n symbol: \"SAPPHIRE\",\n decimals: 18,\n l2_token_address:\n \"0x2f8dd022568af8f9f718aa37707a9b858529db56910633a160456838b6cbcbc\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/0ebf555f-e732-4054-f8e5-55b2ed49ba00/logo\",\n },\n {\n name: \"Eternum Ethereal Silica\",\n symbol: \"ETHEREALSILICA\",\n decimals: 18,\n l2_token_address:\n \"0x68b6e23cbbd58a644700f55e96c83580921e9f521b6e5175396b53ba7910e7d\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/f02a5b43-bfcf-408c-7d1b-fcfe68b02d00/logo\",\n },\n {\n name: \"Eternum Dragon Hide\",\n symbol: \"DRAGONHIDE\",\n decimals: 18,\n l2_token_address:\n \"0x3bf856515bece3c93f5061b7941b8645f817a0acab93c758b8c7b4bc0afa3c6\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e74955fc-5c8a-4dff-4882-a49a46a5a800/logo\",\n },\n {\n name: \"Eternum Ancient Fragment\",\n symbol: \"ANCIENTFRAGMENT\",\n decimals: 18,\n l2_token_address:\n \"0x0695b08ecdfdd828c2e6267da62f59e6d7543e690ef56a484df25c8566b332a5\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/9af855b7-4790-4390-9466-6bed4481ab00/logo\",\n },\n {\n name: \"Eternum Donkey\",\n symbol: \"DONKEY\",\n decimals: 18,\n l2_token_address:\n \"0x264be95a4a2ace20add68cb321acdccd2f9f8440ee1c7abd85da44ddab01085\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/20817378-a45e-4521-f464-10f6dd13c500/logo\",\n },\n {\n name: \"Eternum Knight\",\n symbol: \"KNIGHT\",\n decimals: 18,\n l2_token_address:\n \"0xac965f9e67164723c16735a9da8dbc9eb8e43b1bd0323591e87c056badf606\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/8787ed1f-af5c-4873-c01a-55f05e999a00/logo\",\n },\n {\n name: \"Eternum Crossbowman\",\n symbol: \"CROSSBOWMAN\",\n decimals: 18,\n l2_token_address:\n \"0x67e4ac00a241be06ba6afc11fa2715ec7da0c42c05a67ef6ecfcfeda725aaa8\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/dec7f31b-4b1d-46bb-4fca-c0253cf55a00/logo\",\n },\n {\n name: \"Eternum Paladin\",\n symbol: \"PALADIN\",\n decimals: 18,\n l2_token_address:\n \"0x3bc86299bee061c7c8d7546ccb62b9daf9bffc653b1508facb722c6593874bc\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/7d2cd5a5-f38a-49f6-11f8-ba3b59a59e00/logo\",\n },\n {\n name: \"Eternum Wheat\",\n symbol: \"WHEAT\",\n decimals: 18,\n l2_token_address:\n \"0x57a3f1ee475e072ce3be41785c0e889b7295d7a0dcc22b992c5b9408dbeb280\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/c338b6a8-77c4-4dd6-34f5-1af0d3fb1e00/logo\",\n },\n {\n name: \"Eternum Fish\",\n symbol: \"FISH\",\n decimals: 18,\n l2_token_address:\n \"0x27719173cfe10f1aa38d2aaed0a075b6077290f1e817aa3485d2b828394f4d9\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6deef27f-df40-4248-4e1b-ed1d79a3f000/logo\",\n },\n];\n","import type { TypedData } from \"@starknet-io/types-js\";\nimport { configs } from \"./generated/controller-configs\";\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\">;\nexport type Policies = Policy[] | SessionPolicies;\n\nexport type ChainId = string;\n\nexport type SessionPolicies = {\n /** The key must be the contract address */\n contracts?: ContractPolicies;\n messages?: SignMessagePolicy[];\n};\n\nexport type Chains = {\n /** Map of chain IDs to specific chain policies */\n [chainId: ChainId]: { policies: SessionPolicies };\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 * Whether the method is togglable by the user.\n * If true, user can't toggle the method.\n * @default false\n */\n isRequired?: boolean | false;\n};\n\nexport type SignMessagePolicy = TypedDataPolicy & {\n name?: string;\n description?: string;\n};\n\nexport type ControllerConfig = {\n origin: string | string[];\n chains?: Chains;\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"]}
|