{"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","dataCSV","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","getDataCSV","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","setDataCSV","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","loadDataCSV","fetch","response","text","split","shift","row","idx","columns","rank","owner","point","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","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","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","randomHexString","hexChars","hexString","random","randomNumber","min","max"],"mappings":"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","file":"f04e1be.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","import type { IUser } from '~/libs/interfaces';\nexport 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 dataCSV: IUser[];\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 dataCSV: []\n});\n\nexport default state;\n","import { GetterTree } from 'vuex';\nimport { ButtonState, IMigrationState } from './state';\nimport type { IDpetSpirit, IUser } 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 getDataCSV(state): IUser[] {\n return state.dataCSV;\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 setDataCSV(state, dataCSV) {\n state.dataCSV = dataCSV;\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, IUser } 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 loadDataCSV({ state, commit }) {\n return new Promise((resolve, reject) => {\n try {\n fetch('https://mydefipet.com/allUsersMDP_Final.csv')\n .then(response => response.text())\n .then(text => {\n const data = text.split('\\r\\n');\n data.shift();\n const dataCSV = data.map((row: string, idx: number): IUser => {\n const columns = row.split(',');\n return {\n rank: idx + 1,\n owner: columns[0],\n bsc: parseInt(columns[1]),\n kai: parseInt(columns[2]),\n point: parseInt(columns[3])\n };\n });\n commit('setDataCSV', dataCSV);\n })\n .catch(error => {\n console.error('Error fetching CSV data:', error);\n });\n } catch (error) {\n console.error('loadDataCSV err:', 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 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}\nexport function randomHexString() {\n const hexChars = '0123456789abcdef';\n let hexString = '0x';\n for (let i = 0; i < 40; i++) {\n const randomIndex = Math.floor(Math.random() * hexChars.length);\n const randomChar = hexChars[randomIndex];\n hexString += randomChar;\n }\n return hexString;\n}\nexport function randomNumber(min: number, max: number) {\n const randomNumber = Math.floor(Math.random() * max);\n return randomNumber + min;\n}\n"],"sourceRoot":""}