@cartridge/controller 0.7.2 → 0.7.4
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 +60 -61
- package/.turbo/turbo-build.log +64 -65
- package/dist/controller.cjs +19 -94
- 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 +20 -95
- package/dist/controller.js.map +1 -1
- package/dist/index.cjs +539 -100
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -4
- package/dist/index.d.ts +12 -4
- package/dist/index.js +538 -102
- package/dist/index.js.map +1 -1
- package/dist/lookup.cjs +2 -2
- package/dist/lookup.cjs.map +1 -1
- package/dist/lookup.js +2 -2
- package/dist/lookup.js.map +1 -1
- package/dist/node/index.cjs +8 -91
- 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 +9 -92
- package/dist/node/index.js.map +1 -1
- package/dist/{provider-ap1C1ypF.d.cts → provider-qWUzdqt3.d.cts} +3 -3
- package/dist/{provider-ap1C1ypF.d.ts → provider-qWUzdqt3.d.ts} +3 -3
- package/dist/session/index.cjs +4 -87
- 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 +5 -88
- package/dist/session/index.js.map +1 -1
- package/package.json +4 -4
- package/src/account.ts +4 -1
- package/src/controller.ts +12 -2
- package/src/index.ts +1 -2
- package/src/types.ts +1 -1
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+aa3a218/node_modules/@cartridge/presets/src/generated/controller-configs.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+aa3a218/node_modules/@cartridge/presets/src/generated/erc20-metadata.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+aa3a218/node_modules/@cartridge/presets/src/index.ts"],"names":["ResponseCodes","getChecksumAddress","typedData","TypedDataRevision","hash","constants","shortString","WalletAccount","connectToChild","existingController","Permission","params","call","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 logout(): Promise<void>;\n openSettings(): Promise<void | ConnectError>;\n session(): Promise<Session>;\n sessions(): Promise<{\n [key: string]: Session;\n }>;\n delegateAccount(): string;\n username(): string;\n openPurchaseCredits(): void;\n openExecute(calls: Call[]): Promise<void>;\n switchChain(rpcUrl: string): Promise<void>;\n}\n\nexport interface Profile {\n navigate(path: string): void;\n}\n\nexport interface Modal {\n open: () => void;\n close: () => void;\n}\n\n/**\n * Options for configuring the controller\n */\nexport type ControllerOptions = ProviderOptions &\n KeychainOptions &\n ProfileOptions;\n\nexport type IFrameOptions = {\n /** The ID of the starter pack to use */\n starterPackId?: string;\n /** The preset to use */\n preset?: string;\n};\n\nexport type Chain = {\n rpcUrl: string;\n};\n\nexport type ProviderOptions = {\n defaultChainId: ChainId;\n chains: Chain[];\n};\n\nexport type KeychainOptions = IFrameOptions & {\n policies?: SessionPolicies;\n /** The URL of keychain */\n url?: string;\n /** The origin of keychain */\n origin?: string;\n /** Propagate transaction errors back to caller instead of showing modal */\n propagateSessionErrors?: boolean;\n};\n\nexport type ProfileOptions = IFrameOptions & {\n /** The URL of profile. Mainly for internal development purpose */\n profileUrl?: string;\n /** The project name of Slot instance. */\n slot?: string;\n /** The namespace to use to fetch trophies data from indexer. Will be mandatory once profile page is in production */\n namespace?: string;\n /** The tokens to be listed on Inventory modal */\n tokens?: Tokens;\n};\n\nexport type ProfileContextTypeVariant =\n | \"inventory\"\n | \"trophies\"\n | \"achievements\"\n | \"activity\";\n\nexport type Tokens = {\n erc20?: string[];\n};\n","import {\n addAddressPadding,\n Call,\n CallData,\n constants,\n getChecksumAddress,\n hash,\n shortString,\n typedData,\n TypedDataRevision,\n} from \"starknet\";\nimport wasm from \"@cartridge/account-wasm/controller\";\nimport { Policies, SessionPolicies } from \"@cartridge/presets\";\nimport { ChainId } from \"@starknet-io/types-js\";\nimport { ParsedSessionPolicies } from \"./policies\";\n\n// Whitelist of allowed property names to prevent prototype pollution\nconst ALLOWED_PROPERTIES = new Set([\n \"contracts\",\n \"messages\",\n \"target\",\n \"method\",\n \"name\",\n \"description\",\n \"types\",\n \"domain\",\n \"primaryType\",\n]);\n\nfunction validatePropertyName(prop: string): void {\n if (!ALLOWED_PROPERTIES.has(prop)) {\n throw new Error(`Invalid property name: ${prop}`);\n }\n}\n\nfunction safeObjectAccess<T>(obj: any, prop: string): T {\n validatePropertyName(prop);\n return obj[prop];\n}\n\nexport function normalizeCalls(calls: Call | Call[]) {\n return toArray(calls).map((call) => {\n return {\n entrypoint: call.entrypoint,\n contractAddress: addAddressPadding(call.contractAddress),\n calldata: CallData.toHex(call.calldata),\n };\n });\n}\n\nexport function toSessionPolicies(policies: Policies): SessionPolicies {\n return Array.isArray(policies)\n ? policies.reduce<SessionPolicies>(\n (prev, p) => {\n if (safeObjectAccess<string>(p, \"target\")) {\n const target = getChecksumAddress(\n safeObjectAccess<string>(p, \"target\"),\n );\n const entrypoint = safeObjectAccess<string>(p, \"method\");\n const contracts = safeObjectAccess<Record<string, any>>(\n prev,\n \"contracts\",\n );\n const item = {\n name: humanizeString(entrypoint),\n entrypoint: entrypoint,\n description: safeObjectAccess<string>(p, \"description\"),\n };\n\n if (target in contracts) {\n const methods = toArray(contracts[target].methods);\n contracts[target] = {\n methods: [...methods, item],\n };\n } else {\n contracts[target] = {\n methods: [item],\n };\n }\n } else {\n const messages = safeObjectAccess<any[]>(prev, \"messages\");\n messages.push(p);\n }\n\n return prev;\n },\n { contracts: {}, messages: [] },\n )\n : policies;\n}\n\nexport function toWasmPolicies(policies: ParsedSessionPolicies): wasm.Policy[] {\n return [\n ...Object.entries(policies.contracts ?? {}).flatMap(\n ([target, { methods }]) =>\n toArray(methods).map((m) => ({\n target,\n method: m.entrypoint,\n authorized: m.authorized,\n })),\n ),\n ...(policies.messages ?? []).map((p) => {\n const domainHash = typedData.getStructHash(\n p.types,\n \"StarknetDomain\",\n p.domain,\n TypedDataRevision.ACTIVE,\n );\n const typeHash = typedData.getTypeHash(\n p.types,\n p.primaryType,\n TypedDataRevision.ACTIVE,\n );\n\n return {\n scope_hash: hash.computePoseidonHash(domainHash, typeHash),\n authorized: p.authorized,\n };\n }),\n ];\n}\n\nexport function toArray<T>(val: T | T[]): T[] {\n return Array.isArray(val) ? val : [val];\n}\n\nexport function humanizeString(str: string): string {\n return (\n str\n // Convert from camelCase or snake_case\n .replace(/([a-z])([A-Z])/g, \"$1 $2\") // camelCase to spaces\n .replace(/_/g, \" \") // snake_case to spaces\n .toLowerCase()\n // Capitalize first letter\n .replace(/^\\w/, (c) => c.toUpperCase())\n );\n}\n\nexport function parseChainId(url: URL): ChainId {\n const parts = url.pathname.split(\"/\");\n\n if (parts.includes(\"starknet\")) {\n if (parts.includes(\"mainnet\")) {\n return constants.StarknetChainId.SN_MAIN;\n } else if (parts.includes(\"sepolia\")) {\n return constants.StarknetChainId.SN_SEPOLIA;\n }\n } else if (parts.length >= 3) {\n const projectName = parts[2];\n if (parts.includes(\"katana\")) {\n return shortString.encodeShortString(\n `WP_${projectName.toUpperCase().replace(/-/g, \"_\")}`,\n ) as ChainId;\n } else if (parts.includes(\"mainnet\")) {\n return shortString.encodeShortString(\n `GG_${projectName.toUpperCase().replace(/-/g, \"_\")}`,\n ) as ChainId;\n }\n }\n\n throw new Error(`Chain ${url.toString()} not supported`);\n}\n","import {\n InvokeFunctionResponse,\n TypedData,\n WalletAccount,\n Call,\n AllowArray,\n} from \"starknet\";\n\nimport { SPEC } from \"@starknet-io/types-js\";\n\nimport {\n ConnectError,\n Keychain,\n KeychainOptions,\n Modal,\n ResponseCodes,\n} from \"./types\";\nimport { AsyncMethodReturns } from \"@cartridge/penpal\";\nimport BaseProvider from \"./provider\";\nimport { toArray } from \"./utils\";\n\nclass ControllerAccount extends WalletAccount {\n address: string;\n private keychain: AsyncMethodReturns<Keychain>;\n private modal: Modal;\n private options?: KeychainOptions;\n\n constructor(\n provider: BaseProvider,\n rpcUrl: string,\n address: string,\n keychain: AsyncMethodReturns<Keychain>,\n options: KeychainOptions,\n modal: Modal,\n ) {\n super({ nodeUrl: rpcUrl }, provider);\n\n this.address = address;\n this.keychain = keychain;\n this.options = options;\n this.modal = modal;\n }\n\n /**\n * Invoke execute function in account contract\n *\n * @param calls the invocation object or an array of them, containing:\n * - contractAddress - the address of the contract\n * - entrypoint - the entrypoint of the contract\n * - calldata - (defaults to []) the calldata\n * - signature - (defaults to []) the signature\n * @param abis (optional) the abi of the contract for better displaying\n *\n * @returns response from addTransaction\n */\n async execute(calls: AllowArray<Call>): Promise<InvokeFunctionResponse> {\n calls = toArray(calls);\n\n return new Promise(async (resolve, reject) => {\n const sessionExecute = await this.keychain.execute(\n calls,\n undefined,\n undefined,\n false,\n );\n\n // Session call succeeded\n if (sessionExecute.code === ResponseCodes.SUCCESS) {\n resolve(sessionExecute as InvokeFunctionResponse);\n return;\n }\n\n // Propagates session txn error back to caller\n if (this.options?.propagateSessionErrors) {\n reject((sessionExecute as ConnectError).error);\n return;\n }\n\n // Session call or Paymaster flow failed.\n // Session not avaialble, manual flow fallback\n this.modal.open();\n const manualExecute = await this.keychain.execute(\n calls,\n undefined,\n undefined,\n true,\n (sessionExecute as ConnectError).error,\n );\n\n // Manual call succeeded\n if (manualExecute.code === ResponseCodes.SUCCESS) {\n resolve(manualExecute as InvokeFunctionResponse);\n this.modal.close();\n return;\n }\n\n reject((manualExecute as ConnectError).error);\n return;\n });\n }\n\n /**\n * Sign an JSON object for off-chain usage with the starknet private key and return the signature\n * This adds a message prefix so it cant be interchanged with transactions\n *\n * @param json - JSON object to be signed\n * @returns the signature of the JSON object\n * @throws {Error} if the JSON object is not a valid JSON\n */\n async signMessage(typedData: TypedData): Promise<SPEC.SIGNATURE> {\n return new Promise(async (resolve, reject) => {\n const sessionSign = await this.keychain.signMessage(typedData, \"\", true);\n\n // Session sign succeeded\n if (!(\"code\" in sessionSign)) {\n resolve(sessionSign as SPEC.SIGNATURE);\n return;\n }\n\n // Session not avaialble, manual flow fallback\n this.modal.open();\n const manualSign = await this.keychain.signMessage(typedData, \"\", false);\n\n if (!(\"code\" in manualSign)) {\n resolve(manualSign as SPEC.SIGNATURE);\n } else {\n reject((manualSign as ConnectError).error);\n }\n this.modal.close();\n });\n }\n}\n\nexport default ControllerAccount;\n","import { AsyncMethodReturns, connectToChild } from \"@cartridge/penpal\";\nimport { ControllerOptions, Modal } from \"../types\";\n\nexport type IFrameOptions<CallSender> = Omit<\n ConstructorParameters<typeof IFrame>[0],\n \"id\" | \"url\" | \"onConnect\"\n> & {\n url?: string;\n onConnect: (child: AsyncMethodReturns<CallSender>) => void;\n};\n\nexport class IFrame<CallSender extends {}> implements Modal {\n url?: URL;\n private iframe?: HTMLIFrameElement;\n private container?: HTMLDivElement;\n private onClose?: () => void;\n\n constructor({\n id,\n url,\n preset,\n onClose,\n onConnect,\n methods = {},\n }: Pick<ControllerOptions, \"preset\"> & {\n id: string;\n url: URL;\n onClose?: () => void;\n onConnect: (child: AsyncMethodReturns<CallSender>) => void;\n methods?: { [key: string]: (...args: any[]) => void };\n }) {\n if (typeof document === \"undefined\") {\n return;\n }\n\n if (preset) {\n url.searchParams.set(\"preset\", preset);\n }\n\n this.url = url;\n\n const iframe = document.createElement(\"iframe\");\n iframe.src = url.toString();\n iframe.id = id;\n iframe.style.border = \"none\";\n iframe.sandbox.add(\"allow-forms\");\n iframe.sandbox.add(\"allow-popups\");\n iframe.sandbox.add(\"allow-scripts\");\n iframe.sandbox.add(\"allow-same-origin\");\n iframe.allow =\n \"publickey-credentials-create *; publickey-credentials-get *; clipboard-write\";\n if (!!document.hasStorageAccess) {\n iframe.sandbox.add(\"allow-storage-access-by-user-activation\");\n }\n\n const container = document.createElement(\"div\");\n container.id = \"controller\";\n container.style.position = \"fixed\";\n container.style.height = \"100%\";\n container.style.width = \"100%\";\n container.style.top = \"0\";\n container.style.left = \"0\";\n container.style.zIndex = \"10000\";\n container.style.backgroundColor = \"rgba(0,0,0,0.6)\";\n container.style.display = \"flex\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.visibility = \"hidden\";\n container.style.opacity = \"0\";\n container.style.transition = \"opacity 0.2s ease\";\n container.appendChild(iframe);\n\n this.iframe = iframe;\n this.container = container;\n\n connectToChild<CallSender>({\n iframe: this.iframe,\n methods: { close: () => this.close(), ...methods },\n }).promise.then(onConnect);\n\n this.resize();\n window.addEventListener(\"resize\", () => this.resize());\n\n const observer = new MutationObserver(() => {\n const existingController = document.getElementById(\"controller\");\n if (document.body) {\n if (\n (id === \"controller-keychain\" && !existingController) ||\n id === \"controller-profile\"\n ) {\n document.body.appendChild(container);\n observer.disconnect();\n }\n }\n });\n\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n });\n\n const existingController = document.getElementById(\"controller\");\n if (document.body) {\n if (\n (id === \"controller-keychain\" && !existingController) ||\n id === \"controller-profile\"\n ) {\n document.body.appendChild(container);\n }\n }\n\n this.onClose = onClose;\n }\n\n open() {\n if (!this.container) return;\n document.body.style.overflow = \"hidden\";\n\n this.container.style.visibility = \"visible\";\n this.container.style.opacity = \"1\";\n }\n\n close() {\n if (!this.container) return;\n this.onClose?.();\n\n document.body.style.overflow = \"auto\";\n\n this.container.style.visibility = \"hidden\";\n this.container.style.opacity = \"0\";\n }\n\n sendBackward() {\n if (!this.container) return;\n this.container.style.zIndex = \"9999\";\n }\n\n sendForward() {\n if (!this.container) return;\n this.container.style.zIndex = \"10000\";\n }\n\n private resize() {\n if (!this.iframe) return;\n\n this.iframe.style.userSelect = \"none\";\n\n if (window.innerWidth < 768) {\n this.iframe.style.height = \"100%\";\n this.iframe.style.width = \"100%\";\n this.iframe.style.borderRadius = \"0\";\n return;\n }\n\n this.iframe.style.height = \"600px\";\n this.iframe.style.width = \"432px\";\n this.iframe.style.borderRadius = \"8px\";\n }\n}\n","export const KEYCHAIN_URL = \"https://x.cartridge.gg\";\nexport const PROFILE_URL = \"https://profile.cartridge.gg\";\nexport const API_URL = \"https://api.cartridge.gg\";\n","import { KEYCHAIN_URL } from \"../constants\";\nimport { Keychain, KeychainOptions } from \"../types\";\nimport { IFrame, IFrameOptions } from \"./base\";\n\ntype KeychainIframeOptions = IFrameOptions<Keychain> & KeychainOptions;\n\nexport class KeychainIFrame extends IFrame<Keychain> {\n constructor({ url, policies, ...iframeOptions }: KeychainIframeOptions) {\n const _url = new URL(url ?? KEYCHAIN_URL);\n\n if (policies) {\n _url.searchParams.set(\n \"policies\",\n encodeURIComponent(JSON.stringify(policies)),\n );\n }\n\n super({\n ...iframeOptions,\n id: \"controller-keychain\",\n url: _url,\n });\n }\n}\n","import { PROFILE_URL } from \"../constants\";\nimport { Profile, ProfileOptions } from \"../types\";\nimport { IFrame, IFrameOptions } from \"./base\";\n\nexport type ProfileIFrameOptions = IFrameOptions<Profile> &\n ProfileOptions & {\n rpcUrl: string;\n version?: string;\n username: string;\n slot?: string;\n namespace?: string;\n };\n\nexport class ProfileIFrame extends IFrame<Profile> {\n constructor({\n profileUrl,\n rpcUrl,\n version,\n username,\n slot,\n namespace,\n tokens,\n ...iframeOptions\n }: ProfileIFrameOptions) {\n const _profileUrl = (profileUrl || PROFILE_URL).replace(/\\/$/, \"\");\n let _url = new URL(\n slot\n ? namespace\n ? `${_profileUrl}/account/${username}/slot/${slot}?ps=${encodeURIComponent(\n slot,\n )}&ns=${encodeURIComponent(namespace)}`\n : `${_profileUrl}/account/${username}/slot/${slot}?ps=${encodeURIComponent(\n slot,\n )}`\n : `${_profileUrl}/account/${username}`,\n );\n\n if (version) {\n _url.searchParams.set(\"v\", encodeURIComponent(version));\n }\n\n _url.searchParams.set(\"rpcUrl\", encodeURIComponent(rpcUrl));\n\n if (tokens?.erc20) {\n _url.searchParams.set(\n \"erc20\",\n encodeURIComponent(tokens.erc20.toString()),\n );\n }\n\n super({\n ...iframeOptions,\n id: \"controller-profile\",\n url: _url,\n });\n }\n}\n","export class NotReadyToConnect extends Error {\n constructor() {\n super(\"Not ready to connect\");\n\n Object.setPrototypeOf(this, NotReadyToConnect.prototype);\n }\n}\n","{\n \"name\": \"@cartridge/controller\",\n \"version\": \"0.7.2\",\n \"description\": \"Cartridge Controller\",\n \"module\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"type\": \"module\",\n \"scripts\": {\n \"build:deps\": \"tsup\",\n \"build\": \"pnpm build:deps\",\n \"format\": \"prettier --write \\\"src/**/*.ts\\\"\",\n \"format:check\": \"prettier --check \\\"src/**/*.ts\\\"\",\n \"test\": \"jest\",\n \"version\": \"pnpm pkg get version\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./session\": {\n \"types\": \"./dist/session/index.d.ts\",\n \"import\": \"./dist/session/index.js\",\n \"require\": \"./dist/session/index.cjs\"\n },\n \"./session/node\": {\n \"types\": \"./dist/node/index.d.ts\",\n \"import\": \"./dist/node/index.js\",\n \"require\": \"./dist/node/index.cjs\"\n },\n \"./provider\": {\n \"types\": \"./dist/provider/index.d.ts\",\n \"import\": \"./dist/provider/index.js\"\n },\n \"./types\": {\n \"types\": \"./dist/types/index.d.ts\",\n \"import\": \"./dist/types/index.js\"\n }\n },\n \"tsup\": {\n \"entry\": [\n \"src/index.ts\",\n \"src/controller.ts\",\n \"src/lookup.ts\",\n \"src/session/index.ts\",\n \"src/node/index.ts\"\n ],\n \"format\": [\n \"esm\",\n \"cjs\"\n ],\n \"splitting\": false,\n \"sourcemap\": true,\n \"clean\": true,\n \"dts\": true,\n \"treeshake\": {\n \"preset\": \"recommended\"\n },\n \"exports\": \"named\"\n },\n \"peerDependencies\": {\n \"starknet\": \"catalog:\",\n \"open\": \"^10.1.0\"\n },\n \"dependencies\": {\n \"@cartridge/account-wasm\": \"workspace:*\",\n \"@cartridge/penpal\": \"catalog:\",\n \"@starknet-io/types-js\": \"catalog:\",\n \"@telegram-apps/sdk\": \"^2.4.0\",\n \"base64url\": \"catalog:\",\n \"cbor-x\": \"^1.5.0\",\n \"fast-deep-equal\": \"catalog:\"\n },\n \"devDependencies\": {\n \"@cartridge/tsconfig\": \"workspace:*\",\n \"@types/jest\": \"^29.5.14\",\n \"@types/node\": \"catalog:\",\n \"jest\": \"^29.7.0\",\n \"prettier\": \"catalog:\",\n \"ts-jest\": \"^29.2.5\",\n \"tsup\": \"catalog:\",\n \"typescript\": \"catalog:\"\n }\n}\n","export const icon =\n \"data:image/png;base64,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\";\n","function releaseStub() {}\n\n/**\n * A simple mutual exclusion lock. It allows you to obtain and release a lock,\n * ensuring that only one task can access a critical section at a time.\n */\nexport class Mutex {\n private m_lastPromise: Promise<void> = Promise.resolve();\n\n /**\n * Acquire lock\n * @param [bypass=false] option to skip lock acquisition\n */\n public async obtain(bypass = false): Promise<() => void> {\n let release = releaseStub;\n if (bypass) return release;\n const lastPromise = this.m_lastPromise;\n this.m_lastPromise = new Promise<void>((resolve) => (release = resolve));\n await lastPromise;\n return release;\n }\n}\n","import { WalletAccount } from \"starknet\";\nimport {\n AddInvokeTransactionParameters,\n AddStarknetChainParameters,\n Errors,\n Permission,\n RequestAccountsParameters,\n RequestFn,\n StarknetWindowObject,\n SwitchStarknetChainParameters,\n TypedData,\n WalletEventHandlers,\n WalletEventListener,\n WalletEvents,\n} from \"@starknet-io/types-js\";\nimport manifest from \"../package.json\";\n\nimport { icon } from \"./icon\";\nimport { Mutex } from \"./mutex\";\n\nconst mutex = new Mutex();\n\nexport default abstract class BaseProvider implements StarknetWindowObject {\n public id = \"controller\";\n public name = \"Controller\";\n public version = manifest.version;\n public icon = icon;\n\n public account?: WalletAccount;\n public subscriptions: WalletEvents[] = [];\n\n private _probePromise: Promise<WalletAccount | undefined> | null = null;\n\n protected async safeProbe(): Promise<WalletAccount | undefined> {\n // If we already have an account, return it\n if (this.account) {\n return this.account;\n }\n\n // If we're already probing, wait for the existing probe\n if (this._probePromise) {\n return this._probePromise;\n }\n\n const release = await mutex.obtain();\n return await new Promise<WalletAccount | undefined>(async (resolve) => {\n try {\n this._probePromise = this.probe();\n const result = await this._probePromise;\n resolve(result);\n } finally {\n this._probePromise = null;\n }\n }).finally(() => {\n release();\n });\n }\n\n request: RequestFn = async (call) => {\n switch (call.type) {\n case \"wallet_getPermissions\":\n await this.safeProbe();\n\n if (this.account) {\n return [Permission.ACCOUNTS];\n }\n\n return [];\n\n case \"wallet_requestAccounts\": {\n if (this.account) {\n return [this.account.address];\n }\n\n const silentMode =\n call.params && (call.params as RequestAccountsParameters).silent_mode;\n\n this.account = await this.safeProbe();\n\n if (!this.account && !silentMode) {\n this.account = await this.connect();\n }\n\n if (this.account) {\n return [this.account.address];\n }\n\n return [];\n }\n\n case \"wallet_watchAsset\":\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"wallet_watchAsset not implemented\",\n } as Errors.UNEXPECTED_ERROR;\n\n case \"wallet_addStarknetChain\": {\n let params = call.params as AddStarknetChainParameters;\n return this.addStarknetChain(params);\n }\n\n case \"wallet_switchStarknetChain\": {\n let params = call.params as SwitchStarknetChainParameters;\n return this.switchStarknetChain(params.chainId);\n }\n\n case \"wallet_requestChainId\":\n if (!this.account) {\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"Account not initialized\",\n } as Errors.UNEXPECTED_ERROR;\n }\n\n return await this.account.getChainId();\n\n case \"wallet_deploymentData\":\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"wallet_deploymentData not implemented\",\n } as Errors.UNEXPECTED_ERROR;\n\n case \"wallet_addInvokeTransaction\":\n if (!this.account) {\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"Account not initialized\",\n } as Errors.UNEXPECTED_ERROR;\n }\n\n let params = call.params as AddInvokeTransactionParameters;\n return await this.account.execute(\n params.calls.map((call) => ({\n contractAddress: call.contract_address,\n entrypoint: call.entry_point,\n calldata: call.calldata,\n })),\n );\n\n case \"wallet_addDeclareTransaction\":\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"wallet_addDeclareTransaction not implemented\",\n } as Errors.UNEXPECTED_ERROR;\n\n case \"wallet_signTypedData\": {\n if (!this.account) {\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: \"Account not initialized\",\n } as Errors.UNEXPECTED_ERROR;\n }\n\n return await this.account.signMessage(call.params as TypedData);\n }\n\n case \"wallet_supportedSpecs\":\n return [];\n case \"wallet_supportedWalletApi\":\n return [];\n default:\n throw {\n code: 63,\n message: \"An unexpected error occurred\",\n data: `Unknown RPC call type: ${call.type}`,\n } as Errors.UNEXPECTED_ERROR;\n }\n };\n\n on: WalletEventListener = <E extends keyof WalletEventHandlers>(\n event: E,\n handler: WalletEventHandlers[E],\n ): void => {\n if (event !== \"accountsChanged\" && event !== \"networkChanged\") {\n throw new Error(`Unknown event: ${event}`);\n }\n this.subscriptions.push({ type: event, handler } as WalletEvents);\n };\n\n off: WalletEventListener = <E extends keyof WalletEventHandlers>(\n event: E,\n handler: WalletEventHandlers[E],\n ): void => {\n if (event !== \"accountsChanged\" && event !== \"networkChanged\") {\n throw new Error(`Unknown event: ${event}`);\n }\n const idx = this.subscriptions.findIndex(\n (sub) => sub.type === event && sub.handler === handler,\n );\n if (idx >= 0) {\n this.subscriptions.splice(idx, 1);\n }\n };\n\n protected emitNetworkChanged(chainId: string) {\n this.subscriptions\n .filter((sub) => sub.type === \"networkChanged\")\n .forEach((sub) => {\n (sub.handler as WalletEventHandlers[\"networkChanged\"])(chainId);\n });\n }\n\n protected emitAccountsChanged(accounts: string[]) {\n this.subscriptions\n .filter((sub) => sub.type === \"accountsChanged\")\n .forEach((sub) => {\n (sub.handler as WalletEventHandlers[\"accountsChanged\"])(accounts);\n });\n }\n\n abstract probe(): Promise<WalletAccount | undefined>;\n abstract connect(): Promise<WalletAccount | undefined>;\n abstract switchStarknetChain(chainId: string): Promise<boolean>;\n abstract addStarknetChain(\n chain: AddStarknetChainParameters,\n ): Promise<boolean>;\n}\n","import { AsyncMethodReturns } from \"@cartridge/penpal\";\n\nimport ControllerAccount from \"./account\";\nimport { KeychainIFrame, ProfileIFrame } from \"./iframe\";\nimport { NotReadyToConnect } from \"./errors\";\nimport {\n Keychain,\n ResponseCodes,\n ConnectReply,\n ProbeReply,\n ControllerOptions,\n ConnectError,\n Profile,\n IFrames,\n ProfileContextTypeVariant,\n Chain,\n} from \"./types\";\nimport BaseProvider from \"./provider\";\nimport { WalletAccount } from \"starknet\";\nimport { Policy } from \"@cartridge/presets\";\nimport { AddStarknetChainParameters, ChainId } from \"@starknet-io/types-js\";\nimport { parseChainId } from \"./utils\";\n\nexport default class ControllerProvider extends BaseProvider {\n private keychain?: AsyncMethodReturns<Keychain>;\n private profile?: AsyncMethodReturns<Profile>;\n private options: ControllerOptions;\n private iframes: IFrames;\n private selectedChain: ChainId;\n private chains: Map<ChainId, Chain>;\n\n constructor(options: ControllerOptions) {\n super();\n\n const chains = new Map<ChainId, Chain>();\n\n for (const chain of options.chains) {\n const url = new URL(chain.rpcUrl);\n const chainId = parseChainId(url);\n chains.set(chainId, chain);\n }\n\n if (\n options.policies?.messages?.length &&\n options.policies.messages.length !== chains.size\n ) {\n console.warn(\n \"Each message policy is associated with a specific chain. \" +\n \"The number of message policies does not match the number of chains specified - \" +\n \"session message signing may not work on some chains.\",\n );\n }\n\n this.chains = chains;\n this.selectedChain = options.defaultChainId;\n\n if (!this.chains.has(this.selectedChain)) {\n throw new Error(\n `Chain ${this.selectedChain} not found in configured chains`,\n );\n }\n\n this.iframes = {\n keychain: new KeychainIFrame({\n ...options,\n onClose: this.keychain?.reset,\n onConnect: (keychain) => {\n this.keychain = keychain;\n },\n }),\n };\n\n this.options = options;\n\n if (typeof window !== \"undefined\") {\n (window as any).starknet_controller = this;\n }\n }\n\n async probe(): Promise<WalletAccount | undefined> {\n try {\n await this.waitForKeychain();\n\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n const response = (await this.keychain.probe(this.rpcUrl())) as ProbeReply;\n\n // For backwards compat with controller <=0.6.0\n let rpcUrl = response?.rpcUrl || this.rpcUrl();\n this.account = new ControllerAccount(\n this,\n rpcUrl,\n response.address,\n this.keychain,\n this.options,\n this.iframes.keychain,\n );\n } catch (e) {\n console.error(e);\n return;\n }\n\n if (!this.iframes.profile) {\n const username = await this.keychain.username();\n\n this.iframes.profile = new ProfileIFrame({\n ...this.options,\n onConnect: (profile) => {\n this.profile = profile;\n },\n methods: {\n openSettings: () => this.openSettings.bind(this),\n openPurchaseCredits: () => this.openPurchaseCredits.bind(this),\n openExecute: () => this.openExecute.bind(this),\n },\n rpcUrl: this.rpcUrl(),\n username,\n version: this.version,\n });\n }\n\n return this.account;\n }\n\n async connect(): Promise<WalletAccount | undefined> {\n if (this.account) {\n return this.account;\n }\n\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n if (!!document.hasStorageAccess) {\n const ok = await document.hasStorageAccess();\n if (!ok) {\n await document.requestStorageAccess();\n }\n }\n\n this.iframes.keychain.open();\n\n try {\n let response = await this.keychain.connect(\n this.options.policies || {},\n this.rpcUrl(),\n );\n if (response.code !== ResponseCodes.SUCCESS) {\n throw new Error(response.message);\n }\n\n response = response as ConnectReply;\n this.account = new ControllerAccount(\n this,\n this.rpcUrl(),\n response.address,\n this.keychain,\n this.options,\n this.iframes.keychain,\n );\n\n return this.account;\n } catch (e) {\n console.log(e);\n } finally {\n this.iframes.keychain.close();\n }\n }\n\n async switchStarknetChain(chainId: string): Promise<boolean> {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return false;\n }\n\n try {\n this.selectedChain = chainId;\n const response = (await this.keychain.probe(this.rpcUrl())) as ProbeReply;\n\n if (response.rpcUrl === this.rpcUrl()) {\n return true;\n }\n\n await this.keychain.switchChain(this.rpcUrl());\n } catch (e) {\n console.error(e);\n return false;\n }\n\n this.emitNetworkChanged(chainId);\n return true;\n }\n\n addStarknetChain(_chain: AddStarknetChainParameters): Promise<boolean> {\n return Promise.resolve(true);\n }\n\n async disconnect() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n if (!!document.hasStorageAccess) {\n const ok = await document.hasStorageAccess();\n if (!ok) {\n await document.requestStorageAccess();\n }\n }\n\n this.account = undefined;\n return this.keychain.disconnect();\n }\n\n async openProfile(tab: ProfileContextTypeVariant = \"inventory\") {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(`${this.iframes.profile.url?.pathname}/${tab}`);\n this.iframes.profile.open();\n }\n\n async openProfileTo(to: string) {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(`${this.iframes.profile.url?.pathname}/${to}`);\n this.iframes.profile.open();\n }\n\n async openProfileAt(at: string) {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(at);\n this.iframes.profile.open();\n }\n\n async openSettings() {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n if (this.iframes.profile?.sendBackward) {\n this.iframes.profile?.sendBackward();\n } else {\n this.iframes.profile?.close();\n }\n this.iframes.keychain.open();\n const res = await this.keychain.openSettings();\n this.iframes.keychain.close();\n this.iframes.profile?.sendForward?.();\n if (res && (res as ConnectError).code === ResponseCodes.NOT_CONNECTED) {\n return false;\n }\n return true;\n }\n\n revoke(origin: string, _policy: Policy[]) {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n\n return this.keychain.revoke(origin);\n }\n\n rpcUrl(): string {\n return this.chains.get(this.selectedChain)!.rpcUrl;\n }\n\n username() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n return this.keychain.username();\n }\n\n openPurchaseCredits() {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n if (!this.iframes.profile) {\n console.error(\"Profile is not ready\");\n return;\n }\n this.iframes.profile.close();\n this.iframes.keychain.open();\n this.keychain.openPurchaseCredits();\n }\n\n async openExecute(calls: any, chainId?: string) {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n if (!this.iframes.profile) {\n console.error(\"Profile is not ready\");\n return;\n }\n // Switch to the chain if provided\n let currentChainId = this.selectedChain;\n if (chainId) {\n this.switchStarknetChain(chainId);\n }\n // Switch iframes\n this.iframes.profile?.sendBackward();\n this.iframes.keychain.open();\n this.iframes.profile?.close();\n // Invoke execute\n const res = await this.keychain.execute(calls, undefined, undefined, true);\n // Switch back iframes\n this.iframes.profile?.open();\n this.iframes.keychain.close();\n this.iframes.profile?.sendForward();\n // Switch back to the original chain\n if (chainId) {\n this.switchStarknetChain(currentChainId);\n }\n return !(\n res &&\n ((res as ConnectError).code === ResponseCodes.NOT_CONNECTED ||\n (res as ConnectError).code === ResponseCodes.CANCELED)\n );\n }\n\n async delegateAccount() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n\n return await this.keychain.delegateAccount();\n }\n\n private waitForKeychain({\n timeout = 50000,\n interval = 100,\n }:\n | {\n timeout?: number;\n interval?: number;\n }\n | undefined = {}) {\n return new Promise<void>((resolve, reject) => {\n const startTime = Date.now();\n const id = setInterval(() => {\n if (Date.now() - startTime > timeout) {\n clearInterval(id);\n reject(new Error(\"Timeout waiting for keychain\"));\n return;\n }\n\n if (!this.keychain) return;\n\n clearInterval(id);\n resolve();\n }, interval);\n });\n }\n}\n","import { LookupRequest, LookupResponse } from \"./types\";\nimport { num } from \"starknet\";\nimport { API_URL } from \"./constants\";\n\nconst cache = new Map<string, string>();\n\nasync function lookup(request: LookupRequest): Promise<LookupResponse> {\n if (!request.addresses?.length && !request.usernames?.length) {\n return { results: [] };\n }\n\n const response = await fetch(`${API_URL}/lookup`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(request),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n return response.json();\n}\n\nexport async function lookupUsernames(\n usernames: string[],\n): Promise<Map<string, string>> {\n const uncachedUsernames = usernames.filter((name) => !cache.has(name));\n\n if (uncachedUsernames.length > 0) {\n const response = await lookup({ usernames: uncachedUsernames });\n\n response.results.forEach((result) => {\n cache.set(result.username, result.addresses[0]); // TODO: handle multiple controller addresses\n });\n }\n\n return new Map(\n usernames\n .map((name) => [name, cache.get(name)] as [string, string])\n .filter((entry): entry is [string, string] => entry[1] !== undefined),\n );\n}\n\nexport async function lookupAddresses(\n addresses: string[],\n): Promise<Map<string, string>> {\n addresses = addresses.map(num.toHex);\n const uncachedAddresses = addresses.filter((addr) => !cache.has(addr));\n\n if (uncachedAddresses.length > 0) {\n const response = await lookup({\n addresses: uncachedAddresses,\n });\n\n response.results.forEach((result) => {\n cache.set(result.addresses[0], result.username); // TODO: handle multiple controller addresses\n });\n }\n\n return new Map(\n addresses\n .map((addr) => [addr, cache.get(addr)] as [string, string])\n .filter((entry): entry is [string, string] => entry[1] !== undefined),\n );\n}\n","// This file is auto-generated. DO NOT EDIT IT MANUALLY.\nimport { ControllerConfigs } from \"../\";\n\nexport const configs: ControllerConfigs = {\n \"blob-arena\": {\n origin: \"blobarena.xyz\",\n theme: {\n colors: {\n primary: \"#980f06\",\n },\n cover: \"https://static.cartridge.gg/presets/blob-arena/cover.png\",\n icon: \"https://static.cartridge.gg/presets/blob-arena/icon.png\",\n name: \"Blob Arena\",\n },\n },\n cartridge: {\n origin: \"*\",\n theme: {\n name: \"Cartridge\",\n icon: \"https://static.cartridge.gg/presets/cartridge/icon.svg\",\n cover: {\n light: \"https://static.cartridge.gg/presets/cartridge/cover-light.png\",\n dark: \"https://static.cartridge.gg/presets/cartridge/cover-dark.png\",\n },\n },\n },\n \"dark-shuffle\": {\n origin: \"darkshuffle.io\",\n theme: {\n colors: {\n primary: \"#F59100\",\n },\n cover: \"https://static.cartridge.gg/presets/dark-shuffle/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dark-shuffle/icon.svg\",\n name: \"Dark Shuffle\",\n },\n },\n \"dope-wars\": {\n origin: \"dopewars.game\",\n policies: {\n contracts: {\n \"0x051Fea4450Da9D6aeE758BDEbA88B2f665bCbf549D2C61421AA724E9AC0Ced8F\": {\n name: \"VRF Provider\",\n description: \"Provides verifiable random functions\",\n methods: [\n {\n name: \"Request Random\",\n description: \"Request a random number\",\n entrypoint: \"request_random\",\n },\n ],\n },\n \"0x0410466536b5ae074f7fea81e5533b8134a9fa08b3dd077dd9db08f64997d113\": {\n name: \"Paper Token\",\n description: \"Manages paper approvals\",\n methods: [\n {\n name: \"Approve\",\n description: \"Approve paper usage\",\n entrypoint: \"approve\",\n },\n ],\n },\n \"0x044a23BbfE03FFe90D3C23Fb6e5A8AD0341036C039363DfA6F3513278Aa51fCA\": {\n name: \"Game Contract\",\n description: \"Core game mechanics\",\n methods: [\n {\n name: \"Create Game\",\n description: \"Start a new game\",\n entrypoint: \"create_game\",\n },\n {\n name: \"Travel\",\n description: \"Travel to a new location\",\n entrypoint: \"travel\",\n },\n {\n name: \"Decide\",\n description: \"Make a game decision\",\n entrypoint: \"decide\",\n },\n {\n name: \"End Game\",\n description: \"End the current game\",\n entrypoint: \"end_game\",\n },\n ],\n },\n \"0x0412445e644070C69fEa16b964cC81Cd6dEBF6A4DBf683E2E9686a45ad088de8\": {\n name: \"Laundromat Contract\",\n description: \"Manages game scoring and laundering\",\n methods: [\n {\n name: \"Register Score\",\n description: \"Register a game score\",\n entrypoint: \"register_score\",\n },\n {\n name: \"Claim\",\n description: \"Claim rewards\",\n entrypoint: \"claim\",\n },\n {\n name: \"Launder\",\n description: \"Launder resources\",\n entrypoint: \"launder\",\n },\n ],\n },\n },\n },\n theme: {\n colors: {\n primary: \"#11ED83\",\n },\n cover: \"https://static.cartridge.gg/presets/dope-wars/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dope-wars/icon.png\",\n name: \"Dope Wars\",\n },\n },\n dragark: {\n origin: \"dragark.net\",\n theme: {\n colors: {\n primary: \"#71EB34\",\n },\n cover: \"https://static.cartridge.gg/presets/dragark/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dragark/icon.png\",\n name: \"Dragark\",\n },\n },\n eternum: {\n origin: [\"eternum.realms.world\", \"empire.realms.world\"],\n policies: {\n contracts: {\n \"0x4ed3a7c5f53c6e96186eaf1b670bd2e2a3699c08e070aedf4e5fc6ac246ddc1\": {\n name: \"Pillage\",\n description: \"Allows you to raid a structure and pillage resources\",\n methods: [\n {\n name: \"Battle Pillage\",\n description: \"Pillage a structure\",\n entrypoint: \"battle_pillage\",\n },\n ],\n },\n \"0x2620f65aa2fd72d705306ada1ee7410023a3df03da9291f1ccb744fabfebc0\": {\n name: \"Battle contract\",\n description: \"Required to engage in battles\",\n methods: [\n {\n name: \"Battle Start\",\n description: \"Start a battle\",\n entrypoint: \"battle_start\",\n },\n {\n name: \"Battle Force Start\",\n description: \"Force start a battle\",\n entrypoint: \"battle_force_start\",\n },\n {\n name: \"Battle Join\",\n description: \"Join a battle\",\n entrypoint: \"battle_join\",\n },\n {\n name: \"Battle Leave\",\n description: \"Leave a battle\",\n entrypoint: \"battle_leave\",\n },\n {\n name: \"Battle Claim\",\n description: \"Claim a structure after a battle\",\n entrypoint: \"battle_claim\",\n },\n {\n name: \"Battle Resolve\",\n description: \"Reopens the bank after battle\",\n entrypoint: \"battle_resolve\",\n },\n ],\n },\n \"0x6bf57710571fd159e71b1ed155bb0759027e416c88a06556f321c94c214e768\": {\n name: \"Leave battle contract\",\n description: \"Allows armies to leave a battle\",\n methods: [\n {\n name: \"Leave Battle\",\n description: \"Leave a battle\",\n entrypoint: \"leave_battle\",\n },\n {\n name: \"Leave Battle If Ended\",\n description: \"Leave a battle if its ended\",\n entrypoint: \"leave_battle_if_ended\",\n },\n ],\n },\n \"0x4b6a35c0c541467674ebb9640113a6d79c6f5a468796e9299b8e484a770032a\": {\n name: \"Building contract\",\n description: \"Allows to manage buildings\",\n methods: [\n {\n name: \"Create\",\n description: \"Create a building\",\n entrypoint: \"create\",\n },\n {\n name: \"Pause Production\",\n description: \"Pause the production of a building\",\n entrypoint: \"pause_production\",\n },\n {\n name: \"Resume Production\",\n description: \"Resume production of a building\",\n entrypoint: \"resume_production\",\n },\n {\n name: \"Destroy a building\",\n description: \"Destroy a building\",\n entrypoint: \"destroy\",\n },\n ],\n },\n \"0x57d514154bb4dc319539d4e338312a41c248fb6a5122f82b2f2e11ddd3e67e4\": {\n name: \"Guild contract\",\n description: \"Allows guild utilities\",\n methods: [\n {\n name: \"Create Guild\",\n description: \"Creates a new guild\",\n entrypoint: \"create_guild\",\n },\n {\n name: \"Join Guild\",\n description: \"Join an existing guild\",\n entrypoint: \"join_guild\",\n },\n {\n name: \"Whitelist Player\",\n description: \"Add a player to the guild's whitelist\",\n entrypoint: \"whitelist_player\",\n },\n {\n name: \"Transfer Guild Ownership\",\n description: \"Transfer ownership of the guild to another player\",\n entrypoint: \"transfer_guild_ownership\",\n },\n {\n name: \"Remove Guild Member\",\n description: \"Remove a member from the guild\",\n entrypoint: \"remove_guild_member\",\n },\n {\n name: \"Remove Player From Whitelist\",\n description: \"Remove a player from the guild's whitelist\",\n entrypoint: \"remove_player_from_whitelist\",\n },\n ],\n },\n \"0x2fcc3c1691387321c2f4d6310eda7a14365bd274c1a37ed3948d2e93a56f821\": {\n name: \"Hyperstructure contract\",\n description: \"Handles the creation and management of hyperstructures\",\n methods: [\n {\n name: \"Get Points\",\n description: \"Gets your total number of points\",\n entrypoint: \"get_points\",\n },\n {\n name: \"Create\",\n description: \"Create a new hyperstructure\",\n entrypoint: \"create\",\n },\n {\n name: \"Contribute To Construction\",\n description:\n \"Contribute resources to hyperstructure construction\",\n entrypoint: \"contribute_to_construction\",\n },\n {\n name: \"Set Co Owners\",\n description: \"Set additional owners for the hyperstructure\",\n entrypoint: \"set_co_owners\",\n },\n {\n name: \"End Game\",\n description:\n \"Terminates the current game season once you've reached enough points\",\n entrypoint: \"end_game\",\n },\n {\n name: \"Set Access\",\n description:\n \"Configure access permissions for contributions to the hyperstructure\",\n entrypoint: \"set_access\",\n },\n ],\n },\n \"0xa052c5ca082356bcc8457f0f805eaf18f97d0fdddde3f90f5b238923859ed4\": {\n name: \"AMM liquidity contract\",\n description: \"Manages liquidity for the Automated Market Maker\",\n methods: [\n {\n name: \"Add\",\n description: \"Add liquidity to the pool\",\n entrypoint: \"add\",\n },\n {\n name: \"Remove\",\n description: \"Remove liquidity from the pool\",\n entrypoint: \"remove\",\n },\n ],\n },\n \"0x4a212c52c4035bc9bd170125216604f406dcd75b41be11d3b4d89047366d84d\": {\n name: \"Exploration contract\",\n description: \"Allows you to move to unexplored hexes on the map\",\n methods: [\n {\n name: \"Explore\",\n description: \"Explore an uncharted hex on the game map\",\n entrypoint: \"explore\",\n },\n ],\n },\n \"0x7e3bae0e253a0131063b63ee4d7b27b50329c617ae88b82d529a70f1a11c63\": {\n name: \"Naming contract\",\n description: \"Manages entity naming in the game\",\n methods: [\n {\n name: \"Set Entity Name\",\n description: \"Assign a custom name to a game entity\",\n entrypoint: \"set_entity_name\",\n },\n {\n name: \"Set Address Name\",\n description: \"Assign a custom name to a user's address\",\n entrypoint: \"set_address_name\",\n },\n ],\n },\n \"0x1b480f620ea35431ab43dba634795b14f547ef3e77370db6f0a31f2fdc21d86\": {\n name: \"Realms contract\",\n description: \"Manages realm-related actions\",\n methods: [\n {\n name: \"Create a realm\",\n description: \"Create a new realm\",\n entrypoint: \"create\",\n },\n {\n name: \"Upgrade Level\",\n description: \"Upgrade the level of a realm\",\n entrypoint: \"upgrade_level\",\n },\n {\n name: \"Quest Claim\",\n description: \"Claim rewards from completed quests\",\n entrypoint: \"quest_claim\",\n },\n ],\n },\n \"0x691a60b709ca5c1c5ff86824831f84deb26f0f5d07d70c0f807eab48110d2f6\": {\n name: \"Resource bridge contract\",\n description: \"Manages bridge transfers between L2 and Eternum\",\n methods: [\n {\n name: \"Deposit Initial\",\n description: \"Initial deposit of resources for bridge transfer\",\n entrypoint: \"deposit_initial\",\n },\n {\n name: \"Deposit\",\n description: \"Deposit additional resources for bridge transfer\",\n entrypoint: \"deposit\",\n },\n {\n name: \"Start Withdraw\",\n description: \"Initiate a withdrawal process\",\n entrypoint: \"start_withdraw\",\n },\n {\n name: \"Finish Withdraw\",\n description: \"Finalize a withdrawal process\",\n entrypoint: \"finish_withdraw\",\n },\n ],\n },\n \"0x42c0303a2119a9e20daa60e83c48221cdf1bb2a4c009bab031d1cd3555a127e\": {\n name: \"Resource contract\",\n description: \"In-game resource management\",\n methods: [\n {\n name: \"Approve\",\n description: \"Approve resource transfer\",\n entrypoint: \"approve\",\n },\n {\n name: \"Send\",\n description: \"Send resources to another entity\",\n entrypoint: \"send\",\n },\n {\n name: \"Pickup\",\n description: \"Collect available resources after approval\",\n entrypoint: \"pickup\",\n },\n ],\n },\n \"0x4f92a1d00d3aec8cece60fc2d0fc236fe1d95c54ff0ceb2f393fbc7e0863d8e\": {\n name: \"AMM swap contract\",\n description: \"Handles token swaps in the Automated Market Maker\",\n methods: [\n {\n name: \"Buy\",\n description: \"Purchase tokens from the liquidity pool\",\n entrypoint: \"buy\",\n },\n {\n name: \"Sell\",\n description: \"Sell tokens to the liquidity pool\",\n entrypoint: \"sell\",\n },\n ],\n },\n \"0x7e2b1334398fafbe640f34bacae99b649d633417960ee397b6a8fb117fec819\": {\n name: \"Market contract\",\n description: \"Manages trading orders in the in-game market\",\n methods: [\n {\n name: \"Create Order\",\n description: \"Create a new trading order\",\n entrypoint: \"create_order\",\n },\n {\n name: \"Accept Order\",\n description: \"Accept a trading order\",\n entrypoint: \"accept_order\",\n },\n {\n name: \"Accept Partial Order\",\n description: \"Accept a partial trading order\",\n entrypoint: \"accept_partial_order\",\n },\n {\n name: \"Cancel Order\",\n description: \"Cancel a trading order\",\n entrypoint: \"cancel_order\",\n },\n ],\n },\n \"0x4069c2be57f08fef9f31afc85a5b4c03c208ebdb278b9d853606caa7a9cbee6\": {\n name: \"Map travel contract\",\n description: \"Manages player movement across the game map\",\n methods: [\n {\n name: \"Travel Hex\",\n description: \"Move to a specific hex on the map\",\n entrypoint: \"travel_hex\",\n },\n ],\n },\n \"0x26be0ed574aa9ee6f73b53b12f0a199ddbf4ac697470316cdb3d9d1f5680cab\": {\n name: \"Army contract\",\n description: \"Manages army-related actions\",\n methods: [\n {\n name: \"Army Create\",\n description: \"Create a new army\",\n entrypoint: \"army_create\",\n },\n {\n name: \"Army Delete\",\n description: \"Delete an existing army\",\n entrypoint: \"army_delete\",\n },\n {\n name: \"Army Buy Troops\",\n description: \"Buy troops for an army\",\n entrypoint: \"army_buy_troops\",\n },\n {\n name: \"Army Merge Troops\",\n description: \"Merge troops from multiple armies\",\n entrypoint: \"army_merge_troops\",\n },\n ],\n },\n \"0x051fea4450da9d6aee758bdeba88b2f665bcbf549d2c61421aa724e9ac0ced8f\": {\n name: \"VRF Provider\",\n description:\n \"Verifiable Random Function contract, allows randomness in the game\",\n methods: [\n {\n name: \"Request Random\",\n description:\n \"Allows requesting random numbers from the VRF provider\",\n entrypoint: \"request_random\",\n },\n ],\n },\n \"0x057675b9c0bd62b096a2e15502a37b290fa766ead21c33eda42993e48a714b80\": {\n name: \"Season pass ERC20 contract\",\n description: \"Manages the season passes\",\n methods: [\n {\n name: \"Approve for all\",\n description: \"Approves transfer of season pass\",\n entrypoint: \"set_approval_for_all\",\n },\n ],\n },\n \"0x4b5e65a9617c7ba3c7ea64324ff4338a400adb1a3cfe903b3f8b647cbb59fb7\": {\n name: \"Season Systems\",\n description: \"Register and claim\",\n methods: [\n {\n name: \"Register\",\n description: \"Registers to leaderboard\",\n entrypoint: \"register_to_leaderboard\",\n },\n {\n name: \"Claim\",\n description: \"Claim\",\n entrypoint: \"claim_leaderboard_rewards\",\n },\n ],\n },\n },\n messages: [\n {\n types: {\n StarknetDomain: [\n {\n name: \"name\",\n type: \"shortstring\",\n },\n {\n name: \"version\",\n type: \"shortstring\",\n },\n {\n name: \"chainId\",\n type: \"shortstring\",\n },\n {\n name: \"revision\",\n type: \"shortstring\",\n },\n ],\n \"s0_eternum-Message\": [\n {\n name: \"identity\",\n type: \"ContractAddress\",\n },\n {\n name: \"channel\",\n type: \"shortstring\",\n },\n {\n name: \"content\",\n type: \"string\",\n },\n {\n name: \"timestamp\",\n type: \"felt\",\n },\n {\n name: \"salt\",\n type: \"felt\",\n },\n ],\n },\n primaryType: \"s0_eternum-Message\",\n domain: {\n name: \"Eternum\",\n version: \"1\",\n chainId: \"SN_MAIN\",\n revision: \"1\",\n },\n },\n ],\n },\n theme: {\n name: \"Eternum\",\n icon: \"https://static.cartridge.gg/presets/eternum/icon.svg\",\n cover: \"https://static.cartridge.gg/presets/eternum/cover.png\",\n colors: {\n primary: \"#dc8b07\",\n },\n },\n },\n flippyflop: {\n origin: \"flippyflop.gg\",\n theme: {\n colors: {\n primary: \"#F38332\",\n },\n cover: \"https://static.cartridge.gg/presets/flippyflop/cover.png\",\n icon: \"https://static.cartridge.gg/presets/flippyflop/icon.png\",\n name: \"FlippyFlop\",\n },\n },\n \"force-prime\": {\n origin: \"forceprime.io\",\n theme: {\n colors: {\n primary: \"#E1CC89\",\n },\n cover: \"https://static.cartridge.gg/presets/force-prime/cover.png\",\n icon: \"https://static.cartridge.gg/presets/force-prime/icon.png\",\n name: \"Force Prime\",\n },\n },\n \"jokers-of-neon\": {\n origin: \"jokersofneon.com\",\n theme: {\n colors: {\n primary: \"#A144B2\",\n },\n cover: \"https://static.cartridge.gg/presets/jokers-of-neon/cover.png\",\n icon: \"https://static.cartridge.gg/presets/jokers-of-neon/icon.png\",\n name: \"Jokers of Neon\",\n },\n },\n \"loot-survivor\": {\n origin: \"lootsurvivor.io\",\n policies: {\n contracts: {\n \"0x0305f26ad19e0a10715d9f3137573d3a543de7b707967cd85d11234d6ec0fb7e\": {\n methods: [\n {\n entrypoint: \"attack\",\n },\n {\n entrypoint: \"drop\",\n },\n {\n entrypoint: \"equip\",\n },\n {\n entrypoint: \"explore\",\n },\n {\n entrypoint: \"flee\",\n },\n {\n entrypoint: \"new_game\",\n },\n {\n entrypoint: \"transfer_from\",\n },\n {\n entrypoint: \"upgrade\",\n },\n ],\n },\n \"0x3347382d530ff6acb9283ac1d78471187aae8a4690e9316bb4e3c3365ff7a86\": {\n methods: [\n {\n entrypoint: \"enter_tournament\",\n },\n {\n entrypoint: \"start_tournament\",\n },\n ],\n },\n },\n },\n theme: {\n colors: {\n primary: \"#33FF33\",\n },\n cover: \"https://static.cartridge.gg/presets/loot-survivor/cover.png\",\n icon: \"https://static.cartridge.gg/presets/loot-survivor/icon.png\",\n name: \"Loot Survivor\",\n },\n },\n paved: {\n origin: \"paved.gg\",\n theme: {\n colors: {\n primary: \"#B0CAF8\",\n },\n cover: \"https://static.cartridge.gg/presets/paved/cover.png\",\n icon: \"https://static.cartridge.gg/presets/paved/icon.svg\",\n name: \"Paved\",\n },\n },\n pistols: {\n origin: \"pistols.underware.gg\",\n theme: {\n colors: {\n primary: \"#EF9758\",\n },\n cover: \"https://static.cartridge.gg/presets/pistols/cover.png\",\n icon: \"https://static.cartridge.gg/presets/pistols/icon.png\",\n name: \"Pistols at Ten Blocks\",\n },\n },\n pixelaw: {\n origin: \"dojo.pixelaw.xyz\",\n theme: {\n colors: {\n primary: \"#7C00B1\",\n primaryForeground: \"white\",\n },\n cover: \"https://static.cartridge.gg/presets/pixelaw/cover.png\",\n icon: \"https://static.cartridge.gg/presets/pixelaw/icon.svg\",\n name: \"Pixelaw\",\n },\n },\n \"realm-of-ra\": {\n origin: \"mancala.realmofra.com\",\n theme: {\n colors: {\n primary: \"#de9534\",\n },\n cover: \"https://static.cartridge.gg/presets/realm-of-ra/cover.png\",\n icon: \"https://static.cartridge.gg/presets/realm-of-ra/icon.png\",\n name: \"Realm of Ra\",\n },\n },\n \"savage-summit\": {\n origin: \"savagesummit.io\",\n theme: {\n colors: {\n primary: \"#fbf7da\",\n },\n cover: \"https://static.cartridge.gg/presets/savage-summit/cover.png\",\n icon: \"https://static.cartridge.gg/presets/savage-summit/icon.png\",\n name: \"Savage Summit\",\n },\n },\n \"tale-weaver\": {\n origin: \"\",\n theme: {\n colors: {\n primary: \"#fce377\",\n },\n cover: \"https://static.cartridge.gg/presets/tale-weaver/cover.png\",\n icon: \"https://static.cartridge.gg/presets/tale-weaver/icon.png\",\n name: \"Tale Weaver\",\n },\n },\n zkastle: {\n origin: \"zkastle.vercel.app\",\n theme: {\n colors: {\n primary: \"#E50D2C\",\n },\n cover: \"https://static.cartridge.gg/presets/zkastle/cover.png\",\n icon: \"https://static.cartridge.gg/presets/zkastle/icon.svg\",\n name: \"zKastle\",\n },\n },\n zktt: {\n origin: \"zktable.top\",\n theme: {\n colors: {\n primary: \"#FFFFFF\",\n },\n cover: \"https://static.cartridge.gg/presets/zktt/cover.png\",\n icon: \"https://static.cartridge.gg/presets/zktt/icon.png\",\n name: \"zKTT\",\n },\n },\n zkube: {\n origin: \"app.zkube.xyz\",\n theme: {\n colors: {\n primary: \"#5bc3e6\",\n },\n cover: \"https://static.cartridge.gg/presets/zkube/cover.png\",\n icon: \"https://static.cartridge.gg/presets/zkube/icon.png\",\n name: \"zKube\",\n },\n },\n};\n","// This file is auto-generated. DO NOT EDIT IT MANUALLY.\nimport { EkuboERC20Metadata } from \"../\";\n\nexport const metadata: EkuboERC20Metadata[] = [\n {\n name: \"Wrapped BTC\",\n symbol: \"WBTC\",\n decimals: 8,\n l2_token_address:\n \"0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac\",\n sort_order: 0,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/7dcb2db2-a7a7-44af-660b-8262e057a100/logo\",\n },\n {\n name: \"USD Coin\",\n symbol: \"USDC\",\n decimals: 6,\n l2_token_address:\n \"0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8\",\n sort_order: 5,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e5aaa970-a998-47e8-bd43-4a3b56b87200/logo\",\n },\n {\n name: \"Tether USD\",\n symbol: \"USDT\",\n decimals: 6,\n l2_token_address:\n \"0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8\",\n sort_order: 4,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/c8a721d1-07c3-46e4-ab4e-523977c30b00/logo\",\n },\n {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18,\n l2_token_address:\n \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\",\n sort_order: 3,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e07829b7-0382-4e03-7ecd-a478c5aa9f00/logo\",\n },\n {\n name: \"Dai Stablecoin\",\n symbol: \"DAI\",\n decimals: 18,\n l2_token_address:\n \"0x05574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad\",\n sort_order: 4,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/919e761b-56f7-4f53-32aa-5e066f7f6200/logo\",\n },\n {\n name: \"Wrapped liquid staked Ether 2.0\",\n symbol: \"wstETH\",\n decimals: 18,\n l2_token_address:\n \"0x042b8f0484674ca266ac5d08e4ac6a3fe65bd3129795def2dca5c34ecc5f96d2\",\n sort_order: 1,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/dbbcbdea-1a92-437d-3701-4a5ee129d000/logo\",\n },\n {\n name: \"Rocket Pool ETH\",\n symbol: \"rETH\",\n decimals: 18,\n l2_token_address:\n \"0x0319111a5037cbec2b3e638cc34a3474e2d2608299f3e62866e9cc683208c610\",\n sort_order: 1,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/c9f2d6fe-fbc6-4384-0990-923dfcb7a200/logo\",\n },\n {\n name: \"Paper\",\n symbol: \"PAPER\",\n decimals: 18,\n l2_token_address:\n \"0x0410466536b5ae074f7fea81e5533b8134a9fa08b3dd077dd9db08f64997d113\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/811f019a-0461-4cff-6c1e-442102863f00/logo\",\n },\n {\n name: \"Uniswap\",\n symbol: \"UNI\",\n decimals: 18,\n l2_token_address:\n \"0x049210ffc442172463f3177147c1aeaa36c51d152c1b0630f2364c300d4f48ee\",\n sort_order: 1,\n total_supply: 1000000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/361b018e-bd53-4019-27c8-7cf8d9031b00/logo\",\n },\n {\n name: \"Starknet\",\n symbol: \"STRK\",\n decimals: 18,\n l2_token_address:\n \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\",\n sort_order: 2,\n total_supply: 10000000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/1b126320-367c-48ed-cf5a-ba7580e49600/logo\",\n },\n {\n name: \"Ekubo Protocol\",\n symbol: \"EKUBO\",\n decimals: 18,\n l2_token_address:\n \"0x075afe6402ad5a5c20dd25e10ec3b3986acaa647b77e4ae24b0cbc9a54a27a87\",\n sort_order: 1,\n total_supply: 10000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/634d9c36-2f0b-4781-93e6-72d701b5af00/logo\",\n },\n {\n name: \"Nostra\",\n symbol: \"NSTR\",\n decimals: 18,\n l2_token_address:\n \"0x00c530f2c0aa4c16a0806365b0898499fba372e5df7a7172dc6fe9ba777e8007\",\n sort_order: 1,\n total_supply: 100000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/a45c2224-17a7-4269-ea7e-3924e9755800/logo\",\n },\n {\n name: \"Carmine\",\n symbol: \"CRM\",\n decimals: 18,\n l2_token_address:\n \"0x51c4b1fe3bf6774b87ad0b15ef5d1472759076e42944fff9b9f641ff13e5bbe\",\n sort_order: 1,\n total_supply: 100000000,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6ab817f1-8075-4a94-6e14-f112f1f89d00/logo\",\n },\n {\n name: \"Cash\",\n symbol: \"CASH\",\n decimals: 18,\n l2_token_address:\n \"0x498edfaf50ca5855666a700c25dd629d577eb9afccdf3b5977aec79aee55ada\",\n sort_order: 3,\n total_supply: null,\n logo_url:\n \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6bd6d156-f509-4b51-5dfc-3ee566143600/logo\",\n },\n {\n name: \"Lords\",\n symbol: \"LORDS\",\n decimals: 18,\n l2_token_address:\n \"0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49\",\n sort_order: 1,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/coin.png\",\n },\n {\n name: \"Ancien Fragments\",\n symbol: \"ANCIENT_FRAGMENT\",\n decimals: 18,\n l2_token_address:\n \"0x0695b08ecdfdd828c2e6267da62f59e6d7543e690ef56a484df25c8566b332a5\",\n sort_order: 2,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/29.png\",\n },\n {\n name: \"Knight\",\n symbol: \"KNIGHT\",\n decimals: 18,\n l2_token_address:\n \"0x00ac965f9e67164723c16735a9da8dbc9eb8e43b1bd0323591e87c056badf606\",\n sort_order: 3,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/icons/250.png\",\n },\n {\n name: \"Crossbowman\",\n symbol: \"CROSSBOWMAN\",\n decimals: 18,\n l2_token_address:\n \"0x067e4ac00a241be06ba6afc11fa2715ec7da0c42c05a67ef6ecfcfeda725aaa8\",\n sort_order: 4,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/icons/251.png\",\n },\n {\n name: \"Paladin\",\n symbol: \"PALADIN\",\n decimals: 18,\n l2_token_address:\n \"0x03bc86299bee061c7c8d7546ccb62b9daf9bffc653b1508facb722c6593874bc\",\n sort_order: 5,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/icons/252.png\",\n },\n {\n name: \"Donkey\",\n symbol: \"DONKEY\",\n decimals: 18,\n l2_token_address:\n \"0x0264be95a4a2ace20add68cb321acdccd2f9f8440ee1c7abd85da44ddab01085\",\n sort_order: 6,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/buildings/thumb/trade.png\",\n },\n {\n name: \"Wheat\",\n symbol: \"WHEAT\",\n decimals: 18,\n l2_token_address:\n \"0x057a3f1ee475e072ce3be41785c0e889b7295d7a0dcc22b992c5b9408dbeb280\",\n sort_order: 7,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/254.png\",\n },\n {\n name: \"Fish\",\n symbol: \"FISH\",\n decimals: 18,\n l2_token_address:\n \"0x027719173cfe10f1aa38d2aaed0a075b6077290f1e817aa3485d2b828394f4d9\",\n sort_order: 8,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/255.png\",\n },\n {\n name: \"Wood\",\n symbol: \"WOOD\",\n decimals: 18,\n l2_token_address:\n \"0x040d8907cec0f7ae9c364dfb12485a1314d84c129bf1898d2f3d4b7fcc7d44f4\",\n sort_order: 9,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/1.png\",\n },\n {\n name: \"Stone\",\n symbol: \"STONE\",\n decimals: 18,\n l2_token_address:\n \"0x0439a1c010e3e1bb2d43d43411000893c0042bd88f6c701611a0ea914d426da4\",\n sort_order: 10,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/2.png\",\n },\n {\n name: \"Coal\",\n symbol: \"COAL\",\n decimals: 18,\n l2_token_address:\n \"0x00ce635e3f241b0ae78c46a929d84a9101910188f9c4024eaa7559556503c31a\",\n sort_order: 11,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/3.png\",\n },\n {\n name: \"Copper\",\n symbol: \"COPPER\",\n decimals: 18,\n l2_token_address:\n \"0x066ed5c928ee027a9419ace1cbea8389885161db5572a7c5c4fef2310e9bf494\",\n sort_order: 12,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/4.png\",\n },\n {\n name: \"Obsidian\",\n symbol: \"OBSIDIAN\",\n decimals: 18,\n l2_token_address:\n \"0x03b6448d09dcd023507376402686261f5d6739455fa02f804907b066e488da66\",\n sort_order: 13,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/5.png\",\n },\n {\n name: \"Silver\",\n symbol: \"SILVER\",\n decimals: 18,\n l2_token_address:\n \"0x06fe21d2d4a8a05bdb70f09c9250af9870020d5dcc35f410b4a39d6605c3e353\",\n sort_order: 14,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/6.png\",\n },\n {\n name: \"Ironwood\",\n symbol: \"IRONWOOD\",\n decimals: 18,\n l2_token_address:\n \"0x01720cf6318bff45e62acc588680ae3cd4d5f8465b1d52cb710533c9299b031a\",\n sort_order: 15,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/7.png\",\n },\n {\n name: \"Cold Iron\",\n symbol: \"COLDIRON\",\n decimals: 18,\n l2_token_address:\n \"0x0555d713e59d4ff96b7960447e9bc9e79bfdeab5b0eea74e3df81bce61cfbc77\",\n sort_order: 16,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/8.png\",\n },\n {\n name: \"Gold\",\n symbol: \"GOLD\",\n decimals: 18,\n l2_token_address:\n \"0x000dff9dca192609c4e86ab3be22c7ec1e968876c992d21986f3c542be97fa2f\",\n sort_order: 17,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/9.png\",\n },\n {\n name: \"Hartwood\",\n symbol: \"HARTWOOD\",\n decimals: 18,\n l2_token_address:\n \"0x05620aa7170cd66dbcbc37d03087bfe4633ffef91d3e4d97b501de906004f79b\",\n sort_order: 18,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/10.png\",\n },\n {\n name: \"Diamonds\",\n symbol: \"DIAMONDS\",\n decimals: 18,\n l2_token_address:\n \"0x00e03ea8ae385f64754820af5c01c36abf1b8130dd6797d3fd9d430e4114e876\",\n sort_order: 19,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/11.png\",\n },\n {\n name: \"Sapphire\",\n symbol: \"SAPPHIRE\",\n decimals: 18,\n l2_token_address:\n \"0x02f8dd022568af8f9f718aa37707a9b858529db56910633a160456838b6cbcbc\",\n sort_order: 20,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/12.png\",\n },\n {\n name: \"Ruby\",\n symbol: \"RUBY\",\n decimals: 18,\n l2_token_address:\n \"0x03d9b66720959d0e7687b898292c10e62e78626f2dba5e1909961a2ce3f86612\",\n sort_order: 21,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/13.png\",\n },\n {\n name: \"Deep Crystal\",\n symbol: \"DEEPCRYSTAL\",\n decimals: 18,\n l2_token_address:\n \"0x01d655ac834d38df7921074fc1588411e202b1af83307cbd996983aff52db3a8\",\n sort_order: 22,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/14.png\",\n },\n {\n name: \"Ignium\",\n symbol: \"IGNIUM\",\n decimals: 18,\n l2_token_address:\n \"0x0625c1f789b03ebebc7a9322366f38ebad1f693b84b2abd8cb8f5b2748b0cdd5\",\n sort_order: 23,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/15.png\",\n },\n {\n name: \"Ethereal Silica\",\n symbol: \"ETHEREALSILICA\",\n decimals: 18,\n l2_token_address:\n \"0x068b6e23cbbd58a644700f55e96c83580921e9f521b6e5175396b53ba7910e7d\",\n sort_order: 24,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/16.png\",\n },\n {\n name: \"True Ice\",\n symbol: \"TRUEICE\",\n decimals: 18,\n l2_token_address:\n \"0x04485f5a6e16562e1c761cd348e63256d00389e3ddf4f5d98afe7ab44c57c481\",\n sort_order: 25,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/17.png\",\n },\n {\n name: \"Twilight Quartz\",\n symbol: \"TWILIGHTQUARTZ\",\n decimals: 18,\n l2_token_address:\n \"0x035e24c02409c3cfe8d5646399a62c4d102bb782938d5f5180e92c9c62d3faf7\",\n sort_order: 26,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/18.png\",\n },\n {\n name: \"Alchemical Silver\",\n symbol: \"ALCHEMICALSILVER\",\n decimals: 18,\n l2_token_address:\n \"0x03956a5301e99522038a2e7dcb9c2a89bf087ffa79310ee0a508b5538efd8ddd\",\n sort_order: 27,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/19.png\",\n },\n {\n name: \"Adamantine\",\n symbol: \"ADAMANTINE\",\n decimals: 18,\n l2_token_address:\n \"0x0367f838f85a2f5e1580d6f011e4476f581083314cff8721ba3dda9706076eed\",\n sort_order: 28,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/20.png\",\n },\n {\n name: \"Mithral\",\n symbol: \"MITHRAL\",\n decimals: 18,\n l2_token_address:\n \"0x0067ba235c569c23877064b2ac6ebd4d79f32d3c00f5fab8e28a3b5700b957f6\",\n sort_order: 29,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/21.png\",\n },\n {\n name: \"Dragon Hide\",\n symbol: \"DRAGONHIDE\",\n decimals: 18,\n l2_token_address:\n \"0x03bf856515bece3c93f5061b7941b8645f817a0acab93c758b8c7b4bc0afa3c6\",\n sort_order: 30,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/22.png\",\n },\n {\n name: \"Demon Hide\",\n symbol: \"DEMONHIDE\",\n decimals: 18,\n l2_token_address:\n \"0x03b847fbef9d344ba968edc945100e6ab0258a4b1b91f8665f85a3d814c3e4d4\",\n sort_order: 31,\n total_supply: null,\n logo_url: \"https://empire.realms.world/images/resources/22.png\",\n },\n];\n","import { configs } from \"./generated/controller-configs\";\nimport { TypedData } from \"@starknet-io/types-js\";\nimport { metadata } from \"./generated/erc20-metadata\";\n\nexport const controllerConfigs = configs;\nexport const erc20Metadata = metadata;\nexport const defaultTheme = configs[\"cartridge\"].theme!;\n\nexport type EkuboERC20Metadata = {\n name: string;\n symbol: string;\n decimals: number;\n l2_token_address: string;\n sort_order: number;\n total_supply: number | null;\n logo_url?: string;\n hidden?: boolean;\n disabled?: boolean;\n};\n\nexport type Policy = CallPolicy | TypedDataPolicy;\n\nexport type CallPolicy = {\n target: string;\n method: string;\n description?: string;\n};\n\nexport type TypedDataPolicy = Omit<TypedData, \"message\">;\n\nexport type Policies = Policy[] | SessionPolicies;\n\nexport type SessionPolicies = {\n /** The key must be the contract address */\n contracts?: ContractPolicies;\n messages?: SignMessagePolicy[];\n};\n\nexport type ContractPolicies = Record<string, ContractPolicy>;\n\nexport type ContractPolicy = {\n name?: string;\n description?: string;\n methods: Method[];\n};\n\nexport type Method = {\n name?: string;\n description?: string;\n entrypoint: string;\n};\n\nexport type SignMessagePolicy = TypedDataPolicy & {\n name?: string;\n description?: string;\n};\n\nexport type ControllerConfig = {\n origin: string | string[];\n policies?: SessionPolicies;\n theme?: ControllerTheme;\n};\n\nexport type ControllerConfigs = Record<string, ControllerConfig>;\n\nexport type ColorMode = \"light\" | \"dark\";\n\nexport type ControllerTheme = {\n name: string;\n icon: string;\n cover: ThemeValue<string>;\n colors?: ControllerColors;\n};\n\nexport type ControllerColors = {\n primary?: ControllerColor;\n primaryForeground?: ControllerColor;\n};\n\nexport type ControllerColor = ThemeValue<string>;\n\nexport type ThemeValue<T> = T | { dark: T; light: T };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types.ts","../src/utils.ts","../src/account.ts","../src/iframe/base.ts","../src/constants.ts","../src/iframe/keychain.ts","../src/iframe/profile.ts","../src/errors.ts","../package.json","../src/icon.ts","../src/mutex.ts","../src/provider.ts","../src/controller.ts","../src/lookup.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+c7e6fb7/node_modules/@cartridge/presets/src/generated/controller-configs.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+c7e6fb7/node_modules/@cartridge/presets/src/generated/erc20-metadata.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+c7e6fb7/node_modules/@cartridge/presets/src/index.ts"],"names":["ResponseCodes","addAddressPadding","CallData","getChecksumAddress","typedData","TypedDataRevision","hash","constants","shortString","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};\n\nexport type ProfileContextTypeVariant =\n | \"inventory\"\n | \"trophies\"\n | \"achievements\"\n | \"activity\";\n\nexport type Tokens = {\n erc20?: string[];\n};\n","import {\n addAddressPadding,\n Call,\n CallData,\n constants,\n getChecksumAddress,\n hash,\n shortString,\n typedData,\n TypedDataRevision,\n} from \"starknet\";\nimport wasm from \"@cartridge/account-wasm/controller\";\nimport { Policies, SessionPolicies } from \"@cartridge/presets\";\nimport { ChainId } from \"@starknet-io/types-js\";\nimport { ParsedSessionPolicies } from \"./policies\";\n\n// Whitelist of allowed property names to prevent prototype pollution\nconst ALLOWED_PROPERTIES = new Set([\n \"contracts\",\n \"messages\",\n \"target\",\n \"method\",\n \"name\",\n \"description\",\n \"types\",\n \"domain\",\n \"primaryType\",\n]);\n\nfunction validatePropertyName(prop: string): void {\n if (!ALLOWED_PROPERTIES.has(prop)) {\n throw new Error(`Invalid property name: ${prop}`);\n }\n}\n\nfunction safeObjectAccess<T>(obj: any, prop: string): T {\n validatePropertyName(prop);\n return obj[prop];\n}\n\nexport function normalizeCalls(calls: Call | Call[]) {\n return toArray(calls).map((call) => {\n return {\n entrypoint: call.entrypoint,\n contractAddress: addAddressPadding(call.contractAddress),\n calldata: CallData.toHex(call.calldata),\n };\n });\n}\n\nexport function toSessionPolicies(policies: Policies): SessionPolicies {\n return Array.isArray(policies)\n ? policies.reduce<SessionPolicies>(\n (prev, p) => {\n if (safeObjectAccess<string>(p, \"target\")) {\n const target = getChecksumAddress(\n safeObjectAccess<string>(p, \"target\"),\n );\n const entrypoint = safeObjectAccess<string>(p, \"method\");\n const contracts = safeObjectAccess<Record<string, any>>(\n prev,\n \"contracts\",\n );\n const item = {\n name: humanizeString(entrypoint),\n entrypoint: entrypoint,\n description: safeObjectAccess<string>(p, \"description\"),\n };\n\n if (target in contracts) {\n const methods = toArray(contracts[target].methods);\n contracts[target] = {\n methods: [...methods, item],\n };\n } else {\n contracts[target] = {\n methods: [item],\n };\n }\n } else {\n const messages = safeObjectAccess<any[]>(prev, \"messages\");\n messages.push(p);\n }\n\n return prev;\n },\n { contracts: {}, messages: [] },\n )\n : policies;\n}\n\nexport function toWasmPolicies(policies: ParsedSessionPolicies): wasm.Policy[] {\n return [\n ...Object.entries(policies.contracts ?? {}).flatMap(\n ([target, { methods }]) =>\n toArray(methods).map((m) => ({\n target,\n method: m.entrypoint,\n authorized: m.authorized,\n })),\n ),\n ...(policies.messages ?? []).map((p) => {\n const domainHash = typedData.getStructHash(\n p.types,\n \"StarknetDomain\",\n p.domain,\n TypedDataRevision.ACTIVE,\n );\n const typeHash = typedData.getTypeHash(\n p.types,\n p.primaryType,\n TypedDataRevision.ACTIVE,\n );\n\n return {\n scope_hash: hash.computePoseidonHash(domainHash, typeHash),\n authorized: p.authorized,\n };\n }),\n ];\n}\n\nexport function toArray<T>(val: T | T[]): T[] {\n return Array.isArray(val) ? val : [val];\n}\n\nexport function humanizeString(str: string): string {\n return (\n str\n // Convert from camelCase or snake_case\n .replace(/([a-z])([A-Z])/g, \"$1 $2\") // camelCase to spaces\n .replace(/_/g, \" \") // snake_case to spaces\n .toLowerCase()\n // Capitalize first letter\n .replace(/^\\w/, (c) => c.toUpperCase())\n );\n}\n\nexport function parseChainId(url: URL): ChainId {\n const parts = url.pathname.split(\"/\");\n\n if (parts.includes(\"starknet\")) {\n if (parts.includes(\"mainnet\")) {\n return constants.StarknetChainId.SN_MAIN;\n } else if (parts.includes(\"sepolia\")) {\n return constants.StarknetChainId.SN_SEPOLIA;\n }\n } else if (parts.length >= 3) {\n const projectName = parts[2];\n if (parts.includes(\"katana\")) {\n return shortString.encodeShortString(\n `WP_${projectName.toUpperCase().replace(/-/g, \"_\")}`,\n ) as ChainId;\n } else if (parts.includes(\"mainnet\")) {\n return shortString.encodeShortString(\n `GG_${projectName.toUpperCase().replace(/-/g, \"_\")}`,\n ) as ChainId;\n }\n }\n\n throw new Error(`Chain ${url.toString()} not supported`);\n}\n","import {\n InvokeFunctionResponse,\n TypedData,\n WalletAccount,\n Call,\n AllowArray,\n} from \"starknet\";\n\nimport { SPEC } from \"@starknet-io/types-js\";\n\nimport {\n ConnectError,\n Keychain,\n KeychainOptions,\n Modal,\n ResponseCodes,\n} from \"./types\";\nimport { AsyncMethodReturns } from \"@cartridge/penpal\";\nimport BaseProvider from \"./provider\";\nimport { toArray } from \"./utils\";\n\nclass ControllerAccount extends WalletAccount {\n address: string;\n private keychain: AsyncMethodReturns<Keychain>;\n private modal: Modal;\n private options?: KeychainOptions;\n\n constructor(\n provider: BaseProvider,\n rpcUrl: string,\n address: string,\n keychain: AsyncMethodReturns<Keychain>,\n options: KeychainOptions,\n modal: Modal,\n ) {\n super({ nodeUrl: rpcUrl }, provider);\n\n this.address = address;\n this.keychain = keychain;\n this.options = options;\n this.modal = modal;\n }\n\n /**\n * Invoke execute function in account contract\n *\n * @param calls the invocation object or an array of them, containing:\n * - contractAddress - the address of the contract\n * - entrypoint - the entrypoint of the contract\n * - calldata - (defaults to []) the calldata\n * - signature - (defaults to []) the signature\n * @param abis (optional) the abi of the contract for better displaying\n *\n * @returns response from addTransaction\n */\n async execute(calls: AllowArray<Call>): Promise<InvokeFunctionResponse> {\n calls = toArray(calls);\n\n return new Promise(async (resolve, reject) => {\n const sessionExecute = await this.keychain.execute(\n calls,\n undefined,\n undefined,\n false,\n );\n\n // Session call succeeded\n if (sessionExecute.code === ResponseCodes.SUCCESS) {\n resolve(sessionExecute as InvokeFunctionResponse);\n return;\n }\n\n // Propagates session txn error back to caller\n if (\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 ...iframeOptions\n }: ProfileIFrameOptions) {\n const _profileUrl = (profileUrl || PROFILE_URL).replace(/\\/$/, \"\");\n let _url = new URL(\n slot\n ? namespace\n ? `${_profileUrl}/account/${username}/slot/${slot}?ps=${encodeURIComponent(\n slot,\n )}&ns=${encodeURIComponent(namespace)}`\n : `${_profileUrl}/account/${username}/slot/${slot}?ps=${encodeURIComponent(\n slot,\n )}`\n : `${_profileUrl}/account/${username}`,\n );\n\n if (version) {\n _url.searchParams.set(\"v\", encodeURIComponent(version));\n }\n\n _url.searchParams.set(\"rpcUrl\", encodeURIComponent(rpcUrl));\n\n if (tokens?.erc20) {\n _url.searchParams.set(\n \"erc20\",\n encodeURIComponent(tokens.erc20.toString()),\n );\n }\n\n super({\n ...iframeOptions,\n id: \"controller-profile\",\n url: _url,\n });\n }\n}\n","export class NotReadyToConnect extends Error {\n constructor() {\n super(\"Not ready to connect\");\n\n Object.setPrototypeOf(this, NotReadyToConnect.prototype);\n }\n}\n","{\n \"name\": \"@cartridge/controller\",\n \"version\": \"0.7.4\",\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,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABkyAAAZMgGvFqWRAAAAB3RJTUUH6AkEFwsj7EvbJQAAAAZiS0dEAP8A/wD/oL2nkwAAK45JREFUeNrt3XmUXVWBqPE42+3Qj5hQ995zb1WlUqkkVZlIAhnJPIKAIogICEGGtlugFVBaxAbsVgw+FWlooEFtRFAmZRbClDAlICAg4MTQDY4MAiIy6X5nX8JrQQippKruOef+vrW+Zf9hr2XOsPd3T52z96BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgCWhpaRlWqVT2LFcq/5m6MvW+1EdTn08N3CCfX3sM7ysnydXpf56UHuNlpVKp3RUHAGjkpP+2dEL6aDox3WSyHljT4766lCQfSf/zb12JAIABobOz8y3pxHNIOhE9ZDJuuL8tVSoH9/T0vNmVCQDoN9KJf2Y66fzExJs570qSZJorFADQH5P/J9OJ5jmTbWb/LPBsKUkOdKUCAPqKN5TL5f8wyeYmBI5Lz9nrXbYAgI3hdemkcrKJNXee5NIFAGww6a/JI0ymGbFc7tV/v5Qkh7mCAQC9Jp1wFqcTyZ9Mvrn1T2nALXAlAwDWm8GDB7+zVKn8wiSaex8cMmTIO1zRAID1+/WfJF82eRbmpcCjXdEAgNekVqtV0onjaZNnYXxq6NChJVc2AGCdpL8Yl5s0C+fnXdkAgHXxxnSy+JUJs1jG9znSc/sGlzcA4NV+/S80YRbTliSZ5woHALwi6S/FL5gsC2qSfM4VDgB4RdKJ4jqTZWFd5QoHALxaADxqoiysD7nCAQB/RWtr6yYmyWIbF3hypQMAXkKpVGo3SRZ+UaBWVzoA4OUB0GOSLPjngKVStysdAPASWqrVsSbJgn8K2NIyxpUOABAAAgAAIAAEgAAAAAgACgAAgACgAAAACAAKAACAAKAAAAAIAAoAAIAAoAAAAAgACgAAgACgAAAACAAKAACAAKAAAAAIAAoAAIAAoAAAAAgACgAAgACgAAAACAABIAAAAAJAAAAAIAAEAABAAGTTreZ0hudu2iqTLp3dKQAAAAJAAAgAAIAAEAACAADQX7S2tm5SKpU2r1Qq25bL5X1Llcpn0oH/W6krXsv0/+cGAVDsAFh7jl/rWrg0vXZOqF875fI+a6+lye3t7f/HHQYADaZarQ5OB+YF6SB9cDlJTk3/79XpwP1w0V9iEwAN96F6RKTXXLz24jUYr0V3JAD0D69PkmR8+ivsn9IB+NzU+5v1LXYBkFnvr1+b5fIBaRCMS6/Z17ltAWDDfuF3pr+w/jH9pXV2/NXlEzYBkLcnBWkMnJVew/+waa023B0NAOugUqmMTCf8Q9PB81YTiAAomLemQfCpJEm63OkAsHbSjy9bpf95u0lCADSD6fV+WylJDovXvhEAQFPR3t7+1vTX0G7pYLjKhCAAmtyV6b2wa7wnjAwACkutVquUk+Rz6aD3iIFfAPAlPpzeG/82pK2tbKQAUKTH/BNTv5EOcs8Y6AUA1+kz8V6J94yRA0Au6enpeXMpSXZcu7CKgV0AsPf+IC5EVK1W/8aIAiAPv/Zr8VFmOnj9xgAuANgn/ibeU/HeMsIAyBqvS5JkfjpInZMOVs8ZsAUA+8Xn4j0W77VBFhoC0EgGDx78zvpiPZXKXQZnASAABtS74r0X70EjEYABo1QqdVcqlePSQegJA7EAEAAN9Yl4L8Z70sgEoL94Y7lcfl862FyZDjp/NvAKAAGQKf9cvzfTezTeq4YrABtNS0vLpunA8slm3oBHAAiAPJner78sVSpHJUlSNYIB6DXpL4lJ5SQ5MR1QnjKoCgABkNs1Bc6MWxYb0QCsk87OzrfEb/fTXw/XGzwFgAAolLfENQVaWlreZqQD8P+J25XGR4b15UgNlAJAABT5zwOP1Z/slcujjXxA8/L6+GgwPiJMB4bnDY4CQAA0lX+Kq3TGJ37pWPAGwyHQBGzS0fF38VGgb/cFgABg3SS5J77omzrECAkUkPTm3mztS31PGvQEgADgK/h0fCKYJMk0IyaQc2zIIwAEAG1EBDQRcU/xtd/uP2AgEwACgBuzEVH9BeFyuc3ICmT7Mf/Mtd/9PmvgEgACgH390mA6tmwzyEZEQEZ+7Q8Z8o74qC69MW83SAkAAcAB8CfxCWNra+smRmCgASRJ0rX22/1HDUgCQACwERsRxReLW6rVsUZkoP958dv9C2zIIwAEADPktfU1BSZNepNhGuhDbMhDAUAbEQFNhA15KABoIyKgSbAhDwUAbUQENNdj/o61L/U9ZMCgAKCNiIDmeKnPhjwUALQREVB0bMhDAUDWnwr8PL7gnCTJu8wMKDQ25KEAIG1EhCbBhjwUAKSNiNBE2JCHAoC0ERGaiLXf7p9qQx4KALJvXhqMq5+uXVPARkTI2K99G/JQAAgA2ogIzUO1Wh1hQx4KAAFAGxGhObAhDwWAAGDWNiIaNOiNpif0CzbkyZ8Tx7aFHZZ0hf13GxOWHzgxnP6FqeGKk7YMN5w6O9xyxpxc+uPvzstsAMT/bXk9rvGaiNdGvEbitRKvmXjtxGvIvZSvjYiq1WpixkJfvtRnQ56MW6slYZv5I8JRH9usPpD/+vJFmZ0omS/jtXT5iTPr19a7542oX2vuORsRoaC8uCFPeiFd52bKrh3DqmGfHbvDecdMD79btdhkxQExXmvfO2ZG2GuH0WFYe9W9mG1vXvuC9t+a2fBaj/ltyJMDt57bGc784rTw+DVLTEhsqI+tWhK+c/TU+rsZ7k0bESG/L/XZkCfjj/j3eX93WHPaHBMPM+ma02bXn0j5E4GNiJBx2tvb35pO+h9Nf/H/zE2RXcd1t4Uj99ss3H/xApMMc+EvLlsYvnrIJC8QZtw49sc5IM4FZsTm4Q3pSV9mid5su2hWZ/ivf90iPHn9UpMKc+lTNywN3/3K9LDj0pHu6Wz7QJwTPBEoOPFRf3qyf+iCz6ZtbUnYb5eecNuZc00gLJR3nzsvHLrv+DC8w0uDGfautX8aQJGoVqvjyuXyVS7wbDp1Ynv9kelvr/TpHovtIyuX1J9szZrS4d7PqulcYYXBgnzOl/7qP9LGPNkzqSb1R6PxEenTazzmZ3P5THrNX3XylmHvHbtDteqlwQx+NfBs6hFxDjGT5pAkSaalJ/JOF3O2HNlZDQcuG1d/JGoiILcK91wwv/6ia8+oVmNE9ryzJUmmmlHzwxvTclu+9nMPF3BGXDBzeP3Rp2/3yVf2D9e/8NLg1nNHGDMy9ulgXB9mkL0GMv+3/iQ9Wde4YLNha2tSf8QZH3Ua4Mn1N+5PEJ+UWWkwU66q1WoVM20GKVWrc9IT9CsXaeOd0NNaf6T5wKULDebkRvirFYvqL8huPqHd2JINHyqXy4vNuNn6vO8TVvFrvNsuGFF/hPnH1V7qI/vjpcHdthsVKomxpsE+X6pUDjbzNp7XpZP/0S7IxjlieK3+qPKOs73URw6EPz3vhZcGR3XVjEGNXUnw2HQOer1puAHE5RvLSXK2C7ExTp88rP5o8uGr7MJHNmpXwvhi7dxp1hRomOkcZCnhAWbw4MHvjC9kuAAH/tv9+AgyPop89kYDMJmllwbjKpqtNeNUI14OjHOSmXlg/t7/t2l1Xe2iGzjHdr/wUt99F9mQh8yyD162yEZEjflzwPVDhw59uxm6fz/z+5s0AK5wwQ3shjy/v863+6SNiPgaEXB5nKPM1P1AT0/Pm9PJ/0IXWv9vyBO/3Y97mxtIyfz7w+/Mrb+oayOiAfFSywf3w9v+6YH9lour/5wy8YWX+n5zhQ15yCJvRLSljYj6+8XAb8Y5y7TdR6QH9FAXlg15SNqIKCc7Cv6zmbsvJv9y+b3W9bchD0kbEeXIP5eS5P1m8I176W9ceiCfdDHZkIekjYhy5pNxDjOTb+jnfpXK3S4iG/KQtBFRTr0rzmVm9N4++q9UTnLxbPyGPP/zfRvykLQRUQPfBzjBjN77v/u7cDbw2/1vL58anlptACPZNy8NXnL8zPoLwzYi2sA1ArwPsH4MaWsrpwfsEReNDXlI2ogoJ7/yX+u/88jQoUNLZvjXoFSpnOGCWj+nTbIhD0kbEeXEb5nh1/3i3wIXyfp9ux8fydmQh2SjveHU2fUXjWs1awq8lnGOM9O/ylK/3vq3IQ/JfG9EtNkYGxGtY7+An9k++JVf/PuUC8SGPCRtRFTwpYIPNeP/Ba2trZukB+ZRF8dLN+RZ/U0b8pDMr7d+e46NiP76zwCPJUnyLjP///7tf7kLw4Y8JG1E1CR/CjjKzJ9Sq9Uq6QF5yoY8NuQhaSOiJvEPce7z679S+fdmvAC6Ol/4dv8uG/KQbEJ/fsGC+ovN3SNbm/UpwFebfbOfwc222U98BHbSZza3IQ9Jrt2IKK5eOn/G8KZ7CtDU7wI0y5v/cUOev/9AT/172Q29SX5w+pyw5/u6w+Tx7fbwJpm5P2VOGtcWdn/v6LDmtA0f5+IYGcfKOGY2yQuBn2zO2X/SpDelB+CBIp/c+D3sFw+aFH5x2cZtyHPpCVs2zQ1BMuc/eGqVcMGx0zdqzItjZhw7m2BNgf+Jc2Ez/u3/A0U9qdsv6grfO2ZG+OPqjX+pL35TO8HCGiRzZM+o1vDEtRv/Z844hsaxNI6pBX4KsFMzbvd7WdE25PnEh8eGO8/p25f64q9/AwrJvHneMdP7dCyMY2scY+NYW7BjdUkzfvr3fFG+3T/58C3Coyv7Z0Oe4w7d3GBCMncefdDEfhkT41gbx9w49hbkWD0fd8Ftph3/Dsr7SesYVg3LD5wYnry+f7/d//InJhlMSObOzx2wWf8uObx6q/oXVZ3DC7DKYJJ8vJkC4LY8n6xl23eH/75k4YB8IiMASAqAV/f+ixfUvz7I+fG6tSkm/5aWlo7cvqyRVOq/+gdyG14BQFIArNs4Jsdl1JMcfyK9aa02vBm+/T8gjycnPma68NgZA75IhgAgKQDWz8tOmBlGdubzTwKVSmU/b/9ndPKPC/E0YpUsAUBSAKy/N6VjdU53H/x+0R//vy39Rz6dt0UtVpw4s2HLZAoAkgKgd159yqw8Lp729NChQ99e3Jf/SqWlebuIz/zitIauky0ASAqA3nvG8mn5O27l8pIir/53ZJ5Oxj/tPrbhG2UIAJICYMPcf9cxeXsP4IgiB8AVeTkRcfndh69aLABIMqcB8MjKJfVNinJ03C4r6vz/hvQf90ReTkR8mzQLW2UKAJICYOO+DMjRcXs8zpXFewGwWh2bl5PwvsVdmdkrWwCQFAAbZ542EyqVSj12/2ug8Q1SAUCSxQiAq07Oz6ZqpSTZsYgBcMQ63nzMzMHfeu6IzFy0AoCkAOgbt57bmZcAOKyIAfCdPBz8+OmIACDJYgXA6UdNzcuxO90GQA1a9CcLb/4LAJICoI+/CLh6cV4WByrexkDpP+rRrB/4XbYZmakLVgCQFAB95wfePSoPx+7hQk3+7e3tb83DBXvKkVsIAJIsaACcfPgWeTh2f+7p6XlzkZYAbs/DBXtTgzb8EQAkBUD/u+a02XlZEbBWnDUAkmRq1g94tZqEJ65dIgBIsqABEMf4ONbnYC2AzYvz9/9yeUnWD/isKR2Zu1gFAEkB0LfO3KIj+8evXF5cpAB4b9YP+E5bjxQAJFnwANhhSfZXBaxUKtsWaQ2AnbN+wPfesVsAkGTBA+DDO3TnIQB2KlIALMv6Af/4HmMFAEkWPADiNu85WA1w9yL9CWCfrB/wT//9eAFAkgUPgDjW5+AdgH2KFAD7Zv2AHyYAuJ6O7qqF2VM7wtSJ7WFYe9UxIXMUAIflIwD2FQACQABkxOEd1fBv6YB25znzXnJ+nrphabj8xJnhQ+8Z7TiRAkAACAABUCS3XTAiPHDpwtc8V1ectGUY1VVzzEgBIAAEgADIux/cZlT4/XXrv0DUXefOC+N72hw7CgABIAAEgADIq0tnd4bHr+n96pB3nD3PkwAKAAEgAASAAMijUye1h1+tWLRRa453DPOCIAWAABAAAkAA5MYJY9rCvRct2Ohzd8nxM0OtljimFAACQAAIAAGQdbs6a+G2M+f22fn79vKpoZI4rhQAAkAACAABkFlbW5Nw5X9u2efn8JhPOocUAAJAAAgAAZBJk2oSvvuV6f12Hv/lH8Y7zhQAAkAACAABkDVPOGxyv57HZ2/cKuy/2xjHmgJAAAgAASAAsuJn9x+YgerpNUvDsu27HXMKAAEgAASAAGi0H9m5p/7rfKDOZ1xUaLuFXY49BYAAEAACQAA0yh2WdNXX8h/oc/rIyiVh/ozhzgEFgAAQAAJAAAy0i2d1hsdWLWnYeX3w0oVh8wntzgUFgAAQAAJAAAzYKn8T28MvVyxs+Ln9+fkLwrhu+wZQAAgAASAABEC/O2Z0a/jZ+fMzc35vP2tuGDnCvgEUAAJAAAgAAdBvjhheC7d+e07mzvHKr80KbW2WDKYAEAACQAAIgL5f5a9WCZefODOT5zh64bEzQrUqAigABIAAEAACoM+Ma/GfsXxaZif/F/3GZ7dwvigABIAAEAACoK88/tObZ37yf9GjD5ronFEACAABIAAEwMZ6yF7jcjP5v+g/7T7WuWugc6d1hC+l992lJ2wZbjp9TrjljMZ4c+qKE2fWA3bruSMEgAAQAAKA6+u86cPDU6u3yl0A/OH6pWHmFh3OYQNeEo3bNw/kypC9MQZJnj4bFQACQAAIgIb5/f+YmbvJ/0XjzoTO4QC+JNqahOu+MSvz18Xd587LzWejAkAACAAB0BDH97TVN9/JawDEJYqtDzBwHvHRCbm5Nk4+YgsBIAAEgADgq7n7e0fndvJ/0fdvNdK5HCB/et783FwXv1u1uP7EQgAIAAEgAPgKHrzn2NwHwEd3GeNcDtAaEc/k7GlRXM5aAAgAASAA+Aruv9uY3AfA3jt2O5cD4PCOau6ujTnThgsAASAABABfyW3mj8h9AMSvGJxLASAABIAAEADs5VvdD121OLeT/4OXLbI0sAAQAAJAAAgAg/SG+NVDJuU2AL7wMSsCCgABIAAEgAAwSG+Q8TO6+y9ekLvBPW5XHCcl51AACAABIAAEADfQRbM6wyMrl+RmYP/tlYtyMbgLAAEgAASAABAAmTcOlneeMy/zg/ptZ84N0ycPc84EgAAQAAJAAAiAvrJWS8L+u44JV58yKzxxbXaeCDy2akm44qQtw0d27vHSnwAQAAJAAAgAAdDv7wd0VsOorlpD7eq01K8AEAACQAAIAAFACgABIAAEgAAQAKQAEAACQAAIAJICQAAIAAEgAEgKAAEgAASAACApAASAABAAAoCkABAAAkAACIDcOntqRzj6oInhkuNnhjWnzQkrTpwZjv3nyeHd80aYuFKTahJ2WNIVTjhscn0tgXiMLvr3GfWBNw/7xQsAASAABIAAEAAvcVx3W/jeMTPWeVxWf3N2mDu9o2knrW0XjAh3nPXqqxs+s2Zp+Nbnp9bXOzDJCwABIAAEgADIvPNnDA8PXLpwvY7Nk9cvDcu27266Cevje4wNT6cT/Poco5+eNz9MneRpgAAQAAJAAAiADLv9oq5eb9zz1A1Lw9ZzO5vmGO227aj6r/veHKNfrlgYFm7ZabIXAAJAAAgAAZA94y/5+It+Q47RXefOq6/1X/Rj1Dm8Gh5cz6cjL/fRlYvr7wuY8AWAABAAAkAAZMYDl41b70far+Ye248u/HE6eM+xG3WM/pAG1l47jDbpCwABIAAEgABovEfut1l49saNP06nHzW18BNV/ApiY49TDK0YEiZ+ASAABIAAEAAN+4Tt5MO36LPjdMsZcwo/UT2wgY//X8nlH59o8hcAAkAACAABMLC2tibh3C9P79PjdO+F8ws/UT1+zZI+PWZfO3JKPcSsp5DUXybNUwBMGNMmAASAABAA+fu11RePsl/ufRctKPxE9fvrlvT5cbvw2BmhvU0E3HDq7NxM/vem13olqQgAASAABEB+HN1VC2tO65+BVgBsuKu+Pit0ddaaOgB2f+/o3ATAJz6cj3c4BIAAEAACoO7mE9rDT743v9+OkwDYOO84e14uHiv3p8d8clLmJ//TvzA1N3+2EQACQAAIgPqa/v/z/YX9epwEQN+8R9Hsqwbuu1NP/ThkbRx48LJF9a838vDoXwAIAAEgAOpuNacz/PbKRf1+nARA3/iLyxbWl2Nu5giopr+wt547ov6oPX6m2kgP2XtcfYXM+OJs3o6jABAAAqCJA2C37UYNyKQlAPrWx1YtCTsuHekTQQoAASAABEDv3W+XnvDU6oE7TgKgb42rBu69Y7eJjAJAAAgAAbD+Hrrv+D5Z3U8ANC4AXlw18KBlVg2kABAAAkAAvIbxBaVjPzW5IcdJAPSfXz1kkgmNAkAACAAB8OovTn3n6KkNO04CoH894bDJJjUKAAEgAATAX3vKkVs09DgJgP73qI9tZmKjABAAAkAA/MXb/tuOavhxEgD9b3yvY8nsTpMbBYAAEAAC4AVvP2uuAGiCAIhefuJMkxsFgAAQAAKgEqZPHpaJ4yQABu7LgJ5RrSY4CgABIACaPQD233WMAGiiAIju/O5RJjgKAAEgAJo9AOJypQKguQIgRp8JjgJAAAiAJg+AQ/YaJwCaLAD2fJ8VAikABIAAaPoA+MC7RwmAJguAudM7THAUAAJAADR7ALS1JeHRlYsFQJMEwL3pcc7TlrQUAAJAAAiAfvTYf54sAJokAOI+DyY3CgABIAAEQN2uzlq498L5AqDgAfDD78wNrTUTGwWAABAAAuBl6wH8+vJFAqCgARAf/U8Y02ZiowAQAAJAAPy1Uye2h5+fv0AAFCwA7jp3Xpg8vt2kRgEgAASAAHh1x/e0hVu/PUcAFCQA1pw2O3SPtPIfBYAAEAACYD3sHF4NK06cKQByHgAXHjsjDGuvmswoAASAABAA629raxLO/OI0AZDTADj58C1CUk1MZBQAAkAACIDeG78XX37gRAGQowCIW/7Gc2YCowAQAAJAAGy0n9p3fHhmzVIBkPEA+OPqpeFje4w1eVEACAABIAD6zmXbd4cnr18qADIaAI9fsyR8cBu7/FEACAABIAD6we0XdYVHrl4sADIWAL9csTAsmtVp0voLR3XVwnsWdtU3Ptp7x8a41w6j6/fMuO42ASAABIAAyL+zp3aE/75koQDISADcc8H8MG3SMJP+WhfMHB4uPWHL8HQ//8mqt+9lXPeNWfUYEAACQAAIgFwbF5WJi8v09Up1RZ+cnri2bwPgptPnhDGjfeP/ov/4wTHhqRuWZnIciMb3aI7cbzMBIAAEgADIt6O7auGGU2f32XG67cy5hZ+gHrys75Zajr9yh3f4xv9FF8/qrL8EmdXJ/y/d/b2jBYAAEAACIN/GrYTP/cr0PjlOZ31xWuEnqZVfm9Unx+r0L0y1qc/LvOT4mbmY/KN3nD1PAAgAASAA8m+1moSvHTllo49TfHxb9Enq8H+YsNHH6f8ePKm+PoNJ/6XGryDyEgDRPPzpRgAIAAEgANZ7sIgvO23IMbr/4gWhva34q9bFNfk39CuK+FLbwXv6xv+V7BhWzdXkH40v0woAASAABEBh3H/XMb3+O2x8MWrXbZvn+/UDPjSm19dQ/Hpgj+1Hm+xfxfguRN4CYM604QJAAAgAAVAs42I0j61ast6fRx2y17imm7C+eNCk9b5+fnvlorDN/BEmegEgAASAABAA2XfLKR31T9Re67O/D7y7eVeu22fH7vCLy9a9nsLVp8yqf3JpkhcAAkAACAABkKuNhHbZZmT9jfUfnT23vtDP3efOC+d8aVr4yM499d0GTVzV+p8ELjh2evjxd+fVj9HtZ80N//WvW+Ru0RgBIAAEgAAQAAKAFAACQAAIAAEgAEgBIAAEgAAQACQFgAAQAAJAAJAUAAJAAAgAAUBSAAgAASAABABJASAABIAAEAD8iyV141oDi2Z1NtT4v2FUV805EQACQAAIAAEgAPrLrs5afUCK38tn6fzG1QzvPGdeOOKjE2zPKwAEgAAQAAJAAPSlcVGcBy9blPlB/b8vWRi2nmvZXgEgAASAABAAAmCjff9WI8Mfrl+am4E9btyz3UKr+AkAASAABIAAEAAb7ISe1vpmOHkb3OPTiviegnMoAASAABAAAoAb4NeOnJK7gf1Fjzt0c+dQAAgAASAABIBBurd2DKuu97bCWfShqxbb8EgACAABIAAEgEG6t75vcVduJ/8XXTq707kUAAJAAAgAAcDe+PE9xuY+APbdqce5FAACQAAIAAHA3njQsvwHwD9+cIxzKQAEgAAQAAKAvXGXbUbmPgDi+gXOpQAQAAJAAAgA9sLRXbXw1A1Lczv5P3HtEisDCgABIAAEgAAwSG+I53xpWm4D4Fufn+ocDpBtbUnuro8Zmw8TAAJAAAgAvppTJ7aHx6/J36eAj65cHCaNa3MOB9AHL12Ym+sjPtmKn7kKAAEgAAQA12F8kz5uuJOXwf2ZNUvDsu27nbsB9vhPb56ba+TcL0/PxTEVAAJAAAiAhht32svL4P7pPAxOBXTkiFq454L5mb8+fn35ojB5fLsAEAACQABwff2Pw7L/C2/5gROdqwa6+YT28IPT52T2+ohbWc+d1pGb4ykABIAAEACZsJJUwreXT83s4P71z05xnjJgtZqEfd7fHS44dnq496IF4eGrFjfUuEX0pSdsGQ740JjcLQ0tAASAABAAmbG1VglX/ueWmTvHFx47oz7xOEcskgJAAAgAAZApuzpr4YffmZuZ87vya7Pqn6E5NxQAAkAACAAB0M+O7W4NPz9/QcPP7c1nzAkjhtecEwoAASAABIAAGLA1Aia1h1+tWNSw8xoDZFy3b/0pAASAABAAAmDAXTK7Mzy2auAXCoqLzsQ3zp0DCgABIAAEgABo4KZBf1w9cHsGPLJySZg3fbhjTwEgAASAABAAjTZuuzsQqwX+/rolYdsFIxxzCgABIAAEgABolsHqqdVb1Z82ONZ0TwkAASAABEDGPPEz/bNaYHy6sP+uYxxjCgABIAAEgADIokk1Cd/9yvQ+P4ef+Yj1/SkABIAAEAACINurBbYm4aqTt3T+SAEgAASAAGjG1QJvP2vjVws8Y/m0+h4EjikFgAAQAAJAAOTECWPawn0XbfhqgRcfNyPUapb4pQAQAAJAAAiA3DlrSkd46KrFvT5nq74+K7Rb358CQAAIAAEgAPLr1nM7exUBN5w6O4zsrDp2FAACQAAIAAFQhCcBr/VOQPzU7/SjpvrlTwoAASAABECRrFaTsN8uPWHFiTPD49csecm6/qd9bkp9XwHHiRQAAkAACICCG7fxbfNrnxQAAkAACACSFAACQAAIAJICQAAIAAEgAEgKAAEgAASAACApAASAABAAAoCkABAAAkAACACSAkAACAABIABICgABIAAEAEkKAAEgAAQASQoAASAABABJCgABIAAEAEkKAAEgAAQASQoAASAABABJCgABIAAEAEkKAAEgAAQASQoAASAABABJCgABIAAEAEkKAAFQiAD4tAAgycIHwKcFwIAHwD5ZP+CH7D1OAJBkwQPgkL3G5SEA9ilSAOyd9QN+0LKxAoAkCx4ABy7LfgBUKpW9ChMA6T/mw1k/4Ad8aIwAIMmCB8D+u43JQwDsWaQnALtl/YDvvWO3ACDJggfAXjuMzsOfAHYp0hOA92T9gG+3sCuTF+u/HzrZYEIydy4/cGImx9Rt5o/IwxOAbQoTAC1JMi/rB3zM6NZMXqwXHzfDYEIyd5775emZHFN7RrVm/tiVSqXZRfoTwOQ8XLD3X7wgcxfr769bkosLliRftKuzFn63anHmxtP7LlqQi+NXqVQmFulPAK15OOhf/+yUTBbrOV+aFpJqYmAhmf3JK6mE078wNZNjaRzj83AMkySpDioQb0gj4NmsH/T3Lc7mewDRFSfODFvPHRFaW4UAyewZx6alszvDJcfPzOw4uv2irjwcy2fSOfP1RQqAQek/6t48XMQ3nzEnsxdv9Jk1S8PDVy0myUz5dDo2ZXnsjGN7HuagUqXys0FFo1KpXJmHg//+rUaGZ2/cKtMXMkly/Y1j+k5bj8xLAFxexAD4el4eZZ32uSluGpIsiN/8tym5+VNKGgCnFC4AyknysbycgI5h1bDmtDluHJLMubecMSd0Dq/m532KcvmAIj4BmJ6nF1rG97SFey+c7wYiyZwax/A4ludp7mlJkqmFC4D29va3xrcb83QiJo9vD/dcIAJIMm/GdV2mTByWt68pnuns7HzLoCJSTpIb8/ZpS4yAn1+wwA1Fkjma/LfYbFj+PqdM58hBRaVUqRybx+9bJ41rEwEkmQPjan+5nPxfeAHwq4UNgEqlsnNeF7kQASRp8u/nJYB3LmwAJEnyrvQf+bwIIEma/F/i83GOHFRk0n/ktXle7rIeAeeLAJLM0uS/+YT2vC+nvHJQ0alUKp/I+5rXE8eKAJLMxKd+xZj849//D2qGAKil/9g/iQCSpMm/7p+KtgPgq/8ZoFy+qgi7X8UFJu4+d54bkSQH2J+dP7/+Q6wQWyhXKlcMahZKSbJHUbbAFAEkOfCT/2ZjijH51x//p3Ni0wRAXOko/Uf/pkgRcJcIIEmTf+99qFqt/s2gZiL9R3++QCcwjOsWASRp8u/15j//OqjZqFQqranPigCS5Gv50/MKOPlXKs+kv/6TQc1I+o8/qWAnUwSQZD9M/hOKN/nHX/8nDGpW4lOA9CA8XcQIuPMcEUCSG+tPvlfQyT/99V8qldoHNTNpBBxXwBMrAkjS5L+uT/+OG9TstLS0bJoejN8V8QSP7W4VASRp8n+5jw9paysPQv0pwP4FPcn1CPjR2XPd0CTZm8m/p7Wok3/89f9RM///8sb0gNwuAkiyuf3xd+cVevJP/WGc80z7f/mngGp1SnpgnhMBJGnyL6jPxbnOjP/Kfwo4ssAnvh4Bd5ztnQCSbMLJPz76P9xM/2pMmvSm9CDdVOQLYMxoEUCSL5/845LqRR7749wW5zgT/bqfAoyMb0iKAJIsvnEztSaY/J+Ic5sZfv0iYNu4P7IIIEmTf879czqnbWdm782WwZXKvxT8onghAs4SASSbzzj29YxqLfrkH+JcZkbvPa8rl8tnFf3iGNVVC7ecMceAQLJpvP2suU0x+ZeT5Jw4l5nON4ChQ4e+PT2Id4kAkjT55+yN/yvb29vfaibf2KWCk+SOZoiAm0UASZN/EX753zhkyJB3mMH7gE033bSlGZ4EdI9sDWtOEwEki+ea02aH0ekPncJP/pXKnemv/yFmbk8Ceu3wjmq45PiZBgyShfHi42aEjmHVZpj8f1yr1Spm7P57EnBn4f92lFTCYX8/Pjx5/VKDB8nc+vvrloRP7Tu+PqY1wy//OEeZqfs/An7UBBdTmDi2LXz9s1PC71YtNpiQzI2PrlwcTjlyi7DZmLZmmPijPzL5D9QaAaXS0CLvHvhyh7VXw4feMzp86ROTwgXHTq//LS0uInTPBfNJsqHGsWj1N2eH8786vT5GxbEqjlnNMj6n3j2kra1sZhYBJEmTPwYiAkqVym0uQpLkAHvX0KFDS2ZiEUCSNPljoGltbd0kPSE/cFGSJE3+zRkBN7k4SZL95A8t8iMCSJImf2SJ9vb2/yMCSJIm/2aNgCS50UVLktxIbzX5iwCSZJNN/kmSvMuMKgJIkiZ/5CoCyuU1LmaSpMlfBJAk+UreYvIvGJt0dPydCCBJmvybNAIqlcpqFzlJ8uWTf7VaHWymFAEkyebxZpO/CCBJmvzRBBFwg4ufJE3+EAEkyebwByZ/ESACSLKJjGN+HPvNgBg0ePDgd5YqlevdGCRp8kcTRkB6cVznBiHJYhp/6MWx3oyHv2LIkCHvEAEkWUivM/ljnbS0tLytXC5f5WYhSZM/mvNJwDVuGpLMvdfGMd3MhvVm6NChb08vnMvcPCSZU8vlNSZ/bBCdnZ1vKVUq57uRSDJ3b/tfEH/Imcmw4Uya9Kb0YjrdDUWSufG0OHabwNAXvC6tySPSi+rPbiySzKx/LlUq/xLHbNMW+pRyubxLeoH90U1GkpnzqfSH2s5mKvQbpVKpO73Q7nSzkWRm/EmSJOPNUBiQzwRLlcoZbjqSbLBJ8k0v+2HAqVQqO6UX4G/dhCQ54P66lCQ7mInQyD8JDPWVAEkO7Fv+SZK8ywyErITA7PSivNmNSZL95g/K5fIsMw6yyOsrlcqy9CK9341Kkn3mfaUk+VAcY00zyDaTJr0pvVj3SC/au924JLnB3lWf+C3qg5w+EXhPOUkuTi/k593MJPmaPl8uly9Kx87t/OJHIUiSpFqqVD7jqQBJvqJ3p7/2D4tjpRkDRY6BrjQGDi6/sOXwc258kk1oHPuuiWNhHBPNDGg6Wlpa3pZe/PMrlcrh6Y1wXnzZxcBAsoDeG8e4uFZ/HPPi2GcGAF5GfaXBUqmnVK1uVS6X90n9bOp/pTfQuakr4h7X6X/+qJwk95BkQ41j0Qtj0or6GJWOVekPmiPj2BXHsDiWxTHNyA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATcP/A/VYuD9l6UjwAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDI0LTA5LTA0VDIzOjExOjM1KzAwOjAw9BAQcQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyNC0wOS0wNFQyMzoxMTozNSswMDowMIVNqM0AAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAV3pUWHRSYXcgcHJvZmlsZSB0eXBlIGlwdGMAAHic4/IMCHFWKCjKT8vMSeVSAAMjCy5jCxMjE0uTFAMTIESANMNkAyOzVCDL2NTIxMzEHMQHy4BIoEouAOoXEXTyQjWVAAAAAElFTkSuQmCC\";\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 const chains = new Map<ChainId, Chain>();\n\n for (const chain of options.chains) {\n const url = new URL(chain.rpcUrl);\n const chainId = parseChainId(url);\n chains.set(chainId, chain);\n }\n\n if (\n options.policies?.messages?.length &&\n options.policies.messages.length !== chains.size\n ) {\n console.warn(\n \"Each message policy is associated with a specific chain. \" +\n \"The number of message policies does not match the number of chains specified - \" +\n \"session message signing may not work on some chains.\",\n );\n }\n\n this.chains = chains;\n this.selectedChain = options.defaultChainId;\n\n if (!this.chains.has(this.selectedChain)) {\n throw new Error(\n `Chain ${this.selectedChain} not found in configured chains`,\n );\n }\n\n this.iframes = {\n keychain: new KeychainIFrame({\n ...options,\n onClose: this.keychain?.reset,\n onConnect: (keychain) => {\n this.keychain = keychain;\n },\n }),\n };\n\n this.options = options;\n\n if (typeof window !== \"undefined\") {\n (window as any).starknet_controller = this;\n }\n }\n\n async probe(): Promise<WalletAccount | undefined> {\n try {\n await this.waitForKeychain();\n\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n const response = (await this.keychain.probe(this.rpcUrl())) as ProbeReply;\n\n // For backwards compat with controller <=0.6.0\n let rpcUrl = response?.rpcUrl || this.rpcUrl();\n this.account = new ControllerAccount(\n this,\n rpcUrl,\n response.address,\n this.keychain,\n this.options,\n this.iframes.keychain,\n );\n } catch (e) {\n console.error(e);\n return;\n }\n\n if (!this.iframes.profile) {\n const username = await this.keychain.username();\n\n this.iframes.profile = new ProfileIFrame({\n ...this.options,\n onConnect: (profile) => {\n this.profile = profile;\n },\n methods: {\n openSettings: () => this.openSettings.bind(this),\n openPurchaseCredits: () => this.openPurchaseCredits.bind(this),\n openExecute: () => this.openExecute.bind(this),\n },\n rpcUrl: this.rpcUrl(),\n username,\n version: this.version,\n });\n }\n\n return this.account;\n }\n\n async connect(): Promise<WalletAccount | undefined> {\n if (this.account) {\n return this.account;\n }\n\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n if (!!document.hasStorageAccess) {\n const ok = await document.hasStorageAccess();\n if (!ok) {\n await document.requestStorageAccess();\n }\n }\n\n this.iframes.keychain.open();\n\n try {\n let response = await this.keychain.connect(\n this.options.policies || {},\n this.rpcUrl(),\n );\n if (response.code !== ResponseCodes.SUCCESS) {\n throw new Error(response.message);\n }\n\n response = response as ConnectReply;\n this.account = new ControllerAccount(\n this,\n this.rpcUrl(),\n response.address,\n this.keychain,\n this.options,\n this.iframes.keychain,\n );\n\n return this.account;\n } catch (e) {\n console.log(e);\n } finally {\n this.iframes.keychain.close();\n }\n }\n\n async switchStarknetChain(chainId: string): Promise<boolean> {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return false;\n }\n\n try {\n this.selectedChain = chainId;\n const response = (await this.keychain.probe(this.rpcUrl())) as ProbeReply;\n\n if (response.rpcUrl === this.rpcUrl()) {\n return true;\n }\n\n await this.keychain.switchChain(this.rpcUrl());\n 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 waitForKeychain({\n timeout = 50000,\n interval = 100,\n }:\n | {\n timeout?: number;\n interval?: number;\n }\n | undefined = {}) {\n return new Promise<void>((resolve, reject) => {\n const startTime = Date.now();\n const id = setInterval(() => {\n if (Date.now() - startTime > timeout) {\n clearInterval(id);\n reject(new Error(\"Timeout waiting for keychain\"));\n return;\n }\n\n if (!this.keychain) return;\n\n clearInterval(id);\n resolve();\n }, interval);\n });\n }\n}\n","import { LookupRequest, LookupResponse } from \"./types\";\nimport { num } from \"starknet\";\nimport { API_URL } from \"./constants\";\n\nconst cache = new Map<string, string>();\n\nasync function lookup(request: LookupRequest): Promise<LookupResponse> {\n if (!request.addresses?.length && !request.usernames?.length) {\n return { results: [] };\n }\n\n const response = await fetch(`${API_URL}/lookup`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(request),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n return response.json();\n}\n\nexport async function lookupUsernames(\n usernames: string[],\n): Promise<Map<string, string>> {\n const uncachedUsernames = usernames.filter((name) => !cache.has(name));\n\n if (uncachedUsernames.length > 0) {\n const response = await lookup({ usernames: uncachedUsernames });\n\n response.results.forEach((result) => {\n cache.set(result.username, result.addresses[0]); // TODO: handle multiple controller addresses\n });\n }\n\n return new Map(\n usernames\n .map((name) => [name, cache.get(name)] as [string, string])\n .filter((entry): entry is [string, string] => entry[1] !== undefined),\n );\n}\n\nexport async function lookupAddresses(\n addresses: string[],\n): Promise<Map<string, string>> {\n addresses = addresses.map(num.toHex);\n const uncachedAddresses = addresses.filter((addr) => !cache.has(addr));\n\n if (uncachedAddresses.length > 0) {\n const response = await lookup({\n addresses: uncachedAddresses,\n });\n\n response.results.forEach((result) => {\n cache.set(result.addresses[0], result.username); // TODO: handle multiple controller addresses\n });\n }\n\n return new Map(\n addresses\n .map((addr) => [addr, cache.get(addr)] as [string, string])\n .filter((entry): entry is [string, string] => entry[1] !== undefined),\n );\n}\n","// This file is auto-generated. DO NOT EDIT IT MANUALLY.\nimport { ControllerConfigs } from \"../\";\n\nexport const configs: ControllerConfigs = {\n \"blob-arena\": {\n origin: \"blobarena.xyz\",\n theme: {\n colors: {\n primary: \"#980f06\",\n },\n cover: \"https://static.cartridge.gg/presets/blob-arena/cover.png\",\n icon: \"https://static.cartridge.gg/presets/blob-arena/icon.png\",\n name: \"Blob Arena\",\n },\n },\n cartridge: {\n origin: \"*\",\n theme: {\n name: \"Cartridge\",\n icon: \"https://static.cartridge.gg/presets/cartridge/icon.svg\",\n cover: {\n light: \"https://static.cartridge.gg/presets/cartridge/cover-light.png\",\n dark: \"https://static.cartridge.gg/presets/cartridge/cover-dark.png\",\n },\n },\n },\n \"dark-shuffle\": {\n origin: [\"darkshuffle.io\", \"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 \"0x02ffe2edea10d1622b9cc65ce18b441755f322253e24e6cd862518ab037009f5\": {\n name: \"game_systems\",\n methods: [\n {\n entrypoint: \"mint\",\n },\n {\n entrypoint: \"start_game\",\n },\n ],\n },\n \"0x04f6fe2579cbce8bc7e4a960a2c07ff7ef82882b9d179b3e9d8d18c6236d80ee\": {\n name: \"battle_systems\",\n methods: [\n {\n entrypoint: \"battle_actions\",\n },\n ],\n },\n \"0x06f83dba9eaaa4a3615914b20a4d270d25bcd2fd8cd61dca0d5381575d581d15\": {\n name: \"draft_systems\",\n methods: [\n {\n entrypoint: \"pick_card\",\n },\n ],\n },\n \"0x05d11631f860069377142f87303f2b741803d1e811f894c3f43b0e207088f9b3\": {\n name: \"map_systems\",\n methods: [\n {\n entrypoint: \"generate_tree\",\n },\n {\n entrypoint: \"select_node\",\n },\n ],\n },\n \"0x3d445b63c8653983b8a5b8c5c0e52f7b944f9ce3b3ecf2cb208921e400feec1\": {\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"]}
|