{"version":3,"file":"d0ZDQzXH.js","sources":["../../../../composables/useWalletConnect.ts"],"sourcesContent":["import Client from '@walletconnect/sign-client';\nimport type { PairingTypes, SessionTypes } from '@walletconnect/types';\nimport { getSdkError } from '@walletconnect/utils';\nimport { WalletConnectModal } from '@walletconnect/modal';\n\nexport enum DEFAULT_CHIA_METHODS {\n CHIA_GET_WALLETS = 'chia_getWallets',\n CHIA_SEND_TRANSACTION = 'chia_sendTransaction',\n CHIA_NEW_ADDRESS = 'chia_getNextAddress',\n CHIA_LOG_IN = 'chia_logIn',\n CHIA_SIGN_MESSAGE_BY_ADDRESS = 'chia_signMessageByAddress',\n CHIA_SIGN_MESSAGE_BY_ID = 'chia_signMessageById',\n CHIA_CREATE_OFFER = 'chia_createOfferForIds',\n CHIA_TAKE_OFFER = 'chia_takeOffer',\n CHIA_GET_NFT_INFO = 'chia_getNFTInfo',\n CHIA_GET_WALLET_SYNC_STATUS = 'chia_getSyncStatus',\n}\n\nconst DEFAULT_RELAY_URL = 'wss://relay.walletconnect.com';\nconst PROJECT_ID = 'c4a526d68137397a45fef408ba2e4e5e';\n\nexport const useWalletConnect = async () => {\n const config = useRuntimeConfig();\n const chainId = `chia:${config.public.network}`;\n\n const client = ref();\n const pairings = ref([]);\n const session = ref();\n\n const isInitializing = ref(false);\n const prevRelayerValue = ref('');\n\n const balances = ref({});\n const accounts = ref([]);\n const chains = ref([chainId]);\n const relayerRegion = ref(DEFAULT_RELAY_URL);\n const walletConnectModal = new WalletConnectModal({\n projectId: PROJECT_ID,\n explorerRecommendedWalletIds: 'NONE',\n themeVariables: {\n '--wcm-font-family': 'Montserrat, sans-serif',\n '--wcm-background-color': '#059669',\n '--wcm-accent-color': '#059669',\n },\n });\n\n const reset = () => {\n session.value = undefined;\n chains.value = [];\n accounts.value = [];\n balances.value = {};\n relayerRegion.value = DEFAULT_RELAY_URL;\n };\n\n const onSessionConnected = (_session: SessionTypes.Struct) => {\n const allNamespaceAccounts = Object.values(_session.namespaces)\n .map((namespace) => namespace.accounts)\n .flat();\n\n session.value = _session;\n // chains.value = allNamespaceChains;\n accounts.value = allNamespaceAccounts;\n // await getAccountBalances(allNamespaceAccounts);\n };\n\n const connect = async (pairing: any) => {\n if (typeof client.value === 'undefined') {\n throw new TypeError('WalletConnect is not initialized');\n }\n console.log('connect, pairing topic is:', pairing?.topic);\n try {\n const requiredNamespaces = {\n chia: {\n methods: Object.values(DEFAULT_CHIA_METHODS),\n chains: toRaw(chains.value),\n events: [],\n },\n };\n console.log('requiredNamespaces config for connect:', requiredNamespaces);\n\n const { uri, approval } = await client.value.connect({\n pairingTopic: pairing?.topic,\n requiredNamespaces,\n });\n\n // Open QRCode modal if a URI was returned (i.e. we're not connecting an existing pairing).\n if (uri) {\n await walletConnectModal.openModal({ uri });\n }\n\n const session = await approval();\n console.log('Established session:', session);\n await onSessionConnected(session);\n // Update known pairings after session is connected.\n pairings.value = client.value.pairing.getAll({ active: true });\n } catch (e) {\n console.error(e);\n // ignore rejection\n } finally {\n // close modal in case it was open\n walletConnectModal.closeModal();\n }\n };\n\n const disconnect = async () => {\n if (typeof client.value === 'undefined') {\n throw new TypeError('WalletConnect is not initialized');\n }\n if (typeof session.value === 'undefined') {\n throw new TypeError('Session is not connected');\n }\n await client.value.disconnect({\n topic: session.value.topic,\n reason: getSdkError('USER_DISCONNECTED'),\n });\n // Reset app state after disconnect.\n reset();\n };\n\n const subscribeToEvents = (_client: Client) => {\n if (typeof _client === 'undefined') {\n throw new TypeError('WalletConnect is not initialized');\n }\n\n _client.on('session_ping', (args) => {\n console.log('EVENT', 'session_ping', args);\n });\n\n _client.on('session_event', (args) => {\n console.log('EVENT', 'session_event', args);\n });\n\n _client.on('session_update', ({ topic, params }) => {\n console.log('EVENT', 'session_update', { topic, params });\n const { namespaces } = params;\n const _session = _client.session.get(topic);\n const updatedSession = { ..._session, namespaces };\n onSessionConnected(updatedSession);\n });\n\n _client.on('session_delete', () => {\n console.log('EVENT', 'session_delete');\n reset();\n });\n };\n\n const _checkPersistedState = async (_client: Client) => {\n if (typeof _client === 'undefined') {\n throw new TypeError('WalletConnect is not initialized');\n }\n // populates existing pairings to state\n pairings.value = _client.pairing.getAll({ active: true });\n console.log('RESTORED PAIRINGS: ', _client.pairing.getAll({ active: true }));\n\n if (typeof session.value !== 'undefined') return;\n // populates (the last) existing session to state\n if (_client.session.length) {\n const lastKeyIndex = _client.session.keys.length - 1;\n const _session = _client.session.get(_client.session.keys[lastKeyIndex]);\n console.log('RESTORED SESSION:', _session);\n await onSessionConnected(_session);\n return _session;\n }\n };\n\n if (process.client) {\n try {\n isInitializing.value = true;\n\n const _client = await Client.init({\n logger: 'debug',\n relayUrl: relayerRegion.value,\n projectId: PROJECT_ID,\n metadata: {\n name: 'MintGarden',\n description: 'Explore and mint NFTs in the Chia ecosystem.',\n url: 'https://mintgarden.io',\n icons: ['https://assets.mainnet.mintgarden.io/web/mint-logo-round.svg'],\n },\n });\n\n console.log('CREATED CLIENT: ', _client);\n console.log('relayerRegion ', relayerRegion.value);\n\n client.value = _client;\n prevRelayerValue.value = relayerRegion.value;\n subscribeToEvents(_client);\n await _checkPersistedState(_client);\n } finally {\n isInitializing.value = false;\n }\n }\n\n const signMessageById = async (id: string, message: string) => {\n const method = DEFAULT_CHIA_METHODS.CHIA_SIGN_MESSAGE_BY_ID;\n try {\n const fingerprint = accounts.value[0].split(':')[2];\n const result = await client.value!.request({\n topic: session.value!.topic,\n chainId,\n request: {\n method,\n params: {\n fingerprint,\n id,\n message,\n },\n },\n });\n\n return {\n method,\n valid: true,\n result,\n };\n } catch (e) {\n console.error(e);\n return { method, valid: false };\n }\n };\n\n const createOffer = async (offer: any, driverDict: any) => {\n const method = DEFAULT_CHIA_METHODS.CHIA_CREATE_OFFER;\n try {\n const fingerprint = accounts.value[0].split(':')[2];\n const result = await client.value!.request({\n topic: session.value!.topic,\n chainId,\n request: {\n method,\n params: {\n fingerprint,\n offer,\n driverDict,\n disableJSONFormatting: true,\n },\n },\n });\n\n return {\n method,\n valid: true,\n result,\n };\n } catch (e) {\n console.error(e);\n return { method, valid: false };\n }\n };\n\n const getNftInfo = async (coinId: string) => {\n const method = DEFAULT_CHIA_METHODS.CHIA_GET_NFT_INFO;\n try {\n const fingerprint = accounts.value[0].split(':')[2];\n const result = await client.value!.request({\n topic: session.value!.topic,\n chainId,\n request: {\n method,\n params: {\n fingerprint,\n coinId,\n },\n },\n });\n\n return {\n method,\n valid: true,\n result,\n };\n } catch (e) {\n console.error(e);\n return { method, valid: false };\n }\n };\n\n const takeOffer = async (offer: string, fee = 0) => {\n const method = DEFAULT_CHIA_METHODS.CHIA_TAKE_OFFER;\n try {\n const fingerprint = accounts.value[0].split(':')[2];\n const result = await client.value!.request({\n topic: session.value!.topic,\n chainId,\n request: {\n method,\n params: {\n fingerprint,\n offer,\n fee: fee * 10 ** 12,\n },\n },\n });\n\n return {\n method,\n valid: true,\n result,\n };\n } catch (e) {\n console.error(e);\n return { method, valid: false };\n }\n };\n\n const getWallets = async () => {\n const method = DEFAULT_CHIA_METHODS.CHIA_GET_WALLETS;\n try {\n const fingerprint = accounts.value[0].split(':')[2];\n const result = await client.value!.request({\n topic: session.value!.topic,\n chainId,\n request: {\n method,\n params: {\n fingerprint,\n includeData: true,\n },\n },\n });\n\n return {\n method,\n valid: true,\n result,\n };\n } catch (e) {\n console.error(e);\n return { method, valid: false };\n }\n };\n\n return {\n client,\n session,\n pairings,\n connect,\n disconnect,\n signMessageById,\n getWallets,\n getNftInfo,\n createOffer,\n takeOffer,\n accounts: computed(() => accounts.value.map((account) => account.split(':')[2])),\n };\n};\n"],"names":["DEFAULT_CHIA_METHODS","DEFAULT_RELAY_URL","PROJECT_ID","useWalletConnect","chainId","useRuntimeConfig","client","ref","pairings","session","isInitializing","prevRelayerValue","balances","accounts","chains","relayerRegion","walletConnectModal","WalletConnectModal","reset","onSessionConnected","_session","allNamespaceAccounts","namespace","connect","pairing","requiredNamespaces","toRaw","uri","approval","e","disconnect","getSdkError","subscribeToEvents","_client","args","topic","params","namespaces","updatedSession","_checkPersistedState","lastKeyIndex","Client","id","message","method","fingerprint","result","coinId","offer","driverDict","fee","computed","account"],"mappings":"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"}