{"version":3,"sources":["webpack:///./components/events/index.js","webpack:///./libs/const.ts","webpack:///./libs/config.ts","webpack:///./store/web3/state.ts","webpack:///./store/web3/getters.ts","webpack:///./store/web3/mutations.ts","webpack:///./store/web3/actions.ts","webpack:///./store/migration/state.ts","webpack:///./store/migration/getters.ts","webpack:///./store/migration/mutations.ts","webpack:///./store/migration/actions.ts","webpack:///./store/credit/state.ts","webpack:///./store/credit/getters.ts","webpack:///./store/credit/mutations.ts","webpack:///./store/credit/actions.ts","webpack:///./store/app/state.ts","webpack:///./store/app/getters.ts","webpack:///./store/app/mutations.ts","webpack:///./store/app/actions.ts","webpack:///./plugins/dialogMessage/events.ts","webpack:///./plugins/axios.ts","webpack:///./plugins/persistedState.client.ts","webpack:///./plugins/vuex-shared-mutations.ts","webpack:///./plugins/functionsPlugin.ts","webpack:///./plugins/web3.ts","webpack:///./plugins/blockInspect.ts","webpack:///./plugins/confirm/events.js","webpack:///./assets/img/icons/bsc.svg","webpack:///./middleware/initWallet.ts","webpack:///./assets/img/icons/icon-metamask.svg","webpack:///./assets/img/icons/icon-walletconnect.png","webpack:///./assets/img/icons/kai.svg","webpack:///./assets/img/icons/eth.svg","webpack:///./assets/luckybox/egg_none.png","webpack:///./assets/luckybox/panel_none.png","webpack:///./assets/luckybox/egg_common.png","webpack:///./assets/luckybox/panel_common.png","webpack:///./assets/luckybox/egg_rare.png","webpack:///./assets/luckybox/panel_rare.png","webpack:///./assets/luckybox/egg_elite.png","webpack:///./assets/luckybox/panel_elite.png","webpack:///./assets/luckybox/egg_epic.png","webpack:///./assets/luckybox/panel_epic.png","webpack:///./assets/luckybox/chest_1.png","webpack:///./assets/luckybox/panel_chest_1.png","webpack:///./assets/video/chest_basic.mp4","webpack:///./assets/video/chest_basic.webm","webpack:///./assets/luckybox/chest_2.png","webpack:///./assets/luckybox/panel_chest_2.png","webpack:///./assets/video/chest_standard.mp4","webpack:///./assets/video/chest_standard.webm","webpack:///./assets/luckybox/chest_3.png","webpack:///./assets/luckybox/panel_chest_3.png","webpack:///./assets/video/chest_enhance.mp4","webpack:///./assets/video/chest_enhance.webm","webpack:///./assets/luckybox/chest_4.png","webpack:///./assets/luckybox/panel_chest_4.png","webpack:///./assets/video/chest_premium.mp4","webpack:///./assets/video/chest_premium.webm","webpack:///./assets/luckybox/element_earth.png","webpack:///./assets/luckybox/element_water.png","webpack:///./assets/luckybox/element_wind.png","webpack:///./assets/luckybox/element_fire.png","webpack:///./middleware/removeIndexHtml.ts","webpack:///./store/web3/index.ts","webpack:///./store/migration/index.ts","webpack:///./store/credit/index.ts","webpack:///./store/app/index.ts","webpack:///./libs/helper.ts"],"names":["eventProcessing","Vue","name","eventModalWallet","eventModalConnect","eventModalResult","MAX_GAS_FEE","process","WC_PROJECT_ID","toString","META_PAGES","metaPages","CONTRACT_NAME","MIGRATION","BSC_MIGRATION","KAI_MIGRATION","BSC_PET_V1","BSC_PET_V2","KAI_PET_V1","KAI_PET_V2","FAKE_PET_V1","FAKE_PET_V2","CLAIM","BSC_CLAIM","KAI_CLAIM","DEV_KAI_CLAIM","DEV_LUCKYBOX","LUCKYBOX","DPET_SPIRIT","STORAGE_WC_KEY","WALLET_TYPE","metamask","walletconnect","ICON_CONNECT_WALLET","require","ICON_NETWORK","bsc","kai","eth","EGGS","rarity","class","img","bg","id","price","src_mp4","src_webm","ratio","percent","BUY_ONE_TIME","ICON_ELEMENTAL","NETWORKS","CONTRACT_LIST","ABI_BSC_PET_V1","ABI_BSC_PET_V2","ABI_KAI_PET_V1","ABI_KAI_PET_V2","ABI_FAKE_PET_V1","ABI_FAKE_PET_V2","ABI_MIGRATION","ABI_CLAIM","ABI_LUCKYBOX","ABI","smcMode","supportChains","testnet","mainnet","NETWORK_CLAIM","NETWORK_MIGRATION","NETWORK_LUCKYBOX","ENDPOINT_MIGRATION","configApi","getDpetNFT","migration","initialState","isLogin","isWalletConnect","account","chainId","getters","getWalletConnect","$nuxt","$web3","getIsWalletConnect","state","getWalletAddress","getChainId","getConnected","mutations","setAccount","toLocaleLowerCase","setChainId","parseInt","resetState","actions","web3Connect","commit","dispatch","clearCachedProvider","showLog","wc","connect","accounts","web3","getAccount","removeModal","onChainChanged","numberChain","onAccountsChanged","length","Promise","resolve","reject","cacheConnect","window","localStorage","getItem","isConnected","isMobile","$device","isMetamask","undefined","ethereum","$modalConnect","show","onResolve","onReject","disconnect","checkMetamaskUnlock","provider","getWeb3Provider","getWeb3","console","log","checkNetWorkSupport","isChainSupport","supports","getChainSupport","$dialogMsg","popupType","title","message","map","network","getConfigChain","chainName","persistent","buttons","btnText","btnCall","isPrimary","error","checkNetWorkClaim","metamaskSwitchChain","networkId","$processing","start","request","method","params","then","setTimeout","catch","switchError","code","includes","finish","metamaskAddNetWork","chain","$helper","addChain","nativeCurrency","tokenName","symbol","decimals","rpcUrls","rpcUrl","blockExplorerUrls","explorer","getSignature","dataString","web3haldle","personalSign","signature","getInstanceContract","addrContract","abi","getAbiByContract","config","getContractByAddress","Web3","providers","HttpProvider","contract","Contract","approveToken","tokenAddress","tokenId","exchangeAdress","isApproved","addrApproved","smc","contractName","endsWith","methods","PetIndexToApproved","call","toLowerCase","getApproved","approve","send","from","gas","status","$toast","nfts","nftAvailable","nftSubmited","nextCursor","listV1","listV2","season","isReady","timeStartMigration","timeEndMigration","allMigrated","v1Migrated","v2Migrated","claimed","totalCredit","storage","claimedCount","pendingTx","totalCreditV1","totalCreditV2","totalCreditSpirit","creditAvailable","dpetSpirit","spiritMigrated","timeStartClaim","timeEndClaim","getListNFT","getListNFTSubmited","getListV1","getListV2","getIsReady","getRangeTime","to","getRangeTimeClaim","getTotalCredit","getClaimed","getNFTMigrated","getV1Migrated","getV2Migrated","getSeason","getTxPending","getClaimedCount","getUserInfo","getSpirit","level1","level2","level3","level4","level5","getTotalSpirit","reduce","acc","cur","getSpiritMigrated","setNftProfile","data","ids","Set","d","merged","filter","has","setNftSubmited","item","submitedArray","remainingArray","some","mg","push","setNftV1","setNftV2","setCursorNext","resetListNFT","setSeason","setIsReady","setTimeMigration","setTimeClaim","setClaimed","setAllMigrated","total","setV1Migrated","setV2Migrated","setTotalCredit","setNFTMigrated","setStorage","setTxPending","txPending","setClaimedCount","setInfoUser","payload","pending","setInfoTotal","totalPetV1","totalPetV2","a","setDpetSpirit","getDpetNFTs","rootState","address","chainIcon","cursor","success","fetchPET","$axios","$post","mini","res","all","addr","version","getContractByName","checkIsReady","rootGetters","getContractMigration","root","contractInstance","getTimeClaim","getContractClaim","getTime","rangeTimeClaim","getStateMigration","totalMigration","timeStart","timeEnd","timeClaim","checkTokenExists","isV1","getMigrtionInfoByAddress","migrationInfo","totalv1","totalv2","getPetMigrated","v1","v2","idsPetV1","concat","idsPetV2","petMigrated","forceUpdateData","amount","petV1KAI","petV2KAI","petV1BSC","petV2BSC","nft","postUpdateSubgraph","this","setHeader","callUpdateSubgraph","time","update","checkUpdateInfo","smc1","smc2","getSubmited","wallet","parseData","finally","getClaim","checkClaim","claimCredit","checkNetwork","dataClaim","parseStorageData","totalPet","obj","pets","credit","smcName","parseDetailPet","image","fecthMyMigrated","pet","isExists","migrationSpirit","err","beforeMigration","timeStartExchange","timeEndExchange","buyOneTime","balanceCredit","usedCredit","transBuyPack","transOpenBox","getBalanceOf","getBuyOneTime","setTimeExchange","setAccountsCredit","balanceOf","used","setBuyOneTime","type","result","setAllBuyOneTime","arrRes","setTransBuyPack","setTransOpenBox","checkBuyOneTime","addrWallet","getTimeExchange","getBalanceCredit","w3FromWei","balances","use","buypack","buyPack","resEvent","events","BuyPack","transactionHash","returnValues","eventsBuyPack","blockFrom","options","fromBlock","toBlock","getPastEvents","event","openBox","qty","limitGas","OpenBox","Array","isArray","dataEvent","isSingle","isAppLoading","isOpenModalWallet","isLoadCredit","setAppLoading","isLoading","setOpenModalWallet","setLoadCredit","appLoading","showModalWallet","hideModalWallet","loadingCredit","eventDialogMsg","inject","redirect","app","onRequest","onError","ls","SecureLS","isCompression","store","req","createPersistedState","key","paths","get","setItem","value","set","removeItem","remove","onNuxtReady","nuxt","shareMutations","predicate","funcHelpers","eventComponent","$emit","hide","text","hasOwnProperty","callback","callbackType","Error","close","cb","defaultChain","chainIds","splice","projectId","web3Plugin","context","pluginInstance","Web3Handler","init","walletType","providerEth","setDataWeb3","getProvider","connected","EthereumProvider","chains","optionalChains","showQrModal","rpcMap","getRPCs","qrModalOptions","themeMode","Object","keys","forEach","startsWith","styleModal","document","getElementById","elModal","getElementsByTagName","gaiaweb3","pluginSubcribeChain","pluginSubcribeAccount","removeListener","_events","chainChanged","on","accountsChanged","modal","subscribeModal","open","enable","setLocalStorage","clearLocalStorage","getAccounts","personal","sign","utils","fromUtf8","addEventListener","e","preventDefault","metaKey","ctrlKey","altKey","keyCode","module","exports","route","path","_","isEmpty","query","replace","fullPath","namespaced","tokenWei","parseFloat","fromWei","w3toWei","toWei","shortenWallet","substring","formatTime","unix","Date","toLocaleString","shortNumber","numberV","withAbbr","COUNT_ABBR","i","Math","floor","pow","minimumFractionDigits","maximumFractionDigits","test","navigator","userAgent","copyToClipboard","subject","content","clipboard","writeText","showNotification","isSuccess","formatNumber","isFloat","locale","round","floatNumber","fRw","String","padStart","weiToFixed","x","abs","split","join","padLeft","number","character","values","find","getChainIdSupport","isFunction","functionToCheck","isDeviceMobileAndTablet","ctx","isTablet","infoBrowser","browserName","platform","browserInfo","match","deviceInfo","deviceName","nameLog","smcNameBSC","smcNameKAI","getContractExchange","sleep","ms"],"mappings":"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","file":"d274b13.js","sourcesContent":["import Vue from 'vue';\nexport const eventProcessing = new Vue({\n name: 'Processing'\n});\n\nexport const eventModalWallet = new Vue({\n name: 'ModalWallet'\n});\n\nexport const eventModalConnect = new Vue({\n name: 'ModalConnect'\n});\n\nexport const eventModalResult = new Vue({\n name: 'ModalResult'\n});\n","import { ICardGacha, IEggs, IBoxGacha } from './interfaces';\nexport const MAX_GAS_FEE = process.env.MAX_GAS_FEE || 400000;\nexport const ALLOWANCE_MAX = process.env.ALLOWANCE_MAX?.toString();\nexport const WEB3_TIME_LIMIT = process.env.WEB3_TIME_LIMIT || 31536000;\nexport const WC_PROJECT_ID: string = process.env.WC_ID?.toString() || '1584f6cce01e488dc9e8cdb557ee466c';\nexport const SMALL_WIDTH = 960;\nimport metaPages from '@/meta-seo.json';\nexport const META_PAGES = metaPages;\nexport const CONTRACT_NAME = {\n MIGRATION: 'MIGRATION',\n BSC_MIGRATION: 'BSC_MIGRATION',\n KAI_MIGRATION: 'KAI_MIGRATION',\n BSC_PET_V1: 'BSC_PET_V1',\n BSC_PET_V2: 'BSC_PET_V2',\n KAI_PET_V1: 'KAI_PET_V1',\n KAI_PET_V2: 'KAI_PET_V2',\n FAKE_PET_V1: 'FAKE_PET_V1',\n FAKE_PET_V2: 'FAKE_PET_V2',\n CLAIM: 'CLAIM',\n BSC_CLAIM: 'BSC_CLAIM',\n KAI_CLAIM: 'KAI_CLAIM',\n DEV_KAI_CLAIM: 'DEV_KAI_CLAIM',\n DEV_LUCKYBOX: 'DEV_LUCKYBOX',\n LUCKYBOX: 'LUCKYBOX'\n};\nexport const DPET_SPIRIT = 'DPET_SPIRIT';\n\nexport const STORAGE_WC_KEY = 'WALLET_CONNECT_TYPE';\n\nexport const WALLET_TYPE = {\n metamask: 'metamask',\n walletconnect: 'walletconnect'\n};\n\nexport const ICON_CONNECT_WALLET = {\n metamask: require('@/assets/img/icons/icon-metamask.svg'),\n walletconnect: require('@/assets/img/icons/icon-walletconnect.png')\n};\n\nexport const ICON_NETWORK: Record = {\n bsc: require('@/assets/img/icons/bsc.svg'),\n kai: require('@/assets/img/icons/kai.svg'),\n eth: require('@/assets/img/icons/eth.svg')\n};\n\nexport const EGGS: IEggs[] = [\n {\n rarity: 0,\n name: 'Missed',\n class: 'card-none',\n img: require('@/assets/luckybox/egg_none.png'),\n bg: require('@/assets/luckybox/panel_none.png')\n },\n {\n rarity: 1,\n name: 'Common',\n class: 'card-common',\n img: require('@/assets/luckybox/egg_common.png'),\n bg: require('@/assets/luckybox/panel_common.png')\n },\n {\n rarity: 2,\n name: 'Rare',\n class: 'card-rare',\n img: require('@/assets/luckybox/egg_rare.png'),\n bg: require('@/assets/luckybox/panel_rare.png')\n },\n {\n rarity: 3,\n name: 'Elite',\n class: 'card-elite',\n img: require('@/assets/luckybox/egg_elite.png'),\n bg: require('@/assets/luckybox/panel_elite.png')\n },\n {\n rarity: 4,\n name: 'Epic',\n class: 'card-epic',\n img: require('@/assets/luckybox/egg_epic.png'),\n bg: require('@/assets/luckybox/panel_epic.png')\n }\n];\n\nexport const LUCKYBOX: IBoxGacha[] = [\n {\n id: 1,\n rarity: 1,\n name: 'Basic Chest',\n price: 1,\n class: 'chest-common',\n img: require('@/assets/luckybox/chest_1.png'),\n bg: require('@/assets/luckybox/panel_chest_1.png'),\n src_mp4: require('@/assets/video/chest_basic.mp4'),\n src_webm: require('@/assets/video/chest_basic.webm'),\n ratio: [\n { name: 'Miss', percent: 95 },\n { name: 'Common', percent: 5 },\n { name: 'Rare', percent: 0 },\n { name: 'Elite', percent: 0 },\n { name: 'Epic', percent: 0 }\n ]\n },\n {\n id: 2,\n rarity: 2,\n name: 'Standard Chest',\n price: 20,\n class: 'chest-rare',\n img: require('@/assets/luckybox/chest_2.png'),\n bg: require('@/assets/luckybox/panel_chest_2.png'),\n src_mp4: require('@/assets/video/chest_standard.mp4'),\n src_webm: require('@/assets/video/chest_standard.webm'),\n ratio: [\n { name: 'Miss', percent: 9 },\n { name: 'Common', percent: 90 },\n { name: 'Rare', percent: 1 },\n { name: 'Elite', percent: 0 },\n { name: 'Epic', percent: 0 }\n ]\n },\n {\n id: 3,\n rarity: 3,\n name: 'Enhance Chest',\n price: 100,\n class: 'chest-elite',\n img: require('@/assets/luckybox/chest_3.png'),\n bg: require('@/assets/luckybox/panel_chest_3.png'),\n src_mp4: require('@/assets/video/chest_enhance.mp4'),\n src_webm: require('@/assets/video/chest_enhance.webm'),\n ratio: [\n { name: 'Miss', percent: 0 },\n { name: 'Common', percent: 10 },\n { name: 'Rare', percent: 80 },\n { name: 'Elite', percent: 10 },\n { name: 'Epic', percent: 0 }\n ]\n },\n {\n id: 4,\n rarity: 4,\n name: 'Premium Chest',\n price: 500,\n class: 'chest-epic',\n img: require('@/assets/luckybox/chest_4.png'),\n bg: require('@/assets/luckybox/panel_chest_4.png'),\n src_mp4: require('@/assets/video/chest_premium.mp4'),\n src_webm: require('@/assets/video/chest_premium.webm'),\n ratio: [\n { name: 'Miss', percent: 0 },\n { name: 'Common', percent: 0 },\n { name: 'Rare', percent: 40 },\n { name: 'Elite', percent: 50 },\n { name: 'Epic', percent: 10 }\n ]\n }\n];\n\nexport const BUY_ONE_TIME: ICardGacha[] = [\n {\n id: 1,\n rarity: EGGS[1].rarity,\n name: 'Common Egg',\n price: 1,\n class: EGGS[1].class,\n img: EGGS[1].img,\n bg: EGGS[1].bg\n },\n {\n id: 2,\n rarity: EGGS[2].rarity,\n name: 'Rare Egg',\n price: 100,\n class: EGGS[2].class,\n img: EGGS[2].img,\n bg: EGGS[2].bg\n },\n {\n id: 3,\n rarity: EGGS[3].rarity,\n name: 'Elite Egg',\n price: 500,\n class: EGGS[3].class,\n img: EGGS[3].img,\n bg: EGGS[3].bg\n },\n {\n id: 4,\n rarity: EGGS[4].rarity,\n name: 'Epic Egg',\n price: 2500,\n class: EGGS[4].class,\n img: EGGS[4].img,\n bg: EGGS[4].bg\n }\n];\nexport const ICON_ELEMENTAL = [\n require('@/assets/luckybox/element_earth.png'),\n require('@/assets/luckybox/element_water.png'),\n require('@/assets/luckybox/element_wind.png'),\n require('@/assets/luckybox/element_fire.png')\n];","import { INetWork, IContract } from './interfaces';\n\nexport const NETWORKS: Record = require('~/configs/networks.json');\nexport const CONTRACT_LIST: Record = require('~/configs/contactList.json');\nconst ABI_BSC_PET_V1: object[] = require('~/configs/abis/bsc-pet-v1.json');\nconst ABI_BSC_PET_V2: object[] = require('~/configs/abis/bsc-pet-v2.json');\nconst ABI_KAI_PET_V1: object[] = require('~/configs/abis/kai-pet-v1.json');\nconst ABI_KAI_PET_V2: object[] = require('~/configs/abis/kai-pet-v2.json');\nconst ABI_FAKE_PET_V1: object[] = require('~/configs/abis/fake-pet-v1.json');\nconst ABI_FAKE_PET_V2: object[] = require('~/configs/abis/fake-pet-v2.json');\nconst ABI_MIGRATION: object[] = require('~/configs/abis/migration.json');\nconst ABI_CLAIM: object[] = require('~/configs/abis/RecyclingCore.json');\nconst ABI_LUCKYBOX: object[] = require('~/configs/abis/luckybox.json');\n\nexport const ABI: Record = {\n BSC_PET_V1: ABI_BSC_PET_V1,\n BSC_PET_V2: ABI_BSC_PET_V2,\n KAI_PET_V1: ABI_KAI_PET_V1,\n KAI_PET_V2: ABI_KAI_PET_V2,\n FAKE_PET_V1: ABI_FAKE_PET_V1,\n FAKE_PET_V2: ABI_FAKE_PET_V2,\n MIGRATION: ABI_MIGRATION,\n CLAIM: ABI_CLAIM,\n BSC_MIGRATION: ABI_MIGRATION,\n KAI_MIGRATION: ABI_MIGRATION,\n BSC_CLAIM: ABI_CLAIM,\n KAI_CLAIM: ABI_CLAIM,\n DEV_KAI_CLAIM: ABI_CLAIM,\n DEV_LUCKYBOX: ABI_LUCKYBOX,\n LUCKYBOX: ABI_LUCKYBOX\n};\n\n// const BSC_CLAIM = {\n// '0xea9cf0222f1c775ed7bd05518b5fb0ea5456ea88': {\n// contractName: 'BSC_CLAIM',\n// network: 56,\n// addr: '0xea9cf0222f1c775ed7bd05518b5fb0ea5456ea88'\n// }\n// };\n\nexport const isDevelopment = process.env.NODE_ENV === 'development';\n\nexport const smcMode: string = process.env.SMC_MODE?.toString() as string;\nexport const supportChains: Record = {\n testnet: [NETWORKS['56'], NETWORKS['24']],\n mainnet: [NETWORKS['56'], NETWORKS['24']]\n};\n\nexport const NETWORK_CLAIM = 24;\nexport const NETWORK_MIGRATION = 56;\nexport const NETWORK_LUCKYBOX = 24;\n\nconst ENDPOINT_MIGRATION: string = process.env.ENDPOINT_MIGRATION?.toString() as string;\nconst API_SCAN_DPET: string = process.env.API_SCAN_DPET?.toString() as string;\nexport const configApi = {\n getDpetNFT: API_SCAN_DPET,\n migration: ENDPOINT_MIGRATION\n};\n","//Interface\nexport interface InterfaceWeb3 {\n isLogin: boolean;\n isWalletConnect: boolean;\n chainId: number;\n account: string;\n}\n//state\nexport const initialState = (): InterfaceWeb3 => ({\n isLogin: false,\n isWalletConnect: false,\n account: '',\n chainId: 0,\n});\n\nexport default initialState;\n","import { GetterTree } from 'vuex';\nimport { InterfaceWeb3 } from './state';\n\nconst getters: GetterTree = {\n getWalletConnect() {\n // @ts-ignore\n return $nuxt.$web3;\n },\n getIsWalletConnect(state) {\n return state.isWalletConnect;\n },\n getWalletAddress(state) {\n if (state.isLogin) return state.account;\n return null;\n },\n getChainId(state) {\n return state.chainId;\n },\n getConnected(state) {\n return state.isLogin;\n }\n};\n\nexport default getters;\n","import { MutationTree } from 'vuex';\nimport { InterfaceWeb3 } from './state';\n\nconst mutations: MutationTree = {\n setAccount(state, account) {\n if (state.account !== account) {\n if (account) account = account.toLocaleLowerCase();\n state.account = account;\n state.isLogin = true;\n }\n },\n setChainId(state, chainId) {\n chainId = parseInt(chainId);\n if (state.chainId !== chainId) {\n state.chainId = chainId;\n }\n },\n\n resetState(state) {\n state.isLogin = false;\n state.account = '';\n state.chainId = 0;\n },\n};\n\nexport default mutations;\n","import { ActionTree } from 'vuex';\nimport Web3 from 'web3';\nimport { InterfaceWeb3, initialState } from './state';\nimport {\n shortenWallet,\n w3FromWei,\n w3toWei,\n getRPCs,\n getConfigChain,\n isChainSupport,\n showLog,\n getChainSupport,\n getAbiByContract,\n getContractByName,\n getContractByAddress,\n getContractMigration,\n getContractClaim\n} from '~/libs/helper';\nimport { NETWORK_CLAIM } from '~/libs/config';\nimport { ALLOWANCE_MAX, MAX_GAS_FEE, WEB3_TIME_LIMIT, STORAGE_WC_KEY, WALLET_TYPE } from '~/libs/const';\nimport { INetWork, IContract, Unit } from '~/libs/interfaces';\ninterface IConnect {\n clearCachedProvider: boolean;\n isWalletConnect: boolean;\n}\nconst actions: ActionTree = {\n async web3Connect({ state, commit, dispatch, getters }, { clearCachedProvider, isWalletConnect }: IConnect) {\n showLog('__________web3Connect___________');\n const wc = await getters.getWalletConnect;\n const web3 = await wc.connect(\n clearCachedProvider,\n isWalletConnect,\n (chainId: string) => dispatch('onChainChanged', chainId),\n (accounts: string[]) => dispatch('onAccountsChanged', accounts)\n );\n if (!web3) return null;\n const chainId: number = await wc.getChainId();\n const isCheck = await dispatch('checkNetWorkSupport', chainId);\n\n if (isCheck) {\n const account = await wc.getAccount();\n if (account) {\n commit('setAccount', account);\n commit('setChainId', chainId);\n }\n wc.removeModal();\n return web3;\n } else {\n // dispatch('disconnect');\n return null;\n }\n },\n\n async onChainChanged({ commit, dispatch, getters, state }, chainId: string) {\n const numberChain = parseInt(chainId, 16);\n if (!dispatch('checkNetWorkSupport', numberChain)) {\n dispatch('disconnect');\n } else {\n commit('setChainId', numberChain);\n }\n },\n\n onAccountsChanged({ commit, dispatch }, accounts: string[]) {\n showLog('onAccountsChanged', accounts);\n if (accounts.length > 0) commit('setAccount', accounts[0]);\n else dispatch('disconnect');\n },\n\n connect({ state, commit, dispatch, getters }, clearCachedProvider: boolean = false, isWalletConnect: boolean = false): Promise {\n return new Promise(async (resolve, reject) => {\n try {\n if (clearCachedProvider) {\n await dispatch('disconnect');\n }\n const wc = getters.getWalletConnect;\n const cacheConnect = window.localStorage.getItem(STORAGE_WC_KEY);\n if (cacheConnect === WALLET_TYPE.walletconnect) isWalletConnect = true;\n\n if (wc.isConnected || cacheConnect) {\n const web3 = await dispatch('web3Connect', {\n clearCachedProvider: false,\n isWalletConnect\n });\n resolve(web3);\n } else {\n // @ts-ignore\n const isMobile = this.$device.isMobile;\n const isMetamask = window.ethereum !== undefined;\n if (isMobile) {\n if (isMetamask) {\n const web3 = await dispatch('web3Connect', {\n clearCachedProvider: true,\n isWalletConnect: false\n });\n if (web3) resolve(web3);\n // else resolve(null);\n } else {\n const web3 = await dispatch('web3Connect', {\n clearCachedProvider: true,\n isWalletConnect: true\n });\n if (web3) resolve(web3);\n // else resolve(null);\n }\n resolve(null);\n } else {\n // @ts-ignore\n this.$modalConnect.show({\n onResolve: async (web3: any) => {\n resolve(web3);\n },\n onReject: () => resolve(null)\n });\n }\n }\n } catch (error) {\n showLog('connect error', error);\n resolve(null);\n }\n });\n },\n\n async disconnect({ getters, commit }): Promise {\n const web3haldle = await getters.getWalletConnect;\n web3haldle.disconnect();\n commit('resetState');\n },\n\n checkMetamaskUnlock({dispatch, getters}){\n return new Promise( async (resolve) => {\n try {\n const wc = await getters.getWalletConnect;\n if (!wc.isWalletConnect) {\n const provider = wc.getWeb3Provider();\n const web3 = wc.getWeb3();\n console.log('provider', provider)\n console.log('web3', web3)\n resolve(true);\n } else {\n resolve(true);\n }\n } catch (error) {\n resolve(false);\n }\n })\n },\n\n checkNetWorkSupport({ dispatch }, chainId: number) {\n return new Promise((resolve, reject) => {\n try {\n if (!isChainSupport(chainId)) {\n const supports = getChainSupport();\n // @ts-ignore\n this.$dialogMsg.show({\n popupType: 'switch_chain',\n title: 'Notification !!!',\n message: `We do not yet support the current network in your wallet. Please switch network: ${supports.map((id: number) => {\n const network = getConfigChain(id);\n return ' \\n' + network?.chainName;\n })}`,\n persistent: true,\n buttons: [\n {\n btnText: 'Switch Network',\n btnCall: async () => {\n resolve(await dispatch('metamaskSwitchChain', supports[0]));\n },\n isPrimary: true\n },\n {\n btnText: 'Cancel',\n btnCall: () => {\n dispatch('disconnect');\n resolve(false);\n }\n }\n ]\n });\n } else {\n resolve(true);\n }\n } catch (error) {\n showLog('checkNetWorkSupport', error);\n resolve(false);\n }\n });\n },\n\n checkNetWorkClaim({ state, dispatch }) {\n return new Promise((resolve, reject) => {\n try {\n const chainId: number = state.chainId;\n if (chainId !== NETWORK_CLAIM) {\n const network = getConfigChain(NETWORK_CLAIM);\n // @ts-ignore\n this.$dialogMsg.show({\n popupType: 'switch_chain',\n title: 'Notification !!!',\n message: `We do not yet support the current network in your wallet. Please switch network: ${network?.chainName}`,\n persistent: true,\n buttons: [\n {\n btnText: 'Switch Network',\n btnCall: async () => {\n resolve(await dispatch('metamaskSwitchChain', NETWORK_CLAIM));\n },\n isPrimary: true\n },\n {\n btnText: 'Cancel',\n btnCall: () => resolve(false)\n }\n ]\n });\n } else {\n resolve(true);\n }\n } catch (error) {\n showLog('checkNetWorkSupport', error);\n resolve(false);\n }\n });\n },\n\n async metamaskSwitchChain({ getters, state, dispatch }, networkId) {\n return new Promise(async resolve => {\n try {\n const wc = await getters.getWalletConnect;\n if (wc.isWalletConnect) {\n resolve(false);\n } else {\n // @ts-ignore\n this.$processing.start(`Please switch network to continue`);\n const provider = wc.getWeb3Provider();\n const chainId = `0x${networkId.toString(16)}`;\n await provider\n .request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId }]\n })\n .then(() => {\n setTimeout(() => {\n resolve(true);\n }, 500);\n })\n .catch(async (switchError: any) => {\n if (switchError?.code === 4902 || switchError.message.includes('wallet_addEthereumChain')) {\n resolve(await dispatch('metamaskAddNetWork'));\n } else {\n resolve(false);\n }\n });\n // @ts-ignore\n this.$processing.finish();\n }\n } catch (error: any) {\n // @ts-ignore\n this.$processing.finish();\n resolve(false);\n }\n });\n },\n\n metamaskAddNetWork({ getters }, networkId: number) {\n return new Promise(async resolve => {\n try {\n const wc = await getters.getWalletConnect;\n const provider = wc.getWeb3Provider();\n const chainId = `0x${networkId.toString(16)}`;\n // @ts-ignore\n const chain = this.$helper.getConfigChain(networkId);\n const addChain = {\n chainId: chainId,\n chainName: chain.chainName,\n nativeCurrency: { name: chain.tokenName, symbol: chain.tokenName, decimals: chain.decimals },\n rpcUrls: [chain.rpcUrl],\n blockExplorerUrls: [chain.explorer]\n };\n await provider.request({\n method: 'wallet_addEthereumChain',\n params: [addChain]\n });\n setTimeout(() => {\n resolve(true);\n }, 500);\n } catch (error) {\n resolve(false);\n }\n });\n },\n\n async getSignature({ getters, dispatch }, dataString: string = ''): Promise {\n const web3haldle = await getters.getWalletConnect;\n\n // const network = getConfigChain();\n // const extraText = `.\\n If you have waited too long, check and switch network your wallet to ${network.chainName}`;\n\n // @ts-ignore\n this.$processing.start(`You have a request that needs to be signed to complete`);\n const signature = await web3haldle.personalSign(dataString);\n return signature;\n },\n\n getInstanceContract({ state, getters, dispatch }, addrContract: string) {\n return new Promise(async (resolve, reject) => {\n try {\n const abi = getAbiByContract(addrContract);\n const config = getContractByAddress(addrContract);\n const web3haldle = await getters.getWalletConnect;\n let web3;\n if (!state.isLogin) {\n const network = getConfigChain(config?.network as number);\n web3 = new Web3(new Web3.providers.HttpProvider(network.rpcUrl));\n } else {\n const chainId = state.chainId;\n if (chainId !== config.network) {\n const switchChain = await dispatch('metamaskSwitchChain', config.network);\n if (!switchChain) reject({});\n }\n web3 = web3haldle.getWeb3();\n if(!web3){\n web3 = await dispatch('connect');\n }\n }\n const contract = new web3.eth.Contract(abi, addrContract);\n resolve(contract);\n } catch (error) {\n reject(error);\n }\n });\n },\n approveToken({ state, dispatch, getters }, { tokenAddress, tokenId, exchangeAdress }) {\n return new Promise(async (resolve, reject) => {\n try {\n let isApproved = false;\n let addrApproved = '';\n const smc = getContractByAddress(tokenAddress);\n const web3haldle = await getters.getWalletConnect;\n let web3 = web3haldle.getWeb3();\n if (!state.isLogin) web3 = await dispatch('connect');\n if (web3) {\n // @ts-ignore\n this.$processing.start(`First you will need to allow access to and transfer of your token`);\n const contract: any = await dispatch('getInstanceContract', tokenAddress);\n\n if (smc.contractName.endsWith('PET_V1')) {\n addrApproved = await contract.methods.PetIndexToApproved(tokenId).call();\n isApproved = addrApproved.toLowerCase() === exchangeAdress.toLowerCase();\n } else if (smc.contractName.endsWith('PET_V2')) {\n addrApproved = await contract.methods.getApproved(tokenId).call();\n isApproved = addrApproved.toLowerCase() === exchangeAdress.toLowerCase();\n }\n if (isApproved) {\n // @ts-ignore\n this.$processing.finish();\n resolve(isApproved);\n } else {\n const approve = await contract.methods.approve(exchangeAdress, tokenId).send({ from: state.account, gas: MAX_GAS_FEE });\n // @ts-ignore\n this.$processing.finish();\n resolve(approve?.status);\n }\n } else {\n resolve(false);\n }\n } catch (error: any) {\n if (error?.code === -32603) {\n // @ts-ignore\n $nuxt.$toast.error('Approval failed!!!\\n Please change another RPC RPC in Metamask');\n }\n resolve(false);\n }\n });\n }\n};\nexport default actions;\n","export interface ButtonState {\n title: string;\n action: any; //0: close, 2: Wallet Info, string: route\n}\nexport interface IMigrationState {\n nfts: any[];\n nftAvailable: any[];\n nftSubmited: any[];\n listV1: any[];\n listV2: any[];\n nextCursor: string;\n season: number;\n isReady: boolean;\n timeStartMigration: number;\n timeEndMigration: number;\n timeStartClaim: number;\n timeEndClaim: number;\n allMigrated: number;\n v1Migrated: number;\n v2Migrated: number;\n claimed: number;\n totalCredit: number;\n storage: object[];\n claimedCount: number;\n pendingTx: string | '';\n totalCreditV1: number;\n totalCreditV2: number;\n totalCreditSpirit: number;\n creditAvailable: number;\n dpetSpirit: number[];\n spiritMigrated: number;\n}\n\nconst state = (): IMigrationState => ({\n nfts: [],\n nftAvailable: [],\n nftSubmited: [],\n nextCursor: '',\n listV1: [],\n listV2: [],\n season: 1,\n isReady: false,\n timeStartMigration: 0,\n timeEndMigration: 0,\n allMigrated: 0,\n v1Migrated: 0,\n v2Migrated: 0,\n claimed: 0,\n totalCredit: 0,\n storage: [],\n claimedCount: 0,\n pendingTx: '',\n totalCreditV1: 0,\n totalCreditV2: 0,\n totalCreditSpirit: 0,\n creditAvailable: 0,\n dpetSpirit: [0, 0, 0, 0, 0],\n spiritMigrated: 0,\n timeStartClaim: 0,\n timeEndClaim: 0\n});\n\nexport default state;\n","import { GetterTree } from 'vuex';\nimport { ButtonState, IMigrationState } from './state';\nimport { IDpetSpirit } from '~/libs/interfaces';\nconst getters: GetterTree = {\n // getListNFT(state) {\n // return state.nftAvailable;\n // },\n getListNFT(state) {\n return state.nfts;\n },\n getListNFTSubmited(state) {\n return state.nftSubmited;\n },\n getListV1(state) {\n return state.listV1;\n },\n getListV2(state) {\n return state.listV2;\n },\n getIsReady(state) {\n return state.isReady;\n },\n getRangeTime(state) {\n return {\n from: state.timeStartMigration,\n to: state.timeEndMigration\n };\n },\n getRangeTimeClaim(state) {\n return {\n from: state.timeStartClaim,\n to: state.timeEndClaim\n };\n },\n getTotalCredit(state) {\n return state.totalCredit;\n },\n getClaimed(state) {\n return state.claimed;\n },\n getNFTMigrated(state) {\n return state.nftSubmited;\n },\n getV1Migrated(state) {\n return state.v1Migrated;\n },\n getV2Migrated(state) {\n return state.v2Migrated;\n },\n getSeason(state): number {\n return state.season;\n },\n getTxPending(state): string {\n return state.pendingTx;\n },\n getClaimedCount(state): number {\n return state.claimedCount;\n },\n getUserInfo(state) {\n return {\n claimed: state.claimed,\n claimedCount: state.claimedCount,\n totalCredit: state.totalCredit,\n totalCreditV1: state.totalCreditV1,\n totalCreditV2: state.totalCreditV2,\n totalCreditSpirit: state.totalCreditSpirit,\n creditAvailable: state.creditAvailable,\n spiritMigrated: state.spiritMigrated,\n pendingTx: state.pendingTx\n };\n },\n getSpirit(state): IDpetSpirit {\n return {\n level1: state.dpetSpirit[1] || 0,\n level2: state.dpetSpirit[2] || 0,\n level3: state.dpetSpirit[3] || 0,\n level4: state.dpetSpirit[4] || 0,\n level5: state.dpetSpirit[5] || 0\n };\n },\n getTotalSpirit(state): number {\n const total = state.dpetSpirit.reduce((acc, cur) => acc + cur, 0);\n return total;\n },\n getSpiritMigrated(state): number {\n return state.spiritMigrated;\n }\n};\n\nexport default getters;\n","import { MutationTree } from 'vuex';\nimport { ButtonState, IMigrationState } from './state';\nimport { IPet } from '~/libs/interfaces';\n\nconst mutations: MutationTree = {\n setNftProfile(state, data) {\n // @ts-ignore\n const ids = new Set(state.nfts.map(d => d?.tokenId));\n // @ts-ignore\n const merged = [...state.nfts, ...data.filter(d => !ids.has(d?.tokenId))];\n // @ts-ignore\n state.nfts = merged;\n },\n\n setNftSubmited(state, data) {\n const { submitedArray, remainingArray } = state.nfts.reduce(\n ({ submitedArray, remainingArray }, item) => {\n if (data.some((mg: IPet) => mg.tokenId === parseInt(item.tokenId))) {\n submitedArray.push(item);\n } else {\n remainingArray.push(item);\n }\n return { submitedArray, remainingArray };\n },\n { submitedArray: [], remainingArray: [] }\n );\n state.nftSubmited = submitedArray;\n state.nfts = remainingArray;\n },\n\n setNftV1(state, data) {\n // @ts-ignore\n const ids = new Set(state.listV1.map(d => d?.tokenId));\n // @ts-ignore\n const merged = [...state.listV1, ...data.filter((d: any) => !ids.has(d?.tokenId))];\n // @ts-ignore\n state.listV1 = merged;\n },\n\n setNftV2(state, data) {\n // @ts-ignore\n const ids = new Set(state.listV2.map(d => d?.tokenId));\n // @ts-ignore\n const merged = [...state.listV2, ...data.filter((d: any) => !ids.has(d?.tokenId))];\n // @ts-ignore\n state.listV2 = merged;\n },\n setCursorNext(state, data) {\n state.nextCursor = data;\n },\n resetListNFT(state) {\n state.nfts = [];\n state.nftAvailable = [];\n state.nftSubmited = [];\n state.listV1 = [];\n state.listV2 = [];\n state.nextCursor = '';\n },\n setSeason(state, season) {\n state.season = season;\n },\n setIsReady(state, isReady) {\n state.isReady = isReady;\n },\n setTimeMigration(state, { from, to }: { from: number; to: number }) {\n state.timeStartMigration = from;\n state.timeEndMigration = to;\n },\n setTimeClaim(state, { from, to }: { from: number; to: number }) {\n state.timeStartClaim = from;\n state.timeEndClaim = to;\n },\n setClaimed(state, claimed) {\n state.claimed = claimed;\n },\n setAllMigrated(state, total) {\n state.allMigrated = total;\n },\n setV1Migrated(state, v1Migrated) {\n state.v1Migrated = v1Migrated;\n },\n setV2Migrated(state, v2Migrated) {\n state.v2Migrated = v2Migrated;\n },\n setTotalCredit(state, total) {\n state.totalCredit = total;\n },\n setNFTMigrated(state, data) {\n state.nftSubmited = data;\n },\n setStorage(state, data) {\n state.storage = data;\n },\n setTxPending(state, txPending) {\n state.pendingTx = txPending;\n },\n setClaimedCount(state, claimedCount) {\n state.claimedCount = claimedCount;\n },\n setInfoUser(state, payload) {\n const { claimed, pending, storage, setClaimedCount } = payload;\n state.claimed = claimed;\n state.pendingTx = pending;\n state.storage = storage;\n state.claimedCount = setClaimedCount;\n },\n setInfoTotal(state, payload) {\n const { claimed, totalCredit, totalCreditV1, totalCreditV2, totalCreditSpirit, spiritMigrated, totalPetV1, totalPetV2 } = payload;\n state.totalCredit = totalCredit;\n state.totalCreditV1 = totalCreditV1;\n state.totalCreditV2 = totalCreditV2;\n state.totalCreditSpirit = totalCreditSpirit;\n const a = totalCredit - claimed;\n state.creditAvailable = a < 0 ? 0 : a;\n state.spiritMigrated = spiritMigrated;\n state.v1Migrated = totalPetV1;\n state.v2Migrated = totalPetV2;\n },\n setDpetSpirit(state, dpetSpirit) {\n state.dpetSpirit = dpetSpirit;\n }\n};\n\nexport default mutations;\n","import { ActionTree } from 'vuex';\nimport Web3 from 'web3';\nimport { ButtonState, IMigrationState } from './state';\nimport { CONTRACT_LIST, configApi, NETWORK_CLAIM } from '~/libs/config';\nimport { getConfigChain, getContractByAddress, getContractByName, getContractMigration, getContractClaim, getAbiByContract } from '~/libs/helper';\nimport { CONTRACT_NAME, MAX_GAS_FEE, DPET_SPIRIT } from '~/libs/const';\nimport { IContract, IPet, IResultStorage } from '~/libs/interfaces';\n//0x3Ff1E44339381B0cafee6c69d8f2A5EB50873a9f bsc\n// 0x4E26738f6A88D9E48014cDB0121270a183C460C2 kai\n\nconst actions: ActionTree = {\n resetListNFT({ commit }) {\n commit('resetListNFT');\n },\n\n // async getDpetNFTs({ state, dispatch, commit, rootState }) {\n // return new Promise(async (resolve, reject) => {\n // try {\n // const isConnected = rootState.web3.isLogin;\n // if (isConnected) {\n // const account = rootState.web3.account;\n // const contract = getContractByName(CONTRACT_NAME.FAKE_PET_V2) as IContract;\n // const contractInstance = await dispatch('web3/getInstanceContract', contract.addr, { root: true });\n // const balance = await contractInstance.methods.balanceOf(account).call();\n\n // // @ts-ignore\n // let data: IPet[] = [];\n // if (parseInt(balance) > 0) {\n // for (let i = 0; i < balance; i++) {\n // const tokenId = await contractInstance.methods.tokenOfOwnerByIndex(account, i).call();\n // data.push({\n // tokenId,\n // name: `Pet #${tokenId}`,\n // image: ``,\n // version: 2,\n // chain: 'eth',\n // addr: contract.addr\n // });\n // }\n // commit('setNftProfile', data);\n // } else {\n // commit('resetListNFT');\n // }\n // }\n // resolve({ success: true });\n // } catch (error) {\n // reject(error);\n // }\n // });\n // },\n\n async getDpetNFTs({ state, dispatch, commit, rootState }) {\n return new Promise(async (resolve, reject) => {\n try {\n const isConnected = rootState.web3.isLogin;\n if (isConnected) {\n const chainId = rootState.web3.chainId;\n const address = rootState.web3.account;\n // const address = '0x3Ff1E44339381B0cafee6c69d8f2A5EB50873a9f'; //bsc\n // const address = '0x9De88D5745A04DfCd07dbB3e120dd928f8afaA85'; //kai\n const network = getConfigChain(chainId);\n const chain = network?.chainIcon || 'bsc';\n const data = await dispatch('fetchPET', {\n address,\n chainName: chain,\n cursor: state.nextCursor\n });\n commit('setNftProfile', data);\n if (data.length > 49) {\n await dispatch('getDpetNFTs');\n } else {\n await dispatch('getSubmited');\n }\n } else {\n commit('resetListNFT');\n }\n resolve({ success: true });\n } catch (error) {\n reject(error);\n }\n });\n },\n\n async fetchPET({ state, dispatch, commit }, { address, cursor, chainName }) {\n return new Promise((resolve, reject) => {\n this.$axios\n .$post(`${configApi.getDpetNFT}/${address.toLocaleLowerCase()}`, {\n chain: chainName,\n mini: true,\n cursor\n })\n .then(async res => {\n if (res?.data.length > 49) {\n commit('setCursorNext', res?.nextCursor);\n } else {\n commit('setCursorNext', '');\n }\n const data = await Promise.all(\n res?.data.map((item: { tokenId: number; version: number }) => {\n const { tokenId, version } = item;\n let addr;\n if (chainName === 'bsc') {\n if (version === 1) {\n const contract = getContractByName(CONTRACT_NAME.BSC_PET_V1) as IContract;\n addr = contract.addr;\n } else {\n const contract = getContractByName(CONTRACT_NAME.BSC_PET_V2) as IContract;\n addr = contract.addr;\n }\n }\n if (chainName === 'kai') {\n if (version === 1) {\n const contract = getContractByName(CONTRACT_NAME.KAI_PET_V1) as IContract;\n addr = contract.addr;\n } else {\n const contract = getContractByName(CONTRACT_NAME.KAI_PET_V2) as IContract;\n addr = contract.addr;\n }\n }\n return dispatch('parseDetailPet', { tokenId, chainName, addr, version });\n })\n );\n resolve(data);\n })\n .catch(error => resolve([]));\n });\n },\n\n ////////New\n checkIsReady({ commit, dispatch, rootState, rootGetters }) {\n return new Promise(async resolve => {\n try {\n // const smc = getContractByName(CONTRACT_NAME.MIGRATION);\n const chainId = rootState.web3.chainId;\n const smc = getContractMigration(chainId);\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const res: boolean = await contractInstance.methods.isReady().call();\n commit('setIsReady', res);\n resolve(res);\n } catch (error) {\n resolve(false);\n }\n });\n },\n async getTimeClaim({ state, commit, dispatch, rootState, rootGetters }) {\n try {\n const chainId: number = rootState.web3.chainId;\n const smc = getContractClaim(chainId);\n if (smc && smc !== undefined) {\n const abi = getAbiByContract(smc?.addr);\n const network = getConfigChain(smc?.network as number);\n const web3: any = new Web3(new Web3.providers.HttpProvider(network.rpcUrl));\n const contractInstance = new web3.eth.Contract(abi, smc?.addr);\n // const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const rangeTimeClaim = await contractInstance.methods.getTime().call();\n return rangeTimeClaim;\n }\n } catch (error) {\n return [0, 0];\n }\n },\n async getStateMigration({ commit, dispatch, rootState }) {\n try {\n // const smc = getContractByName(CONTRACT_NAME.MIGRATION);\n const chainId = rootState.web3.chainId;\n const smc = getContractMigration(chainId);\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const [season, timeStart, timeEnd, total, timeClaim]: number[] = await Promise.all([\n contractInstance.methods.season().call(),\n contractInstance.methods.timeStartMigration().call(),\n contractInstance.methods.timeEndMigration().call(),\n contractInstance.methods.totalMigration().call(),\n dispatch('getTimeClaim')\n ]);\n commit('setSeason', season);\n commit('setTimeMigration', { from: timeStart, to: timeEnd });\n commit('setAllMigrated', total);\n //@ts-ignore\n commit('setTimeClaim', { from: timeClaim[0], to: timeClaim[1] });\n } catch (error) {\n // console.log('getStateMigration', error);\n }\n },\n checkTokenExists({ dispatch, rootState }, { tokenId, isV1 }: { tokenId: number; isV1: boolean | false }) {\n return new Promise(async resolve => {\n try {\n if (tokenId > 0) {\n // const smc = getContractByName(CONTRACT_NAME.MIGRATION);\n const chainId = rootState.web3.chainId;\n const smc = getContractMigration(chainId);\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const res: boolean = await contractInstance.methods.checkTokenExists(tokenId, isV1).call();\n resolve(res);\n } else {\n resolve(false);\n }\n } catch (error) {\n resolve(false);\n }\n });\n },\n getMigrtionInfoByAddress({ dispatch, commit, rootState }) {\n return new Promise(async (resolve, reject) => {\n try {\n if (!rootState.web3.isLogin) await dispatch('web3/connect', null, { root: true });\n const account = rootState.web3.account;\n if (account) {\n // const smc = getContractByName(CONTRACT_NAME.MIGRATION);\n const chainId = rootState.web3.chainId;\n const smc = getContractMigration(chainId);\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const res: any = await contractInstance.methods.migrationInfo(account).call();\n // commit('setV1Migrated', res.totalv1);\n // commit('setV2Migrated', res.totalv2);\n resolve({ totalv1: parseInt(res.totalv1), totalv2: parseInt(res.totalv2) });\n }\n } catch (error) {\n resolve({ totalv1: 0, totalv2: 0 });\n }\n });\n },\n getPetMigrated({ state, commit, dispatch, rootState }) {\n return new Promise(async (resolve, reject) => {\n try {\n if (!rootState.web3.isLogin) await dispatch('web3/connect', null, { root: true });\n const account = rootState.web3.account;\n if (account) {\n // const smc = getContractByName(CONTRACT_NAME.MIGRATION);\n const chainId = rootState.web3.chainId;\n const smc = getContractMigration(chainId);\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const v1: string = await contractInstance.methods.v1().call();\n const v2: string = await contractInstance.methods.v2().call();\n const res: { idsPetV1: number[]; idsPetV2: number[] } = await contractInstance.methods.getPetMigrated(account).call();\n\n const ids = res.idsPetV1.concat(res.idsPetV2);\n\n const petMigrated = await Promise.all([\n ...res.idsPetV1.map((tokenId: number) => {\n const contract = getContractByAddress(v1.toLowerCase());\n const network = getConfigChain(contract.network);\n\n return dispatch('parseDetailPet', { tokenId, chainName: network.chainIcon, addr: contract.addr, version: 1 });\n }),\n ...res.idsPetV2.map((tokenId: number) => {\n const contract = getContractByAddress(v2.toLowerCase());\n const network = getConfigChain(contract.network);\n return dispatch('parseDetailPet', { tokenId, chainName: network.chainIcon, addr: contract.addr, version: 2 });\n })\n ]);\n\n commit('setNFTMigrated', petMigrated);\n resolve(petMigrated);\n }\n } catch (error) {\n resolve([]);\n }\n });\n },\n async forceUpdateData({ dispatch, commit, state, rootState }) {\n try {\n if (rootState.web3.isLogin) {\n const address = rootState.web3.account;\n const season = state.season;\n const amount = 99999;\n const petV1KAI = getContractByName(CONTRACT_NAME.KAI_PET_V1) as IContract;\n const petV2KAI = getContractByName(CONTRACT_NAME.KAI_PET_V2) as IContract;\n const petV1BSC = getContractByName(CONTRACT_NAME.BSC_PET_V1) as IContract;\n const petV2BSC = getContractByName(CONTRACT_NAME.BSC_PET_V2) as IContract;\n await Promise.all([\n dispatch('postUpdateSubgraph', { address, network: petV1KAI.network.toString(), nft: petV1KAI.addr, season, amount }),\n dispatch('postUpdateSubgraph', { address, network: petV2KAI.network.toString(), nft: petV2KAI.addr, season, amount }),\n dispatch('postUpdateSubgraph', { address, network: petV1BSC.network.toString(), nft: petV1BSC.addr, season, amount }),\n dispatch('postUpdateSubgraph', { address, network: petV2BSC.network.toString(), nft: petV2BSC.addr, season, amount })\n ]);\n\n setTimeout(() => {\n dispatch('getSubmited');\n }, 15000);\n }\n } catch (error) {\n console.log(`forceUpdateData Err`, error);\n }\n },\n postUpdateSubgraph({}, payload) {\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n return this.$axios.$post(`${configApi.migration}/users/update/`, payload);\n },\n callUpdateSubgraph({ dispatch, commit, state }, { payload, time }: { payload: object; time: number }) {\n try {\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n this.$axios.$post(`${configApi.migration}/users/update/`, payload).then(res => {\n if (res.update) {\n commit('app/setLoadCredit', true, { root: true });\n setTimeout(() => {\n //dispatch('getSubmited');\n commit('resetListNFT');\n dispatch('getDpetNFTs');\n }, time);\n }\n });\n } catch (error) {\n console.log('callUpdateSubgraph err', error);\n }\n },\n async checkUpdateInfo({ state, commit, dispatch, rootState }, time: number = 5000) {\n try {\n const isConnected = rootState.web3.isLogin;\n const account = rootState.web3.account;\n const chainId = rootState.web3.chainId;\n const season = state.season;\n if (isConnected) {\n const { totalv1, totalv2 } = await dispatch('getMigrtionInfoByAddress');\n if (state.storage.length > 0) {\n state.storage.map(async (item: any) => {\n if (item.address === DPET_SPIRIT) {\n } else {\n const smc = getContractByAddress(item.address.toLowerCase());\n if (smc.contractName.endsWith('PET_V1') && parseInt(season.toString()) === parseInt(item.season) && parseInt(item.total) !== parseInt(totalv1)) {\n dispatch('callUpdateSubgraph', {\n payload: {\n address: account,\n network: smc.network.toString(),\n nft: item.address,\n season: parseInt(season.toString()),\n amount: parseInt(totalv1)\n },\n time\n });\n } else if (smc.contractName.endsWith('PET_V2') && parseInt(season.toString()) === parseInt(item.season) && parseInt(item.total) !== parseInt(totalv2)) {\n dispatch('callUpdateSubgraph', {\n payload: {\n address: account,\n network: smc.network.toString(),\n nft: item.address,\n season: parseInt(season.toString()),\n amount: parseInt(totalv2)\n },\n time\n });\n }\n }\n });\n } else {\n if (totalv1 > 0) {\n let smc1;\n if (chainId === 5) {\n smc1 = getContractByName(CONTRACT_NAME.FAKE_PET_V1) as IContract;\n } else if (chainId === 56) {\n smc1 = getContractByName(CONTRACT_NAME.BSC_PET_V1) as IContract;\n } else if (chainId === 24) {\n smc1 = getContractByName(CONTRACT_NAME.KAI_PET_V1) as IContract;\n }\n dispatch('callUpdateSubgraph', {\n payload: {\n address: account,\n network: smc1?.network.toString(),\n nft: smc1?.addr,\n season: parseInt(season.toString()),\n amount: parseInt(totalv1)\n },\n time\n });\n }\n if (totalv2 > 0) {\n let smc2;\n if (chainId === 5) {\n smc2 = getContractByName(CONTRACT_NAME.FAKE_PET_V2) as IContract;\n } else if (chainId === 56) {\n smc2 = getContractByName(CONTRACT_NAME.BSC_PET_V2) as IContract;\n } else if (chainId === 24) {\n smc2 = getContractByName(CONTRACT_NAME.KAI_PET_V2) as IContract;\n }\n dispatch('callUpdateSubgraph', {\n payload: {\n address: account,\n network: smc2?.network.toString(),\n nft: smc2?.addr,\n season: parseInt(season.toString()),\n amount: parseInt(totalv2)\n },\n time\n });\n }\n }\n }\n } catch (error) {}\n },\n getSubmited({ dispatch, commit, state, rootState }) {\n return new Promise(async (resolve, reject) => {\n try {\n const isConnected = rootState.web3.isLogin;\n if (!isConnected) resolve([]);\n commit('app/setLoadCredit', true, { root: true });\n const wallet = rootState.web3.account;\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n this.$axios\n .$post(`${configApi.migration}/users/`, {\n wallet: wallet.toLowerCase()\n })\n .then(async (res: any) => {\n const { claimed, storage, claimedCount, pending }: { claimed: number; storage: object[]; claimedCount: number; pending: string | '' } = res;\n // commit('setClaimed', claimed);\n // commit('setStorage', storage);\n // commit('setTxPending', pending);\n // commit('setClaimedCount', claimedCount);\n commit('setInfoUser', {\n claimed,\n storage,\n claimedCount,\n pending\n });\n const parseData: IResultStorage = await dispatch('parseStorageData', storage);\n if (parseData) {\n const { totalCredit, totalCreditV1, totalCreditV2, totalCreditSpirit, petMigrated, spiritMigrated, totalPetV1, totalPetV2 } = parseData;\n // do something\n //commit('setTotalCredit', parseData.totalCredit);\n commit('setNFTMigrated', petMigrated);\n // commit('setNftSubmited', petMigrated);\n commit('setInfoTotal', {\n claimed,\n totalCredit,\n totalCreditV1,\n totalCreditV2,\n totalCreditSpirit,\n spiritMigrated,\n totalPetV1,\n totalPetV2\n });\n }\n resolve(parseData.petMigrated);\n })\n .catch(() => resolve([]))\n .finally(() => {\n commit('app/setLoadCredit', false, { root: true });\n });\n } catch (error) {\n resolve([]);\n }\n });\n },\n async getSpirit({ dispatch, commit, state, rootState }) {\n try {\n if (rootState.web3.isLogin && rootState.web3.chainId > 0) {\n const wallet: string = rootState.web3.account;\n const network: string = rootState.web3.chainId.toString();\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n const res = await this.$axios.$post(`${configApi.migration}/users/spirit/`, { wallet, network });\n if (res?.update) {\n setTimeout(() => {\n dispatch('getSpirit');\n }, 15000);\n } else if (res?.dpetSpirit) {\n commit('setDpetSpirit', res?.dpetSpirit);\n }\n return res;\n }\n } catch (error) {\n return null;\n }\n },\n async getClaim({ dispatch, commit, state, rootState }) {\n try {\n const wallet: string = rootState.web3.account;\n // const network: string = rootState.web3.chainId.toString();\n const network: string = '24';\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n const res = await this.$axios.$post(`${configApi.migration}/users/claim/`, { wallet, network });\n const { amount, claimedCount, pending } = res;\n commit('setTxPending', pending);\n commit('setClaimedCount', claimedCount);\n return res;\n } catch (error) {\n return null;\n }\n },\n checkClaim({ dispatch, commit, state, rootState }, time: number = 5000) {\n return new Promise((resolve, reject) => {\n try {\n const wallet: string = rootState.web3.account;\n const network: string = rootState.web3.chainId.toString();\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n this.$axios.$post(`${configApi.migration}/users/claimcheck/`, { wallet, network }).then(res => {\n if (res?.update) {\n commit('app/setLoadCredit', true, { root: true });\n setTimeout(() => {\n dispatch('getSubmited');\n }, time);\n }\n resolve(res?.update);\n });\n } catch (error) {\n resolve(true);\n }\n });\n },\n claimCredit({ state, commit, dispatch, rootState }) {\n return new Promise(async (resolve, reject) => {\n try {\n const chainId: number = rootState.web3.chainId;\n const wallet = rootState.web3.account;\n const checkNetwork: boolean = await dispatch('web3/checkNetWorkClaim', {}, { root: true });\n const network = getConfigChain(NETWORK_CLAIM);\n if (!checkNetwork) reject({ message: `Network not supported, please switch ${network?.chainName}` });\n const dataClaim = await dispatch('getClaim');\n if (dataClaim) {\n const smc = getContractClaim(chainId);\n const { claimedCount, amount, pending } = dataClaim;\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const res = await contractInstance.methods.claimCredit(amount, claimedCount, pending).send({\n from: wallet,\n gas: MAX_GAS_FEE\n });\n if (res?.status) {\n setTimeout(() => {\n dispatch('checkClaim', 15000);\n resolve(res);\n }, 4000);\n }\n }\n } catch (error) {\n reject(error);\n }\n });\n },\n async parseStorageData({ dispatch }, storage: any[]) {\n if (storage && storage.length > 0) {\n let totalPet: number = 0;\n let totalPetV1: number = 0;\n let totalPetV2: number = 0;\n let totalCredit: number = 0;\n let totalCreditV1: number = 0;\n let totalCreditV2: number = 0;\n let totalCreditSpirit: number = 0;\n let petMigrated: IPet[] = [];\n let spiritMigrated: number = 0;\n await Promise.all(\n storage.map(async (obj: any) => {\n let smcName: string;\n let pets: IPet[] = [];\n totalCredit = totalCredit + parseInt(obj?.credit);\n if (obj.address === DPET_SPIRIT) {\n totalCreditSpirit = totalCreditSpirit + parseInt(obj?.credit);\n spiritMigrated = spiritMigrated + parseInt(obj?.total);\n } else {\n totalPet = totalPet + parseInt(obj?.total);\n const contract = getContractByAddress(obj?.address);\n smcName = contract.contractName;\n switch (smcName) {\n case CONTRACT_NAME.BSC_PET_V1:\n totalPetV1 = totalPetV1 + parseInt(obj?.total);\n if (obj?.nfts && obj.nfts.length > 0) {\n totalCreditV1 = totalCreditV1 + parseInt(obj?.credit);\n pets = await Promise.all(obj.nfts.map((tokenId: number) => dispatch('parseDetailPet', { tokenId, chainName: 'bsc', addr: contract.addr, version: 1 })));\n petMigrated = petMigrated.concat(pets);\n }\n break;\n case CONTRACT_NAME.BSC_PET_V2:\n totalPetV2 = totalPetV2 + parseInt(obj?.total);\n if (obj?.nfts && obj.nfts.length > 0) {\n totalCreditV2 = totalCreditV2 + parseInt(obj?.credit);\n pets = await Promise.all(obj.nfts.map((tokenId: number) => dispatch('parseDetailPet', { tokenId, chainName: 'bsc', addr: contract.addr, version: 2 })));\n petMigrated = petMigrated.concat(pets);\n }\n break;\n case CONTRACT_NAME.KAI_PET_V1:\n totalPetV1 = totalPetV1 + parseInt(obj?.total);\n if (obj?.nfts && obj.nfts.length > 0) {\n totalCreditV1 = totalCreditV1 + parseInt(obj?.credit);\n pets = await Promise.all(obj.nfts.map((tokenId: number) => dispatch('parseDetailPet', { tokenId, chainName: 'kai', addr: contract.addr, version: 1 })));\n petMigrated = petMigrated.concat(pets);\n }\n break;\n case CONTRACT_NAME.KAI_PET_V2:\n totalPetV2 = totalPetV2 + parseInt(obj?.total);\n if (obj?.nfts && obj.nfts.length > 0) {\n totalCreditV2 = totalCreditV2 + parseInt(obj?.credit);\n pets = await Promise.all(obj.nfts.map((tokenId: number) => dispatch('parseDetailPet', { tokenId, chainName: 'kai', addr: contract.addr, version: 2 })));\n petMigrated = petMigrated.concat(pets);\n }\n break;\n //fake test\n case CONTRACT_NAME.FAKE_PET_V1:\n totalPetV1 = totalPetV1 + parseInt(obj?.total);\n if (obj?.nfts && obj.nfts.length > 0) {\n totalCreditV1 = totalCreditV1 + parseInt(obj?.credit);\n pets = await Promise.all(obj.nfts.map((tokenId: number) => dispatch('parseDetailPet', { tokenId, chainName: 'eth', addr: contract.addr, version: 1 })));\n petMigrated = petMigrated.concat(pets);\n }\n break;\n case CONTRACT_NAME.FAKE_PET_V2:\n totalPetV2 = totalPetV2 + parseInt(obj?.total);\n if (obj?.nfts && obj.nfts.length > 0) {\n totalCreditV2 = totalCreditV2 + parseInt(obj?.credit);\n pets = await Promise.all(obj.nfts.map((tokenId: number) => dispatch('parseDetailPet', { tokenId, chainName: 'eth', addr: contract.addr, version: 2 })));\n petMigrated = petMigrated.concat(pets);\n }\n break;\n default:\n break;\n }\n }\n return pets;\n })\n );\n return { totalCredit, totalPet, totalPetV1, totalPetV2, petMigrated, totalCreditV1, totalCreditV2, totalCreditSpirit, spiritMigrated };\n } else {\n return null;\n }\n },\n parseDetailPet({}, { tokenId, chainName, addr, version }): IPet {\n return {\n tokenId,\n name: `Pet #${tokenId}`,\n version: version,\n image: `https://cdn.agoran.io/DPet/my_defipet-${chainName}-${addr}-${tokenId}.jpeg`,\n chain: chainName,\n addr\n };\n },\n\n async fecthMyMigrated({ state, commit, dispatch, rootState }) {\n try {\n } catch (error) {\n console.log('fecthMyMigrated', error);\n }\n },\n migration({ state, getters, commit, dispatch, rootState }, pet: IPet) {\n return new Promise(async (resolve, reject) => {\n try {\n const chainId = rootState.web3.chainId;\n const account = rootState.web3.account;\n // const smc = getContractByName(CONTRACT_NAME.MIGRATION);\n const smc = getContractMigration(chainId) as IContract;\n const { tokenId, version, addr } = pet;\n if (await dispatch('web3/checkNetWorkSupport', chainId, { root: true })) {\n const contractInstance = await dispatch('web3/getInstanceContract', smc.addr, { root: true });\n const [isReady, isExists] = await Promise.all([contractInstance.methods.isReady().call(), contractInstance.methods.checkTokenExists(tokenId, version === 1).call()]);\n if (!isReady) reject({ message: 'Can not migration now' });\n if (isExists) reject({ message: 'Token has migrated' });\n const tokenApprove = await dispatch('web3/approveToken', { tokenAddress: addr, tokenId, exchangeAdress: smc.addr }, { root: true });\n if (!tokenApprove) {\n reject({ message: 'You have not granted access permission' });\n } else {\n // @ts-ignore\n this.$processing.start(`Pet migration is in progress`);\n const res = await contractInstance.methods.migration(tokenId, version === 1).send({ from: account, gas: MAX_GAS_FEE });\n setTimeout(() => {\n dispatch('checkUpdateInfo', 10000);\n // dispatch('forceUpdateData');\n // @ts-ignore\n this.$processing.finish();\n resolve({ success: true, data: res });\n }, 1000);\n }\n }\n } catch (error) {\n console.log('migration error', error);\n // @ts-ignore\n this.$processing.finish();\n reject(error);\n }\n });\n },\n\n migrationSpirit({ commit, dispatch, rootState }) {\n return new Promise(async (resolve, reject) => {\n try {\n const network = rootState.web3.chainId.toString();\n const wallet = rootState.web3.account;\n const signature = await dispatch('web3/getSignature', 'Dpet Spirit Migration', { root: true });\n if (signature) {\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n this.$axios\n .$post(`${configApi.migration}/users/migrate-spirit/`, { wallet, network, signature })\n .then(res => {\n dispatch('getSubmited');\n resolve(res);\n })\n .catch(err => reject(err));\n } else {\n reject({ message: 'Not found signature' });\n }\n } catch (error) {\n console.log('migrationSpirit error', error);\n // @ts-ignore\n this.$processing.finish();\n reject(error);\n }\n });\n },\n\n beforeMigration({ state, commit, dispatch, rootState }, nft: IPet) {\n // tokenId: number;\n // name: string;\n // image: string;\n // version: number;\n // chain: string;\n // addr: string;\n const { tokenId, addr, chain } = nft;\n return new Promise(async (resolve, reject) => {\n try {\n const address = rootState.web3.account;\n const contract = getContractByAddress(addr);\n const network = contract.network;\n // resolve({\n // tokenId: '10023278',\n // network: '56',\n // nft: '0x4f3110435c9626418063add7897f08088838fc8b',\n // rarity: 'Legendary',\n // credit: 54,\n // dpetSpirit: [0, 10, 11, 12, 13]\n // });\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n this.$axios\n .$post(`${configApi.migration}/users/nft-detail`, { address, network: network.toString(), nft: addr, tokenId: tokenId.toString() })\n .then(res => {\n resolve(res);\n })\n .catch(err => reject(err));\n } catch (error) {\n console.log('beforeMigration error', error);\n reject(error);\n }\n });\n }\n\n // emergencyReturn({ commit, dispatch, rootState }) {\n // return new Promise(async (resolve, reject) => {\n // try {\n // const chainId = rootState.web3.chainId;\n // const account = rootState.web3.account;\n // const smc = getContractMigration(chainId) as IContract;\n // console.log('smc', smc);\n // const contractInstance = await dispatch('web3/getInstanceContract', smc.addr, { root: true });\n // console.log('contractInstance', contractInstance);\n // const res = await contractInstance.methods.emergencyReturnV1([287311]).send({ from: account, gas: MAX_GAS_FEE });\n // resolve(res);\n // } catch (error) {\n // console.log('emergencyReturn err', error);\n // reject(error);\n // }\n // });\n // }\n};\n\nexport default actions;\n","export interface ICreditState {\n isReady: boolean;\n timeStartExchange: number;\n timeEndExchange: number;\n buyOneTime: {\n '1': boolean | false;\n '2': boolean | false;\n '3': boolean | false;\n '4': boolean | false;\n };\n balanceCredit: number;\n usedCredit: number;\n transBuyPack: string;\n transOpenBox: string;\n}\n\nconst state = (): ICreditState => ({\n isReady: false,\n timeStartExchange: 0,\n timeEndExchange: 0,\n buyOneTime: {\n '1': false,\n '2': false,\n '3': false,\n '4': false\n },\n balanceCredit: 0,\n usedCredit: 0,\n transBuyPack: '',\n transOpenBox: ''\n});\nexport default state;\n","import { GetterTree } from 'vuex';\nimport { ICreditState } from './state';\nimport { ICardGacha } from '~/libs/interfaces';\nconst getters: GetterTree = {\n getIsReady(state) {\n return state.isReady;\n },\n getRangeTime(state) {\n return {\n from: state.timeStartExchange,\n to: state.timeEndExchange\n };\n },\n getBalanceOf(state) {\n return state.balanceCredit;\n },\n getBuyOneTime(state) {\n return state.buyOneTime;\n }\n};\n\nexport default getters;\n","import { MutationTree } from 'vuex';\nimport { ICreditState } from './state';\nimport { ICardGacha } from '~/libs/interfaces';\n\nconst mutations: MutationTree = {\n setIsReady(state, isReady) {\n state.isReady = isReady;\n },\n setTimeExchange(state, { from, to }: { from: number; to: number }) {\n state.timeStartExchange = from;\n state.timeEndExchange = to;\n },\n setAccountsCredit(state, { balanceOf, used }: { balanceOf: number; used: number }) {\n state.balanceCredit = balanceOf;\n state.usedCredit = used;\n },\n setBuyOneTime(state, { type, result }: { type: string; result: boolean }) {\n let buyOneTime = state.buyOneTime;\n // @ts-ignore\n buyOneTime[`${type}`] = result;\n console.log('buyOneTime', buyOneTime);\n state.buyOneTime = buyOneTime;\n },\n setAllBuyOneTime(state, arrRes: boolean[]) {\n let buyOneTime = state.buyOneTime;\n // @ts-ignore\n buyOneTime[`1`] = arrRes[0];\n buyOneTime[`2`] = arrRes[1];\n buyOneTime[`3`] = arrRes[2];\n buyOneTime[`4`] = arrRes[3];\n state.buyOneTime = buyOneTime;\n },\n setTransBuyPack(state, transBuyPack) {\n state.transBuyPack = transBuyPack;\n },\n setTransOpenBox(state, transOpenBox) {\n state.transOpenBox = transOpenBox;\n }\n};\n\nexport default mutations;\n","import { ActionTree } from 'vuex';\nimport Web3 from 'web3';\nimport { ICreditState } from './state';\nimport { CONTRACT_LIST, configApi, NETWORK_CLAIM, NETWORK_LUCKYBOX, smcMode } from '~/libs/config';\nimport { getConfigChain, getContractByAddress, getContractByName, getContractMigration, getContractClaim, getAbiByContract, w3FromWei, w3toWei } from '~/libs/helper';\nimport { CONTRACT_NAME, MAX_GAS_FEE, DPET_SPIRIT } from '~/libs/const';\nimport { IContract, ICardGacha } from '~/libs/interfaces';\nconst actions: ActionTree = {\n checkIsReady({ commit, dispatch, rootState, rootGetters }) {\n return new Promise(async resolve => {\n try {\n const smcName = smcMode === 'mainnet' ? CONTRACT_NAME.LUCKYBOX : CONTRACT_NAME.DEV_LUCKYBOX;\n const smc = getContractByName(smcName);\n // const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n // const res: boolean = await contractInstance.methods.isReady().call();\n const abi = getAbiByContract(smc?.addr);\n const network = getConfigChain(smc?.network as number);\n const web3: any = new Web3(new Web3.providers.HttpProvider(network.rpcUrl));\n const contractInstance = new web3.eth.Contract(abi, smc?.addr);\n const res = await contractInstance.methods.isReady().call();\n commit('setIsReady', res);\n resolve(res);\n } catch (error) {\n resolve(false);\n }\n });\n },\n\n checkBuyOneTime({ commit, dispatch, rootState, rootGetters }, rarity: number) {\n return new Promise(async resolve => {\n try {\n if (rootState.web3.isLogin) {\n const addrWallet = rootState.web3.account;\n const smcName = smcMode === 'mainnet' ? CONTRACT_NAME.LUCKYBOX : CONTRACT_NAME.DEV_LUCKYBOX;\n const smc = getContractByName(smcName);\n // const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n // const res: boolean = await contractInstance.methods.isReady().call();\n const abi = getAbiByContract(smc?.addr);\n const network = getConfigChain(smc?.network as number);\n const web3: any = new Web3(new Web3.providers.HttpProvider(network.rpcUrl));\n const contractInstance = new web3.eth.Contract(abi, smc?.addr);\n const res: boolean = await contractInstance.methods.buyOneTime(addrWallet, rarity).call();\n console.log('checkBuyOneTime res', res);\n commit('setBuyOneTime', { type: rarity.toString(), result: res });\n resolve(res);\n } else {\n resolve(false);\n }\n } catch (error) {\n resolve(false);\n }\n });\n },\n async getBuyOneTime({ state, commit, dispatch, rootState, rootGetters }) {\n try {\n if (rootState.web3.isLogin) {\n const addrWallet = rootState.web3.account;\n const smcName = smcMode === 'mainnet' ? CONTRACT_NAME.LUCKYBOX : CONTRACT_NAME.DEV_LUCKYBOX;\n const smc = getContractByName(smcName);\n const abi = getAbiByContract(smc?.addr);\n const network = getConfigChain(smc?.network as number);\n const web3: any = new Web3(new Web3.providers.HttpProvider(network.rpcUrl));\n const contractInstance = new web3.eth.Contract(abi, smc?.addr);\n const res: boolean[] = await Promise.all([\n contractInstance.methods.buyOneTime(addrWallet, 1).call(), // common\n contractInstance.methods.buyOneTime(addrWallet, 2).call(), // rare\n contractInstance.methods.buyOneTime(addrWallet, 3).call(), // elite\n contractInstance.methods.buyOneTime(addrWallet, 4).call() // epic\n ]);\n commit('setAllBuyOneTime', res);\n // const res:boolean = await contractInstance.methods.buyOneTime(addrWallet, rarity).call();\n return res;\n }\n } catch (error) {\n console.log('getBuyOneTime error', error);\n }\n },\n async getTimeExchange({ state, commit, dispatch, rootState, rootGetters }) {\n try {\n const smcName = smcMode === 'mainnet' ? CONTRACT_NAME.LUCKYBOX : CONTRACT_NAME.DEV_LUCKYBOX;\n const smc = getContractByName(smcName);\n if (smc && smc !== undefined) {\n const abi = getAbiByContract(smc?.addr);\n const network = getConfigChain(smc?.network as number);\n const web3: any = new Web3(new Web3.providers.HttpProvider(network.rpcUrl));\n const contractInstance = new web3.eth.Contract(abi, smc?.addr);\n // const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const rangeTimeClaim = await contractInstance.methods.getTime().call();\n commit('setTimeExchange', { from: parseInt(rangeTimeClaim[0]), to: parseInt(rangeTimeClaim[1]) });\n return rangeTimeClaim;\n }\n } catch (error) {\n return [0, 0];\n }\n },\n async getBalanceCredit({ state, commit, dispatch, rootState, rootGetters }) {\n try {\n if (rootState.web3.isLogin) {\n const addrWallet = rootState.web3.account;\n const smcName = smcMode === 'mainnet' ? CONTRACT_NAME.KAI_CLAIM : CONTRACT_NAME.DEV_KAI_CLAIM;\n const smc = getContractByName(smcName);\n const abi = getAbiByContract(smc?.addr);\n const network = getConfigChain(smc?.network as number);\n const web3: any = new Web3(new Web3.providers.HttpProvider(network.rpcUrl));\n const contractInstance = new web3.eth.Contract(abi, smc?.addr);\n // const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const res = await contractInstance.methods.accounts(addrWallet).call();\n commit('setAccountsCredit', { balanceOf: w3FromWei(res.balances), used: parseInt(res.use) });\n return { balanceOf: w3FromWei(res.balances), used: parseInt(res.use) };\n // commit('setAccountsCredit', { balanceOf: parseInt(res.balances), used: parseInt(res.use) });\n // return { balanceOf: parseInt(res.balances), used: parseInt(res.use) };\n } else {\n commit('setAccountsCredit', { balanceCredit: 0, used: 0 });\n return { balanceOf: 0, used: 0 };\n }\n } catch (error) {\n console.log('getBalanceCredit error:', error);\n return { balanceOf: 0, used: 0 };\n }\n },\n\n buypack({ state, getters, commit, dispatch, rootState }, rarity: number) {\n return new Promise(async (resolve, reject) => {\n try {\n if (!rootState.web3.isLogin) await dispatch('web3/connect', null, { root: true });\n const account = rootState.web3.account;\n const checkNetwork: boolean = await dispatch('web3/checkNetWorkClaim', {}, { root: true });\n const network = getConfigChain(NETWORK_LUCKYBOX);\n if (!checkNetwork) reject({ message: `Network not supported, please switch ${network?.chainName}` });\n const smcName = smcMode === 'mainnet' ? CONTRACT_NAME.LUCKYBOX : CONTRACT_NAME.DEV_LUCKYBOX;\n const smc = getContractByName(smcName);\n // const smc = getContractMigration(chainId) as IContract;\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const res = await contractInstance.methods.buyPack(rarity).send({\n from: account,\n gas: MAX_GAS_FEE\n });\n if (res.status) {\n const resEvent = res.events.BuyPack;\n const { transactionHash, returnValues } = resEvent;\n commit('setTransBuyPack', resEvent);\n resolve({ success: true, returnValues, transactionHash });\n } else {\n reject({ message: 'Transaction Failed' });\n }\n resolve(res);\n } catch (error:any) {\n console.log('buypack error', error);\n if(error?.code === 4100) error.message = `Please unlock your wallet account`\n reject(error);\n }\n });\n },\n eventsBuyPack({ commit, dispatch, state, rootState }, blockFrom) {\n return new Promise(async (resolve, reject) => {\n try {\n const address = rootState.web3.account;\n const fromBlock = blockFrom;\n const toBlock = 'latest';\n const options = {\n filter: { from: address },\n fromBlock,\n toBlock\n };\n\n const smcName = smcMode === 'mainnet' ? CONTRACT_NAME.LUCKYBOX : CONTRACT_NAME.DEV_LUCKYBOX;\n const smc = getContractByName(smcName);\n const abi = getAbiByContract(smc?.addr);\n const network = getConfigChain(smc?.network as number);\n const web3: any = new Web3(new Web3.providers.HttpProvider(network.rpcUrl));\n const contractInstance = new web3.eth.Contract(abi, smc?.addr);\n const res = await contractInstance.getPastEvents('BuyPack', options);\n // resolve(res);\n if (res && res !== undefined) {\n if (res.length > 0 && res[0]?.event === 'BuyPack') {\n const resEvent = res[0];\n commit('setTransBuyPack', resEvent);\n const { transactionHash, returnValues } = resEvent;\n resolve({ success: true, returnValues, transactionHash });\n } else {\n resolve({ success: false, returnValues: null });\n }\n }\n } catch (e) {\n console.log('eventsBuyPack error:', e);\n reject(e);\n }\n });\n },\n\n openBox({ state, getters, commit, dispatch, rootState }, { type, qty }: { type: number; qty: number }) {\n return new Promise(async (resolve, reject) => {\n try {\n if (!rootState.web3.isLogin) await dispatch('web3/connect', null, { root: true });\n const limitGas = parseInt(MAX_GAS_FEE.toString());\n let gas: number = limitGas;\n if (qty > 1) gas = limitGas * qty;\n const account = rootState.web3.account;\n const checkNetwork: boolean = await dispatch('web3/checkNetWorkClaim', {}, { root: true });\n const network = getConfigChain(NETWORK_LUCKYBOX);\n if (!checkNetwork) reject({ message: `Network not supported, please switch ${network?.chainName}` });\n const smcName = smcMode === 'mainnet' ? CONTRACT_NAME.LUCKYBOX : CONTRACT_NAME.DEV_LUCKYBOX;\n const smc = getContractByName(smcName);\n // const smc = getContractMigration(chainId) as IContract;\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const res = await contractInstance.methods.openBox(type, qty).send({\n from: account,\n gas\n });\n console.log('open res', res)\n if (res.status && res?.events.OpenBox) {\n const resEvent = res.events.OpenBox;\n const { transactionHash } = res;\n if (!Array.isArray(resEvent)) resolve({ success: true, dataEvent: [resEvent], transactionHash, isSingle: true });\n else resolve({ success: true, dataEvent: resEvent, transactionHash, isSingle: false });\n } else {\n reject({ message: 'Transaction Failed' });\n }\n } catch (error:any) {\n if(error?.code === 4100) error.message = `Please unlock your wallet account`\n reject(error);\n }\n });\n }\n};\nexport default actions;\n","export interface ButtonState {\n title: string;\n action: any; //0: close, 2: Wallet Info, string: route\n}\nexport interface IAppState {\n app?: any;\n isAppLoading: boolean;\n isOpenModalWallet: boolean;\n isLoadCredit: boolean;\n}\n\nconst state = (): IAppState => ({\n isAppLoading: false,\n isOpenModalWallet: false,\n isLoadCredit: false\n});\n\nexport default state;\n","import { GetterTree } from 'vuex';\nimport { IAppState } from './state';\nconst getters: GetterTree = {\n isAppLoading(state): boolean {\n return state.isAppLoading;\n },\n isOpenModalWallet(state): boolean {\n return state.isOpenModalWallet;\n },\n isLoadCredit(state) {\n return state.isLoadCredit;\n }\n};\n\nexport default getters;\n","import { MutationTree } from 'vuex';\nimport { ButtonState, IAppState } from './state';\n\nconst mutations: MutationTree = {\n setAppLoading(state, isLoading) {\n state.isAppLoading = isLoading;\n },\n setOpenModalWallet(state, isOpenModalWallet) {\n state.isOpenModalWallet = isOpenModalWallet;\n },\n setLoadCredit(state, isLoadCredit) {\n state.isLoadCredit = isLoadCredit;\n }\n};\n\nexport default mutations;\n","import { ActionTree } from 'vuex';\nimport { ButtonState, IAppState } from './state';\nconst actions: ActionTree = {\n appLoading({ commit }, payload: { status: boolean }) {\n commit('setAppLoading', payload.status);\n },\n showModalWallet({ commit }) {\n commit('setOpenModalWallet', true);\n },\n hideModalWallet({ commit }) {\n commit('setOpenModalWallet', false);\n },\n loadingCredit({ commit }, isLoading: boolean) {\n commit('setLoadCredit', isLoading);\n }\n};\n\nexport default actions;\n","import Vue from 'vue';\n\nexport interface Button {\n btnText: string;\n btnCall: any;\n isPrimary: boolean;\n}\nexport interface IPopupMessage {\n popupType: string;\n title: string;\n message: string;\n persistent: boolean;\n buttons: Button[];\n}\n\nexport const eventDialogMsg = new Vue({\n name: 'DialogMessage'\n});\n","export default ({ $axios, redirect, app }: any, inject: any) => {\n $axios.onRequest((config: any) => {}),\n $axios.onError((error: any) => {\n throw error;\n });\n};\n","import createPersistedState from 'vuex-persistedstate';\nimport SecureLS from 'secure-ls';\nconst ls = new SecureLS({ isCompression: false });\n\nexport default ({ store, req }: any) => {\n createPersistedState({\n key: 'migration-persisted',\n paths: ['web3'],\n storage: {\n getItem: (key) => ls.get(key),\n setItem: (key, value) => ls.set(key, value),\n removeItem: (key) => ls.remove(key),\n },\n })(store);\n};\n","//@ts-ignore\nimport shareMutations from 'vuex-shared-mutations';\n\nexport default ({ store }: any) => {\n //@ts-ignore\n window.onNuxtReady(nuxt => {\n shareMutations({\n predicate: ['web3/setAccount', 'web3/setChainId']\n })(store);\n });\n};\n","import * as funcHelpers from '@/libs/helper';\nimport events from './confirm/events';\nimport * as eventComponent from '@/components/events';\nimport { IPopupMessage, Button, eventDialogMsg } from './dialogMessage/events';\ninterface IConfirm {\n title: string;\n message: string;\n button: {\n yes: string;\n no: string;\n };\n callback: any;\n}\n\nexport default ({ app, store }: any, inject: any) => {\n inject('helper', funcHelpers),\n inject('modalWallet', {\n show(params: any) {\n // store.commit('app/setOpenModalWallet', true);\n eventComponent.eventModalWallet.$emit('show', params);\n },\n hide(params: any) {\n //store.commit('app/setOpenModalWallet', false);\n eventComponent.eventModalWallet.$emit('hide', params);\n }\n }),\n inject('loadingPage', {\n start() {\n store.commit('app/setAppLoading', true);\n },\n finish() {\n store.commit('app/setAppLoading', false);\n }\n }),\n inject('processing', {\n start(text: string = '') {\n eventComponent.eventProcessing.$emit('start', text);\n },\n finish() {\n eventComponent.eventProcessing.$emit('finish');\n }\n }),\n inject('modalConnect', {\n show(params: { onResolve: () => void; onReject: () => void }) {\n eventComponent.eventModalConnect.$emit('show', params);\n },\n hide() {\n eventComponent.eventModalConnect.$emit('hide');\n }\n }),\n inject('confirm', (params: IConfirm) => {\n if (typeof params === 'object') {\n if (params.hasOwnProperty('callback') && typeof params.callback != 'function') {\n let callbackType = typeof params.callback;\n throw new Error(`Callback type must be an function. Caught: ${callbackType}. Expected: function`);\n }\n events.$emit('open', params);\n }\n }),\n inject('dialogMsg', {\n show(params: IPopupMessage) {\n eventDialogMsg.$emit('open', params);\n },\n close(cb = () => {}) {\n eventDialogMsg.$emit('close', cb);\n }\n }),\n inject('modalResult', {\n show(params: any) {\n eventComponent.eventModalResult.$emit('show', params);\n },\n hide(params: any) {\n eventComponent.eventModalResult.$emit('hide', params);\n }\n });\n};\n","import Web3 from 'web3';\nimport { EthereumProvider } from '@walletconnect/ethereum-provider';\nimport { Plugin } from '@nuxt/types';\nimport { getRPCs, getConfigChain, getChainSupport, isChainSupport, showLog } from '~/libs/helper';\nimport { WALLET_TYPE, WC_PROJECT_ID, STORAGE_WC_KEY } from '~/libs/const';\ndeclare var window: any;\ndeclare var localStorage: any;\nconst defaultChain = getConfigChain();\nconst chainIds = getChainSupport();\nchainIds.splice(0, 1);\nconst projectId = WC_PROJECT_ID;\nconst web3Plugin: Plugin = async (context, inject) => {\n const pluginInstance = new Web3Handler();\n await pluginInstance.init();\n inject('web3', pluginInstance);\n};\n\nclass Web3Handler {\n private provider: any | null;\n private web3: any | null;\n private isConnected: boolean | false;\n private isWalletConnect: boolean | false;\n\n constructor() {\n this.web3 = null;\n this.provider = null;\n this.isConnected = false;\n this.isWalletConnect = false;\n }\n\n async init() {\n const walletType = localStorage.getItem(STORAGE_WC_KEY);\n switch (walletType) {\n case WALLET_TYPE.metamask:\n const providerEth: any = window.ethereum;\n this.isConnected = providerEth.isConnected();\n this.setDataWeb3(providerEth);\n break;\n case WALLET_TYPE.walletconnect:\n const provider: any = await this.getProvider(true);\n this.isConnected = provider.connected;\n this.setDataWeb3(provider);\n break;\n default:\n break;\n }\n }\n\n async getProvider(isWalletConnect: boolean = false) {\n return new Promise(async (resolve, reject) => {\n if (isWalletConnect) {\n const provider = await EthereumProvider.init({\n projectId, // REQUIRED your projectId\n chains: [defaultChain.chainId], // REQUIRED chain ids //defaultChain.chainId\n optionalChains: chainIds,\n showQrModal: true, // REQUIRED set to \"true\" to use @walletconnect/modal\n methods: ['eth_chainId', 'eth_sendTransaction', 'eth_signTransaction', 'eth_sign', 'personal_sign', 'eth_signTypedData', 'wallet_switchEthereumChain', 'wallet_addEthereumChain'], // REQUIRED ethereum methods\n // optionalMethods, // OPTIONAL ethereum methods\n events: ['chainChanged', 'accountsChanged'], // REQUIRED ethereum events\n // optionalEvents, // OPTIONAL ethereum events\n rpcMap: getRPCs, // OPTIONAL rpc urls for each chain\n // metadata, // OPTIONAL metadata of your app\n qrModalOptions: {\n themeMode: 'dark'\n } // OPTIONAL - `undefined` by default, see https://docs.walletconnect.com/2.0/web3modal/options\n });\n resolve(provider);\n } else {\n if (typeof window.ethereum !== 'undefined') {\n resolve(window.ethereum);\n }\n }\n });\n }\n\n setLocalStorage() {\n localStorage.removeItem(STORAGE_WC_KEY);\n if (this.isWalletConnect) localStorage.setItem(STORAGE_WC_KEY, WALLET_TYPE.walletconnect);\n else localStorage.setItem(STORAGE_WC_KEY, WALLET_TYPE.metamask);\n }\n\n clearLocalStorage() {\n localStorage.removeItem(STORAGE_WC_KEY);\n var keys = Object.keys(localStorage);\n keys.forEach(key => {\n if (key.startsWith('wc')) {\n localStorage.removeItem(key);\n }\n });\n }\n\n removeModal() {\n const styleModal: any = document.getElementById('wcm-styles');\n if (styleModal) styleModal.remove();\n const elModal: any = document.getElementsByTagName('wcm-modal');\n if (elModal.length > 0) {\n if (elModal.length > 0) {\n Array.from(elModal).forEach((item: any) => item.remove());\n }\n }\n }\n\n async setDataWeb3(provider: any) {\n const web3 = await new Web3(provider);\n this.web3 = web3;\n window.gaiaweb3 = web3;\n this.provider = provider;\n }\n\n async connect(clearCachedProvider: boolean = false, isWalletConnect: boolean = false, onChainChanged: (chainId: string) => void, onAccountsChanged: (accounts: string[]) => void) {\n this.isWalletConnect = isWalletConnect;\n let isConnected = this.isConnected;\n const pluginSubcribeChain = (chainId: string) => {\n if (this.isWalletConnect) {\n const provider = this.provider;\n provider?.setChainId(chainId);\n this.setDataWeb3(provider);\n }\n onChainChanged(chainId);\n };\n\n const pluginSubcribeAccount = (accounts: string[]) => {\n onAccountsChanged(accounts);\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n this.removeModal();\n if (clearCachedProvider) {\n isConnected = false;\n this.disconnect();\n }\n if (isConnected) {\n const provider = this.provider;\n if (provider.removeListener) {\n provider.removeListener('chainChanged', pluginSubcribeChain);\n provider.removeListener('accountsChanged', pluginSubcribeAccount);\n }\n\n if (provider) {\n if (this.isWalletConnect) {\n if (!provider.events._events?.chainChanged) provider.on('chainChanged', pluginSubcribeChain);\n if (!provider.events._events?.accountsChanged) provider.on('accountsChanged', pluginSubcribeAccount);\n } else {\n if (!provider._events?.chainChanged) provider.on('chainChanged', pluginSubcribeChain);\n if (!provider._events?.accountsChanged) provider.on('accountsChanged', pluginSubcribeAccount);\n }\n }\n this.setDataWeb3(provider);\n resolve(this.getWeb3());\n } else {\n const provider: any = await this.getProvider(this.isWalletConnect);\n\n if (provider.removeListener) {\n provider.removeListener('chainChanged', pluginSubcribeChain);\n provider.removeListener('accountsChanged', pluginSubcribeAccount);\n }\n\n if (this.isWalletConnect) {\n provider?.modal.subscribeModal((modal: any) => {\n const { open } = modal;\n if (!open) {\n this.removeModal();\n }\n });\n }\n provider.on('chainChanged', pluginSubcribeChain);\n provider.on('accountsChanged', pluginSubcribeAccount);\n\n await provider.enable().then(async () => {\n this.setLocalStorage();\n this.isConnected = true;\n this.setDataWeb3(provider);\n });\n\n if (isWalletConnect) {\n setTimeout(() => {\n resolve(this.web3);\n }, 3000);\n } else {\n resolve(this.web3);\n }\n }\n } catch (error) {\n console.error('walletConnect ', error);\n resolve(null);\n }\n });\n }\n\n async disconnect() {\n if (this.provider?.removeListener) {\n if (this.isWalletConnect) {\n if (this.provider?.events._events) {\n const pluginSubcribeChain = this.provider.events._events?.chainChanged;\n this.provider.removeListener('chainChanged', pluginSubcribeChain);\n const pluginSubcribeAccount = this.provider.events._events?.accountsChanged;\n this.provider.removeListener('accountsChanged', pluginSubcribeAccount);\n }\n } else {\n showLog('this.provider', this.provider);\n if (this.provider?._events) {\n const pluginSubcribeChain = this.provider._events?.chainChanged;\n this.provider.removeListener('chainChanged', pluginSubcribeChain);\n const pluginSubcribeAccount = this.provider._events.accountsChanged;\n this.provider.removeListener('accountsChanged', pluginSubcribeAccount);\n }\n }\n }\n this.isConnected = false;\n this.provider = null;\n this.web3 = null;\n this.clearLocalStorage();\n this.removeModal();\n }\n\n isWalletConnected() {\n return this.isConnected;\n }\n\n getWeb3() {\n return this.web3;\n }\n\n getWeb3Provider() {\n return this.provider;\n }\n\n async getAccount() {\n if (this.isConnected) {\n const accounts: any[] = await this.web3.eth.getAccounts();\n return accounts[0];\n } else {\n return null;\n }\n }\n\n async getChainId() {\n if (this.isConnected) {\n const chainId: number = await this.web3.eth.getChainId();\n return chainId;\n } else {\n return 0;\n }\n }\n\n async personalSign(data: any) {\n try {\n if (this.isConnected) {\n const web3 = this.getWeb3();\n const address = await this.getAccount();\n const signature = await web3.eth.personal.sign(web3.utils.fromUtf8(data), address);\n return signature;\n } else {\n return null;\n }\n } catch (error) {\n return null;\n }\n }\n}\nexport default web3Plugin;\n","import { Context } from '@nuxt/types';\nexport default ({ app }: Context) => {\n if (process.client && process.env.NODE_ENV === 'production') {\n document.addEventListener('contextmenu', e => {\n e.preventDefault();\n });\n document.addEventListener('keydown', e => {\n if (e.key === 'F12') {\n e.preventDefault();\n }\n });\n\n document.addEventListener('keydown', event => {\n if ((event.metaKey || event.ctrlKey) && event.altKey && event.keyCode === 73) {\n event.preventDefault();\n }\n });\n }\n};\n","import Vue from 'vue';\n\nconst events = new Vue({\n name: 'confirm-dialog',\n});\n\nexport default events;\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNSAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTIuODE2NCIgY3k9IjEyLjUiIHI9IjEyIiBmaWxsPSIjRjNCQTJGIi8+CjxwYXRoIGQ9Ik05LjMyMDY2IDExLjA2MzdMMTIuODE2NCA3LjU2OEwxNi4zMTM4IDExLjA2NTNMMTguMzQ3OCA5LjAzMTI2TDEyLjgxNjQgMy41TDcuMjg2ODEgOS4wMjk2TDkuMzIwNjYgMTEuMDYzN1pNMy44MTY0MSAxMi41TDUuODUwNDggMTAuNDY1Nkw3Ljg4NDQxIDEyLjQ5OTZMNS44NTAzMyAxNC41MzM2TDMuODE2NDEgMTIuNVpNOS4zMjA2NiAxMy45MzY1TDEyLjgxNjQgMTcuNDMyTDE2LjMxMzcgMTMuOTM0OEwxOC4zNDg4IDE1Ljk2NzdMMTguMzQ3OCAxNS45Njg4TDEyLjgxNjQgMjEuNUw3LjI4MzkzIDE1Ljk2NzVMOS4zMjA2NiAxMy45MzY1Wk0xNy43NDg0IDEyLjUwMDlMMTkuNzgyNSAxMC40NjY4TDIxLjgxNjQgMTIuNTAwN0wxOS43ODI0IDE0LjUzNDhMMTcuNzQ4NCAxMi41MDA5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTE0Ljg3OTMgMTIuNDk5SDE0Ljg4MDJMMTIuODE2NCAxMC40MzVMMTAuNzU0MyAxMi40OTY5TDEwLjc1MTQgMTIuNDk5N0wxMC43NTQzIDEyLjUwMjZMMTIuODE2NCAxNC41NjUxTDE0Ljg4MDMgMTIuNTAxMUwxNC44ODEzIDEyLjVMMTQuODc5MyAxMi40OTlaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K\"","import { STORAGE_WC_KEY } from '~/libs/const';\nimport { isChainSupport } from '~/libs/helper';\nexport default async function ({ app, store, redirect }: any) {\n const cacheConnect = window.localStorage.getItem(STORAGE_WC_KEY);\n if (cacheConnect) {\n store.dispatch('web3/connect');\n }\n // store.dispatch('web3/disconnect');\n}\n","module.exports = __webpack_public_path__ + \"img/icon-metamask.df99602.svg\";","module.exports = __webpack_public_path__ + \"img/icon-walletconnect.7f52a52.png\";","module.exports = __webpack_public_path__ + \"img/kai.d60290d.svg\";","module.exports = __webpack_public_path__ + \"img/eth.48fdd0c.svg\";","module.exports = __webpack_public_path__ + \"img/egg_none.93eddb3.png\";","module.exports = __webpack_public_path__ + \"img/panel_none.89d4f34.png\";","module.exports = __webpack_public_path__ + \"img/egg_common.57b54e5.png\";","module.exports = __webpack_public_path__ + \"img/panel_common.51ae141.png\";","module.exports = __webpack_public_path__ + \"img/egg_rare.95ecd49.png\";","module.exports = __webpack_public_path__ + \"img/panel_rare.974c309.png\";","module.exports = __webpack_public_path__ + \"img/egg_elite.75830dc.png\";","module.exports = __webpack_public_path__ + \"img/panel_elite.754e6a7.png\";","module.exports = __webpack_public_path__ + \"img/egg_epic.f353c3a.png\";","module.exports = __webpack_public_path__ + \"img/panel_epic.9bd1727.png\";","module.exports = __webpack_public_path__ + \"img/chest_1.2b3144a.png\";","module.exports = __webpack_public_path__ + \"img/panel_chest_1.d24692a.png\";","module.exports = __webpack_public_path__ + \"videos/chest_basic.28c4e3f.mp4\";","module.exports = __webpack_public_path__ + \"videos/chest_basic.2c81fbf.webm\";","module.exports = __webpack_public_path__ + \"img/chest_2.2036331.png\";","module.exports = __webpack_public_path__ + \"img/panel_chest_2.829dbdd.png\";","module.exports = __webpack_public_path__ + \"videos/chest_standard.a7f5d5f.mp4\";","module.exports = __webpack_public_path__ + \"videos/chest_standard.55b8859.webm\";","module.exports = __webpack_public_path__ + \"img/chest_3.8eb7fd3.png\";","module.exports = __webpack_public_path__ + \"img/panel_chest_3.b10e277.png\";","module.exports = __webpack_public_path__ + \"videos/chest_enhance.442d744.mp4\";","module.exports = __webpack_public_path__ + \"videos/chest_enhance.b34d988.webm\";","module.exports = __webpack_public_path__ + \"img/chest_4.5eb8a78.png\";","module.exports = __webpack_public_path__ + \"img/panel_chest_4.20a188a.png\";","module.exports = __webpack_public_path__ + \"videos/chest_premium.c563568.mp4\";","module.exports = __webpack_public_path__ + \"videos/chest_premium.462095a.webm\";","module.exports = __webpack_public_path__ + \"img/element_earth.e453652.png\";","module.exports = __webpack_public_path__ + \"img/element_water.55fbbaf.png\";","module.exports = __webpack_public_path__ + \"img/element_wind.eee2eb3.png\";","module.exports = __webpack_public_path__ + \"img/element_fire.99ae8b8.png\";","import _ from 'lodash';\nexport default function ({ route, redirect, app }: any) {\n if (route.path.endsWith('/index.html')) {\n if (!_.isEmpty(route.query)) {\n const path = route.fullPath.replace('index.html', '');\n return redirect(path);\n } else {\n return redirect(route.path.replace('index.html', ''));\n }\n }\n}\n","import state from './state';\nimport getters from './getters';\nimport mutations from './mutations';\nimport actions from './actions';\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions\n};\n","import state from './state'\nimport getters from './getters'\nimport mutations from './mutations'\nimport actions from './actions'\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions,\n}\n","import state from './state';\nimport getters from './getters';\nimport mutations from './mutations';\nimport actions from './actions';\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions\n};\n","import state from './state'\nimport getters from './getters'\nimport mutations from './mutations'\nimport actions from './actions'\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions,\n}\n","//import _ from 'lodash'\nimport Web3 from 'web3';\nimport { IContract, Unit } from './interfaces';\nimport { INetWork } from './interfaces';\nimport { supportChains, smcMode, ABI, CONTRACT_LIST, NETWORKS, NETWORK_CLAIM, NETWORK_MIGRATION } from './config';\nimport { CONTRACT_NAME } from './const';\n\nexport function w3FromWei(price: string, tokenWei: Unit = 'ether'): number {\n if (!price) return 0.0;\n return parseFloat(Web3.utils.fromWei(price, tokenWei));\n}\n\nexport function w3toWei(price: string, tokenWei: Unit = 'ether') {\n return Web3.utils.toWei(price, tokenWei);\n}\n\nexport function shortenWallet(address: string) {\n if (!!address) return `${address.substring(0, 5)}...${address.substring(address.length - 4)}`;\n return '...';\n}\n\nexport function formatTime(unix: number) {\n const date = new Date(unix * 1000);\n return date.toLocaleString('en-US');\n}\n\nexport function shortNumber(numberV: number, withAbbr = true, decimals = 2) {\n if (!numberV) numberV = 0;\n const COUNT_ABBR = ['', 'K', 'M', 'B', 'T'];\n const i = numberV < 1000 ? 0 : Math.floor(Math.log(numberV) / Math.log(1000));\n const result = (numberV / Math.pow(1000, i)).toLocaleString('en-US', {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals\n });\n if (withAbbr) return `$${result}${COUNT_ABBR[i]}`;\n return result;\n}\n\nexport function isMobile() {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n}\n\nexport async function copyToClipboard(subject: string, content: string) {\n try {\n await navigator.clipboard.writeText(content);\n showNotification(subject + ' has been copied');\n } catch ($e) {\n showNotification('Copy to clipboard error', false);\n }\n}\n\nexport function showNotification(content: string, isSuccess: boolean = true) {\n const $toast = window.$nuxt.$toast;\n if (isSuccess) $toast.success(content);\n else $toast.error(content);\n}\n\nexport function formatNumber(numberV: number, isFloat: boolean, locale: string) {\n if (!isFloat) return Math.round(numberV).toLocaleString(locale);\n\n //if (numberV < 100000)\n //numberV += 0.0240;\n let floatV = Math.round(numberV * 10000) % 10000;\n if (floatV)\n return numberV.toLocaleString(locale, {\n minimumFractionDigits: 4,\n maximumFractionDigits: 4\n });\n return Math.round(numberV).toLocaleString(locale);\n}\n\nexport function floatNumber(numberV: number) {\n let fRw = Math.round(numberV * 10000) % 10000;\n //if (numberV > 100000)\n //fRw += 0.0240;\n if (fRw) return '.' + String(fRw).padStart(4, '0');\n else return false;\n}\n\nexport function weiToFixed(x: any) {\n if (Math.abs(x) < 1.0) {\n var e = parseInt(x.toString().split('e-')[1]);\n if (e) {\n x *= Math.pow(10, e - 1);\n x = '0.' + new Array(e).join('0') + x.toString().substring(2);\n }\n } else {\n var e = parseInt(x.toString().split('+')[1]);\n if (e > 20) {\n e -= 20;\n x /= Math.pow(10, e);\n x += new Array(e + 1).join('0');\n }\n }\n return x;\n}\n\nexport const padLeft = (number: number, length: number, character: string = '0'): string => {\n let result = String(number);\n for (let i = result.length; i < length; ++i) {\n result = character + result;\n }\n return result;\n};\n\nexport const getRPCs = Object.values(NETWORKS).reduce((acc: Record, cur: INetWork) => {\n acc[cur.chainId] = cur.rpcUrl;\n return acc;\n}, {});\n\n// export const getRPCs = () =>\n// supportChains[`${smcMode}`].reduce((acc: any, cur: any) => {\n// acc[`${cur.chainId}`] = cur.rpcUrl;\n// return acc;\n// }, {});\n\nexport const getConfigChain = (chainId: number = 0): INetWork => {\n if (chainId === 0) {\n return supportChains[`${smcMode}`][0];\n } else {\n const network = Object.values(NETWORKS).find(function (item: INetWork) {\n return item.chainId === chainId;\n });\n return network as INetWork;\n }\n};\n\nexport const getChainIdSupport = (): number[] =>\n supportChains[`${smcMode}`].reduce((acc: number[], cur: INetWork) => {\n acc.push(cur.chainId);\n return acc;\n }, []);\n\nexport const getChainSupport = () =>\n supportChains[`${smcMode}`].reduce((acc: number[], cur: INetWork) => {\n acc.push(cur.chainId);\n return acc;\n }, []);\n\nexport const isChainSupport = (chainId: number) => supportChains[`${smcMode}`].some((item: any) => item.chainId === chainId);\n\nexport const isFunction = (functionToCheck: any) => {\n return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';\n};\n\nexport function isDeviceMobileAndTablet(ctx: any) {\n const { $device } = ctx;\n return $device.isMobile || $device.isTablet;\n}\n\nexport function infoBrowser() {\n let deviceName = 'Unknown';\n let browserName = 'Unknown';\n const userAgent = navigator.userAgent;\n const platform = navigator.platform;\n const browserInfo = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n const deviceInfo = userAgent.match(/(iphone|ipad|ipod|android|windows phone|blackberry)/i);\n if (browserInfo) browserName = browserInfo[0] as string;\n if (deviceInfo) deviceName = deviceInfo[0] as string;\n else deviceName = platform as string;\n return {\n deviceName,\n browserName\n };\n}\nexport function showLog(nameLog: string, contentLog: any = '') {\n if (process.env.NODE_ENV === 'development') {\n console.log(`${nameLog}:`, contentLog);\n }\n}\n\nexport function getAbiByContract(addr: string) {\n const contract = CONTRACT_LIST[`${addr}`];\n if (contract) {\n const contractName = contract?.contractName;\n // @ts-ignore\n return ABI[`${contractName}`] || null;\n } else {\n return null;\n }\n}\n\nexport function getContractMigration(networkId: number = NETWORK_MIGRATION) {\n \n switch (networkId) {\n // case 5:\n // return Object.values(CONTRACT_LIST).find(item => item?.contractName === 'MIGRATION');\n case 56:\n const smcNameBSC = smcMode === 'mainnet' ? 'BSC_MIGRATION' : 'DEV_BSC_MIGRATION';\n return Object.values(CONTRACT_LIST).find(item => item?.contractName === smcNameBSC);\n case 24:\n const smcNameKAI = smcMode === 'mainnet' ? 'KAI_MIGRATION' : 'DEV_KAI_MIGRATION';\n return Object.values(CONTRACT_LIST).find(item => item?.contractName === smcNameKAI);\n default:\n const smcName = smcMode === 'mainnet' ? 'BSC_MIGRATION' : 'DEV_BSC_MIGRATION';\n return Object.values(CONTRACT_LIST).find(item => item?.contractName === smcName);\n }\n}\n\nexport function getContractExchange() {\n let smcName = smcMode === 'mainnet' ? CONTRACT_NAME.LUCKYBOX : CONTRACT_NAME.DEV_LUCKYBOX;\n return Object.values(CONTRACT_LIST).find(item => item?.contractName === smcName);\n}\n\nexport function getContractClaim(networkId: number = NETWORK_CLAIM) {\n let smcName = smcMode === 'mainnet' ? 'KAI_CLAIM' : 'DEV_KAI_CLAIM';\n switch (networkId) {\n // case 5:\n // return Object.values(CONTRACT_LIST).find(item => item?.contractName === 'CLAIM');\n case 24:\n return Object.values(CONTRACT_LIST).find(item => item?.contractName === smcName);\n // case 56:\n // return Object.values(CONTRACT_LIST).find(item => item?.contractName === 'BSC_CLAIM');\n default:\n return Object.values(CONTRACT_LIST).find(item => item?.contractName === smcName);\n }\n}\n\nexport function getContractByName(contractName: string) {\n // @ts-ignore\n const contract = Object.values(CONTRACT_LIST).find(item => item?.contractName === contractName) as IContract;\n return contract || null; // Trả về null nếu không tìm thấy\n}\n\nexport function getContractByAddress(address: string) {\n // @ts-ignore\n // const contract = CONTRACT_LIST[`${address.toLowerCase()}`];\n // @ts-ignore\n const contract = Object.values(CONTRACT_LIST).find(item => item?.addr.toLowerCase() === address.toLowerCase()) as IContract;\n return contract || null; // Trả về null nếu không tìm thấy\n}\nexport function sleep(ms: number) {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\n"],"sourceRoot":""}