@cartridge/controller 0.7.9 → 0.7.10
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 +15 -15
- package/.turbo/turbo-build.log +11 -11
- package/dist/index.js +80 -68
- package/dist/index.js.map +1 -1
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +1 -1
- package/dist/node/index.js.map +1 -1
- package/dist/{provider-CH2PlazB.js → provider-Dr912mPw.js} +2 -2
- package/dist/{provider-CH2PlazB.js.map → provider-Dr912mPw.js.map} +1 -1
- package/dist/session.js +2 -2
- package/dist/session.js.map +1 -1
- package/dist/stats.html +1 -1
- package/package.json +3 -3
- package/src/iframe/base.ts +19 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/account.ts","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/enums.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/createDestructor.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/createLogger.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/parent/getOriginFromSrc.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/errorSerialization.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/connectCallReceiver.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/generateId.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/methodSerialization.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/connectCallSender.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/parent/handleAckMessageFactory.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/parent/handleSynMessageFactory.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/parent/monitorIframeRemoval.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/startConnectionTimeout.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/parent/validateIframeHasSrcOrSrcDoc.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/parent/connectToChild.js","../src/iframe/base.ts","../src/wallets/metamask/index.ts","../src/wallets/phantom/index.ts","../src/wallets/argent/index.ts","../src/wallets/bridge.ts","../src/iframe/keychain.ts","../src/iframe/profile.ts","../src/controller.ts","../src/lookup.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+2373780/node_modules/@cartridge/presets/dist/index.js"],"sourcesContent":["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","export var MessageType;\n(function (MessageType) {\n MessageType[\"Call\"] = \"call\";\n MessageType[\"Reply\"] = \"reply\";\n MessageType[\"Syn\"] = \"syn\";\n MessageType[\"SynAck\"] = \"synAck\";\n MessageType[\"Ack\"] = \"ack\";\n})(MessageType || (MessageType = {}));\nexport var Resolution;\n(function (Resolution) {\n Resolution[\"Fulfilled\"] = \"fulfilled\";\n Resolution[\"Rejected\"] = \"rejected\";\n})(Resolution || (Resolution = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ErrorCode[\"ConnectionDestroyed\"] = \"ConnectionDestroyed\";\n ErrorCode[\"ConnectionTimeout\"] = \"ConnectionTimeout\";\n ErrorCode[\"NoIframeSrc\"] = \"NoIframeSrc\";\n})(ErrorCode || (ErrorCode = {}));\nexport var NativeErrorName;\n(function (NativeErrorName) {\n NativeErrorName[\"DataCloneError\"] = \"DataCloneError\";\n})(NativeErrorName || (NativeErrorName = {}));\nexport var NativeEventType;\n(function (NativeEventType) {\n NativeEventType[\"Message\"] = \"message\";\n})(NativeEventType || (NativeEventType = {}));\n","export default (localName, log) => {\n const callbacks = [];\n let destroyed = false;\n return {\n destroy(error) {\n if (!destroyed) {\n destroyed = true;\n log(`${localName}: Destroying connection`);\n callbacks.forEach((callback) => {\n callback(error);\n });\n }\n },\n onDestroy(callback) {\n destroyed ? callback() : callbacks.push(callback);\n },\n };\n};\n","export default (debug) => {\n /**\n * Logs a message if debug is enabled.\n */\n return (...args) => {\n if (debug) {\n console.log('[Penpal]', ...args); // eslint-disable-line no-console\n }\n };\n};\n","const DEFAULT_PORT_BY_PROTOCOL = {\n 'http:': '80',\n 'https:': '443',\n};\nconst URL_REGEX = /^(https?:)?\\/\\/([^/:]+)?(:(\\d+))?/;\nconst opaqueOriginSchemes = ['file:', 'data:'];\n/**\n * Converts a src value into an origin.\n */\nexport default (src) => {\n if (src && opaqueOriginSchemes.find((scheme) => src.startsWith(scheme))) {\n // The origin of the child document is an opaque origin and its\n // serialization is \"null\"\n // https://html.spec.whatwg.org/multipage/origin.html#origin\n return 'null';\n }\n // Note that if src is undefined, then srcdoc is being used instead of src\n // and we can follow this same logic below to get the origin of the parent,\n // which is the origin that we will need to use.\n const location = document.location;\n const regexResult = URL_REGEX.exec(src);\n let protocol;\n let hostname;\n let port;\n if (regexResult) {\n // It's an absolute URL. Use the parsed info.\n // regexResult[1] will be undefined if the URL starts with //\n protocol = regexResult[1] ? regexResult[1] : location.protocol;\n hostname = regexResult[2];\n port = regexResult[4];\n }\n else {\n // It's a relative path. Use the current location's info.\n protocol = location.protocol;\n hostname = location.hostname;\n port = location.port;\n }\n // If the port is the default for the protocol, we don't want to add it to the origin string\n // or it won't match the message's event.origin.\n const portSuffix = port && port !== DEFAULT_PORT_BY_PROTOCOL[protocol] ? `:${port}` : '';\n return `${protocol}//${hostname}${portSuffix}`;\n};\n","/**\n * Converts an error object into a plain object.\n */\nexport const serializeError = ({ name, message, stack, }) => ({\n name,\n message,\n stack,\n});\n/**\n * Converts a plain object into an error object.\n */\nexport const deserializeError = (obj) => {\n const deserializedError = new Error();\n // @ts-ignore\n Object.keys(obj).forEach((key) => (deserializedError[key] = obj[key]));\n return deserializedError;\n};\n","import { serializeError } from './errorSerialization';\nimport { MessageType, NativeEventType, NativeErrorName, Resolution, } from './enums';\n/**\n * Listens for \"call\" messages coming from the remote, executes the corresponding method, and\n * responds with the return value.\n */\nexport default (info, serializedMethods, log) => {\n const { localName, local, remote, originForSending, originForReceiving, } = info;\n let destroyed = false;\n const handleMessageEvent = (event) => {\n if (event.source !== remote || event.data.penpal !== MessageType.Call) {\n return;\n }\n if (originForReceiving !== '*' && event.origin !== originForReceiving) {\n log(`${localName} received message from origin ${event.origin} which did not match expected origin ${originForReceiving}`);\n return;\n }\n const callMessage = event.data;\n const { methodName, args, id } = callMessage;\n log(`${localName}: Received ${methodName}() call`);\n const createPromiseHandler = (resolution) => {\n return (returnValue) => {\n log(`${localName}: Sending ${methodName}() reply`);\n if (destroyed) {\n // It's possible to throw an error here, but it would need to be thrown asynchronously\n // and would only be catchable using window.onerror. This is because the consumer\n // is merely returning a value from their method and not calling any function\n // that they could wrap in a try-catch. Even if the consumer were to catch the error,\n // the value of doing so is questionable. Instead, we'll just log a message.\n log(`${localName}: Unable to send ${methodName}() reply due to destroyed connection`);\n return;\n }\n const message = {\n penpal: MessageType.Reply,\n id,\n resolution,\n returnValue,\n };\n if (resolution === Resolution.Rejected &&\n returnValue instanceof Error) {\n message.returnValue = serializeError(returnValue);\n message.returnValueIsError = true;\n }\n try {\n remote.postMessage(message, originForSending);\n }\n catch (err) {\n // If a consumer attempts to send an object that's not cloneable (e.g., window),\n // we want to ensure the receiver's promise gets rejected.\n if (err.name === NativeErrorName.DataCloneError) {\n const errorReplyMessage = {\n penpal: MessageType.Reply,\n id,\n resolution: Resolution.Rejected,\n returnValue: serializeError(err),\n returnValueIsError: true,\n };\n remote.postMessage(errorReplyMessage, originForSending);\n }\n throw err;\n }\n };\n };\n new Promise((resolve) => resolve(serializedMethods[methodName]\n .call(serializedMethods, event.origin)\n .apply(serializedMethods, args))).then(createPromiseHandler(Resolution.Fulfilled), createPromiseHandler(Resolution.Rejected));\n };\n local.addEventListener(NativeEventType.Message, handleMessageEvent);\n return () => {\n destroyed = true;\n local.removeEventListener(NativeEventType.Message, handleMessageEvent);\n };\n};\n","let id = 0;\n/**\n * @return {number} A unique ID (not universally unique)\n */\nexport default () => ++id;\n","const KEY_PATH_DELIMITER = '.';\nconst keyPathToSegments = (keyPath) => keyPath ? keyPath.split(KEY_PATH_DELIMITER) : [];\nconst segmentsToKeyPath = (segments) => segments.join(KEY_PATH_DELIMITER);\nconst createKeyPath = (key, prefix) => {\n const segments = keyPathToSegments(prefix || '');\n segments.push(key);\n return segmentsToKeyPath(segments);\n};\n/**\n * Given a `keyPath`, set it to be `value` on `subject`, creating any intermediate\n * objects along the way.\n *\n * @param {Object} subject The object on which to set value.\n * @param {string} keyPath The key path at which to set value.\n * @param {Object} value The value to store at the given key path.\n * @returns {Object} Updated subject.\n */\nexport const setAtKeyPath = (subject, keyPath, value) => {\n const segments = keyPathToSegments(keyPath);\n segments.reduce((prevSubject, key, idx) => {\n if (typeof prevSubject[key] === 'undefined') {\n prevSubject[key] = {};\n }\n if (idx === segments.length - 1) {\n prevSubject[key] = value;\n }\n return prevSubject[key];\n }, subject);\n return subject;\n};\n/**\n * Given a dictionary of (nested) keys to function, flatten them to a map\n * from key path to function.\n *\n * @param {Object} methods The (potentially nested) object to serialize.\n * @param {string} prefix A string with which to prefix entries. Typically not intended to be used by consumers.\n * @returns {Object} An map from key path in `methods` to functions.\n */\nexport const serializeMethods = (methods, prefix) => {\n const flattenedMethods = {};\n Object.keys(methods).forEach((key) => {\n const value = methods[key];\n const keyPath = createKeyPath(key, prefix);\n if (typeof value === 'object') {\n // Recurse into any nested children.\n Object.assign(flattenedMethods, serializeMethods(value, keyPath));\n }\n if (typeof value === 'function') {\n // If we've found a method, expose it.\n flattenedMethods[keyPath] = value;\n }\n });\n return flattenedMethods;\n};\n/**\n * Given a map of key paths to functions, unpack the key paths to an object.\n *\n * @param {Object} flattenedMethods A map of key paths to functions to unpack.\n * @returns {Object} A (potentially nested) map of functions.\n */\nexport const deserializeMethods = (flattenedMethods) => {\n const methods = {};\n for (const keyPath in flattenedMethods) {\n setAtKeyPath(methods, keyPath, flattenedMethods[keyPath]);\n }\n return methods;\n};\n","import generateId from './generateId';\nimport { deserializeError } from './errorSerialization';\nimport { deserializeMethods } from './methodSerialization';\nimport { ErrorCode, MessageType, NativeEventType, Resolution } from './enums';\n/**\n * Augments an object with methods that match those defined by the remote. When these methods are\n * called, a \"call\" message will be sent to the remote, the remote's corresponding method will be\n * executed, and the method's return value will be returned via a message.\n * @param {Object} callSender Sender object that should be augmented with methods.\n * @param {Object} info Information about the local and remote windows.\n * @param {Array} methodKeyPaths Key paths of methods available to be called on the remote.\n * @param {Promise} destructionPromise A promise resolved when destroy() is called on the penpal\n * connection.\n * @returns {Object} The call sender object with methods that may be called.\n */\nexport default (callSender, info, methodKeyPaths, destroyConnection, log) => {\n const { localName, local, remote, originForSending, originForReceiving, } = info;\n let destroyed = false;\n log(`${localName}: Connecting call sender`);\n const createMethodProxy = (methodName) => {\n return (...args) => {\n log(`${localName}: Sending ${methodName}() call`);\n // This handles the case where the iframe has been removed from the DOM\n // (and therefore its window closed), the consumer has not yet\n // called destroy(), and the user calls a method exposed by\n // the remote. We detect the iframe has been removed and force\n // a destroy() immediately so that the consumer sees the error saying\n // the connection has been destroyed. We wrap this check in a try catch\n // because Edge throws an \"Object expected\" error when accessing\n // contentWindow.closed on a contentWindow from an iframe that's been\n // removed from the DOM.\n let iframeRemoved;\n try {\n if (remote.closed) {\n iframeRemoved = true;\n }\n }\n catch (e) {\n iframeRemoved = true;\n }\n if (iframeRemoved) {\n destroyConnection();\n }\n if (destroyed) {\n const error = new Error(`Unable to send ${methodName}() call due ` + `to destroyed connection`);\n error.code = ErrorCode.ConnectionDestroyed;\n throw error;\n }\n return new Promise((resolve, reject) => {\n const id = generateId();\n const handleMessageEvent = (event) => {\n if (event.source !== remote ||\n event.data.penpal !== MessageType.Reply ||\n event.data.id !== id) {\n return;\n }\n if (originForReceiving !== '*' &&\n event.origin !== originForReceiving) {\n log(`${localName} received message from origin ${event.origin} which did not match expected origin ${originForReceiving}`);\n return;\n }\n const replyMessage = event.data;\n log(`${localName}: Received ${methodName}() reply`);\n local.removeEventListener(NativeEventType.Message, handleMessageEvent);\n let returnValue = replyMessage.returnValue;\n if (replyMessage.returnValueIsError) {\n returnValue = deserializeError(returnValue);\n }\n (replyMessage.resolution === Resolution.Fulfilled ? resolve : reject)(returnValue);\n };\n local.addEventListener(NativeEventType.Message, handleMessageEvent);\n const callMessage = {\n penpal: MessageType.Call,\n id,\n methodName,\n args,\n };\n remote.postMessage(callMessage, originForSending);\n });\n };\n };\n // Wrap each method in a proxy which sends it to the corresponding receiver.\n const flattenedMethods = methodKeyPaths.reduce((api, name) => {\n api[name] = createMethodProxy(name);\n return api;\n }, {});\n // Unpack the structure of the provided methods object onto the CallSender, exposing\n // the methods in the same shape they were provided.\n Object.assign(callSender, deserializeMethods(flattenedMethods));\n return () => {\n destroyed = true;\n };\n};\n","import connectCallReceiver from '../connectCallReceiver';\nimport connectCallSender from '../connectCallSender';\n/**\n * Handles an ACK handshake message.\n */\nexport default (serializedMethods, childOrigin, originForSending, destructor, log) => {\n const { destroy, onDestroy } = destructor;\n let destroyCallReceiver;\n let receiverMethodNames;\n // We resolve the promise with the call sender. If the child reconnects\n // (for example, after refreshing or navigating to another page that\n // uses Penpal, we'll update the call sender with methods that match the\n // latest provided by the child.\n const callSender = {};\n return (event) => {\n if (childOrigin !== '*' && event.origin !== childOrigin) {\n log(`Parent: Handshake - Received ACK message from origin ${event.origin} which did not match expected origin ${childOrigin}`);\n return;\n }\n log('Parent: Handshake - Received ACK');\n const info = {\n localName: 'Parent',\n local: window,\n remote: event.source,\n originForSending: originForSending,\n originForReceiving: childOrigin,\n };\n // If the child reconnected, we need to destroy the prior call receiver\n // before setting up a new one.\n if (destroyCallReceiver) {\n destroyCallReceiver();\n }\n destroyCallReceiver = connectCallReceiver(info, serializedMethods, log);\n onDestroy(destroyCallReceiver);\n // If the child reconnected, we need to remove the methods from the\n // previous call receiver off the sender.\n if (receiverMethodNames) {\n receiverMethodNames.forEach((receiverMethodName) => {\n delete callSender[receiverMethodName];\n });\n }\n receiverMethodNames = event.data.methodNames;\n const destroyCallSender = connectCallSender(callSender, info, receiverMethodNames, destroy, log);\n onDestroy(destroyCallSender);\n return callSender;\n };\n};\n","import { MessageType } from '../enums';\n/**\n * Handles a SYN handshake message.\n */\nexport default (log, serializedMethods, childOrigin, originForSending) => {\n return (event) => {\n // Under specific timing circumstances, we can receive an event\n // whose source is null. This seems to happen when the child iframe is\n // removed from the DOM about the same time it has sent the SYN event.\n // https://github.com/Aaronius/penpal/issues/85\n if (!event.source) {\n return;\n }\n if (childOrigin !== '*' && event.origin !== childOrigin) {\n log(`Parent: Handshake - Received SYN message from origin ${event.origin} which did not match expected origin ${childOrigin}`);\n return;\n }\n log('Parent: Handshake - Received SYN, responding with SYN-ACK');\n const synAckMessage = {\n penpal: MessageType.SynAck,\n methodNames: Object.keys(serializedMethods),\n };\n event.source.postMessage(synAckMessage, originForSending);\n };\n};\n","const CHECK_IFRAME_IN_DOC_INTERVAL = 60000;\n/**\n * Monitors for iframe removal and destroys connection if iframe\n * is found to have been removed from DOM. This is to prevent memory\n * leaks when the iframe is removed from the document and the consumer\n * hasn't called destroy(). Without this, event listeners attached to\n * the window would stick around and since the event handlers have a\n * reference to the iframe in their closures, the iframe would stick\n * around too.\n */\nexport default (iframe, destructor) => {\n const { destroy, onDestroy } = destructor;\n const checkIframeInDocIntervalId = setInterval(() => {\n if (!iframe.isConnected) {\n clearInterval(checkIframeInDocIntervalId);\n destroy();\n }\n }, CHECK_IFRAME_IN_DOC_INTERVAL);\n onDestroy(() => {\n clearInterval(checkIframeInDocIntervalId);\n });\n};\n","import { ErrorCode } from './enums';\n/**\n * Starts a timeout and calls the callback with an error\n * if the timeout completes before the stop function is called.\n */\nexport default (timeout, callback) => {\n let timeoutId;\n if (timeout !== undefined) {\n timeoutId = window.setTimeout(() => {\n const error = new Error(`Connection timed out after ${timeout}ms`);\n error.code = ErrorCode.ConnectionTimeout;\n callback(error);\n }, timeout);\n }\n return () => {\n clearTimeout(timeoutId);\n };\n};\n","import { ErrorCode } from '../enums';\nexport default (iframe) => {\n if (!iframe.src && !iframe.srcdoc) {\n const error = new Error('Iframe must have src or srcdoc property defined.');\n error.code = ErrorCode.NoIframeSrc;\n throw error;\n }\n};\n","import { MessageType, NativeEventType } from '../enums';\nimport createDestructor from '../createDestructor';\nimport createLogger from '../createLogger';\nimport getOriginFromSrc from './getOriginFromSrc';\nimport handleAckMessageFactory from './handleAckMessageFactory';\nimport handleSynMessageFactory from './handleSynMessageFactory';\nimport { serializeMethods } from '../methodSerialization';\nimport monitorIframeRemoval from './monitorIframeRemoval';\nimport startConnectionTimeout from '../startConnectionTimeout';\nimport validateIframeHasSrcOrSrcDoc from './validateIframeHasSrcOrSrcDoc';\n/**\n * Attempts to establish communication with an iframe.\n */\nexport default (options) => {\n let { iframe, methods = {}, childOrigin, timeout, debug = false } = options;\n const log = createLogger(debug);\n const destructor = createDestructor('Parent', log);\n const { onDestroy, destroy } = destructor;\n if (!childOrigin) {\n validateIframeHasSrcOrSrcDoc(iframe);\n childOrigin = getOriginFromSrc(iframe.src);\n }\n // If event.origin is \"null\", the remote protocol is file: or data: and we\n // must post messages with \"*\" as targetOrigin when sending messages.\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage#Using_window.postMessage_in_extensions\n const originForSending = childOrigin === 'null' ? '*' : childOrigin;\n const serializedMethods = serializeMethods(methods);\n const handleSynMessage = handleSynMessageFactory(log, serializedMethods, childOrigin, originForSending);\n const handleAckMessage = handleAckMessageFactory(serializedMethods, childOrigin, originForSending, destructor, log);\n const promise = new Promise((resolve, reject) => {\n const stopConnectionTimeout = startConnectionTimeout(timeout, destroy);\n const handleMessage = (event) => {\n if (event.source !== iframe.contentWindow || !event.data) {\n return;\n }\n if (event.data.penpal === MessageType.Syn) {\n handleSynMessage(event);\n return;\n }\n if (event.data.penpal === MessageType.Ack) {\n const callSender = handleAckMessage(event);\n if (callSender) {\n stopConnectionTimeout();\n resolve(callSender);\n }\n return;\n }\n };\n window.addEventListener(NativeEventType.Message, handleMessage);\n log('Parent: Awaiting handshake');\n monitorIframeRemoval(iframe, destructor);\n onDestroy((error) => {\n window.removeEventListener(NativeEventType.Message, handleMessage);\n if (error) {\n reject(error);\n }\n });\n });\n return {\n promise,\n destroy() {\n // Don't allow consumer to pass an error into destroy.\n destroy();\n },\n };\n};\n","import { AsyncMethodReturns, connectToChild } from \"@cartridge/penpal\";\nimport { ControllerOptions, Modal } from \"../types\";\n\nexport type IFrameOptions<CallSender> = Omit<\n ConstructorParameters<typeof IFrame>[0],\n \"id\" | \"url\" | \"onConnect\"\n> & {\n url?: string;\n onConnect: (child: AsyncMethodReturns<CallSender>) => void;\n};\n\nexport class IFrame<CallSender extends {}> implements Modal {\n url?: URL;\n private iframe?: HTMLIFrameElement;\n private container?: HTMLDivElement;\n private onClose?: () => void;\n\n constructor({\n id,\n url,\n preset,\n onClose,\n onConnect,\n methods = {},\n }: Pick<ControllerOptions, \"preset\"> & {\n id: string;\n url: URL;\n onClose?: () => void;\n onConnect: (child: AsyncMethodReturns<CallSender>) => void;\n methods?: { [key: string]: (...args: any[]) => void };\n }) {\n if (typeof document === \"undefined\") {\n return;\n }\n\n if (preset) {\n url.searchParams.set(\"preset\", preset);\n }\n\n this.url = url;\n\n const iframe = document.createElement(\"iframe\");\n iframe.src = url.toString();\n iframe.id = id;\n iframe.style.border = \"none\";\n iframe.sandbox.add(\"allow-forms\");\n iframe.sandbox.add(\"allow-popups\");\n iframe.sandbox.add(\"allow-scripts\");\n iframe.sandbox.add(\"allow-same-origin\");\n iframe.allow =\n \"publickey-credentials-create *; publickey-credentials-get *; clipboard-write\";\n if (!!document.hasStorageAccess) {\n iframe.sandbox.add(\"allow-storage-access-by-user-activation\");\n }\n\n const container = document.createElement(\"div\");\n container.id = \"controller\";\n container.style.position = \"fixed\";\n container.style.height = \"100%\";\n container.style.width = \"100%\";\n container.style.top = \"0\";\n container.style.left = \"0\";\n container.style.zIndex = \"10000\";\n container.style.backgroundColor = \"rgba(0,0,0,0.6)\";\n container.style.display = \"flex\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.visibility = \"hidden\";\n container.style.opacity = \"0\";\n container.style.transition = \"opacity 0.2s ease\";\n container.appendChild(iframe);\n\n this.iframe = iframe;\n this.container = container;\n\n connectToChild<CallSender>({\n iframe: this.iframe,\n methods: { close: (_origin: string) => () => this.close(), ...methods },\n }).promise.then(onConnect);\n\n this.resize();\n window.addEventListener(\"resize\", () => this.resize());\n\n const observer = new MutationObserver(() => {\n const existingController = document.getElementById(\"controller\");\n if (document.body) {\n if (\n (id === \"controller-keychain\" && !existingController) ||\n id === \"controller-profile\"\n ) {\n document.body.appendChild(container);\n observer.disconnect();\n }\n }\n });\n\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n });\n\n const existingController = document.getElementById(\"controller\");\n if (document.body) {\n if (\n (id === \"controller-keychain\" && !existingController) ||\n id === \"controller-profile\"\n ) {\n document.body.appendChild(container);\n }\n }\n\n this.onClose = onClose;\n }\n\n open() {\n if (!this.container) return;\n document.body.style.overflow = \"hidden\";\n\n this.container.style.visibility = \"visible\";\n this.container.style.opacity = \"1\";\n }\n\n close() {\n if (!this.container) return;\n this.onClose?.();\n\n document.body.style.overflow = \"auto\";\n\n this.container.style.visibility = \"hidden\";\n this.container.style.opacity = \"0\";\n }\n\n sendBackward() {\n if (!this.container) return;\n this.container.style.zIndex = \"9999\";\n }\n\n sendForward() {\n if (!this.container) return;\n this.container.style.zIndex = \"10000\";\n }\n\n private resize() {\n if (!this.iframe) return;\n\n this.iframe.style.userSelect = \"none\";\n\n if (window.innerWidth < 768) {\n this.iframe.style.height = \"100%\";\n this.iframe.style.width = \"100%\";\n this.iframe.style.borderRadius = \"0\";\n return;\n }\n\n this.iframe.style.height = \"600px\";\n this.iframe.style.width = \"432px\";\n this.iframe.style.borderRadius = \"8px\";\n }\n}\n","import {\n WalletAdapter,\n ExternalWallet,\n ExternalWalletResponse,\n ExternalWalletType,\n ExternalPlatform,\n} from \"../types\";\nimport { MetaMaskSDK } from \"@metamask/sdk\";\n\nexport class MetaMaskWallet implements WalletAdapter {\n readonly type: ExternalWalletType = \"metamask\";\n readonly platform: ExternalPlatform = \"ethereum\";\n private MMSDK: MetaMaskSDK;\n private account: string | undefined = undefined;\n\n constructor() {\n this.MMSDK = new MetaMaskSDK({\n dappMetadata: {\n name: \"Cartridge Controller\",\n url: window.location.href,\n },\n });\n }\n\n isAvailable(): boolean {\n return typeof window !== \"undefined\" && !!window.ethereum?.isMetaMask;\n }\n\n getInfo(): ExternalWallet {\n const available = this.isAvailable();\n\n return {\n type: this.type,\n available,\n version: available ? window.ethereum?.version || \"Unknown\" : undefined,\n chainId: available ? window.ethereum?.chainId : undefined,\n name: \"MetaMask\",\n platform: this.platform,\n };\n }\n\n async connect(): Promise<ExternalWalletResponse<any>> {\n if (this.account) {\n return { success: true, wallet: this.type, account: this.account };\n }\n\n try {\n if (!this.isAvailable()) {\n throw new Error(\"MetaMask is not available\");\n }\n\n const accounts = await this.MMSDK.connect();\n if (accounts && accounts.length > 0) {\n this.account = accounts[0];\n return { success: true, wallet: this.type, account: this.account };\n }\n\n throw new Error(\"No accounts found\");\n } catch (error) {\n console.error(`Error connecting to MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signTransaction(\n transaction: any,\n ): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const ethereum = this.MMSDK.getProvider();\n if (!ethereum) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const result = await ethereum.request({\n method: \"eth_sendTransaction\",\n params: [transaction],\n });\n\n return { success: true, wallet: this.type, result };\n } catch (error) {\n console.error(`Error signing transaction with MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signMessage(message: string): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const result = await this.MMSDK.connectAndSign({\n msg: message,\n });\n\n return { success: true, wallet: this.type, result };\n } catch (error) {\n console.error(`Error signing message with MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signTypedData(data: any): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const ethereum = this.MMSDK.getProvider();\n if (!ethereum) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const result = await ethereum.request({\n method: \"eth_signTypedData_v4\",\n params: [this.account, JSON.stringify(data)],\n });\n\n return { success: true, wallet: this.type, result };\n } catch (error) {\n console.error(`Error signing typed data with MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async sendTransaction(_txn: any): Promise<ExternalWalletResponse<any>> {\n return {\n success: false,\n wallet: this.type,\n error: \"Not implemented\",\n };\n }\n\n async switchChain(chainId: string): Promise<boolean> {\n try {\n if (!this.isAvailable()) {\n throw new Error(\"MetaMask is not available\");\n }\n\n const ethereum = this.MMSDK.getProvider();\n if (!ethereum) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n try {\n await ethereum.request({\n method: \"wallet_switchEthereumChain\",\n params: [{ chainId }],\n });\n return true;\n } catch (error) {\n if ((error as any).code === 4902) {\n console.warn(\"Chain not added to MetaMask\");\n }\n throw error;\n }\n } catch (error) {\n console.error(`Error switching chain for MetaMask:`, error);\n return false;\n }\n }\n\n async getBalance(\n tokenAddress?: string,\n ): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n if (tokenAddress) {\n return {\n success: false,\n wallet: this.type,\n error: \"Not implemented for ERC20\",\n };\n } else {\n const ethereum = this.MMSDK.getProvider();\n if (!ethereum) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const balance = await ethereum.request({\n method: \"eth_getBalance\",\n params: [this.account, \"latest\"],\n });\n return { success: true, wallet: this.type, result: balance };\n }\n } catch (error) {\n console.error(`Error getting balance from MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n}\n","import { PublicKey, Transaction, VersionedTransaction } from \"@solana/web3.js\";\nimport {\n WalletAdapter,\n ExternalWallet,\n ExternalWalletResponse,\n ExternalWalletType,\n ExternalPlatform,\n} from \"../types\";\n\ninterface PhantomProvider {\n isPhantom: boolean;\n publicKey: PublicKey | null;\n isConnected: boolean;\n connect(opts?: { onlyIfTrusted: boolean }): Promise<{ publicKey: PublicKey }>;\n disconnect(): Promise<void>;\n signTransaction(\n transaction: Transaction | VersionedTransaction,\n ): Promise<Transaction | VersionedTransaction>;\n signAllTransactions(\n transactions: (Transaction | VersionedTransaction)[],\n ): Promise<(Transaction | VersionedTransaction)[]>;\n signAndSendTransaction(\n transaction: Transaction | VersionedTransaction,\n opts?: { skipPreflight?: boolean; maxRetries?: number },\n ): Promise<{ signature: string }>;\n signMessage(\n message: Uint8Array,\n display?: \"utf8\" | \"hex\",\n ): Promise<{ signature: Uint8Array }>;\n on(\n event: \"connect\" | \"disconnect\" | \"accountChanged\",\n handler: (args: unknown) => void,\n ): void;\n request(args: { method: string; params?: unknown }): Promise<unknown>;\n}\n\nexport class PhantomWallet implements WalletAdapter {\n readonly type: ExternalWalletType = \"phantom\";\n readonly platform: ExternalPlatform = \"solana\";\n private account: string | undefined = undefined;\n\n private getProvider(): PhantomProvider {\n if (typeof window === \"undefined\") {\n throw new Error(\"Not ready\");\n }\n\n const provider = window.solana;\n\n if (!provider?.isPhantom) {\n throw new Error(\"Phantom is not available\");\n }\n\n return provider;\n }\n\n isAvailable(): boolean {\n return typeof window !== \"undefined\" && !!window.solana?.isPhantom;\n }\n\n getInfo(): ExternalWallet {\n const available = this.isAvailable();\n\n return {\n type: this.type,\n available,\n version: \"Unknown\",\n name: \"Phantom\",\n platform: this.platform,\n };\n }\n\n async connect(): Promise<ExternalWalletResponse<any>> {\n if (this.account) {\n return { success: true, wallet: this.type, account: this.account };\n }\n\n try {\n if (!this.isAvailable()) {\n throw new Error(\"Phantom is not available\");\n }\n\n const response = await this.getProvider().connect();\n if (response.publicKey) {\n this.account = response.publicKey.toString();\n return { success: true, wallet: this.type, account: this.account };\n }\n\n throw new Error(\"No accounts found\");\n } catch (error) {\n console.error(`Error connecting to Phantom:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signMessage(message: string): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"Phantom is not connected\");\n }\n\n const encodedMessage = new TextEncoder().encode(message);\n const result = await this.getProvider().signMessage(\n encodedMessage,\n \"utf8\",\n );\n return { success: true, wallet: this.type, result };\n } catch (error) {\n console.error(`Error signing message with Phantom:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async sendTransaction(\n serailized_txn: string,\n ): Promise<ExternalWalletResponse<any>> {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"Phantom is not connected\");\n }\n\n try {\n const txn = Transaction.from(Buffer.from(serailized_txn, \"base64\"));\n const provider = this.getProvider();\n const result = await provider.signAndSendTransaction(txn);\n return {\n success: true,\n wallet: this.type,\n result,\n };\n } catch (error) {\n console.error(`Error sending transaction with Phantom:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async switchChain(_chainId: string): Promise<boolean> {\n console.warn(\"Chain switching not supported for Phantom\");\n return false;\n }\n\n async getBalance(\n _tokenAddress?: string,\n ): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"Phantom is not connected\");\n }\n\n // TODO: Implement balance fetching based on Phantom's API\n return {\n success: true,\n wallet: this.type,\n result: \"Implement based on Phantom API\",\n };\n } catch (error) {\n console.error(`Error getting balance from Phantom:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n}\n","import {\n WalletAdapter,\n ExternalWallet,\n ExternalWalletResponse,\n ExternalWalletType,\n ExternalPlatform,\n} from \"../types\";\nimport { connect, StarknetWindowObject } from \"starknetkit\";\nimport { InjectedConnector } from \"starknetkit/injected\";\nimport { TypedData } from \"@starknet-io/types-js\";\n\nexport class ArgentWallet implements WalletAdapter {\n readonly type: ExternalWalletType = \"argent\";\n readonly platform: ExternalPlatform = \"starknet\";\n private wallet: StarknetWindowObject | undefined = undefined;\n private account: string | undefined = undefined;\n\n isAvailable(): boolean {\n return typeof window !== \"undefined\" && !!window.starknet_argentX;\n }\n\n getInfo(): ExternalWallet {\n const available = this.isAvailable();\n\n return {\n type: this.type,\n available,\n version: available\n ? window.starknet_argentX?.version || \"Unknown\"\n : undefined,\n chainId: available ? window.starknet_argentX?.chainId : undefined,\n name: \"Argent\",\n platform: this.platform,\n };\n }\n\n async connect(): Promise<ExternalWalletResponse<any>> {\n if (this.account) {\n return { success: true, wallet: this.type, account: this.account };\n }\n\n try {\n if (!this.isAvailable()) {\n throw new Error(\"Argent is not available\");\n }\n\n const { wallet, connectorData } = await connect({\n connectors: [new InjectedConnector({ options: { id: \"argentX\" } })],\n });\n\n if (!wallet) {\n throw new Error(\"No wallet found\");\n }\n\n this.wallet = wallet;\n this.account = connectorData?.account;\n return { success: true, wallet: this.type, account: this.account };\n } catch (error) {\n console.error(`Error connecting to Argent:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signTypedData(data: TypedData): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.wallet) {\n throw new Error(\"Argent is not connected\");\n }\n\n const sig = await this.wallet.request({\n type: \"wallet_signTypedData\",\n params: data,\n });\n\n return { success: true, wallet: this.type, result: sig };\n } catch (error) {\n console.error(`Error signing typed data with Argent:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async sendTransaction(_txn: any): Promise<ExternalWalletResponse<any>> {\n return {\n success: false,\n wallet: this.type,\n error: \"Not implemented\",\n };\n }\n\n async switchChain(_chainId: string): Promise<boolean> {\n console.warn(\n \"Chain switching for Argent may require custom implementation\",\n );\n return false;\n }\n\n async getBalance(\n _tokenAddress?: string,\n ): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.wallet) {\n throw new Error(\"Argent is not connected\");\n }\n\n // TODO: Implement balance fetching based on Argent's API\n return {\n success: true,\n wallet: this.type,\n result: \"Implement based on Argent API\",\n };\n } catch (error) {\n console.error(`Error getting balance from Argent:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n}\n","import {\n ExternalWalletType,\n WalletAdapter,\n ExternalWallet,\n ExternalWalletResponse,\n} from \"./types\";\nimport { MetaMaskWallet } from \"./metamask\";\nimport { PhantomWallet } from \"./phantom\";\nimport { ArgentWallet } from \"./argent\";\n\nexport class WalletBridge {\n private readonly walletAdapters: Map<ExternalWalletType, WalletAdapter>;\n private readonly connectedWallets: Map<ExternalWalletType, WalletAdapter> =\n new Map();\n\n constructor() {\n this.walletAdapters = new Map<ExternalWalletType, WalletAdapter>();\n this.walletAdapters.set(\"metamask\", new MetaMaskWallet());\n this.walletAdapters.set(\"phantom\", new PhantomWallet());\n this.walletAdapters.set(\"argent\", new ArgentWallet());\n\n if (typeof window !== \"undefined\") {\n window.wallet_bridge = this;\n }\n }\n\n getIFrameMethods() {\n return {\n externalDetectWallets: (_origin: string) => () => this.detectWallets(),\n externalConnectWallet: (_origin: string) => (type: ExternalWalletType) =>\n this.connectWallet(type),\n externalSignMessage:\n (_origin: string) => (type: ExternalWalletType, message: string) =>\n this.signMessage(type, message),\n externalSignTypedData:\n (_origin: string) => (type: ExternalWalletType, data: any) =>\n this.signTypedData(type, data),\n externalSendTransaction:\n (_origin: string) => (type: ExternalWalletType, txn: any) =>\n this.sendTransaction(type, txn),\n externalGetBalance:\n (_origin: string) =>\n (type: ExternalWalletType, tokenAddress?: string) =>\n this.getBalance(type, tokenAddress),\n };\n }\n\n async detectWallets(): Promise<ExternalWallet[]> {\n const wallets = Array.from(this.walletAdapters.values()).map((adapter) =>\n adapter.getInfo(),\n ) as ExternalWallet[];\n\n return wallets;\n }\n\n private getWalletAdapter(type: ExternalWalletType): WalletAdapter {\n const adapter = this.walletAdapters.get(type);\n if (!adapter) {\n throw new Error(`Unsupported wallet type: ${type}`);\n }\n return adapter;\n }\n\n private handleError(\n type: ExternalWalletType,\n error: unknown,\n operation: string,\n ): ExternalWalletResponse {\n const errorMessage =\n error instanceof Error ? error.message : \"Unknown error\";\n console.error(`Error ${operation} with ${type} wallet:`, error);\n return { success: false, wallet: type, error: errorMessage };\n }\n\n async connectWallet(\n type: ExternalWalletType,\n ): Promise<ExternalWalletResponse> {\n try {\n const wallet = this.getWalletAdapter(type);\n const response = await wallet.connect();\n\n if (response.success) {\n this.connectedWallets.set(type, wallet);\n }\n\n return response;\n } catch (error) {\n return this.handleError(type, error, \"connecting to\");\n }\n }\n\n async signMessage(\n type: ExternalWalletType,\n message: string,\n ): Promise<ExternalWalletResponse> {\n try {\n if (!this.connectedWallets.has(type)) {\n throw new Error(`Wallet ${type} is not connected`);\n }\n\n const wallet = this.connectedWallets.get(type)!;\n if (!wallet.signMessage) {\n throw new Error(`Wallet ${type} does not support signing messages`);\n }\n\n return await wallet.signMessage(message);\n } catch (error) {\n return this.handleError(type, error, \"signing message with\");\n }\n }\n\n async signTypedData(\n type: ExternalWalletType,\n data: any,\n ): Promise<ExternalWalletResponse> {\n try {\n if (!this.connectedWallets.has(type)) {\n throw new Error(`Wallet ${type} is not connected`);\n }\n\n const wallet = this.connectedWallets.get(type)!;\n if (!wallet.signTypedData) {\n throw new Error(`Wallet ${type} does not support signing typed data`);\n }\n\n return await wallet.signTypedData(data);\n } catch (error) {\n return this.handleError(type, error, \"signing typed data with\");\n }\n }\n\n async sendTransaction(\n type: ExternalWalletType,\n txn: any,\n ): Promise<ExternalWalletResponse> {\n try {\n if (!this.connectedWallets.has(type)) {\n throw new Error(`Wallet ${type} is not connected`);\n }\n\n const wallet = this.connectedWallets.get(type)!;\n return await wallet.sendTransaction(txn);\n } catch (error) {\n return this.handleError(type, error, \"sending transaction with\");\n }\n }\n\n async getBalance(\n type: ExternalWalletType,\n tokenAddress?: string,\n ): Promise<ExternalWalletResponse> {\n try {\n if (!this.connectedWallets.has(type)) {\n throw new Error(`Wallet ${type} is not connected`);\n }\n\n const wallet = this.connectedWallets.get(type)!;\n return await wallet.getBalance(tokenAddress);\n } catch (error) {\n return this.handleError(type, error, \"getting balance from\");\n }\n }\n}\n\ndeclare global {\n interface Window {\n ethereum?: any;\n solana?: any;\n starknet_argentX?: any;\n wallet_bridge?: WalletBridge;\n }\n}\n\nexport type {\n ExternalWalletType,\n ExternalWallet,\n ExternalWalletResponse,\n WalletAdapter,\n} from \"./types\";\n","import { KEYCHAIN_URL } from \"../constants\";\nimport { Keychain, KeychainOptions } from \"../types\";\nimport { WalletBridge } from \"../wallets/bridge\";\nimport { IFrame, IFrameOptions } from \"./base\";\n\ntype KeychainIframeOptions = IFrameOptions<Keychain> & KeychainOptions;\n\nexport class KeychainIFrame extends IFrame<Keychain> {\n private walletBridge: WalletBridge;\n\n constructor({ url, policies, ...iframeOptions }: KeychainIframeOptions) {\n const _url = new URL(url ?? KEYCHAIN_URL);\n const walletBridge = new WalletBridge();\n\n if (policies) {\n _url.searchParams.set(\n \"policies\",\n encodeURIComponent(JSON.stringify(policies)),\n );\n }\n\n super({\n ...iframeOptions,\n id: \"controller-keychain\",\n url: _url,\n methods: walletBridge.getIFrameMethods(),\n });\n\n this.walletBridge = walletBridge;\n }\n\n getWalletBridge(): WalletBridge {\n return this.walletBridge;\n }\n}\n","import { PROFILE_URL } from \"../constants\";\nimport { Profile, ProfileOptions } from \"../types\";\nimport { IFrame, IFrameOptions } from \"./base\";\n\nexport type ProfileIFrameOptions = IFrameOptions<Profile> &\n ProfileOptions & {\n rpcUrl: string;\n version?: string;\n username: string;\n slot?: string;\n namespace?: string;\n };\n\nexport class ProfileIFrame extends IFrame<Profile> {\n constructor({\n profileUrl,\n rpcUrl,\n version,\n username,\n slot,\n namespace,\n tokens,\n policies,\n ...iframeOptions\n }: ProfileIFrameOptions) {\n const _profileUrl = (profileUrl || PROFILE_URL).replace(/\\/$/, \"\");\n let _url = new URL(\n slot\n ? `${_profileUrl}/account/${username}/slot/${slot}`\n : `${_profileUrl}/account/${username}`,\n );\n\n if (slot) {\n _url.searchParams.set(\"ps\", encodeURIComponent(slot));\n }\n\n if (namespace) {\n _url.searchParams.set(\"ns\", encodeURIComponent(namespace));\n }\n\n if (version) {\n _url.searchParams.set(\"v\", encodeURIComponent(version));\n }\n\n _url.searchParams.set(\"rpcUrl\", encodeURIComponent(rpcUrl));\n\n if (tokens?.erc20) {\n _url.searchParams.set(\n \"erc20\",\n encodeURIComponent(tokens.erc20.toString()),\n );\n }\n\n if (policies?.contracts) {\n const methods = Object.values(policies.contracts).flatMap(\n (contract) => contract.methods,\n );\n _url.searchParams.set(\n \"methods\",\n encodeURIComponent(JSON.stringify(methods)),\n );\n }\n\n super({\n ...iframeOptions,\n id: \"controller-profile\",\n url: _url,\n });\n }\n}\n","import { AsyncMethodReturns } from \"@cartridge/penpal\";\n\nimport ControllerAccount from \"./account\";\nimport { KeychainIFrame, ProfileIFrame } from \"./iframe\";\nimport { NotReadyToConnect } from \"./errors\";\nimport {\n Keychain,\n ResponseCodes,\n ConnectReply,\n ProbeReply,\n ControllerOptions,\n ConnectError,\n Profile,\n IFrames,\n ProfileContextTypeVariant,\n Chain,\n} from \"./types\";\nimport BaseProvider from \"./provider\";\nimport { shortString, WalletAccount } from \"starknet\";\nimport { Policy } from \"@cartridge/presets\";\nimport { AddStarknetChainParameters, ChainId } from \"@starknet-io/types-js\";\nimport { parseChainId } from \"./utils\";\n\nexport default class ControllerProvider extends BaseProvider {\n private keychain?: AsyncMethodReturns<Keychain>;\n private profile?: AsyncMethodReturns<Profile>;\n private options: ControllerOptions;\n private iframes: IFrames;\n private selectedChain: ChainId;\n private chains: Map<ChainId, Chain>;\n\n constructor(options: ControllerOptions) {\n super();\n\n this.selectedChain = options.defaultChainId;\n this.chains = new Map<ChainId, Chain>();\n\n this.iframes = {\n keychain: new KeychainIFrame({\n ...options,\n onClose: this.keychain?.reset,\n onConnect: (keychain) => {\n this.keychain = keychain;\n },\n }),\n };\n\n this.options = options;\n\n this.validateChains(options.chains);\n\n if (typeof window !== \"undefined\") {\n (window as any).starknet_controller = this;\n }\n }\n\n async probe(): Promise<WalletAccount | undefined> {\n try {\n await this.waitForKeychain();\n\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n const response = (await this.keychain.probe(this.rpcUrl())) as ProbeReply;\n\n // For backwards compat with controller <=0.6.0\n let rpcUrl = response?.rpcUrl || this.rpcUrl();\n this.account = new ControllerAccount(\n this,\n rpcUrl,\n response.address,\n this.keychain,\n this.options,\n this.iframes.keychain,\n );\n } catch (e) {\n console.error(e);\n return;\n }\n\n if (!this.iframes.profile) {\n const username = await this.keychain.username();\n\n this.iframes.profile = new ProfileIFrame({\n ...this.options,\n onConnect: (profile) => {\n this.profile = profile;\n },\n methods: {\n openSettings: () => this.openSettings.bind(this),\n openPurchaseCredits: () => this.openPurchaseCredits.bind(this),\n openExecute: () => this.openExecute.bind(this),\n },\n rpcUrl: this.rpcUrl(),\n username,\n version: this.version,\n });\n }\n\n return this.account;\n }\n\n async connect(): Promise<WalletAccount | undefined> {\n if (this.account) {\n return this.account;\n }\n\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n if (!!document.hasStorageAccess) {\n const ok = await document.hasStorageAccess();\n if (!ok) {\n await document.requestStorageAccess();\n }\n }\n\n this.iframes.keychain.open();\n\n try {\n let response = await this.keychain.connect(\n this.options.policies || {},\n this.rpcUrl(),\n );\n if (response.code !== ResponseCodes.SUCCESS) {\n throw new Error(response.message);\n }\n\n response = response as ConnectReply;\n this.account = new ControllerAccount(\n this,\n this.rpcUrl(),\n response.address,\n this.keychain,\n this.options,\n this.iframes.keychain,\n );\n\n return this.account;\n } catch (e) {\n console.log(e);\n } finally {\n this.iframes.keychain.close();\n }\n }\n\n async switchStarknetChain(chainId: string): Promise<boolean> {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return false;\n }\n\n try {\n this.selectedChain = chainId;\n const response = (await this.keychain.probe(this.rpcUrl())) as ProbeReply;\n\n if (response.rpcUrl === this.rpcUrl()) {\n return true;\n }\n\n await this.keychain.switchChain(this.rpcUrl());\n await this.profile?.switchChain(this.rpcUrl());\n } catch (e) {\n console.error(e);\n return false;\n }\n\n this.emitNetworkChanged(chainId);\n return true;\n }\n\n addStarknetChain(_chain: AddStarknetChainParameters): Promise<boolean> {\n return Promise.resolve(true);\n }\n\n async disconnect() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n if (!!document.hasStorageAccess) {\n const ok = await document.hasStorageAccess();\n if (!ok) {\n await document.requestStorageAccess();\n }\n }\n\n this.account = undefined;\n return this.keychain.disconnect();\n }\n\n async openProfile(tab: ProfileContextTypeVariant = \"inventory\") {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(`${this.iframes.profile.url?.pathname}/${tab}`);\n this.iframes.profile.open();\n }\n\n async openProfileTo(to: string) {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(`${this.iframes.profile.url?.pathname}/${to}`);\n this.iframes.profile.open();\n }\n\n async openProfileAt(at: string) {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(at);\n this.iframes.profile.open();\n }\n\n async openSettings() {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n if (this.iframes.profile?.sendBackward) {\n this.iframes.profile?.sendBackward();\n } else {\n this.iframes.profile?.close();\n }\n this.iframes.keychain.open();\n const res = await this.keychain.openSettings();\n this.iframes.keychain.close();\n this.iframes.profile?.sendForward?.();\n if (res && (res as ConnectError).code === ResponseCodes.NOT_CONNECTED) {\n return false;\n }\n return true;\n }\n\n revoke(origin: string, _policy: Policy[]) {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n\n return this.keychain.revoke(origin);\n }\n\n rpcUrl(): string {\n const chain = this.chains.get(this.selectedChain);\n if (!chain) {\n const availableChains = Array.from(this.chains.keys()).map((chain) =>\n shortString.decodeShortString(chain),\n );\n throw new Error(\n `Chain not found: ${shortString.decodeShortString(this.selectedChain)}. Available chains: ${availableChains.join(\", \")}`,\n );\n }\n return chain.rpcUrl;\n }\n\n username() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n return this.keychain.username();\n }\n\n openPurchaseCredits() {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n if (!this.iframes.profile) {\n console.error(\"Profile is not ready\");\n return;\n }\n this.iframes.profile.close();\n this.iframes.keychain.open();\n this.keychain.openPurchaseCredits();\n }\n\n openStarterPack() {\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.openStarterPack();\n }\n\n async openExecute(calls: any, chainId?: string) {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n if (!this.iframes.profile) {\n console.error(\"Profile is not ready\");\n return;\n }\n // Switch to the chain if provided\n let currentChainId = this.selectedChain;\n if (chainId) {\n this.switchStarknetChain(chainId);\n }\n // Switch iframes\n this.iframes.profile?.sendBackward();\n this.iframes.keychain.open();\n this.iframes.profile?.close();\n // Invoke execute\n const res = await this.keychain.execute(calls, undefined, undefined, true);\n // Switch back iframes\n this.iframes.profile?.open();\n this.iframes.keychain.close();\n this.iframes.profile?.sendForward();\n // Switch back to the original chain\n if (chainId) {\n this.switchStarknetChain(currentChainId);\n }\n return !(\n res &&\n ((res as ConnectError).code === ResponseCodes.NOT_CONNECTED ||\n (res as ConnectError).code === ResponseCodes.CANCELED)\n );\n }\n\n async delegateAccount() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n\n return await this.keychain.delegateAccount();\n }\n\n private async validateChains(chains: Chain[]) {\n for (const chain of chains) {\n try {\n const url = new URL(chain.rpcUrl);\n const chainId = await parseChainId(url);\n this.chains.set(chainId, chain);\n } catch (error) {\n console.error(`Failed to parse chainId for ${chain.rpcUrl}:`, error);\n }\n }\n\n if (!this.chains.has(this.selectedChain)) {\n console.warn(\n `Selected chain ${this.selectedChain} not found in configured chains. ` +\n `Available chains: ${Array.from(this.chains.keys()).join(\", \")}`,\n );\n }\n }\n\n private waitForKeychain({\n timeout = 50000,\n interval = 100,\n }:\n | {\n timeout?: number;\n interval?: number;\n }\n | undefined = {}) {\n return new Promise<void>((resolve, reject) => {\n const startTime = Date.now();\n const id = setInterval(() => {\n if (Date.now() - startTime > timeout) {\n clearInterval(id);\n reject(new Error(\"Timeout waiting for keychain\"));\n return;\n }\n\n if (!this.keychain) return;\n\n clearInterval(id);\n resolve();\n }, interval);\n });\n }\n}\n","import { LookupRequest, LookupResponse } from \"./types\";\nimport { num } from \"starknet\";\nimport { API_URL } from \"./constants\";\n\nconst cache = new Map<string, string>();\n\nasync function lookup(request: LookupRequest): Promise<LookupResponse> {\n if (!request.addresses?.length && !request.usernames?.length) {\n return { results: [] };\n }\n\n const response = await fetch(`${API_URL}/lookup`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(request),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n return response.json();\n}\n\nexport async function lookupUsernames(\n usernames: string[],\n): Promise<Map<string, string>> {\n const uncachedUsernames = usernames.filter((name) => !cache.has(name));\n\n if (uncachedUsernames.length > 0) {\n const response = await lookup({ usernames: uncachedUsernames });\n\n response.results.forEach((result) => {\n cache.set(result.username, result.addresses[0]); // TODO: handle multiple controller addresses\n });\n }\n\n return new Map(\n usernames\n .map((name) => [name, cache.get(name)] as [string, string])\n .filter((entry): entry is [string, string] => entry[1] !== undefined),\n );\n}\n\nexport async function lookupAddresses(\n addresses: string[],\n): Promise<Map<string, string>> {\n addresses = addresses.map(num.toHex);\n const uncachedAddresses = addresses.filter((addr) => !cache.has(addr));\n\n if (uncachedAddresses.length > 0) {\n const response = await lookup({\n addresses: uncachedAddresses,\n });\n\n response.results.forEach((result) => {\n cache.set(result.addresses[0], result.username); // TODO: handle multiple controller addresses\n });\n }\n\n return new Map(\n addresses\n .map((addr) => [addr, cache.get(addr)] as [string, string])\n .filter((entry): entry is [string, string] => entry[1] !== undefined),\n );\n}\n","// src/generated/controller-configs.ts\nvar configs = {\n \"blob-arena\": {\n origin: [\"www.blobarena.xyz\", \"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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n },\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x0170d4eb49bf626342a15cf77b0809baebee30cafbf7884b2d89bbb27e689f6d\": {\n name: \"Lobby Contract\",\n description: \"Game invites and responses\",\n methods: [\n {\n name: \"Send Invite\",\n entrypoint: \"send_invite\",\n description: \"Send users an invite\"\n },\n {\n name: \"Rescind Invite\",\n entrypoint: \"rescind_invite\",\n description: \"Rescind a previously sent invite\"\n },\n {\n name: \"Respond Invite\",\n entrypoint: \"respond_invite\",\n description: \"Respond to a received invite\"\n },\n {\n name: \"Rescind Response\",\n entrypoint: \"rescind_response\",\n description: \"Rescind a previous response to an invite\"\n },\n {\n name: \"Reject Invite\",\n entrypoint: \"reject_invite\",\n description: \"Reject a received invite\"\n },\n {\n name: \"Reject Response\",\n entrypoint: \"reject_response\",\n description: \"Reject a response to an invite\"\n },\n {\n name: \"Accept Response\",\n entrypoint: \"accept_response\",\n description: \"Accept a response to an invite\"\n }\n ]\n },\n \"0x02e4769ec3ac16456e6c6f806efc90f49d46df2a07b431a5a5d8b62e4fb21633\": {\n name: \"Game Contract\",\n description: \"Manages core gameplay interactions\",\n methods: [\n {\n name: \"Start Game\",\n entrypoint: \"start\",\n description: \"Start the game\"\n },\n {\n name: \"Commit Attack\",\n entrypoint: \"commit\",\n description: \"Commit an attack in the game\"\n },\n {\n name: \"Reveal Attack\",\n entrypoint: \"reveal\",\n description: \"Reveal the committed attack in the game\"\n },\n {\n name: \"Run Round\",\n entrypoint: \"run\",\n description: \"Run the next round of the game\"\n },\n {\n name: \"Forfeit\",\n entrypoint: \"forfeit\",\n description: \"Forfeit the game\"\n },\n {\n name: \"Kick Player\",\n entrypoint: \"kick_player\",\n description: \"Kick an inactive player from the game\"\n }\n ]\n },\n \"0x220896431692627f8d0caf9ac45e71c3b3d88c7c009acff756ff2081030a2b1\": {\n name: \"Betsy Contract\",\n description: \"Wager operations\",\n methods: [\n {\n name: \"Set Owner's Fee\",\n entrypoint: \"set_owners_fee\",\n description: \"Set the owner's fee\"\n },\n {\n name: \"Create Bet\",\n entrypoint: \"create\",\n description: \"Create a bet\"\n },\n {\n name: \"Accept Bet\",\n entrypoint: \"accept\",\n description: \"Accept a bet\"\n },\n {\n name: \"Reject Bet\",\n entrypoint: \"reject\",\n description: \"Reject a bet\"\n },\n {\n name: \"Revoke Bet\",\n entrypoint: \"revoke\",\n description: \"Revoke a bet\"\n },\n {\n name: \"Claim Win\",\n entrypoint: \"claim_win\",\n description: \"Claim the win\"\n },\n {\n name: \"Approve Release\",\n entrypoint: \"approve_release\",\n description: \"Approve fund release\"\n },\n {\n name: \"Revoke Release\",\n entrypoint: \"revoke_release\",\n description: \"Revoke fund release\"\n },\n {\n name: \"Release Funds\",\n entrypoint: \"release_funds\",\n description: \"Release funds\"\n }\n ]\n },\n \"0x56e5ae9af38c6eb85c226fbadaa31e37b5ee1a5401a9c371f4e7f154b76dce3\": {\n name: \"Arcade Contract\",\n description: \"Minting of arcade Bloberts\",\n methods: [\n {\n name: \"Mint Arcade Blobert\",\n entrypoint: \"mint\",\n description: \"Mint arcade blobert\"\n }\n ]\n },\n \"0x05a929a543e55877c58973a677fbd3b145f5057b39b87c89d879c87715878d52\": {\n name: \"AMMA Contract\",\n description: \"Minting of AMMA Bloberts\",\n methods: [\n {\n name: \"Mint AMMA Blobert\",\n entrypoint: \"mint\",\n description: \"Mint AMMA blobert\"\n }\n ]\n },\n \"0x14aefc8245c5f2c17204857372944aba413ec639547359b629682c542eca555\": {\n name: \"PVE Contract\",\n description: \"Arcade mode contract\",\n methods: [\n {\n name: \"Start Game\",\n entrypoint: \"start_game\",\n description: \"Start the game\"\n },\n {\n name: \"Attack\",\n entrypoint: \"attack\",\n description: \"Submit an attack\"\n },\n {\n name: \"Start Challenge\",\n entrypoint: \"start_challenge\",\n description: \"Start a challenge\"\n },\n {\n name: \"Next Challenge Round\",\n entrypoint: \"next_challenge_round\",\n description: \"Go forward\"\n },\n {\n name: \"Respawn Challenge\",\n entrypoint: \"respawn_challenge\",\n description: \"Restart a challenge\"\n },\n {\n name: \"End Challenge\",\n entrypoint: \"end_challenge\",\n description: \"End a challenge\"\n },\n {\n name: \"Claim Free Game\",\n entrypoint: \"claim_free_game\",\n description: \"Claim an arcade game\"\n }\n ]\n },\n \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\": {\n name: \"ETH Token\",\n description: \"ETH ERC20 approval\",\n methods: [\n {\n name: \"Approve\",\n entrypoint: \"approve\",\n description: \"ETH allowance\"\n }\n ]\n },\n \"0x072599086bffce6593a2e08169c21d23564f08be1e1d0b8e05a9768f20469a3f\": {\n name: \"LORDS Token\",\n description: \"LORDS ERC20 approval\",\n methods: [\n {\n name: \"Approve\",\n entrypoint: \"approve\",\n description: \"LORDS allowance\"\n }\n ]\n },\n \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\": {\n name: \"STRK Token\",\n description: \"STRK ERC20 approval\",\n methods: [\n {\n name: \"Approve\",\n entrypoint: \"approve\",\n description: \"STRK allowance\"\n }\n ]\n }\n }\n }\n }\n }\n },\n \"blob-arena-amma\": {\n origin: [\"www.blobarena.xyz\", \"blobarena.xyz\"],\n theme: {\n colors: {\n primary: \"#D7B000\"\n },\n cover: \"https://static.cartridge.gg/presets/blob-arena-amma/cover.png\",\n icon: \"https://static.cartridge.gg/presets/blob-arena-amma/icon.png\",\n name: \"Blob Arena AMMA\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n budokan: {\n origin: \"budokan.gg\",\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x05fb427962210ac4b3be5e23419b0d9e91ca6a9c57b0665d2ca7783092506f6e\": {\n name: \"Budokan\",\n methods: [\n {\n entrypoint: \"create_tournament\"\n },\n {\n entrypoint: \"enter_tournament\"\n },\n {\n entrypoint: \"submit_score\"\n },\n {\n entrypoint: \"claim_prize\"\n },\n {\n entrypoint: \"add_prize\"\n },\n {\n entrypoint: \"register_token\"\n }\n ]\n }\n }\n }\n }\n },\n theme: {\n colors: {\n primary: \"#B1B97A\"\n },\n cover: \"https://static.cartridge.gg/presets/budokan/cover.png\",\n icon: \"https://static.cartridge.gg/presets/budokan/icon.png\",\n name: \"Budokan\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n \"bytebeasts-tamagotchi\": {\n origin: \"bytebeasts.games\",\n theme: {\n colors: {\n primary: \"#ECECDA\"\n },\n cover: \"https://static.cartridge.gg/presets/bytebeasts-tamagotchi/cover.png\",\n icon: \"https://static.cartridge.gg/presets/bytebeasts-tamagotchi/icon.png\",\n name: \"ByteBeasts-Tamagotchi\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n light: {\n webp: {\n \"768\": \"cover-light@768.webp\",\n \"1024\": \"cover-light@1024.webp\",\n \"1440\": \"cover-light@1440.webp\"\n },\n jpg: {\n \"768\": \"cover-light@768.jpg\",\n \"1024\": \"cover-light@1024.jpg\",\n \"1440\": \"cover-light@1440.jpg\"\n },\n png: {\n \"768\": \"cover-light@768.png\",\n \"1024\": \"cover-light@1024.png\",\n \"1440\": \"cover-light@1440.png\"\n }\n },\n dark: {\n webp: {\n \"768\": \"cover-dark@768.webp\",\n \"1024\": \"cover-dark@1024.webp\",\n \"1440\": \"cover-dark@1440.webp\"\n },\n jpg: {\n \"768\": \"cover-dark@768.jpg\",\n \"1024\": \"cover-dark@1024.jpg\",\n \"1440\": \"cover-dark@1440.jpg\"\n },\n png: {\n \"768\": \"cover-dark@768.png\",\n \"1024\": \"cover-dark@1024.png\",\n \"1440\": \"cover-dark@1440.png\"\n }\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\n }\n }\n },\n coloniz: {\n origin: [\"coloniz.xyz\"],\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x430d7262fb9ad2c830d793471c3a07e08afe54f9a5f0d28db48712bc918f5f\": {\n name: \"Tokenbound Sessions\",\n methods: [\n {\n name: \"Execute\",\n entrypoint: \"execute\",\n description: \"Session proxy\"\n }\n ]\n },\n \"0x56977e22ad4751ea5b3df958da3080971c7f26036127452b98c154fbea86d06\": {\n name: \"Profile Creation\",\n methods: [\n {\n name: \"Create A Coloniz Profile\",\n entrypoint: \"create_profile\",\n description: \"Create a profile on Coloniz\"\n }\n ]\n },\n \"0x5cc4644374e3f91b52cfe64937dacaec91b2d81fe2f146a860ab5b3bb751ce8\": {\n name: \"Handles Minting\",\n methods: [\n {\n name: \"Mint Handle\",\n entrypoint: \"mint_handle\",\n description: \"Mint Coloniz Profile Handle\"\n }\n ]\n },\n \"0x79914426e3cc5336c479ee87770380ceeda4b60496657e70c3ee7d57a992226\": {\n name: \"Handle Registry\",\n methods: [\n {\n name: \"Link Handle\",\n entrypoint: \"link\",\n description: \"Link handle to Coloniz Profile\"\n }\n ]\n }\n },\n messages: [\n {\n name: \"Sign in to Coloniz\",\n description: \"Sign the message to login to Coloniz\",\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 Signin: [\n {\n name: \"content\",\n type: \"string\"\n },\n {\n name: \"nonce\",\n type: \"string\"\n },\n {\n name: \"timestamp\",\n type: \"string\"\n }\n ]\n },\n primaryType: \"Signin\",\n domain: {\n name: \"Coloniz\",\n version: \"1\",\n revision: \"1\",\n chainId: \"SN_MAIN\"\n }\n }\n ]\n }\n }\n },\n theme: {\n colors: {\n primary: \"#4285F4\"\n },\n cover: \"https://static.cartridge.gg/presets/coloniz/cover.png\",\n icon: \"https://static.cartridge.gg/presets/coloniz/icon.png\",\n name: \"Coloniz\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n credit: {\n origin: \"*\",\n theme: {\n name: \"Credit\",\n icon: \"https://static.cartridge.gg/presets/credit/icon.svg\",\n cover: \"https://static.cartridge.gg/presets/credit/cover.png\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\n }\n },\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x0320f977f47f0885e376b781d9e244d9f59f10154ce844ae1815c919f0374726\": {\n name: \"game_systems\",\n methods: [\n {\n entrypoint: \"mint\"\n },\n {\n entrypoint: \"start_game\"\n }\n ]\n },\n \"0x0062cfee20a5be4b305f610a23291aa27f3fca7a5fd14bd8e2d0389556003e12\": {\n name: \"battle_systems\",\n methods: [\n {\n entrypoint: \"battle_actions\"\n }\n ]\n },\n \"0x00ae7393b60ad9fd5c26851341b9a4afe61c6ae34326dee79cf5d096e9f55a36\": {\n name: \"draft_systems\",\n methods: [\n {\n entrypoint: \"pick_card\"\n }\n ]\n },\n \"0x07c9a684813410b39c776c49544d8ecb2d39f0b91bd83ffec31ebc938e053e25\": {\n name: \"map_systems\",\n methods: [\n {\n entrypoint: \"generate_tree\"\n },\n {\n entrypoint: \"select_node\"\n }\n ]\n }\n }\n }\n }\n }\n },\n dominion: {\n origin: \"https://dominion.fun\",\n theme: {\n colors: {\n primary: \"#19cfff\"\n },\n cover: \"https://static.cartridge.gg/presets/dominion/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dominion/icon.svg\",\n name: \"Dominion\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\n }\n }\n },\n \"dope-wars\": {\n origin: \"dopewars.game\",\n chains: {\n SN_MAIN: {\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 }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n dragark: {\n origin: \"dragark.net\",\n chains: {\n SN_MAIN: {\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: \"A method to activate the Dragark NFT into the game.\",\n entrypoint: \"activate_dragon\"\n },\n {\n name: \"Deactivate Dragon\",\n description: \"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: \"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: \"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: \"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: \"A method to end an existing treasure hunt and claim rewards.\",\n entrypoint: \"end_treasure_hunt\"\n }\n ]\n }\n }\n }\n }\n },\n theme: {\n colors: {\n primary: \"#71EB34\"\n },\n cover: \"https://static.cartridge.gg/presets/dragark/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dragark/icon.png\",\n name: \"Dragark\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n eternum: {\n origin: [\"eternum.realms.world\", \"empire.realms.world\"],\n chains: {\n SN_MAIN: {\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: \"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: \"Terminates the current game season once you've reached enough points\",\n entrypoint: \"end_game\"\n },\n {\n name: \"Set Access\",\n description: \"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: \"Verifiable Random Function contract, allows randomness in the game\",\n methods: [\n {\n name: \"Request Random\",\n description: \"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 }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n \"loot-survivor\": {\n origin: \"lootsurvivor.io\",\n chains: {\n SN_MAIN: {\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 }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n nums: {\n origin: [\"nums.gg\", \"www.nums.gg\"],\n chains: {\n SN_MAIN: {\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 }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\n }\n }\n },\n pistols: {\n origin: [\n \"pistols.underware.gg\",\n \"pistols.stage.underware.gg\",\n \"play.pistols.gg\",\n \"stage.pistols.gg\",\n \"alpha.pistols.gg\",\n \"beta.pistols.gg\",\n \"prerelease.pistols.gg\"\n ],\n theme: {\n colors: {\n primary: \"#EF9758\"\n },\n cover: \"https://static.cartridge.gg/presets/pistols/cover.png\",\n icon: \"https://static.cartridge.gg/presets/pistols/icon.png\",\n name: \"Pistols at Dawn\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n },\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x0619c7bd5d5d635e010ef3bf9a59ecc49fa055f19bb2202e530554cfda655b59\": {\n description: \"Game loop contract\",\n methods: [\n {\n entrypoint: \"commit_moves\",\n description: \"Commit moves of a Duelist in a Duel\"\n },\n {\n entrypoint: \"reveal_moves\",\n description: \"Reveal moves of a Duelist in a Duel\"\n },\n {\n entrypoint: \"clear_required_action\",\n description: \"Clear the required action call for a duelist\"\n },\n {\n entrypoint: \"collect_duel\",\n description: \"Close expired duels\"\n },\n {\n entrypoint: \"collect_season\",\n description: \"Close the current season and start the next one\"\n }\n ]\n },\n \"0x07b04bc75c3d4ba5b37d2dfc91501424dd23f517a820aee89adeeef4ececb391\": {\n description: \"Packs ERC721 contract\",\n methods: [\n {\n entrypoint: \"claim_starter_pack\",\n description: \"Claim the starter pack, mint Duelists\"\n },\n {\n entrypoint: \"purchase\",\n description: \"Purchase a closed pack\"\n },\n {\n entrypoint: \"open\",\n description: \"Open a pack, mint its contents\"\n }\n ]\n },\n \"0x00899524b10391115869ab095fe4385e17dd3dfd27b3a01bcc579ed939552e4c\": {\n description: \"Duel ERC721 contract\",\n methods: [\n {\n entrypoint: \"create_duel\",\n description: \"Create a Duel, mint its token\"\n },\n {\n entrypoint: \"reply_duel\",\n description: \"Reply to a Duel (accept or reject)\"\n }\n ]\n },\n \"0x0611b5c48d17de65d8015d48d491e0d120361a85099e28f3630600b3a91a98b0\": {\n description: \"Duelist ERC721 contract\",\n methods: [\n {\n entrypoint: \"poke\",\n description: \"Reactivates an inactive Duelist\"\n },\n {\n entrypoint: \"sacrifice\",\n description: \"Sacrifices a Duelist\"\n },\n {\n entrypoint: \"memorialize\",\n description: \"Memorializes a Duelist\"\n }\n ]\n },\n \"0x05c3c66f68bf24a4f61263d18622f97769ef62497f07a0ce9b07c7f02d6aa435\": {\n description: \"Bank contract\",\n methods: [\n {\n entrypoint: \"sponsor_duelists\",\n description: \"Sponsor duelist starter packs with $LORDS\"\n },\n {\n entrypoint: \"sponsor_season\",\n description: \"Sponsor the current season with $LORDS\"\n },\n {\n entrypoint: \"sponsor_tournament\",\n description: \"Sponsor a tournament with $LORDS\"\n }\n ]\n },\n \"0x05355768013cba6f96d985d189c0a69362d1a79a962e0d595ba7ea114ead720c\": {\n description: \"Cartridge VRF Provider\",\n methods: [\n {\n entrypoint: \"request_random\",\n description: \"Request a random number\"\n }\n ]\n }\n },\n messages: [\n {\n types: {\n StarknetDomain: [\n {\n name: \"name\",\n type: \"shortstring\"\n },\n {\n name: \"version\",\n type: \"shortstring\"\n },\n {\n name: \"chainId\",\n type: \"shortstring\"\n },\n {\n name: \"revision\",\n type: \"shortstring\"\n }\n ],\n \"pistols-PlayerOnline\": [\n {\n name: \"identity\",\n type: \"ContractAddress\"\n },\n {\n name: \"timestamp\",\n type: \"felt\"\n }\n ]\n },\n primaryType: \"pistols-PlayerOnline\",\n domain: {\n name: \"Underware_gg\",\n version: \"1.0.0\",\n chainId: \"SN_MAIN\",\n revision: \"1\"\n },\n name: \"PlayerOnline\",\n description: \"Notify the server that a player is online\"\n },\n {\n types: {\n StarknetDomain: [\n {\n name: \"name\",\n type: \"shortstring\"\n },\n {\n name: \"version\",\n type: \"shortstring\"\n },\n {\n name: \"chainId\",\n type: \"shortstring\"\n },\n {\n name: \"revision\",\n type: \"shortstring\"\n }\n ],\n \"pistols-PlayerBookmark\": [\n {\n name: \"identity\",\n type: \"ContractAddress\"\n },\n {\n name: \"target_address\",\n type: \"ContractAddress\"\n },\n {\n name: \"target_id\",\n type: \"u128\"\n },\n {\n name: \"enabled\",\n type: \"bool\"\n }\n ]\n },\n primaryType: \"pistols-PlayerBookmark\",\n domain: {\n name: \"Underware_gg\",\n version: \"1.0.0\",\n chainId: \"SN_MAIN\",\n revision: \"1\"\n },\n name: \"PlayerBookmark\",\n description: \"Notify the server that a player follows another player or token\"\n }\n ]\n }\n }\n }\n },\n pixelaw: {\n origin: \"dojo.pixelaw.xyz\",\n theme: {\n colors: {\n primary: \"#7C00B1\",\n primaryForeground: \"white\"\n },\n cover: \"https://static.cartridge.gg/presets/pixelaw/cover.png\",\n icon: \"https://static.cartridge.gg/presets/pixelaw/icon.svg\",\n name: \"Pixelaw\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n }\n};\n\n// src/generated/erc20-metadata.ts\nvar metadata = [\n {\n name: \"Wrapped BTC\",\n symbol: \"WBTC\",\n decimals: 8,\n l2_token_address: \"0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac\",\n sort_order: 0,\n total_supply: null,\n logo_url: \"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: \"0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8\",\n sort_order: 5,\n total_supply: null,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e5aaa970-a998-47e8-bd43-4a3b56b87200/logo\"\n },\n {\n name: \"LUSD Stablecoin\",\n symbol: \"LUSD\",\n decimals: 18,\n l2_token_address: \"0x070a76fd48ca0ef910631754d77dd822147fe98a569b826ec85e3c33fde586ac\",\n sort_order: 3,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/dc0ae733-5498-4afa-f475-48dba677aa00/logo\"\n },\n {\n name: \"Tether USD\",\n symbol: \"USDT\",\n decimals: 6,\n l2_token_address: \"0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8\",\n sort_order: 4,\n total_supply: null,\n logo_url: \"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: \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\",\n sort_order: 3,\n total_supply: null,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e07829b7-0382-4e03-7ecd-a478c5aa9f00/logo\"\n },\n {\n name: \"Dai Stablecoin\",\n symbol: \"DAIv0\",\n decimals: 18,\n l2_token_address: \"0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3\",\n sort_order: 4,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/919e761b-56f7-4f53-32aa-5e066f7f6200/logo\"\n },\n {\n name: \"Dai Stablecoin\",\n symbol: \"DAI\",\n decimals: 18,\n l2_token_address: \"0x05574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad\",\n sort_order: 4,\n total_supply: null,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/919e761b-56f7-4f53-32aa-5e066f7f6200/logo\"\n },\n {\n name: \"Legacy Starknet Wrapped Staked Ether\",\n symbol: \"wstETH-legacy\",\n decimals: 18,\n l2_token_address: \"0x042b8f0484674ca266ac5d08e4ac6a3fe65bd3129795def2dca5c34ecc5f96d2\",\n sort_order: 1,\n total_supply: null,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/26162dcc-29c2-4f5e-3acd-5e6be1f07a00/logo\"\n },\n {\n name: \"Wrapped Staked Ether\",\n symbol: \"wstETH\",\n decimals: 18,\n l2_token_address: \"0x0057912720381af14b0e5c87aa4718ed5e527eab60b3801ebf702ab09139e38b\",\n sort_order: 1,\n total_supply: null,\n logo_url: \"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: \"0x0319111a5037cbec2b3e638cc34a3474e2d2608299f3e62866e9cc683208c610\",\n sort_order: 1,\n total_supply: null,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/c9f2d6fe-fbc6-4384-0990-923dfcb7a200/logo\"\n },\n {\n name: \"LORDS\",\n symbol: \"LORDS\",\n decimals: 18,\n l2_token_address: \"0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49\",\n sort_order: 1,\n total_supply: 509e5,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/a3bfe959-50c4-4f89-0aef-b19207d82a00/logo\"\n },\n {\n name: \"R Stablecoin\",\n symbol: \"R\",\n decimals: 18,\n l2_token_address: \"0x01fa2fb85f624600112040e1f3a848f53a37ed5a7385810063d5fe6887280333\",\n sort_order: 3,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/77612e4e-f7ee-4dba-2066-af321843ef00/logo\"\n },\n {\n name: \"Frax\",\n symbol: \"FRAX\",\n decimals: 18,\n l2_token_address: \"0x009c6b4fb13dfaa025c1383ed6190af8ed8cbb09d9588a3bb020feb152442406\",\n sort_order: 1,\n total_supply: 649462235,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/eeaf0779-e492-474c-ef19-b27843525600/logo\"\n },\n {\n name: \"Frax Share\",\n symbol: \"FXS\",\n decimals: 18,\n l2_token_address: \"0x0058efd0e73c33a848ffaa88738d128ebf0af98ea78cf3c14dc757bb02d39ffb\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/98bea621-1e4f-4d63-9689-bdaef0d56500/logo\"\n },\n {\n name: \"Staked Frax Ether\",\n symbol: \"sfrxETH\",\n decimals: 18,\n l2_token_address: \"0x04578fffc279e61b5cb0267a5f8e24b6089d40f93158fbbad2cb23b8622c9233\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/cd6fe18a-25db-4de9-758a-daf3b364ea00/logo\"\n },\n {\n name: \"Uniswap\",\n symbol: \"UNI\",\n decimals: 18,\n l2_token_address: \"0x049210ffc442172463f3177147c1aeaa36c51d152c1b0630f2364c300d4f48ee\",\n sort_order: 1,\n total_supply: 1e9,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/361b018e-bd53-4019-27c8-7cf8d9031b00/logo\"\n },\n {\n name: \"Paper\",\n symbol: \"PAPER\",\n decimals: 18,\n l2_token_address: \"0x0410466536b5ae074f7fea81e5533b8134a9fa08b3dd077dd9db08f64997d113\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/811f019a-0461-4cff-6c1e-442102863f00/logo\"\n },\n {\n name: \"StarkPepe\",\n symbol: \"xSPEPE\",\n decimals: 18,\n l2_token_address: \"0x06f15ec4b6ff0b7f7a216c4b2ccdefc96cbf114d6242292ca82971592f62273b\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n disabled: true\n },\n {\n name: \"StarkNet Token\",\n symbol: \"STRK\",\n decimals: 18,\n l2_token_address: \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\",\n sort_order: 2,\n total_supply: 1e10,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/1b126320-367c-48ed-cf5a-ba7580e49600/logo\"\n },\n {\n name: \"zkLend Token\",\n symbol: \"ZEND\",\n decimals: 18,\n l2_token_address: \"0x00585c32b625999e6e5e78645ff8df7a9001cf5cf3eb6b80ccdd16cb64bd3a34\",\n sort_order: 1,\n total_supply: null,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/95515b0e-1230-4158-10f1-56888f613c00/logo\"\n },\n {\n name: \"Ekubo Protocol\",\n symbol: \"EKUBO\",\n decimals: 18,\n l2_token_address: \"0x075afe6402ad5a5c20dd25e10ec3b3986acaa647b77e4ae24b0cbc9a54a27a87\",\n sort_order: 1,\n total_supply: 1e7,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/634d9c36-2f0b-4781-93e6-72d701b5af00/logo\"\n },\n {\n name: \"SOCKS\",\n symbol: \"SOCKS\",\n decimals: 18,\n l2_token_address: \"0x023ed2ba4fb5709302c5dfd739fa7613359042f143286c115b6c7f7dc2601015\",\n sort_order: 1,\n total_supply: 1e11,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/2db5a2a6-c98e-4b80-35e0-31b489132100/logo\"\n },\n {\n name: \"Nostra\",\n symbol: \"NSTR\",\n decimals: 18,\n l2_token_address: \"0x00c530f2c0aa4c16a0806365b0898499fba372e5df7a7172dc6fe9ba777e8007\",\n sort_order: 1,\n total_supply: 1e8,\n logo_url: \"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: \"0x51c4b1fe3bf6774b87ad0b15ef5d1472759076e42944fff9b9f641ff13e5bbe\",\n sort_order: 1,\n total_supply: 1e8,\n logo_url: \"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: \"0x498edfaf50ca5855666a700c25dd629d577eb9afccdf3b5977aec79aee55ada\",\n sort_order: 3,\n total_supply: null,\n hidden: false,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6bd6d156-f509-4b51-5dfc-3ee566143600/logo\"\n },\n {\n name: \"Nums\",\n symbol: \"NUMS\",\n decimals: 18,\n l2_token_address: \"0xe5f10eddc01699dc899a30dbc3c9858148fa4aa0a47c0ffd85f887ffc4653e\",\n sort_order: 1,\n total_supply: 1,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/90868d05-cb75-4c42-278c-5a540db2cf00/logo\"\n },\n {\n name: \"Flip\",\n symbol: \"FLIP\",\n decimals: 18,\n l2_token_address: \"0x01bfe97d729138fc7c2d93c77d6d1d8a24708d5060608017d9b384adf38f04c7\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/275f0fa8-a691-471c-ace6-0eb0315dde00/logo\"\n },\n {\n name: \"Eternum Stone\",\n symbol: \"STONE\",\n decimals: 18,\n l2_token_address: \"0x439a1c010e3e1bb2d43d43411000893c0042bd88f6c701611a0ea914d426da4\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/932e7f83-a4c2-40f0-3048-35af3b194100/logo\"\n },\n {\n name: \"Eternum Coal\",\n symbol: \"COAL\",\n decimals: 18,\n l2_token_address: \"0xce635e3f241b0ae78c46a929d84a9101910188f9c4024eaa7559556503c31a\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/cf2ee180-06bf-4443-e3aa-724d7c28e800/logo\"\n },\n {\n name: \"Eternum Wood\",\n symbol: \"WOOD\",\n decimals: 18,\n l2_token_address: \"0x40d8907cec0f7ae9c364dfb12485a1314d84c129bf1898d2f3d4b7fcc7d44f4\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/1db5f954-c1ef-447e-9f8f-05bd9f3b2b00/logo\"\n },\n {\n name: \"Eternum Copper\",\n symbol: \"COPPER\",\n decimals: 18,\n l2_token_address: \"0x66ed5c928ee027a9419ace1cbea8389885161db5572a7c5c4fef2310e9bf494\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6bbcdcc9-6146-404d-9501-92a664cf3100/logo\"\n },\n {\n name: \"Eternum Ironwood\",\n symbol: \"IRONWOOD\",\n decimals: 18,\n l2_token_address: \"0x1720cf6318bff45e62acc588680ae3cd4d5f8465b1d52cb710533c9299b031a\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/5af7c03b-e4ae-4aee-eba4-a4e2160a1d00/logo\"\n },\n {\n name: \"Eternum Obsidian\",\n symbol: \"OBSIDIAN\",\n decimals: 18,\n l2_token_address: \"0x3b6448d09dcd023507376402686261f5d6739455fa02f804907b066e488da66\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/8be9bc66-486b-4181-6804-725a1db8ad00/logo\"\n },\n {\n name: \"Eternum Gold\",\n symbol: \"GOLD\",\n decimals: 18,\n l2_token_address: \"0xdff9dca192609c4e86ab3be22c7ec1e968876c992d21986f3c542be97fa2f\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/fb9e90f7-3c2f-4c64-7e43-c3f694f35e00/logo\"\n },\n {\n name: \"Eternum Silver\",\n symbol: \"SILVER\",\n decimals: 18,\n l2_token_address: \"0x6fe21d2d4a8a05bdb70f09c9250af9870020d5dcc35f410b4a39d6605c3e353\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e443afeb-850b-46a0-a7ba-a473306d6b00/logo\"\n },\n {\n name: \"Eternum Mithral\",\n symbol: \"MITHRAL\",\n decimals: 18,\n l2_token_address: \"0x67ba235c569c23877064b2ac6ebd4d79f32d3c00f5fab8e28a3b5700b957f6\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/33dc517f-8a66-45eb-f2c5-de5388e47500/logo\"\n },\n {\n name: \"Eternum Alchemical Silver\",\n symbol: \"ALCHEMICALSILVER\",\n decimals: 18,\n l2_token_address: \"0x3956a5301e99522038a2e7dcb9c2a89bf087ffa79310ee0a508b5538efd8ddd\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/3d2e0fd8-4af8-49a0-4bdb-691a4d6ef800/logo\"\n },\n {\n name: \"Eternum Cold Iron\",\n symbol: \"COLDIRON\",\n decimals: 18,\n l2_token_address: \"0x555d713e59d4ff96b7960447e9bc9e79bfdeab5b0eea74e3df81bce61cfbc77\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/878c0d8a-8e2c-4281-0896-9cbbb2ef9400/logo\"\n },\n {\n name: \"Eternum Deep Crystal\",\n symbol: \"DEEPCRYSTAL\",\n decimals: 18,\n l2_token_address: \"0x1d655ac834d38df7921074fc1588411e202b1af83307cbd996983aff52db3a8\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/1c2c954f-448c-476b-a4a6-19b52efe3e00/logo\"\n },\n {\n name: \"Eternum Ruby\",\n symbol: \"RUBY\",\n decimals: 18,\n l2_token_address: \"0x3d9b66720959d0e7687b898292c10e62e78626f2dba5e1909961a2ce3f86612\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6a45b34d-3bfe-4994-45b0-f2bee8abac00/logo\"\n },\n {\n name: \"Eternum Diamonds\",\n symbol: \"DIAMONDS\",\n decimals: 18,\n l2_token_address: \"0xe03ea8ae385f64754820af5c01c36abf1b8130dd6797d3fd9d430e4114e876\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/b1fa609d-8799-4754-cdea-ab69514ca700/logo\"\n },\n {\n name: \"Eternum Hartwood\",\n symbol: \"HARTWOOD\",\n decimals: 18,\n l2_token_address: \"0x5620aa7170cd66dbcbc37d03087bfe4633ffef91d3e4d97b501de906004f79b\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/27e37e85-91bd-4ee1-0552-1e0795077400/logo\"\n },\n {\n name: \"Eternum Ignium\",\n symbol: \"IGNIUM\",\n decimals: 18,\n l2_token_address: \"0x625c1f789b03ebebc7a9322366f38ebad1f693b84b2abd8cb8f5b2748b0cdd5\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/58591e20-24fb-4353-417a-81d877a5a200/logo\"\n },\n {\n name: \"Eternum Twilight Quartz\",\n symbol: \"TWILIGHTQUARTZ\",\n decimals: 18,\n l2_token_address: \"0x35e24c02409c3cfe8d5646399a62c4d102bb782938d5f5180e92c9c62d3faf7\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/2f8cb892-e82a-4af3-bd09-316061faec00/logo\"\n },\n {\n name: \"Eternum True Ice\",\n symbol: \"TRUEICE\",\n decimals: 18,\n l2_token_address: \"0x4485f5a6e16562e1c761cd348e63256d00389e3ddf4f5d98afe7ab44c57c481\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/fe4bfc17-6553-4dc5-58d2-f452b4aa8a00/logo\"\n },\n {\n name: \"Eternum Adamantine\",\n symbol: \"ADAMANTINE\",\n decimals: 18,\n l2_token_address: \"0x367f838f85a2f5e1580d6f011e4476f581083314cff8721ba3dda9706076eed\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/13bd026b-3612-480e-0119-04cf4c505a00/logo\"\n },\n {\n name: \"Eternum Sapphire\",\n symbol: \"SAPPHIRE\",\n decimals: 18,\n l2_token_address: \"0x2f8dd022568af8f9f718aa37707a9b858529db56910633a160456838b6cbcbc\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/0ebf555f-e732-4054-f8e5-55b2ed49ba00/logo\"\n },\n {\n name: \"Eternum Ethereal Silica\",\n symbol: \"ETHEREALSILICA\",\n decimals: 18,\n l2_token_address: \"0x68b6e23cbbd58a644700f55e96c83580921e9f521b6e5175396b53ba7910e7d\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/f02a5b43-bfcf-408c-7d1b-fcfe68b02d00/logo\"\n },\n {\n name: \"Eternum Dragon Hide\",\n symbol: \"DRAGONHIDE\",\n decimals: 18,\n l2_token_address: \"0x3bf856515bece3c93f5061b7941b8645f817a0acab93c758b8c7b4bc0afa3c6\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e74955fc-5c8a-4dff-4882-a49a46a5a800/logo\"\n },\n {\n name: \"Eternum Ancient Fragment\",\n symbol: \"ANCIENTFRAGMENT\",\n decimals: 18,\n l2_token_address: \"0x0695b08ecdfdd828c2e6267da62f59e6d7543e690ef56a484df25c8566b332a5\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/9af855b7-4790-4390-9466-6bed4481ab00/logo\"\n },\n {\n name: \"Eternum Donkey\",\n symbol: \"DONKEY\",\n decimals: 18,\n l2_token_address: \"0x264be95a4a2ace20add68cb321acdccd2f9f8440ee1c7abd85da44ddab01085\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/20817378-a45e-4521-f464-10f6dd13c500/logo\"\n },\n {\n name: \"Eternum Knight\",\n symbol: \"KNIGHT\",\n decimals: 18,\n l2_token_address: \"0xac965f9e67164723c16735a9da8dbc9eb8e43b1bd0323591e87c056badf606\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/8787ed1f-af5c-4873-c01a-55f05e999a00/logo\"\n },\n {\n name: \"Eternum Crossbowman\",\n symbol: \"CROSSBOWMAN\",\n decimals: 18,\n l2_token_address: \"0x67e4ac00a241be06ba6afc11fa2715ec7da0c42c05a67ef6ecfcfeda725aaa8\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/dec7f31b-4b1d-46bb-4fca-c0253cf55a00/logo\"\n },\n {\n name: \"Eternum Paladin\",\n symbol: \"PALADIN\",\n decimals: 18,\n l2_token_address: \"0x3bc86299bee061c7c8d7546ccb62b9daf9bffc653b1508facb722c6593874bc\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/7d2cd5a5-f38a-49f6-11f8-ba3b59a59e00/logo\"\n },\n {\n name: \"Eternum Wheat\",\n symbol: \"WHEAT\",\n decimals: 18,\n l2_token_address: \"0x57a3f1ee475e072ce3be41785c0e889b7295d7a0dcc22b992c5b9408dbeb280\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/c338b6a8-77c4-4dd6-34f5-1af0d3fb1e00/logo\"\n },\n {\n name: \"Eternum Fish\",\n symbol: \"FISH\",\n decimals: 18,\n l2_token_address: \"0x27719173cfe10f1aa38d2aaed0a075b6077290f1e817aa3485d2b828394f4d9\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6deef27f-df40-4248-4e1b-ed1d79a3f000/logo\"\n }\n];\n\n// src/index.ts\nvar controllerConfigs = configs;\nvar erc20Metadata = metadata;\nvar defaultTheme = configs[\"cartridge\"].theme;\nexport {\n controllerConfigs,\n defaultTheme,\n erc20Metadata\n};\n//# sourceMappingURL=index.js.map"],"names":["ControllerAccount","WalletAccount","provider","rpcUrl","address","keychain","options","modal","calls","toArray","resolve","reject","sessionExecute","ResponseCodes","manualExecute","typedData","sessionSign","manualSign","MessageType","Resolution","ErrorCode","NativeErrorName","NativeEventType","createDestructor","localName","log","callbacks","destroyed","error","callback","createLogger","debug","args","DEFAULT_PORT_BY_PROTOCOL","URL_REGEX","opaqueOriginSchemes","getOriginFromSrc","src","scheme","location","regexResult","protocol","hostname","port","portSuffix","serializeError","name","message","stack","deserializeError","obj","deserializedError","key","connectCallReceiver","info","serializedMethods","local","remote","originForSending","originForReceiving","handleMessageEvent","event","callMessage","methodName","id","createPromiseHandler","resolution","returnValue","err","errorReplyMessage","generateId","KEY_PATH_DELIMITER","keyPathToSegments","keyPath","segmentsToKeyPath","segments","createKeyPath","prefix","setAtKeyPath","subject","value","prevSubject","idx","serializeMethods","methods","flattenedMethods","deserializeMethods","connectCallSender","callSender","methodKeyPaths","destroyConnection","createMethodProxy","iframeRemoved","replyMessage","api","handleAckMessageFactory","childOrigin","destructor","destroy","onDestroy","destroyCallReceiver","receiverMethodNames","receiverMethodName","destroyCallSender","handleSynMessageFactory","synAckMessage","CHECK_IFRAME_IN_DOC_INTERVAL","monitorIframeRemoval","iframe","checkIframeInDocIntervalId","startConnectionTimeout","timeout","timeoutId","validateIframeHasSrcOrSrcDoc","connectToChild","handleSynMessage","handleAckMessage","stopConnectionTimeout","handleMessage","IFrame","url","preset","onClose","onConnect","container","_origin","observer","existingController","MetaMaskWallet","MetaMaskSDK","available","accounts","transaction","ethereum","result","data","_txn","chainId","tokenAddress","balance","PhantomWallet","response","encodedMessage","serailized_txn","txn","Transaction","_chainId","_tokenAddress","ArgentWallet","wallet","connectorData","connect","InjectedConnector","sig","WalletBridge","type","adapter","operation","errorMessage","KeychainIFrame","policies","iframeOptions","_url","KEYCHAIN_URL","walletBridge","ProfileIFrame","profileUrl","version","username","slot","namespace","tokens","_profileUrl","PROFILE_URL","contract","ControllerProvider","BaseProvider","NotReadyToConnect","profile","e","_chain","tab","to","at","res","origin","_policy","chain","availableChains","shortString","currentChainId","chains","parseChainId","interval","startTime","cache","lookup","request","API_URL","lookupUsernames","usernames","uncachedUsernames","entry","lookupAddresses","addresses","num","uncachedAddresses","addr","configs","metadata","controllerConfigs","erc20Metadata","defaultTheme"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,25]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/account.ts","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/enums.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/createDestructor.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/createLogger.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/parent/getOriginFromSrc.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/errorSerialization.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/connectCallReceiver.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/generateId.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/methodSerialization.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/connectCallSender.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/parent/handleAckMessageFactory.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/parent/handleSynMessageFactory.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/parent/monitorIframeRemoval.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/startConnectionTimeout.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/parent/validateIframeHasSrcOrSrcDoc.js","../../../node_modules/.pnpm/@cartridge+penpal@6.2.4/node_modules/@cartridge/penpal/lib/parent/connectToChild.js","../src/iframe/base.ts","../src/wallets/metamask/index.ts","../src/wallets/phantom/index.ts","../src/wallets/argent/index.ts","../src/wallets/bridge.ts","../src/iframe/keychain.ts","../src/iframe/profile.ts","../src/controller.ts","../src/lookup.ts","../../../node_modules/.pnpm/@cartridge+presets@https+++codeload.github.com+cartridge-gg+presets+tar.gz+2373780/node_modules/@cartridge/presets/dist/index.js"],"sourcesContent":["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","export var MessageType;\n(function (MessageType) {\n MessageType[\"Call\"] = \"call\";\n MessageType[\"Reply\"] = \"reply\";\n MessageType[\"Syn\"] = \"syn\";\n MessageType[\"SynAck\"] = \"synAck\";\n MessageType[\"Ack\"] = \"ack\";\n})(MessageType || (MessageType = {}));\nexport var Resolution;\n(function (Resolution) {\n Resolution[\"Fulfilled\"] = \"fulfilled\";\n Resolution[\"Rejected\"] = \"rejected\";\n})(Resolution || (Resolution = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ErrorCode[\"ConnectionDestroyed\"] = \"ConnectionDestroyed\";\n ErrorCode[\"ConnectionTimeout\"] = \"ConnectionTimeout\";\n ErrorCode[\"NoIframeSrc\"] = \"NoIframeSrc\";\n})(ErrorCode || (ErrorCode = {}));\nexport var NativeErrorName;\n(function (NativeErrorName) {\n NativeErrorName[\"DataCloneError\"] = \"DataCloneError\";\n})(NativeErrorName || (NativeErrorName = {}));\nexport var NativeEventType;\n(function (NativeEventType) {\n NativeEventType[\"Message\"] = \"message\";\n})(NativeEventType || (NativeEventType = {}));\n","export default (localName, log) => {\n const callbacks = [];\n let destroyed = false;\n return {\n destroy(error) {\n if (!destroyed) {\n destroyed = true;\n log(`${localName}: Destroying connection`);\n callbacks.forEach((callback) => {\n callback(error);\n });\n }\n },\n onDestroy(callback) {\n destroyed ? callback() : callbacks.push(callback);\n },\n };\n};\n","export default (debug) => {\n /**\n * Logs a message if debug is enabled.\n */\n return (...args) => {\n if (debug) {\n console.log('[Penpal]', ...args); // eslint-disable-line no-console\n }\n };\n};\n","const DEFAULT_PORT_BY_PROTOCOL = {\n 'http:': '80',\n 'https:': '443',\n};\nconst URL_REGEX = /^(https?:)?\\/\\/([^/:]+)?(:(\\d+))?/;\nconst opaqueOriginSchemes = ['file:', 'data:'];\n/**\n * Converts a src value into an origin.\n */\nexport default (src) => {\n if (src && opaqueOriginSchemes.find((scheme) => src.startsWith(scheme))) {\n // The origin of the child document is an opaque origin and its\n // serialization is \"null\"\n // https://html.spec.whatwg.org/multipage/origin.html#origin\n return 'null';\n }\n // Note that if src is undefined, then srcdoc is being used instead of src\n // and we can follow this same logic below to get the origin of the parent,\n // which is the origin that we will need to use.\n const location = document.location;\n const regexResult = URL_REGEX.exec(src);\n let protocol;\n let hostname;\n let port;\n if (regexResult) {\n // It's an absolute URL. Use the parsed info.\n // regexResult[1] will be undefined if the URL starts with //\n protocol = regexResult[1] ? regexResult[1] : location.protocol;\n hostname = regexResult[2];\n port = regexResult[4];\n }\n else {\n // It's a relative path. Use the current location's info.\n protocol = location.protocol;\n hostname = location.hostname;\n port = location.port;\n }\n // If the port is the default for the protocol, we don't want to add it to the origin string\n // or it won't match the message's event.origin.\n const portSuffix = port && port !== DEFAULT_PORT_BY_PROTOCOL[protocol] ? `:${port}` : '';\n return `${protocol}//${hostname}${portSuffix}`;\n};\n","/**\n * Converts an error object into a plain object.\n */\nexport const serializeError = ({ name, message, stack, }) => ({\n name,\n message,\n stack,\n});\n/**\n * Converts a plain object into an error object.\n */\nexport const deserializeError = (obj) => {\n const deserializedError = new Error();\n // @ts-ignore\n Object.keys(obj).forEach((key) => (deserializedError[key] = obj[key]));\n return deserializedError;\n};\n","import { serializeError } from './errorSerialization';\nimport { MessageType, NativeEventType, NativeErrorName, Resolution, } from './enums';\n/**\n * Listens for \"call\" messages coming from the remote, executes the corresponding method, and\n * responds with the return value.\n */\nexport default (info, serializedMethods, log) => {\n const { localName, local, remote, originForSending, originForReceiving, } = info;\n let destroyed = false;\n const handleMessageEvent = (event) => {\n if (event.source !== remote || event.data.penpal !== MessageType.Call) {\n return;\n }\n if (originForReceiving !== '*' && event.origin !== originForReceiving) {\n log(`${localName} received message from origin ${event.origin} which did not match expected origin ${originForReceiving}`);\n return;\n }\n const callMessage = event.data;\n const { methodName, args, id } = callMessage;\n log(`${localName}: Received ${methodName}() call`);\n const createPromiseHandler = (resolution) => {\n return (returnValue) => {\n log(`${localName}: Sending ${methodName}() reply`);\n if (destroyed) {\n // It's possible to throw an error here, but it would need to be thrown asynchronously\n // and would only be catchable using window.onerror. This is because the consumer\n // is merely returning a value from their method and not calling any function\n // that they could wrap in a try-catch. Even if the consumer were to catch the error,\n // the value of doing so is questionable. Instead, we'll just log a message.\n log(`${localName}: Unable to send ${methodName}() reply due to destroyed connection`);\n return;\n }\n const message = {\n penpal: MessageType.Reply,\n id,\n resolution,\n returnValue,\n };\n if (resolution === Resolution.Rejected &&\n returnValue instanceof Error) {\n message.returnValue = serializeError(returnValue);\n message.returnValueIsError = true;\n }\n try {\n remote.postMessage(message, originForSending);\n }\n catch (err) {\n // If a consumer attempts to send an object that's not cloneable (e.g., window),\n // we want to ensure the receiver's promise gets rejected.\n if (err.name === NativeErrorName.DataCloneError) {\n const errorReplyMessage = {\n penpal: MessageType.Reply,\n id,\n resolution: Resolution.Rejected,\n returnValue: serializeError(err),\n returnValueIsError: true,\n };\n remote.postMessage(errorReplyMessage, originForSending);\n }\n throw err;\n }\n };\n };\n new Promise((resolve) => resolve(serializedMethods[methodName]\n .call(serializedMethods, event.origin)\n .apply(serializedMethods, args))).then(createPromiseHandler(Resolution.Fulfilled), createPromiseHandler(Resolution.Rejected));\n };\n local.addEventListener(NativeEventType.Message, handleMessageEvent);\n return () => {\n destroyed = true;\n local.removeEventListener(NativeEventType.Message, handleMessageEvent);\n };\n};\n","let id = 0;\n/**\n * @return {number} A unique ID (not universally unique)\n */\nexport default () => ++id;\n","const KEY_PATH_DELIMITER = '.';\nconst keyPathToSegments = (keyPath) => keyPath ? keyPath.split(KEY_PATH_DELIMITER) : [];\nconst segmentsToKeyPath = (segments) => segments.join(KEY_PATH_DELIMITER);\nconst createKeyPath = (key, prefix) => {\n const segments = keyPathToSegments(prefix || '');\n segments.push(key);\n return segmentsToKeyPath(segments);\n};\n/**\n * Given a `keyPath`, set it to be `value` on `subject`, creating any intermediate\n * objects along the way.\n *\n * @param {Object} subject The object on which to set value.\n * @param {string} keyPath The key path at which to set value.\n * @param {Object} value The value to store at the given key path.\n * @returns {Object} Updated subject.\n */\nexport const setAtKeyPath = (subject, keyPath, value) => {\n const segments = keyPathToSegments(keyPath);\n segments.reduce((prevSubject, key, idx) => {\n if (typeof prevSubject[key] === 'undefined') {\n prevSubject[key] = {};\n }\n if (idx === segments.length - 1) {\n prevSubject[key] = value;\n }\n return prevSubject[key];\n }, subject);\n return subject;\n};\n/**\n * Given a dictionary of (nested) keys to function, flatten them to a map\n * from key path to function.\n *\n * @param {Object} methods The (potentially nested) object to serialize.\n * @param {string} prefix A string with which to prefix entries. Typically not intended to be used by consumers.\n * @returns {Object} An map from key path in `methods` to functions.\n */\nexport const serializeMethods = (methods, prefix) => {\n const flattenedMethods = {};\n Object.keys(methods).forEach((key) => {\n const value = methods[key];\n const keyPath = createKeyPath(key, prefix);\n if (typeof value === 'object') {\n // Recurse into any nested children.\n Object.assign(flattenedMethods, serializeMethods(value, keyPath));\n }\n if (typeof value === 'function') {\n // If we've found a method, expose it.\n flattenedMethods[keyPath] = value;\n }\n });\n return flattenedMethods;\n};\n/**\n * Given a map of key paths to functions, unpack the key paths to an object.\n *\n * @param {Object} flattenedMethods A map of key paths to functions to unpack.\n * @returns {Object} A (potentially nested) map of functions.\n */\nexport const deserializeMethods = (flattenedMethods) => {\n const methods = {};\n for (const keyPath in flattenedMethods) {\n setAtKeyPath(methods, keyPath, flattenedMethods[keyPath]);\n }\n return methods;\n};\n","import generateId from './generateId';\nimport { deserializeError } from './errorSerialization';\nimport { deserializeMethods } from './methodSerialization';\nimport { ErrorCode, MessageType, NativeEventType, Resolution } from './enums';\n/**\n * Augments an object with methods that match those defined by the remote. When these methods are\n * called, a \"call\" message will be sent to the remote, the remote's corresponding method will be\n * executed, and the method's return value will be returned via a message.\n * @param {Object} callSender Sender object that should be augmented with methods.\n * @param {Object} info Information about the local and remote windows.\n * @param {Array} methodKeyPaths Key paths of methods available to be called on the remote.\n * @param {Promise} destructionPromise A promise resolved when destroy() is called on the penpal\n * connection.\n * @returns {Object} The call sender object with methods that may be called.\n */\nexport default (callSender, info, methodKeyPaths, destroyConnection, log) => {\n const { localName, local, remote, originForSending, originForReceiving, } = info;\n let destroyed = false;\n log(`${localName}: Connecting call sender`);\n const createMethodProxy = (methodName) => {\n return (...args) => {\n log(`${localName}: Sending ${methodName}() call`);\n // This handles the case where the iframe has been removed from the DOM\n // (and therefore its window closed), the consumer has not yet\n // called destroy(), and the user calls a method exposed by\n // the remote. We detect the iframe has been removed and force\n // a destroy() immediately so that the consumer sees the error saying\n // the connection has been destroyed. We wrap this check in a try catch\n // because Edge throws an \"Object expected\" error when accessing\n // contentWindow.closed on a contentWindow from an iframe that's been\n // removed from the DOM.\n let iframeRemoved;\n try {\n if (remote.closed) {\n iframeRemoved = true;\n }\n }\n catch (e) {\n iframeRemoved = true;\n }\n if (iframeRemoved) {\n destroyConnection();\n }\n if (destroyed) {\n const error = new Error(`Unable to send ${methodName}() call due ` + `to destroyed connection`);\n error.code = ErrorCode.ConnectionDestroyed;\n throw error;\n }\n return new Promise((resolve, reject) => {\n const id = generateId();\n const handleMessageEvent = (event) => {\n if (event.source !== remote ||\n event.data.penpal !== MessageType.Reply ||\n event.data.id !== id) {\n return;\n }\n if (originForReceiving !== '*' &&\n event.origin !== originForReceiving) {\n log(`${localName} received message from origin ${event.origin} which did not match expected origin ${originForReceiving}`);\n return;\n }\n const replyMessage = event.data;\n log(`${localName}: Received ${methodName}() reply`);\n local.removeEventListener(NativeEventType.Message, handleMessageEvent);\n let returnValue = replyMessage.returnValue;\n if (replyMessage.returnValueIsError) {\n returnValue = deserializeError(returnValue);\n }\n (replyMessage.resolution === Resolution.Fulfilled ? resolve : reject)(returnValue);\n };\n local.addEventListener(NativeEventType.Message, handleMessageEvent);\n const callMessage = {\n penpal: MessageType.Call,\n id,\n methodName,\n args,\n };\n remote.postMessage(callMessage, originForSending);\n });\n };\n };\n // Wrap each method in a proxy which sends it to the corresponding receiver.\n const flattenedMethods = methodKeyPaths.reduce((api, name) => {\n api[name] = createMethodProxy(name);\n return api;\n }, {});\n // Unpack the structure of the provided methods object onto the CallSender, exposing\n // the methods in the same shape they were provided.\n Object.assign(callSender, deserializeMethods(flattenedMethods));\n return () => {\n destroyed = true;\n };\n};\n","import connectCallReceiver from '../connectCallReceiver';\nimport connectCallSender from '../connectCallSender';\n/**\n * Handles an ACK handshake message.\n */\nexport default (serializedMethods, childOrigin, originForSending, destructor, log) => {\n const { destroy, onDestroy } = destructor;\n let destroyCallReceiver;\n let receiverMethodNames;\n // We resolve the promise with the call sender. If the child reconnects\n // (for example, after refreshing or navigating to another page that\n // uses Penpal, we'll update the call sender with methods that match the\n // latest provided by the child.\n const callSender = {};\n return (event) => {\n if (childOrigin !== '*' && event.origin !== childOrigin) {\n log(`Parent: Handshake - Received ACK message from origin ${event.origin} which did not match expected origin ${childOrigin}`);\n return;\n }\n log('Parent: Handshake - Received ACK');\n const info = {\n localName: 'Parent',\n local: window,\n remote: event.source,\n originForSending: originForSending,\n originForReceiving: childOrigin,\n };\n // If the child reconnected, we need to destroy the prior call receiver\n // before setting up a new one.\n if (destroyCallReceiver) {\n destroyCallReceiver();\n }\n destroyCallReceiver = connectCallReceiver(info, serializedMethods, log);\n onDestroy(destroyCallReceiver);\n // If the child reconnected, we need to remove the methods from the\n // previous call receiver off the sender.\n if (receiverMethodNames) {\n receiverMethodNames.forEach((receiverMethodName) => {\n delete callSender[receiverMethodName];\n });\n }\n receiverMethodNames = event.data.methodNames;\n const destroyCallSender = connectCallSender(callSender, info, receiverMethodNames, destroy, log);\n onDestroy(destroyCallSender);\n return callSender;\n };\n};\n","import { MessageType } from '../enums';\n/**\n * Handles a SYN handshake message.\n */\nexport default (log, serializedMethods, childOrigin, originForSending) => {\n return (event) => {\n // Under specific timing circumstances, we can receive an event\n // whose source is null. This seems to happen when the child iframe is\n // removed from the DOM about the same time it has sent the SYN event.\n // https://github.com/Aaronius/penpal/issues/85\n if (!event.source) {\n return;\n }\n if (childOrigin !== '*' && event.origin !== childOrigin) {\n log(`Parent: Handshake - Received SYN message from origin ${event.origin} which did not match expected origin ${childOrigin}`);\n return;\n }\n log('Parent: Handshake - Received SYN, responding with SYN-ACK');\n const synAckMessage = {\n penpal: MessageType.SynAck,\n methodNames: Object.keys(serializedMethods),\n };\n event.source.postMessage(synAckMessage, originForSending);\n };\n};\n","const CHECK_IFRAME_IN_DOC_INTERVAL = 60000;\n/**\n * Monitors for iframe removal and destroys connection if iframe\n * is found to have been removed from DOM. This is to prevent memory\n * leaks when the iframe is removed from the document and the consumer\n * hasn't called destroy(). Without this, event listeners attached to\n * the window would stick around and since the event handlers have a\n * reference to the iframe in their closures, the iframe would stick\n * around too.\n */\nexport default (iframe, destructor) => {\n const { destroy, onDestroy } = destructor;\n const checkIframeInDocIntervalId = setInterval(() => {\n if (!iframe.isConnected) {\n clearInterval(checkIframeInDocIntervalId);\n destroy();\n }\n }, CHECK_IFRAME_IN_DOC_INTERVAL);\n onDestroy(() => {\n clearInterval(checkIframeInDocIntervalId);\n });\n};\n","import { ErrorCode } from './enums';\n/**\n * Starts a timeout and calls the callback with an error\n * if the timeout completes before the stop function is called.\n */\nexport default (timeout, callback) => {\n let timeoutId;\n if (timeout !== undefined) {\n timeoutId = window.setTimeout(() => {\n const error = new Error(`Connection timed out after ${timeout}ms`);\n error.code = ErrorCode.ConnectionTimeout;\n callback(error);\n }, timeout);\n }\n return () => {\n clearTimeout(timeoutId);\n };\n};\n","import { ErrorCode } from '../enums';\nexport default (iframe) => {\n if (!iframe.src && !iframe.srcdoc) {\n const error = new Error('Iframe must have src or srcdoc property defined.');\n error.code = ErrorCode.NoIframeSrc;\n throw error;\n }\n};\n","import { MessageType, NativeEventType } from '../enums';\nimport createDestructor from '../createDestructor';\nimport createLogger from '../createLogger';\nimport getOriginFromSrc from './getOriginFromSrc';\nimport handleAckMessageFactory from './handleAckMessageFactory';\nimport handleSynMessageFactory from './handleSynMessageFactory';\nimport { serializeMethods } from '../methodSerialization';\nimport monitorIframeRemoval from './monitorIframeRemoval';\nimport startConnectionTimeout from '../startConnectionTimeout';\nimport validateIframeHasSrcOrSrcDoc from './validateIframeHasSrcOrSrcDoc';\n/**\n * Attempts to establish communication with an iframe.\n */\nexport default (options) => {\n let { iframe, methods = {}, childOrigin, timeout, debug = false } = options;\n const log = createLogger(debug);\n const destructor = createDestructor('Parent', log);\n const { onDestroy, destroy } = destructor;\n if (!childOrigin) {\n validateIframeHasSrcOrSrcDoc(iframe);\n childOrigin = getOriginFromSrc(iframe.src);\n }\n // If event.origin is \"null\", the remote protocol is file: or data: and we\n // must post messages with \"*\" as targetOrigin when sending messages.\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage#Using_window.postMessage_in_extensions\n const originForSending = childOrigin === 'null' ? '*' : childOrigin;\n const serializedMethods = serializeMethods(methods);\n const handleSynMessage = handleSynMessageFactory(log, serializedMethods, childOrigin, originForSending);\n const handleAckMessage = handleAckMessageFactory(serializedMethods, childOrigin, originForSending, destructor, log);\n const promise = new Promise((resolve, reject) => {\n const stopConnectionTimeout = startConnectionTimeout(timeout, destroy);\n const handleMessage = (event) => {\n if (event.source !== iframe.contentWindow || !event.data) {\n return;\n }\n if (event.data.penpal === MessageType.Syn) {\n handleSynMessage(event);\n return;\n }\n if (event.data.penpal === MessageType.Ack) {\n const callSender = handleAckMessage(event);\n if (callSender) {\n stopConnectionTimeout();\n resolve(callSender);\n }\n return;\n }\n };\n window.addEventListener(NativeEventType.Message, handleMessage);\n log('Parent: Awaiting handshake');\n monitorIframeRemoval(iframe, destructor);\n onDestroy((error) => {\n window.removeEventListener(NativeEventType.Message, handleMessage);\n if (error) {\n reject(error);\n }\n });\n });\n return {\n promise,\n destroy() {\n // Don't allow consumer to pass an error into destroy.\n destroy();\n },\n };\n};\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: {\n close: (_origin: string) => () => this.close(),\n closeAll: (_origin: string) => () => {\n // Close all iframes\n const iframes = document.querySelectorAll(\n 'iframe[id^=\"controller-\"]',\n );\n iframes.forEach((iframe) => {\n const container = iframe.parentElement;\n if (container) {\n container.style.visibility = \"hidden\";\n container.style.opacity = \"0\";\n }\n });\n document.body.style.overflow = \"auto\";\n },\n reload: (_origin: string) => () => window.location.reload(),\n ...methods,\n },\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","import {\n WalletAdapter,\n ExternalWallet,\n ExternalWalletResponse,\n ExternalWalletType,\n ExternalPlatform,\n} from \"../types\";\nimport { MetaMaskSDK } from \"@metamask/sdk\";\n\nexport class MetaMaskWallet implements WalletAdapter {\n readonly type: ExternalWalletType = \"metamask\";\n readonly platform: ExternalPlatform = \"ethereum\";\n private MMSDK: MetaMaskSDK;\n private account: string | undefined = undefined;\n\n constructor() {\n this.MMSDK = new MetaMaskSDK({\n dappMetadata: {\n name: \"Cartridge Controller\",\n url: window.location.href,\n },\n });\n }\n\n isAvailable(): boolean {\n return typeof window !== \"undefined\" && !!window.ethereum?.isMetaMask;\n }\n\n getInfo(): ExternalWallet {\n const available = this.isAvailable();\n\n return {\n type: this.type,\n available,\n version: available ? window.ethereum?.version || \"Unknown\" : undefined,\n chainId: available ? window.ethereum?.chainId : undefined,\n name: \"MetaMask\",\n platform: this.platform,\n };\n }\n\n async connect(): Promise<ExternalWalletResponse<any>> {\n if (this.account) {\n return { success: true, wallet: this.type, account: this.account };\n }\n\n try {\n if (!this.isAvailable()) {\n throw new Error(\"MetaMask is not available\");\n }\n\n const accounts = await this.MMSDK.connect();\n if (accounts && accounts.length > 0) {\n this.account = accounts[0];\n return { success: true, wallet: this.type, account: this.account };\n }\n\n throw new Error(\"No accounts found\");\n } catch (error) {\n console.error(`Error connecting to MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signTransaction(\n transaction: any,\n ): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const ethereum = this.MMSDK.getProvider();\n if (!ethereum) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const result = await ethereum.request({\n method: \"eth_sendTransaction\",\n params: [transaction],\n });\n\n return { success: true, wallet: this.type, result };\n } catch (error) {\n console.error(`Error signing transaction with MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signMessage(message: string): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const result = await this.MMSDK.connectAndSign({\n msg: message,\n });\n\n return { success: true, wallet: this.type, result };\n } catch (error) {\n console.error(`Error signing message with MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signTypedData(data: any): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const ethereum = this.MMSDK.getProvider();\n if (!ethereum) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const result = await ethereum.request({\n method: \"eth_signTypedData_v4\",\n params: [this.account, JSON.stringify(data)],\n });\n\n return { success: true, wallet: this.type, result };\n } catch (error) {\n console.error(`Error signing typed data with MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async sendTransaction(_txn: any): Promise<ExternalWalletResponse<any>> {\n return {\n success: false,\n wallet: this.type,\n error: \"Not implemented\",\n };\n }\n\n async switchChain(chainId: string): Promise<boolean> {\n try {\n if (!this.isAvailable()) {\n throw new Error(\"MetaMask is not available\");\n }\n\n const ethereum = this.MMSDK.getProvider();\n if (!ethereum) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n try {\n await ethereum.request({\n method: \"wallet_switchEthereumChain\",\n params: [{ chainId }],\n });\n return true;\n } catch (error) {\n if ((error as any).code === 4902) {\n console.warn(\"Chain not added to MetaMask\");\n }\n throw error;\n }\n } catch (error) {\n console.error(`Error switching chain for MetaMask:`, error);\n return false;\n }\n }\n\n async getBalance(\n tokenAddress?: string,\n ): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n if (tokenAddress) {\n return {\n success: false,\n wallet: this.type,\n error: \"Not implemented for ERC20\",\n };\n } else {\n const ethereum = this.MMSDK.getProvider();\n if (!ethereum) {\n throw new Error(\"MetaMask is not connected\");\n }\n\n const balance = await ethereum.request({\n method: \"eth_getBalance\",\n params: [this.account, \"latest\"],\n });\n return { success: true, wallet: this.type, result: balance };\n }\n } catch (error) {\n console.error(`Error getting balance from MetaMask:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n}\n","import { PublicKey, Transaction, VersionedTransaction } from \"@solana/web3.js\";\nimport {\n WalletAdapter,\n ExternalWallet,\n ExternalWalletResponse,\n ExternalWalletType,\n ExternalPlatform,\n} from \"../types\";\n\ninterface PhantomProvider {\n isPhantom: boolean;\n publicKey: PublicKey | null;\n isConnected: boolean;\n connect(opts?: { onlyIfTrusted: boolean }): Promise<{ publicKey: PublicKey }>;\n disconnect(): Promise<void>;\n signTransaction(\n transaction: Transaction | VersionedTransaction,\n ): Promise<Transaction | VersionedTransaction>;\n signAllTransactions(\n transactions: (Transaction | VersionedTransaction)[],\n ): Promise<(Transaction | VersionedTransaction)[]>;\n signAndSendTransaction(\n transaction: Transaction | VersionedTransaction,\n opts?: { skipPreflight?: boolean; maxRetries?: number },\n ): Promise<{ signature: string }>;\n signMessage(\n message: Uint8Array,\n display?: \"utf8\" | \"hex\",\n ): Promise<{ signature: Uint8Array }>;\n on(\n event: \"connect\" | \"disconnect\" | \"accountChanged\",\n handler: (args: unknown) => void,\n ): void;\n request(args: { method: string; params?: unknown }): Promise<unknown>;\n}\n\nexport class PhantomWallet implements WalletAdapter {\n readonly type: ExternalWalletType = \"phantom\";\n readonly platform: ExternalPlatform = \"solana\";\n private account: string | undefined = undefined;\n\n private getProvider(): PhantomProvider {\n if (typeof window === \"undefined\") {\n throw new Error(\"Not ready\");\n }\n\n const provider = window.solana;\n\n if (!provider?.isPhantom) {\n throw new Error(\"Phantom is not available\");\n }\n\n return provider;\n }\n\n isAvailable(): boolean {\n return typeof window !== \"undefined\" && !!window.solana?.isPhantom;\n }\n\n getInfo(): ExternalWallet {\n const available = this.isAvailable();\n\n return {\n type: this.type,\n available,\n version: \"Unknown\",\n name: \"Phantom\",\n platform: this.platform,\n };\n }\n\n async connect(): Promise<ExternalWalletResponse<any>> {\n if (this.account) {\n return { success: true, wallet: this.type, account: this.account };\n }\n\n try {\n if (!this.isAvailable()) {\n throw new Error(\"Phantom is not available\");\n }\n\n const response = await this.getProvider().connect();\n if (response.publicKey) {\n this.account = response.publicKey.toString();\n return { success: true, wallet: this.type, account: this.account };\n }\n\n throw new Error(\"No accounts found\");\n } catch (error) {\n console.error(`Error connecting to Phantom:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signMessage(message: string): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"Phantom is not connected\");\n }\n\n const encodedMessage = new TextEncoder().encode(message);\n const result = await this.getProvider().signMessage(\n encodedMessage,\n \"utf8\",\n );\n return { success: true, wallet: this.type, result };\n } catch (error) {\n console.error(`Error signing message with Phantom:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async sendTransaction(\n serailized_txn: string,\n ): Promise<ExternalWalletResponse<any>> {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"Phantom is not connected\");\n }\n\n try {\n const txn = Transaction.from(Buffer.from(serailized_txn, \"base64\"));\n const provider = this.getProvider();\n const result = await provider.signAndSendTransaction(txn);\n return {\n success: true,\n wallet: this.type,\n result,\n };\n } catch (error) {\n console.error(`Error sending transaction with Phantom:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async switchChain(_chainId: string): Promise<boolean> {\n console.warn(\"Chain switching not supported for Phantom\");\n return false;\n }\n\n async getBalance(\n _tokenAddress?: string,\n ): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.account) {\n throw new Error(\"Phantom is not connected\");\n }\n\n // TODO: Implement balance fetching based on Phantom's API\n return {\n success: true,\n wallet: this.type,\n result: \"Implement based on Phantom API\",\n };\n } catch (error) {\n console.error(`Error getting balance from Phantom:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n}\n","import {\n WalletAdapter,\n ExternalWallet,\n ExternalWalletResponse,\n ExternalWalletType,\n ExternalPlatform,\n} from \"../types\";\nimport { connect, StarknetWindowObject } from \"starknetkit\";\nimport { InjectedConnector } from \"starknetkit/injected\";\nimport { TypedData } from \"@starknet-io/types-js\";\n\nexport class ArgentWallet implements WalletAdapter {\n readonly type: ExternalWalletType = \"argent\";\n readonly platform: ExternalPlatform = \"starknet\";\n private wallet: StarknetWindowObject | undefined = undefined;\n private account: string | undefined = undefined;\n\n isAvailable(): boolean {\n return typeof window !== \"undefined\" && !!window.starknet_argentX;\n }\n\n getInfo(): ExternalWallet {\n const available = this.isAvailable();\n\n return {\n type: this.type,\n available,\n version: available\n ? window.starknet_argentX?.version || \"Unknown\"\n : undefined,\n chainId: available ? window.starknet_argentX?.chainId : undefined,\n name: \"Argent\",\n platform: this.platform,\n };\n }\n\n async connect(): Promise<ExternalWalletResponse<any>> {\n if (this.account) {\n return { success: true, wallet: this.type, account: this.account };\n }\n\n try {\n if (!this.isAvailable()) {\n throw new Error(\"Argent is not available\");\n }\n\n const { wallet, connectorData } = await connect({\n connectors: [new InjectedConnector({ options: { id: \"argentX\" } })],\n });\n\n if (!wallet) {\n throw new Error(\"No wallet found\");\n }\n\n this.wallet = wallet;\n this.account = connectorData?.account;\n return { success: true, wallet: this.type, account: this.account };\n } catch (error) {\n console.error(`Error connecting to Argent:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async signTypedData(data: TypedData): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.wallet) {\n throw new Error(\"Argent is not connected\");\n }\n\n const sig = await this.wallet.request({\n type: \"wallet_signTypedData\",\n params: data,\n });\n\n return { success: true, wallet: this.type, result: sig };\n } catch (error) {\n console.error(`Error signing typed data with Argent:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n\n async sendTransaction(_txn: any): Promise<ExternalWalletResponse<any>> {\n return {\n success: false,\n wallet: this.type,\n error: \"Not implemented\",\n };\n }\n\n async switchChain(_chainId: string): Promise<boolean> {\n console.warn(\n \"Chain switching for Argent may require custom implementation\",\n );\n return false;\n }\n\n async getBalance(\n _tokenAddress?: string,\n ): Promise<ExternalWalletResponse<any>> {\n try {\n if (!this.isAvailable() || !this.wallet) {\n throw new Error(\"Argent is not connected\");\n }\n\n // TODO: Implement balance fetching based on Argent's API\n return {\n success: true,\n wallet: this.type,\n result: \"Implement based on Argent API\",\n };\n } catch (error) {\n console.error(`Error getting balance from Argent:`, error);\n return {\n success: false,\n wallet: this.type,\n error: (error as Error).message || \"Unknown error\",\n };\n }\n }\n}\n","import {\n ExternalWalletType,\n WalletAdapter,\n ExternalWallet,\n ExternalWalletResponse,\n} from \"./types\";\nimport { MetaMaskWallet } from \"./metamask\";\nimport { PhantomWallet } from \"./phantom\";\nimport { ArgentWallet } from \"./argent\";\n\nexport class WalletBridge {\n private readonly walletAdapters: Map<ExternalWalletType, WalletAdapter>;\n private readonly connectedWallets: Map<ExternalWalletType, WalletAdapter> =\n new Map();\n\n constructor() {\n this.walletAdapters = new Map<ExternalWalletType, WalletAdapter>();\n this.walletAdapters.set(\"metamask\", new MetaMaskWallet());\n this.walletAdapters.set(\"phantom\", new PhantomWallet());\n this.walletAdapters.set(\"argent\", new ArgentWallet());\n\n if (typeof window !== \"undefined\") {\n window.wallet_bridge = this;\n }\n }\n\n getIFrameMethods() {\n return {\n externalDetectWallets: (_origin: string) => () => this.detectWallets(),\n externalConnectWallet: (_origin: string) => (type: ExternalWalletType) =>\n this.connectWallet(type),\n externalSignMessage:\n (_origin: string) => (type: ExternalWalletType, message: string) =>\n this.signMessage(type, message),\n externalSignTypedData:\n (_origin: string) => (type: ExternalWalletType, data: any) =>\n this.signTypedData(type, data),\n externalSendTransaction:\n (_origin: string) => (type: ExternalWalletType, txn: any) =>\n this.sendTransaction(type, txn),\n externalGetBalance:\n (_origin: string) =>\n (type: ExternalWalletType, tokenAddress?: string) =>\n this.getBalance(type, tokenAddress),\n };\n }\n\n async detectWallets(): Promise<ExternalWallet[]> {\n const wallets = Array.from(this.walletAdapters.values()).map((adapter) =>\n adapter.getInfo(),\n ) as ExternalWallet[];\n\n return wallets;\n }\n\n private getWalletAdapter(type: ExternalWalletType): WalletAdapter {\n const adapter = this.walletAdapters.get(type);\n if (!adapter) {\n throw new Error(`Unsupported wallet type: ${type}`);\n }\n return adapter;\n }\n\n private handleError(\n type: ExternalWalletType,\n error: unknown,\n operation: string,\n ): ExternalWalletResponse {\n const errorMessage =\n error instanceof Error ? error.message : \"Unknown error\";\n console.error(`Error ${operation} with ${type} wallet:`, error);\n return { success: false, wallet: type, error: errorMessage };\n }\n\n async connectWallet(\n type: ExternalWalletType,\n ): Promise<ExternalWalletResponse> {\n try {\n const wallet = this.getWalletAdapter(type);\n const response = await wallet.connect();\n\n if (response.success) {\n this.connectedWallets.set(type, wallet);\n }\n\n return response;\n } catch (error) {\n return this.handleError(type, error, \"connecting to\");\n }\n }\n\n async signMessage(\n type: ExternalWalletType,\n message: string,\n ): Promise<ExternalWalletResponse> {\n try {\n if (!this.connectedWallets.has(type)) {\n throw new Error(`Wallet ${type} is not connected`);\n }\n\n const wallet = this.connectedWallets.get(type)!;\n if (!wallet.signMessage) {\n throw new Error(`Wallet ${type} does not support signing messages`);\n }\n\n return await wallet.signMessage(message);\n } catch (error) {\n return this.handleError(type, error, \"signing message with\");\n }\n }\n\n async signTypedData(\n type: ExternalWalletType,\n data: any,\n ): Promise<ExternalWalletResponse> {\n try {\n if (!this.connectedWallets.has(type)) {\n throw new Error(`Wallet ${type} is not connected`);\n }\n\n const wallet = this.connectedWallets.get(type)!;\n if (!wallet.signTypedData) {\n throw new Error(`Wallet ${type} does not support signing typed data`);\n }\n\n return await wallet.signTypedData(data);\n } catch (error) {\n return this.handleError(type, error, \"signing typed data with\");\n }\n }\n\n async sendTransaction(\n type: ExternalWalletType,\n txn: any,\n ): Promise<ExternalWalletResponse> {\n try {\n if (!this.connectedWallets.has(type)) {\n throw new Error(`Wallet ${type} is not connected`);\n }\n\n const wallet = this.connectedWallets.get(type)!;\n return await wallet.sendTransaction(txn);\n } catch (error) {\n return this.handleError(type, error, \"sending transaction with\");\n }\n }\n\n async getBalance(\n type: ExternalWalletType,\n tokenAddress?: string,\n ): Promise<ExternalWalletResponse> {\n try {\n if (!this.connectedWallets.has(type)) {\n throw new Error(`Wallet ${type} is not connected`);\n }\n\n const wallet = this.connectedWallets.get(type)!;\n return await wallet.getBalance(tokenAddress);\n } catch (error) {\n return this.handleError(type, error, \"getting balance from\");\n }\n }\n}\n\ndeclare global {\n interface Window {\n ethereum?: any;\n solana?: any;\n starknet_argentX?: any;\n wallet_bridge?: WalletBridge;\n }\n}\n\nexport type {\n ExternalWalletType,\n ExternalWallet,\n ExternalWalletResponse,\n WalletAdapter,\n} from \"./types\";\n","import { KEYCHAIN_URL } from \"../constants\";\nimport { Keychain, KeychainOptions } from \"../types\";\nimport { WalletBridge } from \"../wallets/bridge\";\nimport { IFrame, IFrameOptions } from \"./base\";\n\ntype KeychainIframeOptions = IFrameOptions<Keychain> & KeychainOptions;\n\nexport class KeychainIFrame extends IFrame<Keychain> {\n private walletBridge: WalletBridge;\n\n constructor({ url, policies, ...iframeOptions }: KeychainIframeOptions) {\n const _url = new URL(url ?? KEYCHAIN_URL);\n const walletBridge = new WalletBridge();\n\n if (policies) {\n _url.searchParams.set(\n \"policies\",\n encodeURIComponent(JSON.stringify(policies)),\n );\n }\n\n super({\n ...iframeOptions,\n id: \"controller-keychain\",\n url: _url,\n methods: walletBridge.getIFrameMethods(),\n });\n\n this.walletBridge = walletBridge;\n }\n\n getWalletBridge(): WalletBridge {\n return this.walletBridge;\n }\n}\n","import { PROFILE_URL } from \"../constants\";\nimport { Profile, ProfileOptions } from \"../types\";\nimport { IFrame, IFrameOptions } from \"./base\";\n\nexport type ProfileIFrameOptions = IFrameOptions<Profile> &\n ProfileOptions & {\n rpcUrl: string;\n version?: string;\n username: string;\n slot?: string;\n namespace?: string;\n };\n\nexport class ProfileIFrame extends IFrame<Profile> {\n constructor({\n profileUrl,\n rpcUrl,\n version,\n username,\n slot,\n namespace,\n tokens,\n policies,\n ...iframeOptions\n }: ProfileIFrameOptions) {\n const _profileUrl = (profileUrl || PROFILE_URL).replace(/\\/$/, \"\");\n let _url = new URL(\n slot\n ? `${_profileUrl}/account/${username}/slot/${slot}`\n : `${_profileUrl}/account/${username}`,\n );\n\n if (slot) {\n _url.searchParams.set(\"ps\", encodeURIComponent(slot));\n }\n\n if (namespace) {\n _url.searchParams.set(\"ns\", encodeURIComponent(namespace));\n }\n\n if (version) {\n _url.searchParams.set(\"v\", encodeURIComponent(version));\n }\n\n _url.searchParams.set(\"rpcUrl\", encodeURIComponent(rpcUrl));\n\n if (tokens?.erc20) {\n _url.searchParams.set(\n \"erc20\",\n encodeURIComponent(tokens.erc20.toString()),\n );\n }\n\n if (policies?.contracts) {\n const methods = Object.values(policies.contracts).flatMap(\n (contract) => contract.methods,\n );\n _url.searchParams.set(\n \"methods\",\n encodeURIComponent(JSON.stringify(methods)),\n );\n }\n\n super({\n ...iframeOptions,\n id: \"controller-profile\",\n url: _url,\n });\n }\n}\n","import { AsyncMethodReturns } from \"@cartridge/penpal\";\n\nimport ControllerAccount from \"./account\";\nimport { KeychainIFrame, ProfileIFrame } from \"./iframe\";\nimport { NotReadyToConnect } from \"./errors\";\nimport {\n Keychain,\n ResponseCodes,\n ConnectReply,\n ProbeReply,\n ControllerOptions,\n ConnectError,\n Profile,\n IFrames,\n ProfileContextTypeVariant,\n Chain,\n} from \"./types\";\nimport BaseProvider from \"./provider\";\nimport { shortString, WalletAccount } from \"starknet\";\nimport { Policy } from \"@cartridge/presets\";\nimport { AddStarknetChainParameters, ChainId } from \"@starknet-io/types-js\";\nimport { parseChainId } from \"./utils\";\n\nexport default class ControllerProvider extends BaseProvider {\n private keychain?: AsyncMethodReturns<Keychain>;\n private profile?: AsyncMethodReturns<Profile>;\n private options: ControllerOptions;\n private iframes: IFrames;\n private selectedChain: ChainId;\n private chains: Map<ChainId, Chain>;\n\n constructor(options: ControllerOptions) {\n super();\n\n this.selectedChain = options.defaultChainId;\n this.chains = new Map<ChainId, Chain>();\n\n this.iframes = {\n keychain: new KeychainIFrame({\n ...options,\n onClose: this.keychain?.reset,\n onConnect: (keychain) => {\n this.keychain = keychain;\n },\n }),\n };\n\n this.options = options;\n\n this.validateChains(options.chains);\n\n if (typeof window !== \"undefined\") {\n (window as any).starknet_controller = this;\n }\n }\n\n async probe(): Promise<WalletAccount | undefined> {\n try {\n await this.waitForKeychain();\n\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n const response = (await this.keychain.probe(this.rpcUrl())) as ProbeReply;\n\n // For backwards compat with controller <=0.6.0\n let rpcUrl = response?.rpcUrl || this.rpcUrl();\n this.account = new ControllerAccount(\n this,\n rpcUrl,\n response.address,\n this.keychain,\n this.options,\n this.iframes.keychain,\n );\n } catch (e) {\n console.error(e);\n return;\n }\n\n if (!this.iframes.profile) {\n const username = await this.keychain.username();\n\n this.iframes.profile = new ProfileIFrame({\n ...this.options,\n onConnect: (profile) => {\n this.profile = profile;\n },\n methods: {\n openSettings: () => this.openSettings.bind(this),\n openPurchaseCredits: () => this.openPurchaseCredits.bind(this),\n openExecute: () => this.openExecute.bind(this),\n },\n rpcUrl: this.rpcUrl(),\n username,\n version: this.version,\n });\n }\n\n return this.account;\n }\n\n async connect(): Promise<WalletAccount | undefined> {\n if (this.account) {\n return this.account;\n }\n\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n if (!!document.hasStorageAccess) {\n const ok = await document.hasStorageAccess();\n if (!ok) {\n await document.requestStorageAccess();\n }\n }\n\n this.iframes.keychain.open();\n\n try {\n let response = await this.keychain.connect(\n this.options.policies || {},\n this.rpcUrl(),\n );\n if (response.code !== ResponseCodes.SUCCESS) {\n throw new Error(response.message);\n }\n\n response = response as ConnectReply;\n this.account = new ControllerAccount(\n this,\n this.rpcUrl(),\n response.address,\n this.keychain,\n this.options,\n this.iframes.keychain,\n );\n\n return this.account;\n } catch (e) {\n console.log(e);\n } finally {\n this.iframes.keychain.close();\n }\n }\n\n async switchStarknetChain(chainId: string): Promise<boolean> {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return false;\n }\n\n try {\n this.selectedChain = chainId;\n const response = (await this.keychain.probe(this.rpcUrl())) as ProbeReply;\n\n if (response.rpcUrl === this.rpcUrl()) {\n return true;\n }\n\n await this.keychain.switchChain(this.rpcUrl());\n await this.profile?.switchChain(this.rpcUrl());\n } catch (e) {\n console.error(e);\n return false;\n }\n\n this.emitNetworkChanged(chainId);\n return true;\n }\n\n addStarknetChain(_chain: AddStarknetChainParameters): Promise<boolean> {\n return Promise.resolve(true);\n }\n\n async disconnect() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n if (!!document.hasStorageAccess) {\n const ok = await document.hasStorageAccess();\n if (!ok) {\n await document.requestStorageAccess();\n }\n }\n\n this.account = undefined;\n return this.keychain.disconnect();\n }\n\n async openProfile(tab: ProfileContextTypeVariant = \"inventory\") {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(`${this.iframes.profile.url?.pathname}/${tab}`);\n this.iframes.profile.open();\n }\n\n async openProfileTo(to: string) {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(`${this.iframes.profile.url?.pathname}/${to}`);\n this.iframes.profile.open();\n }\n\n async openProfileAt(at: string) {\n if (!this.profile || !this.iframes.profile?.url) {\n console.error(\"Profile is not ready\");\n return;\n }\n if (!this.account) {\n console.error(\"Account is not ready\");\n return;\n }\n\n this.profile.navigate(at);\n this.iframes.profile.open();\n }\n\n async openSettings() {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n if (this.iframes.profile?.sendBackward) {\n this.iframes.profile?.sendBackward();\n } else {\n this.iframes.profile?.close();\n }\n this.iframes.keychain.open();\n const res = await this.keychain.openSettings();\n this.iframes.keychain.close();\n this.iframes.profile?.sendForward?.();\n if (res && (res as ConnectError).code === ResponseCodes.NOT_CONNECTED) {\n return false;\n }\n return true;\n }\n\n revoke(origin: string, _policy: Policy[]) {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n\n return this.keychain.revoke(origin);\n }\n\n rpcUrl(): string {\n const chain = this.chains.get(this.selectedChain);\n if (!chain) {\n const availableChains = Array.from(this.chains.keys()).map((chain) =>\n shortString.decodeShortString(chain),\n );\n throw new Error(\n `Chain not found: ${shortString.decodeShortString(this.selectedChain)}. Available chains: ${availableChains.join(\", \")}`,\n );\n }\n return chain.rpcUrl;\n }\n\n username() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n\n return this.keychain.username();\n }\n\n openPurchaseCredits() {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n if (!this.iframes.profile) {\n console.error(\"Profile is not ready\");\n return;\n }\n this.iframes.profile.close();\n this.iframes.keychain.open();\n this.keychain.openPurchaseCredits();\n }\n\n openStarterPack() {\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.openStarterPack();\n }\n\n async openExecute(calls: any, chainId?: string) {\n if (!this.keychain || !this.iframes.keychain) {\n console.error(new NotReadyToConnect().message);\n return;\n }\n if (!this.iframes.profile) {\n console.error(\"Profile is not ready\");\n return;\n }\n // Switch to the chain if provided\n let currentChainId = this.selectedChain;\n if (chainId) {\n this.switchStarknetChain(chainId);\n }\n // Switch iframes\n this.iframes.profile?.sendBackward();\n this.iframes.keychain.open();\n this.iframes.profile?.close();\n // Invoke execute\n const res = await this.keychain.execute(calls, undefined, undefined, true);\n // Switch back iframes\n this.iframes.profile?.open();\n this.iframes.keychain.close();\n this.iframes.profile?.sendForward();\n // Switch back to the original chain\n if (chainId) {\n this.switchStarknetChain(currentChainId);\n }\n return !(\n res &&\n ((res as ConnectError).code === ResponseCodes.NOT_CONNECTED ||\n (res as ConnectError).code === ResponseCodes.CANCELED)\n );\n }\n\n async delegateAccount() {\n if (!this.keychain) {\n console.error(new NotReadyToConnect().message);\n return null;\n }\n\n return await this.keychain.delegateAccount();\n }\n\n private async validateChains(chains: Chain[]) {\n for (const chain of chains) {\n try {\n const url = new URL(chain.rpcUrl);\n const chainId = await parseChainId(url);\n this.chains.set(chainId, chain);\n } catch (error) {\n console.error(`Failed to parse chainId for ${chain.rpcUrl}:`, error);\n }\n }\n\n if (!this.chains.has(this.selectedChain)) {\n console.warn(\n `Selected chain ${this.selectedChain} not found in configured chains. ` +\n `Available chains: ${Array.from(this.chains.keys()).join(\", \")}`,\n );\n }\n }\n\n private waitForKeychain({\n timeout = 50000,\n interval = 100,\n }:\n | {\n timeout?: number;\n interval?: number;\n }\n | undefined = {}) {\n return new Promise<void>((resolve, reject) => {\n const startTime = Date.now();\n const id = setInterval(() => {\n if (Date.now() - startTime > timeout) {\n clearInterval(id);\n reject(new Error(\"Timeout waiting for keychain\"));\n return;\n }\n\n if (!this.keychain) return;\n\n clearInterval(id);\n resolve();\n }, interval);\n });\n }\n}\n","import { LookupRequest, LookupResponse } from \"./types\";\nimport { num } from \"starknet\";\nimport { API_URL } from \"./constants\";\n\nconst cache = new Map<string, string>();\n\nasync function lookup(request: LookupRequest): Promise<LookupResponse> {\n if (!request.addresses?.length && !request.usernames?.length) {\n return { results: [] };\n }\n\n const response = await fetch(`${API_URL}/lookup`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(request),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n return response.json();\n}\n\nexport async function lookupUsernames(\n usernames: string[],\n): Promise<Map<string, string>> {\n const uncachedUsernames = usernames.filter((name) => !cache.has(name));\n\n if (uncachedUsernames.length > 0) {\n const response = await lookup({ usernames: uncachedUsernames });\n\n response.results.forEach((result) => {\n cache.set(result.username, result.addresses[0]); // TODO: handle multiple controller addresses\n });\n }\n\n return new Map(\n usernames\n .map((name) => [name, cache.get(name)] as [string, string])\n .filter((entry): entry is [string, string] => entry[1] !== undefined),\n );\n}\n\nexport async function lookupAddresses(\n addresses: string[],\n): Promise<Map<string, string>> {\n addresses = addresses.map(num.toHex);\n const uncachedAddresses = addresses.filter((addr) => !cache.has(addr));\n\n if (uncachedAddresses.length > 0) {\n const response = await lookup({\n addresses: uncachedAddresses,\n });\n\n response.results.forEach((result) => {\n cache.set(result.addresses[0], result.username); // TODO: handle multiple controller addresses\n });\n }\n\n return new Map(\n addresses\n .map((addr) => [addr, cache.get(addr)] as [string, string])\n .filter((entry): entry is [string, string] => entry[1] !== undefined),\n );\n}\n","// src/generated/controller-configs.ts\nvar configs = {\n \"blob-arena\": {\n origin: [\"www.blobarena.xyz\", \"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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n },\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x0170d4eb49bf626342a15cf77b0809baebee30cafbf7884b2d89bbb27e689f6d\": {\n name: \"Lobby Contract\",\n description: \"Game invites and responses\",\n methods: [\n {\n name: \"Send Invite\",\n entrypoint: \"send_invite\",\n description: \"Send users an invite\"\n },\n {\n name: \"Rescind Invite\",\n entrypoint: \"rescind_invite\",\n description: \"Rescind a previously sent invite\"\n },\n {\n name: \"Respond Invite\",\n entrypoint: \"respond_invite\",\n description: \"Respond to a received invite\"\n },\n {\n name: \"Rescind Response\",\n entrypoint: \"rescind_response\",\n description: \"Rescind a previous response to an invite\"\n },\n {\n name: \"Reject Invite\",\n entrypoint: \"reject_invite\",\n description: \"Reject a received invite\"\n },\n {\n name: \"Reject Response\",\n entrypoint: \"reject_response\",\n description: \"Reject a response to an invite\"\n },\n {\n name: \"Accept Response\",\n entrypoint: \"accept_response\",\n description: \"Accept a response to an invite\"\n }\n ]\n },\n \"0x02e4769ec3ac16456e6c6f806efc90f49d46df2a07b431a5a5d8b62e4fb21633\": {\n name: \"Game Contract\",\n description: \"Manages core gameplay interactions\",\n methods: [\n {\n name: \"Start Game\",\n entrypoint: \"start\",\n description: \"Start the game\"\n },\n {\n name: \"Commit Attack\",\n entrypoint: \"commit\",\n description: \"Commit an attack in the game\"\n },\n {\n name: \"Reveal Attack\",\n entrypoint: \"reveal\",\n description: \"Reveal the committed attack in the game\"\n },\n {\n name: \"Run Round\",\n entrypoint: \"run\",\n description: \"Run the next round of the game\"\n },\n {\n name: \"Forfeit\",\n entrypoint: \"forfeit\",\n description: \"Forfeit the game\"\n },\n {\n name: \"Kick Player\",\n entrypoint: \"kick_player\",\n description: \"Kick an inactive player from the game\"\n }\n ]\n },\n \"0x220896431692627f8d0caf9ac45e71c3b3d88c7c009acff756ff2081030a2b1\": {\n name: \"Betsy Contract\",\n description: \"Wager operations\",\n methods: [\n {\n name: \"Set Owner's Fee\",\n entrypoint: \"set_owners_fee\",\n description: \"Set the owner's fee\"\n },\n {\n name: \"Create Bet\",\n entrypoint: \"create\",\n description: \"Create a bet\"\n },\n {\n name: \"Accept Bet\",\n entrypoint: \"accept\",\n description: \"Accept a bet\"\n },\n {\n name: \"Reject Bet\",\n entrypoint: \"reject\",\n description: \"Reject a bet\"\n },\n {\n name: \"Revoke Bet\",\n entrypoint: \"revoke\",\n description: \"Revoke a bet\"\n },\n {\n name: \"Claim Win\",\n entrypoint: \"claim_win\",\n description: \"Claim the win\"\n },\n {\n name: \"Approve Release\",\n entrypoint: \"approve_release\",\n description: \"Approve fund release\"\n },\n {\n name: \"Revoke Release\",\n entrypoint: \"revoke_release\",\n description: \"Revoke fund release\"\n },\n {\n name: \"Release Funds\",\n entrypoint: \"release_funds\",\n description: \"Release funds\"\n }\n ]\n },\n \"0x56e5ae9af38c6eb85c226fbadaa31e37b5ee1a5401a9c371f4e7f154b76dce3\": {\n name: \"Arcade Contract\",\n description: \"Minting of arcade Bloberts\",\n methods: [\n {\n name: \"Mint Arcade Blobert\",\n entrypoint: \"mint\",\n description: \"Mint arcade blobert\"\n }\n ]\n },\n \"0x05a929a543e55877c58973a677fbd3b145f5057b39b87c89d879c87715878d52\": {\n name: \"AMMA Contract\",\n description: \"Minting of AMMA Bloberts\",\n methods: [\n {\n name: \"Mint AMMA Blobert\",\n entrypoint: \"mint\",\n description: \"Mint AMMA blobert\"\n }\n ]\n },\n \"0x14aefc8245c5f2c17204857372944aba413ec639547359b629682c542eca555\": {\n name: \"PVE Contract\",\n description: \"Arcade mode contract\",\n methods: [\n {\n name: \"Start Game\",\n entrypoint: \"start_game\",\n description: \"Start the game\"\n },\n {\n name: \"Attack\",\n entrypoint: \"attack\",\n description: \"Submit an attack\"\n },\n {\n name: \"Start Challenge\",\n entrypoint: \"start_challenge\",\n description: \"Start a challenge\"\n },\n {\n name: \"Next Challenge Round\",\n entrypoint: \"next_challenge_round\",\n description: \"Go forward\"\n },\n {\n name: \"Respawn Challenge\",\n entrypoint: \"respawn_challenge\",\n description: \"Restart a challenge\"\n },\n {\n name: \"End Challenge\",\n entrypoint: \"end_challenge\",\n description: \"End a challenge\"\n },\n {\n name: \"Claim Free Game\",\n entrypoint: \"claim_free_game\",\n description: \"Claim an arcade game\"\n }\n ]\n },\n \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\": {\n name: \"ETH Token\",\n description: \"ETH ERC20 approval\",\n methods: [\n {\n name: \"Approve\",\n entrypoint: \"approve\",\n description: \"ETH allowance\"\n }\n ]\n },\n \"0x072599086bffce6593a2e08169c21d23564f08be1e1d0b8e05a9768f20469a3f\": {\n name: \"LORDS Token\",\n description: \"LORDS ERC20 approval\",\n methods: [\n {\n name: \"Approve\",\n entrypoint: \"approve\",\n description: \"LORDS allowance\"\n }\n ]\n },\n \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\": {\n name: \"STRK Token\",\n description: \"STRK ERC20 approval\",\n methods: [\n {\n name: \"Approve\",\n entrypoint: \"approve\",\n description: \"STRK allowance\"\n }\n ]\n }\n }\n }\n }\n }\n },\n \"blob-arena-amma\": {\n origin: [\"www.blobarena.xyz\", \"blobarena.xyz\"],\n theme: {\n colors: {\n primary: \"#D7B000\"\n },\n cover: \"https://static.cartridge.gg/presets/blob-arena-amma/cover.png\",\n icon: \"https://static.cartridge.gg/presets/blob-arena-amma/icon.png\",\n name: \"Blob Arena AMMA\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n budokan: {\n origin: \"budokan.gg\",\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x05fb427962210ac4b3be5e23419b0d9e91ca6a9c57b0665d2ca7783092506f6e\": {\n name: \"Budokan\",\n methods: [\n {\n entrypoint: \"create_tournament\"\n },\n {\n entrypoint: \"enter_tournament\"\n },\n {\n entrypoint: \"submit_score\"\n },\n {\n entrypoint: \"claim_prize\"\n },\n {\n entrypoint: \"add_prize\"\n },\n {\n entrypoint: \"register_token\"\n }\n ]\n }\n }\n }\n }\n },\n theme: {\n colors: {\n primary: \"#B1B97A\"\n },\n cover: \"https://static.cartridge.gg/presets/budokan/cover.png\",\n icon: \"https://static.cartridge.gg/presets/budokan/icon.png\",\n name: \"Budokan\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n \"bytebeasts-tamagotchi\": {\n origin: \"bytebeasts.games\",\n theme: {\n colors: {\n primary: \"#ECECDA\"\n },\n cover: \"https://static.cartridge.gg/presets/bytebeasts-tamagotchi/cover.png\",\n icon: \"https://static.cartridge.gg/presets/bytebeasts-tamagotchi/icon.png\",\n name: \"ByteBeasts-Tamagotchi\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n light: {\n webp: {\n \"768\": \"cover-light@768.webp\",\n \"1024\": \"cover-light@1024.webp\",\n \"1440\": \"cover-light@1440.webp\"\n },\n jpg: {\n \"768\": \"cover-light@768.jpg\",\n \"1024\": \"cover-light@1024.jpg\",\n \"1440\": \"cover-light@1440.jpg\"\n },\n png: {\n \"768\": \"cover-light@768.png\",\n \"1024\": \"cover-light@1024.png\",\n \"1440\": \"cover-light@1440.png\"\n }\n },\n dark: {\n webp: {\n \"768\": \"cover-dark@768.webp\",\n \"1024\": \"cover-dark@1024.webp\",\n \"1440\": \"cover-dark@1440.webp\"\n },\n jpg: {\n \"768\": \"cover-dark@768.jpg\",\n \"1024\": \"cover-dark@1024.jpg\",\n \"1440\": \"cover-dark@1440.jpg\"\n },\n png: {\n \"768\": \"cover-dark@768.png\",\n \"1024\": \"cover-dark@1024.png\",\n \"1440\": \"cover-dark@1440.png\"\n }\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\n }\n }\n },\n coloniz: {\n origin: [\"coloniz.xyz\"],\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x430d7262fb9ad2c830d793471c3a07e08afe54f9a5f0d28db48712bc918f5f\": {\n name: \"Tokenbound Sessions\",\n methods: [\n {\n name: \"Execute\",\n entrypoint: \"execute\",\n description: \"Session proxy\"\n }\n ]\n },\n \"0x56977e22ad4751ea5b3df958da3080971c7f26036127452b98c154fbea86d06\": {\n name: \"Profile Creation\",\n methods: [\n {\n name: \"Create A Coloniz Profile\",\n entrypoint: \"create_profile\",\n description: \"Create a profile on Coloniz\"\n }\n ]\n },\n \"0x5cc4644374e3f91b52cfe64937dacaec91b2d81fe2f146a860ab5b3bb751ce8\": {\n name: \"Handles Minting\",\n methods: [\n {\n name: \"Mint Handle\",\n entrypoint: \"mint_handle\",\n description: \"Mint Coloniz Profile Handle\"\n }\n ]\n },\n \"0x79914426e3cc5336c479ee87770380ceeda4b60496657e70c3ee7d57a992226\": {\n name: \"Handle Registry\",\n methods: [\n {\n name: \"Link Handle\",\n entrypoint: \"link\",\n description: \"Link handle to Coloniz Profile\"\n }\n ]\n }\n },\n messages: [\n {\n name: \"Sign in to Coloniz\",\n description: \"Sign the message to login to Coloniz\",\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 Signin: [\n {\n name: \"content\",\n type: \"string\"\n },\n {\n name: \"nonce\",\n type: \"string\"\n },\n {\n name: \"timestamp\",\n type: \"string\"\n }\n ]\n },\n primaryType: \"Signin\",\n domain: {\n name: \"Coloniz\",\n version: \"1\",\n revision: \"1\",\n chainId: \"SN_MAIN\"\n }\n }\n ]\n }\n }\n },\n theme: {\n colors: {\n primary: \"#4285F4\"\n },\n cover: \"https://static.cartridge.gg/presets/coloniz/cover.png\",\n icon: \"https://static.cartridge.gg/presets/coloniz/icon.png\",\n name: \"Coloniz\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n credit: {\n origin: \"*\",\n theme: {\n name: \"Credit\",\n icon: \"https://static.cartridge.gg/presets/credit/icon.svg\",\n cover: \"https://static.cartridge.gg/presets/credit/cover.png\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\n }\n },\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x0320f977f47f0885e376b781d9e244d9f59f10154ce844ae1815c919f0374726\": {\n name: \"game_systems\",\n methods: [\n {\n entrypoint: \"mint\"\n },\n {\n entrypoint: \"start_game\"\n }\n ]\n },\n \"0x0062cfee20a5be4b305f610a23291aa27f3fca7a5fd14bd8e2d0389556003e12\": {\n name: \"battle_systems\",\n methods: [\n {\n entrypoint: \"battle_actions\"\n }\n ]\n },\n \"0x00ae7393b60ad9fd5c26851341b9a4afe61c6ae34326dee79cf5d096e9f55a36\": {\n name: \"draft_systems\",\n methods: [\n {\n entrypoint: \"pick_card\"\n }\n ]\n },\n \"0x07c9a684813410b39c776c49544d8ecb2d39f0b91bd83ffec31ebc938e053e25\": {\n name: \"map_systems\",\n methods: [\n {\n entrypoint: \"generate_tree\"\n },\n {\n entrypoint: \"select_node\"\n }\n ]\n }\n }\n }\n }\n }\n },\n dominion: {\n origin: \"https://dominion.fun\",\n theme: {\n colors: {\n primary: \"#19cfff\"\n },\n cover: \"https://static.cartridge.gg/presets/dominion/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dominion/icon.svg\",\n name: \"Dominion\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\n }\n }\n },\n \"dope-wars\": {\n origin: \"dopewars.game\",\n chains: {\n SN_MAIN: {\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 }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n dragark: {\n origin: \"dragark.net\",\n chains: {\n SN_MAIN: {\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: \"A method to activate the Dragark NFT into the game.\",\n entrypoint: \"activate_dragon\"\n },\n {\n name: \"Deactivate Dragon\",\n description: \"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: \"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: \"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: \"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: \"A method to end an existing treasure hunt and claim rewards.\",\n entrypoint: \"end_treasure_hunt\"\n }\n ]\n }\n }\n }\n }\n },\n theme: {\n colors: {\n primary: \"#71EB34\"\n },\n cover: \"https://static.cartridge.gg/presets/dragark/cover.png\",\n icon: \"https://static.cartridge.gg/presets/dragark/icon.png\",\n name: \"Dragark\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n eternum: {\n origin: [\"eternum.realms.world\", \"empire.realms.world\"],\n chains: {\n SN_MAIN: {\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: \"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: \"Terminates the current game season once you've reached enough points\",\n entrypoint: \"end_game\"\n },\n {\n name: \"Set Access\",\n description: \"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: \"Verifiable Random Function contract, allows randomness in the game\",\n methods: [\n {\n name: \"Request Random\",\n description: \"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 }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n \"loot-survivor\": {\n origin: \"lootsurvivor.io\",\n chains: {\n SN_MAIN: {\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 }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n },\n nums: {\n origin: [\"nums.gg\", \"www.nums.gg\"],\n chains: {\n SN_MAIN: {\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 }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\n }\n }\n },\n pistols: {\n origin: [\n \"pistols.underware.gg\",\n \"pistols.stage.underware.gg\",\n \"play.pistols.gg\",\n \"stage.pistols.gg\",\n \"alpha.pistols.gg\",\n \"beta.pistols.gg\",\n \"prerelease.pistols.gg\"\n ],\n theme: {\n colors: {\n primary: \"#EF9758\"\n },\n cover: \"https://static.cartridge.gg/presets/pistols/cover.png\",\n icon: \"https://static.cartridge.gg/presets/pistols/icon.png\",\n name: \"Pistols at Dawn\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n },\n chains: {\n SN_MAIN: {\n policies: {\n contracts: {\n \"0x0619c7bd5d5d635e010ef3bf9a59ecc49fa055f19bb2202e530554cfda655b59\": {\n description: \"Game loop contract\",\n methods: [\n {\n entrypoint: \"commit_moves\",\n description: \"Commit moves of a Duelist in a Duel\"\n },\n {\n entrypoint: \"reveal_moves\",\n description: \"Reveal moves of a Duelist in a Duel\"\n },\n {\n entrypoint: \"clear_required_action\",\n description: \"Clear the required action call for a duelist\"\n },\n {\n entrypoint: \"collect_duel\",\n description: \"Close expired duels\"\n },\n {\n entrypoint: \"collect_season\",\n description: \"Close the current season and start the next one\"\n }\n ]\n },\n \"0x07b04bc75c3d4ba5b37d2dfc91501424dd23f517a820aee89adeeef4ececb391\": {\n description: \"Packs ERC721 contract\",\n methods: [\n {\n entrypoint: \"claim_starter_pack\",\n description: \"Claim the starter pack, mint Duelists\"\n },\n {\n entrypoint: \"purchase\",\n description: \"Purchase a closed pack\"\n },\n {\n entrypoint: \"open\",\n description: \"Open a pack, mint its contents\"\n }\n ]\n },\n \"0x00899524b10391115869ab095fe4385e17dd3dfd27b3a01bcc579ed939552e4c\": {\n description: \"Duel ERC721 contract\",\n methods: [\n {\n entrypoint: \"create_duel\",\n description: \"Create a Duel, mint its token\"\n },\n {\n entrypoint: \"reply_duel\",\n description: \"Reply to a Duel (accept or reject)\"\n }\n ]\n },\n \"0x0611b5c48d17de65d8015d48d491e0d120361a85099e28f3630600b3a91a98b0\": {\n description: \"Duelist ERC721 contract\",\n methods: [\n {\n entrypoint: \"poke\",\n description: \"Reactivates an inactive Duelist\"\n },\n {\n entrypoint: \"sacrifice\",\n description: \"Sacrifices a Duelist\"\n },\n {\n entrypoint: \"memorialize\",\n description: \"Memorializes a Duelist\"\n }\n ]\n },\n \"0x05c3c66f68bf24a4f61263d18622f97769ef62497f07a0ce9b07c7f02d6aa435\": {\n description: \"Bank contract\",\n methods: [\n {\n entrypoint: \"sponsor_duelists\",\n description: \"Sponsor duelist starter packs with $LORDS\"\n },\n {\n entrypoint: \"sponsor_season\",\n description: \"Sponsor the current season with $LORDS\"\n },\n {\n entrypoint: \"sponsor_tournament\",\n description: \"Sponsor a tournament with $LORDS\"\n }\n ]\n },\n \"0x05355768013cba6f96d985d189c0a69362d1a79a962e0d595ba7ea114ead720c\": {\n description: \"Cartridge VRF Provider\",\n methods: [\n {\n entrypoint: \"request_random\",\n description: \"Request a random number\"\n }\n ]\n }\n },\n messages: [\n {\n types: {\n StarknetDomain: [\n {\n name: \"name\",\n type: \"shortstring\"\n },\n {\n name: \"version\",\n type: \"shortstring\"\n },\n {\n name: \"chainId\",\n type: \"shortstring\"\n },\n {\n name: \"revision\",\n type: \"shortstring\"\n }\n ],\n \"pistols-PlayerOnline\": [\n {\n name: \"identity\",\n type: \"ContractAddress\"\n },\n {\n name: \"timestamp\",\n type: \"felt\"\n }\n ]\n },\n primaryType: \"pistols-PlayerOnline\",\n domain: {\n name: \"Underware_gg\",\n version: \"1.0.0\",\n chainId: \"SN_MAIN\",\n revision: \"1\"\n },\n name: \"PlayerOnline\",\n description: \"Notify the server that a player is online\"\n },\n {\n types: {\n StarknetDomain: [\n {\n name: \"name\",\n type: \"shortstring\"\n },\n {\n name: \"version\",\n type: \"shortstring\"\n },\n {\n name: \"chainId\",\n type: \"shortstring\"\n },\n {\n name: \"revision\",\n type: \"shortstring\"\n }\n ],\n \"pistols-PlayerBookmark\": [\n {\n name: \"identity\",\n type: \"ContractAddress\"\n },\n {\n name: \"target_address\",\n type: \"ContractAddress\"\n },\n {\n name: \"target_id\",\n type: \"u128\"\n },\n {\n name: \"enabled\",\n type: \"bool\"\n }\n ]\n },\n primaryType: \"pistols-PlayerBookmark\",\n domain: {\n name: \"Underware_gg\",\n version: \"1.0.0\",\n chainId: \"SN_MAIN\",\n revision: \"1\"\n },\n name: \"PlayerBookmark\",\n description: \"Notify the server that a player follows another player or token\"\n }\n ]\n }\n }\n }\n },\n pixelaw: {\n origin: \"dojo.pixelaw.xyz\",\n theme: {\n colors: {\n primary: \"#7C00B1\",\n primaryForeground: \"white\"\n },\n cover: \"https://static.cartridge.gg/presets/pixelaw/cover.png\",\n icon: \"https://static.cartridge.gg/presets/pixelaw/icon.svg\",\n name: \"Pixelaw\",\n optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n },\n svg: {\n \"16\": \"icon@16.svg\",\n \"32\": \"icon@32.svg\",\n \"64\": \"icon@64.svg\",\n \"128\": \"icon@128.svg\",\n \"256\": \"icon@256.svg\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\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 optimizedCover: {\n webp: {\n \"768\": \"cover@768.webp\",\n \"1024\": \"cover@1024.webp\",\n \"1440\": \"cover@1440.webp\"\n },\n jpg: {\n \"768\": \"cover@768.jpg\",\n \"1024\": \"cover@1024.jpg\",\n \"1440\": \"cover@1440.jpg\"\n },\n png: {\n \"768\": \"cover@768.png\",\n \"1024\": \"cover@1024.png\",\n \"1440\": \"cover@1440.png\"\n }\n },\n optimizedIcon: {\n webp: {\n \"16\": \"icon@16.webp\",\n \"32\": \"icon@32.webp\",\n \"64\": \"icon@64.webp\",\n \"128\": \"icon@128.webp\",\n \"256\": \"icon@256.webp\"\n },\n png: {\n \"16\": \"icon@16.png\",\n \"32\": \"icon@32.png\",\n \"64\": \"icon@64.png\",\n \"128\": \"icon@128.png\",\n \"256\": \"icon@256.png\"\n }\n }\n }\n }\n};\n\n// src/generated/erc20-metadata.ts\nvar metadata = [\n {\n name: \"Wrapped BTC\",\n symbol: \"WBTC\",\n decimals: 8,\n l2_token_address: \"0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac\",\n sort_order: 0,\n total_supply: null,\n logo_url: \"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: \"0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8\",\n sort_order: 5,\n total_supply: null,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e5aaa970-a998-47e8-bd43-4a3b56b87200/logo\"\n },\n {\n name: \"LUSD Stablecoin\",\n symbol: \"LUSD\",\n decimals: 18,\n l2_token_address: \"0x070a76fd48ca0ef910631754d77dd822147fe98a569b826ec85e3c33fde586ac\",\n sort_order: 3,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/dc0ae733-5498-4afa-f475-48dba677aa00/logo\"\n },\n {\n name: \"Tether USD\",\n symbol: \"USDT\",\n decimals: 6,\n l2_token_address: \"0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8\",\n sort_order: 4,\n total_supply: null,\n logo_url: \"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: \"0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\",\n sort_order: 3,\n total_supply: null,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e07829b7-0382-4e03-7ecd-a478c5aa9f00/logo\"\n },\n {\n name: \"Dai Stablecoin\",\n symbol: \"DAIv0\",\n decimals: 18,\n l2_token_address: \"0x00da114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3\",\n sort_order: 4,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/919e761b-56f7-4f53-32aa-5e066f7f6200/logo\"\n },\n {\n name: \"Dai Stablecoin\",\n symbol: \"DAI\",\n decimals: 18,\n l2_token_address: \"0x05574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad\",\n sort_order: 4,\n total_supply: null,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/919e761b-56f7-4f53-32aa-5e066f7f6200/logo\"\n },\n {\n name: \"Legacy Starknet Wrapped Staked Ether\",\n symbol: \"wstETH-legacy\",\n decimals: 18,\n l2_token_address: \"0x042b8f0484674ca266ac5d08e4ac6a3fe65bd3129795def2dca5c34ecc5f96d2\",\n sort_order: 1,\n total_supply: null,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/26162dcc-29c2-4f5e-3acd-5e6be1f07a00/logo\"\n },\n {\n name: \"Wrapped Staked Ether\",\n symbol: \"wstETH\",\n decimals: 18,\n l2_token_address: \"0x0057912720381af14b0e5c87aa4718ed5e527eab60b3801ebf702ab09139e38b\",\n sort_order: 1,\n total_supply: null,\n logo_url: \"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: \"0x0319111a5037cbec2b3e638cc34a3474e2d2608299f3e62866e9cc683208c610\",\n sort_order: 1,\n total_supply: null,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/c9f2d6fe-fbc6-4384-0990-923dfcb7a200/logo\"\n },\n {\n name: \"LORDS\",\n symbol: \"LORDS\",\n decimals: 18,\n l2_token_address: \"0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49\",\n sort_order: 1,\n total_supply: 509e5,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/a3bfe959-50c4-4f89-0aef-b19207d82a00/logo\"\n },\n {\n name: \"R Stablecoin\",\n symbol: \"R\",\n decimals: 18,\n l2_token_address: \"0x01fa2fb85f624600112040e1f3a848f53a37ed5a7385810063d5fe6887280333\",\n sort_order: 3,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/77612e4e-f7ee-4dba-2066-af321843ef00/logo\"\n },\n {\n name: \"Frax\",\n symbol: \"FRAX\",\n decimals: 18,\n l2_token_address: \"0x009c6b4fb13dfaa025c1383ed6190af8ed8cbb09d9588a3bb020feb152442406\",\n sort_order: 1,\n total_supply: 649462235,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/eeaf0779-e492-474c-ef19-b27843525600/logo\"\n },\n {\n name: \"Frax Share\",\n symbol: \"FXS\",\n decimals: 18,\n l2_token_address: \"0x0058efd0e73c33a848ffaa88738d128ebf0af98ea78cf3c14dc757bb02d39ffb\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/98bea621-1e4f-4d63-9689-bdaef0d56500/logo\"\n },\n {\n name: \"Staked Frax Ether\",\n symbol: \"sfrxETH\",\n decimals: 18,\n l2_token_address: \"0x04578fffc279e61b5cb0267a5f8e24b6089d40f93158fbbad2cb23b8622c9233\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/cd6fe18a-25db-4de9-758a-daf3b364ea00/logo\"\n },\n {\n name: \"Uniswap\",\n symbol: \"UNI\",\n decimals: 18,\n l2_token_address: \"0x049210ffc442172463f3177147c1aeaa36c51d152c1b0630f2364c300d4f48ee\",\n sort_order: 1,\n total_supply: 1e9,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/361b018e-bd53-4019-27c8-7cf8d9031b00/logo\"\n },\n {\n name: \"Paper\",\n symbol: \"PAPER\",\n decimals: 18,\n l2_token_address: \"0x0410466536b5ae074f7fea81e5533b8134a9fa08b3dd077dd9db08f64997d113\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/811f019a-0461-4cff-6c1e-442102863f00/logo\"\n },\n {\n name: \"StarkPepe\",\n symbol: \"xSPEPE\",\n decimals: 18,\n l2_token_address: \"0x06f15ec4b6ff0b7f7a216c4b2ccdefc96cbf114d6242292ca82971592f62273b\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n disabled: true\n },\n {\n name: \"StarkNet Token\",\n symbol: \"STRK\",\n decimals: 18,\n l2_token_address: \"0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d\",\n sort_order: 2,\n total_supply: 1e10,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/1b126320-367c-48ed-cf5a-ba7580e49600/logo\"\n },\n {\n name: \"zkLend Token\",\n symbol: \"ZEND\",\n decimals: 18,\n l2_token_address: \"0x00585c32b625999e6e5e78645ff8df7a9001cf5cf3eb6b80ccdd16cb64bd3a34\",\n sort_order: 1,\n total_supply: null,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/95515b0e-1230-4158-10f1-56888f613c00/logo\"\n },\n {\n name: \"Ekubo Protocol\",\n symbol: \"EKUBO\",\n decimals: 18,\n l2_token_address: \"0x075afe6402ad5a5c20dd25e10ec3b3986acaa647b77e4ae24b0cbc9a54a27a87\",\n sort_order: 1,\n total_supply: 1e7,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/634d9c36-2f0b-4781-93e6-72d701b5af00/logo\"\n },\n {\n name: \"SOCKS\",\n symbol: \"SOCKS\",\n decimals: 18,\n l2_token_address: \"0x023ed2ba4fb5709302c5dfd739fa7613359042f143286c115b6c7f7dc2601015\",\n sort_order: 1,\n total_supply: 1e11,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/2db5a2a6-c98e-4b80-35e0-31b489132100/logo\"\n },\n {\n name: \"Nostra\",\n symbol: \"NSTR\",\n decimals: 18,\n l2_token_address: \"0x00c530f2c0aa4c16a0806365b0898499fba372e5df7a7172dc6fe9ba777e8007\",\n sort_order: 1,\n total_supply: 1e8,\n logo_url: \"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: \"0x51c4b1fe3bf6774b87ad0b15ef5d1472759076e42944fff9b9f641ff13e5bbe\",\n sort_order: 1,\n total_supply: 1e8,\n logo_url: \"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: \"0x498edfaf50ca5855666a700c25dd629d577eb9afccdf3b5977aec79aee55ada\",\n sort_order: 3,\n total_supply: null,\n hidden: false,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6bd6d156-f509-4b51-5dfc-3ee566143600/logo\"\n },\n {\n name: \"Nums\",\n symbol: \"NUMS\",\n decimals: 18,\n l2_token_address: \"0xe5f10eddc01699dc899a30dbc3c9858148fa4aa0a47c0ffd85f887ffc4653e\",\n sort_order: 1,\n total_supply: 1,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/90868d05-cb75-4c42-278c-5a540db2cf00/logo\"\n },\n {\n name: \"Flip\",\n symbol: \"FLIP\",\n decimals: 18,\n l2_token_address: \"0x01bfe97d729138fc7c2d93c77d6d1d8a24708d5060608017d9b384adf38f04c7\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/275f0fa8-a691-471c-ace6-0eb0315dde00/logo\"\n },\n {\n name: \"Eternum Stone\",\n symbol: \"STONE\",\n decimals: 18,\n l2_token_address: \"0x439a1c010e3e1bb2d43d43411000893c0042bd88f6c701611a0ea914d426da4\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/932e7f83-a4c2-40f0-3048-35af3b194100/logo\"\n },\n {\n name: \"Eternum Coal\",\n symbol: \"COAL\",\n decimals: 18,\n l2_token_address: \"0xce635e3f241b0ae78c46a929d84a9101910188f9c4024eaa7559556503c31a\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/cf2ee180-06bf-4443-e3aa-724d7c28e800/logo\"\n },\n {\n name: \"Eternum Wood\",\n symbol: \"WOOD\",\n decimals: 18,\n l2_token_address: \"0x40d8907cec0f7ae9c364dfb12485a1314d84c129bf1898d2f3d4b7fcc7d44f4\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/1db5f954-c1ef-447e-9f8f-05bd9f3b2b00/logo\"\n },\n {\n name: \"Eternum Copper\",\n symbol: \"COPPER\",\n decimals: 18,\n l2_token_address: \"0x66ed5c928ee027a9419ace1cbea8389885161db5572a7c5c4fef2310e9bf494\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6bbcdcc9-6146-404d-9501-92a664cf3100/logo\"\n },\n {\n name: \"Eternum Ironwood\",\n symbol: \"IRONWOOD\",\n decimals: 18,\n l2_token_address: \"0x1720cf6318bff45e62acc588680ae3cd4d5f8465b1d52cb710533c9299b031a\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/5af7c03b-e4ae-4aee-eba4-a4e2160a1d00/logo\"\n },\n {\n name: \"Eternum Obsidian\",\n symbol: \"OBSIDIAN\",\n decimals: 18,\n l2_token_address: \"0x3b6448d09dcd023507376402686261f5d6739455fa02f804907b066e488da66\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/8be9bc66-486b-4181-6804-725a1db8ad00/logo\"\n },\n {\n name: \"Eternum Gold\",\n symbol: \"GOLD\",\n decimals: 18,\n l2_token_address: \"0xdff9dca192609c4e86ab3be22c7ec1e968876c992d21986f3c542be97fa2f\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/fb9e90f7-3c2f-4c64-7e43-c3f694f35e00/logo\"\n },\n {\n name: \"Eternum Silver\",\n symbol: \"SILVER\",\n decimals: 18,\n l2_token_address: \"0x6fe21d2d4a8a05bdb70f09c9250af9870020d5dcc35f410b4a39d6605c3e353\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e443afeb-850b-46a0-a7ba-a473306d6b00/logo\"\n },\n {\n name: \"Eternum Mithral\",\n symbol: \"MITHRAL\",\n decimals: 18,\n l2_token_address: \"0x67ba235c569c23877064b2ac6ebd4d79f32d3c00f5fab8e28a3b5700b957f6\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/33dc517f-8a66-45eb-f2c5-de5388e47500/logo\"\n },\n {\n name: \"Eternum Alchemical Silver\",\n symbol: \"ALCHEMICALSILVER\",\n decimals: 18,\n l2_token_address: \"0x3956a5301e99522038a2e7dcb9c2a89bf087ffa79310ee0a508b5538efd8ddd\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/3d2e0fd8-4af8-49a0-4bdb-691a4d6ef800/logo\"\n },\n {\n name: \"Eternum Cold Iron\",\n symbol: \"COLDIRON\",\n decimals: 18,\n l2_token_address: \"0x555d713e59d4ff96b7960447e9bc9e79bfdeab5b0eea74e3df81bce61cfbc77\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/878c0d8a-8e2c-4281-0896-9cbbb2ef9400/logo\"\n },\n {\n name: \"Eternum Deep Crystal\",\n symbol: \"DEEPCRYSTAL\",\n decimals: 18,\n l2_token_address: \"0x1d655ac834d38df7921074fc1588411e202b1af83307cbd996983aff52db3a8\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/1c2c954f-448c-476b-a4a6-19b52efe3e00/logo\"\n },\n {\n name: \"Eternum Ruby\",\n symbol: \"RUBY\",\n decimals: 18,\n l2_token_address: \"0x3d9b66720959d0e7687b898292c10e62e78626f2dba5e1909961a2ce3f86612\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6a45b34d-3bfe-4994-45b0-f2bee8abac00/logo\"\n },\n {\n name: \"Eternum Diamonds\",\n symbol: \"DIAMONDS\",\n decimals: 18,\n l2_token_address: \"0xe03ea8ae385f64754820af5c01c36abf1b8130dd6797d3fd9d430e4114e876\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/b1fa609d-8799-4754-cdea-ab69514ca700/logo\"\n },\n {\n name: \"Eternum Hartwood\",\n symbol: \"HARTWOOD\",\n decimals: 18,\n l2_token_address: \"0x5620aa7170cd66dbcbc37d03087bfe4633ffef91d3e4d97b501de906004f79b\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/27e37e85-91bd-4ee1-0552-1e0795077400/logo\"\n },\n {\n name: \"Eternum Ignium\",\n symbol: \"IGNIUM\",\n decimals: 18,\n l2_token_address: \"0x625c1f789b03ebebc7a9322366f38ebad1f693b84b2abd8cb8f5b2748b0cdd5\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/58591e20-24fb-4353-417a-81d877a5a200/logo\"\n },\n {\n name: \"Eternum Twilight Quartz\",\n symbol: \"TWILIGHTQUARTZ\",\n decimals: 18,\n l2_token_address: \"0x35e24c02409c3cfe8d5646399a62c4d102bb782938d5f5180e92c9c62d3faf7\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/2f8cb892-e82a-4af3-bd09-316061faec00/logo\"\n },\n {\n name: \"Eternum True Ice\",\n symbol: \"TRUEICE\",\n decimals: 18,\n l2_token_address: \"0x4485f5a6e16562e1c761cd348e63256d00389e3ddf4f5d98afe7ab44c57c481\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/fe4bfc17-6553-4dc5-58d2-f452b4aa8a00/logo\"\n },\n {\n name: \"Eternum Adamantine\",\n symbol: \"ADAMANTINE\",\n decimals: 18,\n l2_token_address: \"0x367f838f85a2f5e1580d6f011e4476f581083314cff8721ba3dda9706076eed\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/13bd026b-3612-480e-0119-04cf4c505a00/logo\"\n },\n {\n name: \"Eternum Sapphire\",\n symbol: \"SAPPHIRE\",\n decimals: 18,\n l2_token_address: \"0x2f8dd022568af8f9f718aa37707a9b858529db56910633a160456838b6cbcbc\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/0ebf555f-e732-4054-f8e5-55b2ed49ba00/logo\"\n },\n {\n name: \"Eternum Ethereal Silica\",\n symbol: \"ETHEREALSILICA\",\n decimals: 18,\n l2_token_address: \"0x68b6e23cbbd58a644700f55e96c83580921e9f521b6e5175396b53ba7910e7d\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/f02a5b43-bfcf-408c-7d1b-fcfe68b02d00/logo\"\n },\n {\n name: \"Eternum Dragon Hide\",\n symbol: \"DRAGONHIDE\",\n decimals: 18,\n l2_token_address: \"0x3bf856515bece3c93f5061b7941b8645f817a0acab93c758b8c7b4bc0afa3c6\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/e74955fc-5c8a-4dff-4882-a49a46a5a800/logo\"\n },\n {\n name: \"Eternum Ancient Fragment\",\n symbol: \"ANCIENTFRAGMENT\",\n decimals: 18,\n l2_token_address: \"0x0695b08ecdfdd828c2e6267da62f59e6d7543e690ef56a484df25c8566b332a5\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/9af855b7-4790-4390-9466-6bed4481ab00/logo\"\n },\n {\n name: \"Eternum Donkey\",\n symbol: \"DONKEY\",\n decimals: 18,\n l2_token_address: \"0x264be95a4a2ace20add68cb321acdccd2f9f8440ee1c7abd85da44ddab01085\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/20817378-a45e-4521-f464-10f6dd13c500/logo\"\n },\n {\n name: \"Eternum Knight\",\n symbol: \"KNIGHT\",\n decimals: 18,\n l2_token_address: \"0xac965f9e67164723c16735a9da8dbc9eb8e43b1bd0323591e87c056badf606\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/8787ed1f-af5c-4873-c01a-55f05e999a00/logo\"\n },\n {\n name: \"Eternum Crossbowman\",\n symbol: \"CROSSBOWMAN\",\n decimals: 18,\n l2_token_address: \"0x67e4ac00a241be06ba6afc11fa2715ec7da0c42c05a67ef6ecfcfeda725aaa8\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/dec7f31b-4b1d-46bb-4fca-c0253cf55a00/logo\"\n },\n {\n name: \"Eternum Paladin\",\n symbol: \"PALADIN\",\n decimals: 18,\n l2_token_address: \"0x3bc86299bee061c7c8d7546ccb62b9daf9bffc653b1508facb722c6593874bc\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/7d2cd5a5-f38a-49f6-11f8-ba3b59a59e00/logo\"\n },\n {\n name: \"Eternum Wheat\",\n symbol: \"WHEAT\",\n decimals: 18,\n l2_token_address: \"0x57a3f1ee475e072ce3be41785c0e889b7295d7a0dcc22b992c5b9408dbeb280\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/c338b6a8-77c4-4dd6-34f5-1af0d3fb1e00/logo\"\n },\n {\n name: \"Eternum Fish\",\n symbol: \"FISH\",\n decimals: 18,\n l2_token_address: \"0x27719173cfe10f1aa38d2aaed0a075b6077290f1e817aa3485d2b828394f4d9\",\n sort_order: 1,\n total_supply: null,\n hidden: true,\n logo_url: \"https://imagedelivery.net/0xPAQaDtnQhBs8IzYRIlNg/6deef27f-df40-4248-4e1b-ed1d79a3f000/logo\"\n }\n];\n\n// src/index.ts\nvar controllerConfigs = configs;\nvar erc20Metadata = metadata;\nvar defaultTheme = configs[\"cartridge\"].theme;\nexport {\n controllerConfigs,\n defaultTheme,\n erc20Metadata\n};\n//# sourceMappingURL=index.js.map"],"names":["ControllerAccount","WalletAccount","provider","rpcUrl","address","keychain","options","modal","calls","toArray","resolve","reject","sessionExecute","ResponseCodes","manualExecute","typedData","sessionSign","manualSign","MessageType","Resolution","ErrorCode","NativeErrorName","NativeEventType","createDestructor","localName","log","callbacks","destroyed","error","callback","createLogger","debug","args","DEFAULT_PORT_BY_PROTOCOL","URL_REGEX","opaqueOriginSchemes","getOriginFromSrc","src","scheme","location","regexResult","protocol","hostname","port","portSuffix","serializeError","name","message","stack","deserializeError","obj","deserializedError","key","connectCallReceiver","info","serializedMethods","local","remote","originForSending","originForReceiving","handleMessageEvent","event","callMessage","methodName","id","createPromiseHandler","resolution","returnValue","err","errorReplyMessage","generateId","KEY_PATH_DELIMITER","keyPathToSegments","keyPath","segmentsToKeyPath","segments","createKeyPath","prefix","setAtKeyPath","subject","value","prevSubject","idx","serializeMethods","methods","flattenedMethods","deserializeMethods","connectCallSender","callSender","methodKeyPaths","destroyConnection","createMethodProxy","iframeRemoved","replyMessage","api","handleAckMessageFactory","childOrigin","destructor","destroy","onDestroy","destroyCallReceiver","receiverMethodNames","receiverMethodName","destroyCallSender","handleSynMessageFactory","synAckMessage","CHECK_IFRAME_IN_DOC_INTERVAL","monitorIframeRemoval","iframe","checkIframeInDocIntervalId","startConnectionTimeout","timeout","timeoutId","validateIframeHasSrcOrSrcDoc","connectToChild","handleSynMessage","handleAckMessage","stopConnectionTimeout","handleMessage","IFrame","url","preset","onClose","onConnect","container","_origin","observer","existingController","MetaMaskWallet","MetaMaskSDK","available","accounts","transaction","ethereum","result","data","_txn","chainId","tokenAddress","balance","PhantomWallet","response","encodedMessage","serailized_txn","txn","Transaction","_chainId","_tokenAddress","ArgentWallet","wallet","connectorData","connect","InjectedConnector","sig","WalletBridge","type","adapter","operation","errorMessage","KeychainIFrame","policies","iframeOptions","_url","KEYCHAIN_URL","walletBridge","ProfileIFrame","profileUrl","version","username","slot","namespace","tokens","_profileUrl","PROFILE_URL","contract","ControllerProvider","BaseProvider","NotReadyToConnect","profile","e","_chain","tab","to","at","res","origin","_policy","chain","availableChains","shortString","currentChainId","chains","parseChainId","interval","startTime","cache","lookup","request","API_URL","lookupUsernames","usernames","uncachedUsernames","entry","lookupAddresses","addresses","num","uncachedAddresses","addr","configs","metadata","controllerConfigs","erc20Metadata","defaultTheme"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,25]}
|