{"version":3,"sources":["../../../src/reducers/nft.js","../../../packages/nftanvil_canisters/cjs/account.js","../../../packages/nftanvil_tools/cjs/accountidentifier.js","../../../packages/nftanvil_tools/cjs/items.js","../../../src/components/Code.js","../../../src/components/NFT.js","../../../src/reducers/user.js","../../../src/reducers/inventory.js","../../../src/components/Inventory.js","../../../src/components/TransactionToast.js","../../../packages/nftanvil_tools/cjs/pricing.js","../../../packages/nftanvil_canisters/cjs/pwr.js","../../../packages/nftanvil_canisters/cjs/router.js","../../../packages/nftanvil_canisters/cjs/ledger.js","../../../packages/nftanvil_tools/cjs/token.js","../../../src/components/History.js","../../../packages/nftanvil_react/cjs/assets/itemgrid.png","../../../packages/nftanvil_react/cjs/assets/itemgrid_light.png","../../src/auth.js","../../../packages/nftanvil_tools/cjs/transactionid.js","../../../packages/nftanvil_canisters/cjs/nft.js","../../../packages/nftanvil_canisters/cjs/declarations/nft/nft.did.js","../../../packages/nftanvil_canisters/cjs/declarations/pwr/pwr.did.js","../../../packages/nftanvil_canisters/cjs/declarations/router/router.did.js","../../../packages/nftanvil_canisters/cjs/declarations/ledger/ledger.did.js","../../../packages/nftanvil_canisters/cjs/declarations/account/account.did.js","../../../src/reducers/history.js","../../../packages/nftanvil_canisters/cjs/history.js","../../../packages/nftanvil_canisters/cjs/declarations/history/history.did.js","../../../src/components/Confetti.js","../../../src/components/LoginRequired.js","../../../packages/nftanvil_react/cjs/assets/dfinity.svg","../../src/icons.js","../../../packages/nftanvil_react/cjs/assets/default.png","../../../packages/nftanvil_react/cjs/assets/over.png","../../src/config.js","declarations/ito/ito.did.js","declarations/ito.js","actions/purchase.js","components/Ticket.js","components/Tools.js","components/User.js","components/Nft.js","components/Collection.js","declarations/usewin/usewin.did.js","declarations/usewin.js","actions/usewin.js","components/Confetti.js","components/Ito.js","components/Usewin.js","assets/bbn_logo.png","logo.svg","App.js","theme.js","index.js","../../../packages/nftanvil_tools/cjs/data.js","../../../packages/nftanvil_tools/cjs/principal.js","../../src/index.js"],"names":["nftSlice","createSlice","name","initialState","reducers","nftSet","state","action","payload","id","meta","actions","nft_fetch","async","dispatch","getState","authentication","client","getIdentity","s","tid","tokenFromText","index","slot","decodeTokenId","canister","PrincipalFromSlot","user","map","space","toText","nftcan","nftCanister","agentOptions","getAgentOptions","resp","metadata","Error","err","JSON","stringify","bearer","data","vars","ok","now","Math","ceil","Date","AccountIdentifier","ArrayToText","tokenIndex","domain","thumb","content","created","quality","lore","custom","length","author","secret","entropy","attributes","transfer","authorShare","tags","ttl","cooldownUntil","boundUntil","pwr","pwrOps","toString","pwrStorage","sockets","x","tokenToText","price","amount","history","rechargeable","transferable","unrestricted","bindsDuration","internal","url","tokenUrl","ipfs","ipfsTokenUrl","cid","subaccount","TextToArray","filter","Boolean","_meta$content","nft_media_get","contentType","size","position","_meta$content2","_ref","nft_fetch_file","nft","chunkSize","chunks","Promise","all","Array","fill","_","chunkIdx","fetch_chunk","then","blob","Blob","chunk","Uint8Array","buffer","type","URL","createObjectURL","_ref2","affiliate","address","console","log","pwrCanister","TextToSlot","prez","nft_purchase","BigInt","token","user_refresh_balances","_ref3","t","set_price","_ref4","toAddress","from","to","memo","transactionId","_ref5","plug_id","socket_id","plug","socket","_ref6","unsocket","_ref7","nft_recharge","e","error","_ref8","rez","burn","_ref9","spender","approve","allowance","_ref10","use","r","customVar","_ref11","key","hash","generateKeyHashPair","transfer_link","encodeLink","_ref12","code","decodeLink","encodeTokenId","claim_link","_ref13","icpCycles","oracle","diff","priceOps","pwrFee","priceStorage","vals","ops","storage","nft_mint","key_nftstorage","available","nft_avail","floor","random","canisterId","mrez","OutOfMemory","user_refresh_config","InsufficientBalance","_vals$content$","_vals$content$$intern","uploadFile","chunkBlob","_vals$thumb","_vals$thumb$internal","reducer","Object","defineProperty","exports","value","accountCanister","enumerable","get","_accountDid","idlFactory","_agent","require","options","agent","HttpAgent","process","REACT_APP_LOCAL_BACKEND","fetchRootKey","catch","warn","Actor","createActor","actorOptions","_data","toHexString","fromHexString","aid","range","Number","bytesArrayToNumber","slice","anvToE","round","e8sToIcp","toFixed","e8sToPwr","eToAnv","icpToE8s","pwrToE8s","itemUse","itemTransfer","itemQuality","itemHold","light","label","color","dark","val","Stx","styled","span","children","_react","Sacc","props","mode","hexColors","A","B","C","D","E","F","short","useColorModeValue","a","toUpperCase","split","idx","style","b","c","Spri","p","Snfta","Sanv","Spwr","Sicp","digits","xdr","substring","_react2","hasArrow","placement","Shash","txt","ContentBox","div","Thumb","thumb_bg","thumb_over","ThumbLarge","NFTMenu","owner","nobuy","renderButtons","pro","maxWidth","textAlign","spacing","RechargeButton","TransferButton","ApproveButton","TransferLinkButton","SetPriceButton","BurnButton","SocketButton","UnsocketButton","_LoginRequired","BuyButton","isOpen","onOpen","onClose","useDisclosure","initialRef","React","useRef","onClick","initialFocusRef","isCentered","preserveScrollBarGap","_Code","w","precision","step","min","variant","ref","fontSize","mt","MARKETPLACE_SHARE","ANVIL_SHARE","ml","toastId","toast","TYPE","INFO","autoClose","hideProgressBar","closeOnClick","pauseOnHover","draggable","marketplace","MARKETPLACE_AID","share","nft_set_price","update","SUCCESS","isLoading","render","ERROR","_TransactionToast","title","message","priceval","parseFloat","current","alertOpen","setAlertOpen","useState","isDisabled","fontWeight","status","colorScheme","nft_transfer","placeholder","toLowerCase","indexOf","mb","Principal","fromText","nft_approve","nft_unsocket","nft_plug","setIsOpen","cancelRef","leastDestructiveRef","useData","cooldown","nft_use","msg","creatingLink","setCreateLink","link","setLink","nft_transfer_link","nft_burn","rechargeCost","setRechargeCost","useEffect","nft_recharge_quote","re","mr","NFTPopover","NFTInfo","alt","className","src","external","_meta$thumb4","MetaDomainTwitter","showLink","MetaDomain","NFT","_ref14","thumbSize","popoverOpen","setPopover","zIndex","onMouseOver","onMouseOut","sx","pointerEvents","top","left","width","_ref15","onRedirect","nft_enter_code","_ref16","claimed","setClaimed","setError","claiming","setClaiming","NFTContent","NFTThumb","NFTProInfo","_meta$bearer","_Confetti","loadingText","nft_claim_link","undefined","_History","transactions","showThumb","_p$meta2","_p$meta2$content","_p$meta3","_p$meta3$content","ctype","crossOrigin","controls","loop","muted","autoPlay","NFTThumbLarge","_p$meta4","_p$meta4$thumb","_p$meta6","_p$meta6$thumb","_p$meta7","_p$meta7$thumb","_p$meta8","_p$meta8$thumb","_p$meta10","_p$meta10$thumb","_p$meta11","_p$meta11$thumb","marginLeft","_ref17","surl","href","replace","domainInfo","inventory","verified","verify_domain_twitter","urlSafe","d","_icons","h","as","rel","target","_ref18","hostname","pathname","verify_domain","capitalize","charAt","_ref19","bg","textColor","isDark","qcolor","nowMinutes","things","moment","duration","humanize","consumable","desc","hold","pt","pr","lineHeight","pb","NFTBattery","borderRadius","NFTBatFull","_ref20","avg_msg_cost_pwr","AVG_MESSAGE_COST","msg_full","FULLY_CHARGED_MINUTES","perc","avg_num_ops_left","colorEmpty","_ref21","wordBreak","textTransform","format","principal","anonymous","focused","icp","anv","acccan","icpFee","anvFee","userSlice","resetReducer","balancesSet","focusSet","proSet","authSet","mapSet","user_auth","allowAnonymous","create","authClient","isAuthenticated","resolve","reject","login","REACT_APP_IDENTITY_PROVIDER","identityProvider","onSuccess","onError","getPrincipal","i","principalToAccountIdentifier","getSubAccountArray","window","localStorage","getItem","router","setOptions","REACT_APP_ROUTER_CANISTER_ID","config_get","BigIntToString","join","account","user_refresh_icp_balance","user_refresh_pwr_balance","user_restore_purchase","user_logout","AuthClient","logout","identity","ledger","ledgerCanister","account_balance","e8s","user_pwr_buy","pwrcan","balance","includes","trez","pwr_transfer","pwr_withdraw","intent","pwr_purchase_intent","paymentAddress","ledger_result","fee","from_subaccount","created_at_time","Ok","claim","pwr_purchase_claim","Err","inventorySlice","pageSet","produce","draft","pageIdx","list","metaSet","verifiedDomainSet","max","_s$user$map$account","can","acc","parseInt","fetch","response","json","text","InventoryBox","height","onOpenNft","maxItems","useWindowSize","setPageIdx","setLoading","itemgrid_light","itemgrid","load_inventory","load","items","cols","rows","Pagination","end","direction","_NFT","lg","justify","icon","disabled","tokenId","TransactionId","STORAGE_KB_PER_MIN","QUALITY_PRICE","FULLY_CHARGED_MESSAGES","cost_per_min","pow","_pwrDid","_routerDid","routerCanister","defaultRouter","arguments","_ledgerDid","tokenFromBlob","neuronStakeAccountIdentifier","encodeChunkId","obj","_getCrc","_sha","_principal","_principal2","token_base","__esModule","default","array","toUint8Array","sha224","checksum","to32bits","getCrc32","array2","isArray","concat","num","ArrayBuffer","DataView","setUint32","numberToBytesArray","encode","str","decode","splice","fromUint8Array","bitUnsignedFix","chunkIndex","l","bitShiftRight","total","loadInfo","KeyVal","k","v","Key","Val","HistoryEvent","ev","boxColor","info","etype","keys","details","PrincipalToSlot","timestamp","inner","border","_arr","events","match","params","isTailing","setTailing","loadHistory","useInterval","evlist","push","maxW","tx","setEvents","evs","loadNftHistory","n","defaultOptions","cookie","auth","opt","MyStorage","host","REACT_APP_IC_GATEWAY","constructor","this","my","bs","bytes","_nftDid","init","IDL","TokenIdentifier","Nat64","Vec","Nat8","User","Variant","Request__1","Record","Balance","CommonError","Null","Text","Response__1","SubAccount","ApproveRequest","Opt","ApproveResponse","BalanceRequest","BalanceResponse","BearerResponse","Memo","BurnRequest","TransferResponseError","BurnResponse","ClaimLinkRequest","ClaimLinkResponse","CanisterSlot","CanisterRange","Tuple","Config","TokenIndex","Nat16","FetchChunkRequest","Nat32","HeaderField","Request","Token","Nat","CallbackFunc","Func","StreamingStrategy","Response","Callback","ContentType","IPFS_CID","ExternalUrl","Content","DomainName","Share","CustomData","Quality","ItemLore","ItemName","Tag","Tags","Attribute","Attributes","ItemTransfer","Metadata","Bool","Sockets","Price","MetavarsFrozen","MetadataResponse","CustomVar","MetadataInput","MintRequest","MintResponse","Oracle","PlugRequest","SocketError","PlugResponse","PurchaseRequest","Time","Int","NFTPurchase","PurchaseResponse","RechargeRequest","RechargeResponse","SetPriceRequest","SetPriceResponse","SocketRequest","SocketResponse","SupplyResponse","TransferRequest","TransferResponse","TransferLinkRequest","TransferLinkResponse","UnsocketRequest","UnplugError","UnplugResponse","UnsocketResponse","UploadChunkRequest","Cooldown","ItemUse","UseRequest","UseResponse","Service","User__2","Balance__1","Oracle__1","AccountIdentifier__2","Balance__3","SubAccount__2","Balance__2","User__1","SubAccount__1","PurchaseClaimRequest","ICP","BlockIndex","TransferError","PurchaseClaimResponse","PurchaseIntentRequest","AccountIdentifier__1","PurchaseIntentResponse","WithdrawRequest","WithdrawResponse","Config__1","LogEvent","AccountBalanceArgs","Tokens","TimeStamp","timestamp_nanos","TransferArgs","TxTooOld","allowed_window_nanos","BadFee","expected_fee","TxDuplicate","duplicate_of","TxCreatedInFuture","InsufficientFunds","TransferResult","NotifyArgs","to_subaccount","to_canister","max_fee","block_height","NotifyResult","notify_dfx","TokenIdentifier__1","AddressInfo","AccountMeta","lastUpdated","setInfo","historyCanister","previous","mapValuesDeep","tx_id","cb","innerObj","isObject","mapValues","log_get","_historyDid","Timestamp","EventFungibleTransaction","AnvEvent","NftEvent","PwrWithdraw","EventFungibleMint","PwrEvent","EventInfo__1","AddResponse","EventIndex","EventInfo","Event","InfoResponse","ListRequest","ListResponse","_reactConfetti","rightIcon","Dfinity","Zap","createIcon","displayName","viewBox","path","points","AnvilIcon","transform","UploadIcon","fillRule","VerifiedIcon","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Result_3","Basket","Result_4","Result_2","Result_1","AccountRecordSerialized","Result","createItoActor","getStoredTx","parse","saveStoredTx","setItem","remStoredTx","provide_tx","txid","ito","attempt","brez","buy_tx","delay","owned","tokens","ms","setTimeout","UseButton","useAnvilDispatch","textDecoration","TransactionToast","ButtonModal","visibility","setVisibility","stopPropagation","addressInput","amountInput","working","setWorking","useAnvilSelector","htmlFor","user_transfer_icp","sendIcp","user_login","NftSingle","NftThumb","NftTransfer","sendNft","NftSell","myprice","removeSaleNft","sellNft","NftBuy","refreshMine","confirm","setConfirm","onBuy","mine","idt","qa","is_mine","attr","ATTR","Collection","nfts","only","prices","actionsRef","page","setPage","filterQuality","setFilterQuality","sortBy","setSortBy","showMine","setShowMine","filtered","priced","price_min","price_max","sorted","sort","q","find","z","m","forEach","mean","std","numArray","reduce","variance","sqrt","standardDeviation","pagination","scrollIntoView","filters","align","mw","onChange","defaultValue","att","checked","createUsewinActor","usewin","use_tx","Conf","isReady","cancel","useTimeout","ids","nftcut","PriceOptions","basket","setBasket","codeInput","logged","onAirdrop","airdrop_use","base58ToBytes","trim","ReactDOM","createPortal","document","body","UseWinGame","setLog","allmine","final","tmplog","logme","r_nfts","arr","newArr","rand","getShuffledArr","About","Timer","count","setCount","time","setTime","open","setOpen","days","hours","sec","interval","setInterval","clearInterval","marginTop","NFTPageWrapper","useParams","NFTClaimWrapper","navigate","useNavigate","go","PageAbout","PageBoss","PageInventory","Inventory","PageMarketplace","PageTabs","isActive","App","loaded","colorMode","toggleColorMode","useColorMode","setPrices","setMine","getPrices","claimUsewin","j","unprocessed","unprocessedUsewin","bbn_logo","element","theme","extendTheme","textStyles","colors","brand","config","initialColorMode","useSystemColorMode","styles","global","fontFamily","backgroundAttachment","html","scrollbarWidth","scrollbarColor","background","backgroundColor","borderColor","wordWrap","lockdown","consoleTaming","overrideTaming","StrictMode","getElementById","jsonToNat8","encodeArrayBuffer","djb2xor","bytesToBase58","blobPrepare","_baseX","bs58","y","fromEntries","reverse","getRandomValues","crypto","buf","file","bl","arrayBuffer","hexString","byte","padStart","url_or_blob","len","charCodeAt","tried","upload_chunk","PrincipalToIdx","PrincipalFromIdx","start","_reactRedux","context","MyContext","store","myStore","createContext","useAnvilStore","createStoreHook","createDispatchHook","createSelectorHook","configureStore","userReducer","nftReducer","inventoryReducer","devTools","addEventListener","window_focus","window_blur"],"mappings":"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","file":"static/js/main.ee0e5210.chunk.js","sourcesContent":["/* global BigInt */\nimport { createSlice } from \"@reduxjs/toolkit\";\nimport authentication from \"../auth\";\nimport {\n encodeTokenId,\n decodeTokenId,\n tokenUrl,\n ipfsTokenUrl,\n tokenToText,\n tokenFromText,\n} from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport { nftCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/nft.js\";\nimport {\n chunkBlob,\n encodeLink,\n decodeLink,\n generateKeyHashPair,\n uploadFile,\n} from \"@vvv-interactive/nftanvil-tools/cjs/data.js\";\n\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\nimport { PrincipalFromSlot } from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\nimport {\n priceStorage,\n priceOps,\n} from \"@vvv-interactive/nftanvil-tools/cjs/pricing.js\";\n\nimport { pwrCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/pwr.js\";\n\nimport { user_refresh_balances, user_refresh_config } from \"./user\";\n\nexport const nftSlice = createSlice({\n name: \"nft\",\n initialState: {},\n reducers: {\n nftSet: (state, action) => {\n return {\n ...state,\n [action.payload.id]: action.payload.meta,\n };\n },\n },\n});\n\nexport const { nftSet } = nftSlice.actions;\n\nexport const nft_fetch = (id) => async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n let s = getState();\n\n let tid = tokenFromText(id);\n let { index, slot } = decodeTokenId(tid);\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let resp = await nftcan.metadata(tid);\n if (!resp) throw Error(\"Can't fetch NFT meta\");\n if (resp.err)\n throw Error(\"Fetching NFT meta error \" + JSON.stringify(resp.err));\n\n let { bearer, data, vars } = resp.ok;\n let now = Math.ceil(Date.now() / 1000 / 60);\n\n let meta = {\n bearer: AccountIdentifier.ArrayToText(bearer),\n\n // inherant\n tokenIndex: index,\n canister,\n\n // data\n\n domain: data.domain[0],\n // use: data.use[0],\n // hold: data.hold[0],\n thumb: data.thumb,\n content: data.content[0],\n created: data.created,\n quality: data.quality,\n lore: data.lore[0],\n name: data.name[0],\n custom: data.custom.length,\n author: AccountIdentifier.ArrayToText(data.author),\n secret: data.secret,\n entropy: data.entropy,\n attributes: data.attributes,\n transfer: data.transfer,\n authorShare: data.authorShare,\n tags: data.tags,\n //vars\n ttl: vars.ttl[0],\n cooldownUntil: vars.cooldownUntil[0],\n boundUntil: vars.boundUntil[0],\n pwr: [vars.pwrOps.toString(), vars.pwrStorage.toString()],\n sockets: vars.sockets.map((x) => tokenToText(x)), //TokenIdentifier.ArrayToText(x)),\n price: { ...vars.price, amount: vars.price.amount.toString() },\n history: vars.history,\n rechargeable: data.rechargeable,\n };\n\n meta.transferable =\n meta.transfer.unrestricted === null ||\n (meta.transfer.bindsDuration && meta.boundUntil < now);\n\n if (meta.thumb.internal)\n meta.thumb.internal.url = tokenUrl(s.user.map.space, tid, \"thumb\");\n if (meta.thumb.ipfs) meta.thumb.ipfs.url = ipfsTokenUrl(meta.thumb.ipfs.cid);\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n if (meta.content?.internal) {\n if (meta.secret)\n meta.content.internal.url = await nft_media_get(s, {\n id,\n contentType: meta.content.internal.contentType,\n size: meta.content.internal.size,\n position: \"content\",\n subaccount,\n });\n else meta.content.internal.url = tokenUrl(s.user.map.space, tid, \"content\");\n }\n if (meta.content?.ipfs)\n meta.content.ipfs.url = ipfsTokenUrl(meta.content.ipfs.cid);\n\n dispatch(nftSet({ id, meta }));\n return meta;\n};\n\nexport const nft_media_get = async (\n s,\n { id, contentType, size, position, subaccount = false }\n) => {\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { index, slot } = decodeTokenId(tid);\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let src = await nft_fetch_file(\n nftcan,\n size,\n contentType,\n index,\n position,\n subaccount\n );\n\n return src;\n};\n\nconst nft_fetch_file = async (\n nft,\n size,\n contentType,\n tokenIndex,\n position,\n subaccount = false\n) => {\n let chunkSize = 1024 * 512;\n let chunks = Math.ceil(size / chunkSize);\n\n return await Promise.all(\n Array(chunks)\n .fill(0)\n .map((_, chunkIdx) => {\n return nft.fetch_chunk({\n tokenIndex,\n chunkIdx,\n position: { [position]: null },\n subaccount: subaccount ? subaccount : [],\n });\n })\n ).then((chunks) => {\n const blob = new Blob(\n chunks.map((chunk) => {\n return new Uint8Array(chunk[0]).buffer;\n }),\n { type: contentType }\n );\n\n return URL.createObjectURL(blob);\n });\n};\n\nexport const nft_purchase =\n ({ id, amount, affiliate = [] }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n console.log(\"BUYING\", id, amount);\n\n let pwr = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n {\n agentOptions: authentication.getAgentOptions(),\n }\n );\n\n let prez = await pwr.nft_purchase(BigInt(slot), {\n token: tokenFromText(id),\n user: { address: AccountIdentifier.TextToArray(address) },\n subaccount,\n affiliate,\n amount,\n });\n\n if (prez.err) throw new Error(JSON.stringify(prez.err));\n\n dispatch(user_refresh_balances());\n dispatch(nft_fetch(id));\n console.log(\"purchase result\", prez);\n };\n\n// export const nft_purchase_intent =\n// ({ id }) =>\n// async (dispatch, getState) => {\n// let s = getState();\n\n// let identity = authentication.client.getIdentity();\n\n// let tid = tokenFromText(id);\n// let { slot } = decodeTokenId(tid);\n// //console.log(\"t\", id, slot, tokenFromText(id));\n// let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n// let nftcan = nftCanister(canister, {\n// agentOptions: authentication.getAgentOptions(),\n// });\n\n// let address = s.user.address;\n// let subaccount = [\n// AccountIdentifier.TextToArray(s.user.subaccount) || null,\n// ].filter(Boolean);\n\n// let t = await nftcan.purchase_intent({\n// user: { address: AccountIdentifier.TextToArray(address) },\n// token: tokenFromText(id),\n// subaccount,\n// });\n\n// if (!(\"ok\" in t)) throw t;\n\n// return t.ok;\n// };\n\nexport const nft_set_price =\n ({ id, price }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n\n console.log(\"Setting price\", id, { slot });\n\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let t = await nftcan.set_price({\n user: { address: AccountIdentifier.TextToArray(address) },\n token: tid,\n price: price,\n subaccount,\n });\n if (!(\"ok\" in t)) throw new Error(JSON.stringify(t.err));\n dispatch(nft_fetch(id));\n };\n\nexport const nft_transfer =\n ({ id, toAddress }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let t = await nftcan.transfer({\n from: { address: AccountIdentifier.TextToArray(address) },\n to: { address: AccountIdentifier.TextToArray(toAddress) },\n token: tid,\n amount: 1,\n memo: [],\n subaccount,\n });\n\n if (!t.ok) throw new Error(JSON.stringify(t.err));\n let { transactionId } = t.ok;\n\n dispatch(nft_fetch(id));\n\n return t;\n };\n\nexport const nft_plug =\n ({ plug_id, socket_id }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let { slot } = decodeTokenId(tokenFromText(plug_id));\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let t = await nftcan.plug({\n user: { address: AccountIdentifier.TextToArray(address) },\n subaccount,\n plug: tokenFromText(plug_id),\n socket: tokenFromText(socket_id),\n memo: [],\n });\n if (!t.ok) throw t.err;\n dispatch(nft_fetch(plug_id));\n dispatch(nft_fetch(socket_id));\n return t.ok;\n };\n\nexport const nft_unsocket =\n ({ plug_id, socket_id }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let { slot } = decodeTokenId(tokenFromText(socket_id));\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let t = await nftcan.unsocket({\n user: { address: AccountIdentifier.TextToArray(address) },\n subaccount,\n plug: tokenFromText(plug_id),\n socket: tokenFromText(socket_id),\n memo: [],\n });\n if (!t.ok) throw t.err;\n dispatch(nft_fetch(plug_id));\n dispatch(nft_fetch(socket_id));\n return t.ok;\n };\n\nexport const nft_recharge =\n ({ id, amount }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n // let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n let address = s.user.address;\n\n // let nftcan = nftCanister(canister, { agentOptions: authentication.getAgentOptions() });\n let pwr = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n {\n agentOptions: authentication.getAgentOptions(),\n }\n );\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let t;\n try {\n let t = await pwr.nft_recharge(slot, {\n user: { address: AccountIdentifier.TextToArray(address) },\n token: tid,\n subaccount,\n amount,\n });\n\n if (!(\"ok\" in t)) throw t.err;\n\n let { transactionId } = { transactionId: 0 }; //t.ok;\n\n dispatch(user_refresh_balances());\n dispatch(nft_fetch(id));\n return t.ok;\n } catch (e) {\n console.error(\"Recharge error\", e);\n }\n };\n\nexport const nft_burn =\n ({ id }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let rez = await nftcan.burn({\n user: { address: AccountIdentifier.TextToArray(address) },\n token: tid,\n amount: 1,\n memo: [],\n subaccount,\n });\n\n if (rez.err) throw rez.err;\n\n dispatch(user_refresh_balances());\n let { transactionId } = rez.ok;\n return rez.ok;\n };\n\nexport const nft_approve =\n ({ id, spender }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let rez = await nftcan.approve({\n token: tid,\n allowance: 1,\n subaccount,\n spender,\n });\n if (rez.err) throw rez.err;\n dispatch(nft_fetch(id));\n\n return rez.ok;\n };\n\nexport const nft_use =\n ({ id, use, memo }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { slot } = decodeTokenId(tid);\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let r = await nftcan.use({\n user: { address: AccountIdentifier.TextToArray(address) },\n token: tid,\n memo,\n use,\n subaccount,\n customVar: [],\n });\n\n if (!r.ok) throw r.err;\n dispatch(user_refresh_balances());\n dispatch(nft_fetch(id));\n return r.ok;\n };\n\nexport const nft_transfer_link =\n ({ id }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let tid = tokenFromText(id);\n let { index, slot } = decodeTokenId(tid);\n let canister = PrincipalFromSlot(s.user.map.space, slot).toText();\n\n let nftcan = nftCanister(canister, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let { key, hash } = generateKeyHashPair();\n\n let rez = await nftcan.transfer_link({\n from: { address: AccountIdentifier.TextToArray(address) },\n hash: Array.from(hash),\n token: tid,\n subaccount,\n });\n if (rez.err) throw rez.err;\n\n let code = encodeLink(slot, index, key);\n\n return code;\n };\n\nexport const nft_claim_link =\n ({ code }) =>\n async (dispatch, getState) => {\n let s = getState();\n let { slot, tokenIndex, key } = decodeLink(code);\n\n let canister = PrincipalFromSlot(s.user.map.space, slot);\n\n let identity = authentication.client.getIdentity();\n\n let nftcan = nftCanister(canister, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let address = s.user.address;\n\n let tid = encodeTokenId(slot, tokenIndex);\n\n let resp = await nftcan.claim_link({\n to: { address: AccountIdentifier.TextToArray(address) },\n key: Array.from(key),\n token: tid,\n });\n\n dispatch(nft_fetch(tokenToText(tid)));\n\n return resp;\n };\n\nexport const nft_enter_code = (code) => async (dispatch, getState) => {\n let s = getState();\n\n let { slot, tokenIndex } = decodeLink(code);\n\n if (!s.user.map.space) throw Error(\"Map not loaded\");\n\n let canister = PrincipalFromSlot(s.user.map.space, slot);\n\n let id = encodeTokenId(slot, tokenIndex);\n return \"/\" + tokenToText(id) + \"/\" + code;\n};\n\nexport const nft_recharge_quote =\n ({ id }) =>\n async (dispatch, getState) => {\n let s = getState();\n const icpCycles = BigInt(s.user.oracle.icpCycles);\n\n let nft = s.nft[id];\n\n const ops = priceOps({ ttl: null }) / icpCycles;\n\n const transfer = BigInt(s.user.oracle.pwrFee);\n\n const storage =\n priceStorage({\n custom: nft.custom || 0,\n content: nft.content,\n thumb: nft.thumb,\n quality: nft.quality,\n ttl: null,\n }) / icpCycles;\n\n let full = ops + transfer + storage;\n\n let current = BigInt(nft.pwr[0]) + BigInt(nft.pwr[1]);\n let diff = full - current + BigInt(s.user.oracle.pwrFee);\n if (diff < 30000n) diff = 0n;\n\n //console.log({ full, current, diff });\n\n return diff;\n };\n\nexport const nft_mint_quote = (vals) => async (dispatch, getState) => {\n let s = getState();\n\n const icpCycles = BigInt(s.user.oracle.icpCycles);\n const transfer = BigInt(s.user.oracle.pwrFee);\n const ops = priceOps({ ttl: vals.ttl }) / icpCycles;\n\n const storage =\n priceStorage({\n custom: 0, //NOTE: this frontend doesn't support custom data. If someone wants to add such, it should be done with scripts\n content: vals.content,\n thumb: vals.thumb,\n quality: vals.quality,\n ttl: vals.ttl,\n }) / icpCycles;\n\n return { transfer, ops, storage };\n};\n\nexport const nft_mint = (vals) => async (dispatch, getState) => {\n let s = getState();\n const key_nftstorage = s.user.key_nftstorage;\n\n let available = s.user.map.nft_avail;\n let slot = available[Math.floor(Math.random() * available.length)];\n\n let canisterId = PrincipalFromSlot(s.user.map.space, slot);\n\n let identity = authentication.client.getIdentity();\n let address = s.user.address;\n\n let nft = nftCanister(canisterId, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let pwr = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n {\n agentOptions: authentication.getAgentOptions(),\n }\n );\n\n // console.log(\n // \"PWR Canister\",\n // PrincipalFromSlot(\n // s.user.map.space,\n // AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n // ).toText()\n // );\n\n // console.log(\n // \"NFT Canister\",\n // PrincipalFromSlot(s.user.map.space, slot).toText()\n // );\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n if (!address) throw Error(\"Annonymous cant mint\"); // Wont let annonymous mint\n\n try {\n // console.log(\"mint vals\", slot, vals);\n let mrez = await pwr.nft_mint(BigInt(slot), {\n user: { address: AccountIdentifier.TextToArray(address) },\n subaccount,\n metadata: vals,\n });\n\n if (mrez?.err?.OutOfMemory === null) {\n await dispatch(user_refresh_config());\n await dispatch(nft_mint(vals));\n return;\n }\n\n if (mrez?.err?.InsufficientBalance === null) {\n throw Error(\"Insufficient Balance\");\n }\n // console.log(\"REZ\", mrez);\n if (!(\"ok\" in mrez)) throw Error(JSON.stringify(mrez.err));\n\n let { tokenIndex, transactionId } = mrez.ok;\n let id = tokenToText(encodeTokenId(slot, tokenIndex));\n\n if (vals?.content[0]?.internal?.url) {\n await uploadFile(\n nft,\n tokenIndex,\n \"content\",\n await chunkBlob(vals.content[0].internal.url),\n subaccount\n );\n }\n\n if (vals?.thumb?.internal?.url) {\n await uploadFile(\n nft,\n tokenIndex,\n \"thumb\",\n await chunkBlob(vals.thumb.internal.url),\n subaccount\n );\n }\n } catch (e) {\n console.error(e);\n throw e;\n }\n\n dispatch(user_refresh_balances());\n};\n\nexport default nftSlice.reducer;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.accountCanister = void 0;\nObject.defineProperty(exports, \"idlFactory\", {\n enumerable: true,\n get: function () {\n return _accountDid.idlFactory;\n }\n});\n\nvar _agent = require(\"@dfinity/agent\");\n\nvar _accountDid = require(\"./declarations/account/account.did.js\");\n\n// Imports and re-exports candid interface\nconst accountCanister = (canisterId, options) => {\n const agent = new _agent.HttpAgent({ ...(options ? options.agentOptions : {})\n }); // Fetch root key for certificate validation during development\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch(err => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n } // Creates an actor with using the candid interface and the HttpAgent\n\n\n return _agent.Actor.createActor(_accountDid.idlFactory, {\n agent,\n canisterId: canisterId.toText ? canisterId.toText() : canisterId,\n ...(options ? options.actorOptions : {})\n });\n};\n\nexports.accountCanister = accountCanister;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ArrayToText = ArrayToText;\nexports.TextToArray = TextToArray;\nexports.TextToSlot = TextToSlot;\nexports.anvToE = anvToE;\nexports.e8sToIcp = e8sToIcp;\nexports.e8sToPwr = e8sToPwr;\nexports.eToAnv = eToAnv;\nexports.icpToE8s = icpToE8s;\nexports.pwrToE8s = pwrToE8s;\n\nvar _data = require(\"./data\");\n\nfunction TextToArray(x) {\n if (!x || !x.length) return null;\n return (0, _data.fromHexString)(x);\n}\n\nfunction ArrayToText(x) {\n return (0, _data.toHexString)(x);\n}\n\nfunction e8sToIcp(x) {\n if (!x) return null;\n return (Number(BigInt(x) * 10000n / 100000000n) / 10000).toFixed(4);\n}\n\nfunction icpToE8s(x) {\n try {\n return BigInt(Math.round(x * 100000000));\n } catch (e) {\n return 0n;\n }\n} // PWR\n\n\nfunction e8sToPwr(x) {\n if (!x) return null;\n return (Number(BigInt(x) * 100n / 100000n) / 100).toFixed(2);\n}\n\nfunction pwrToE8s(x) {\n try {\n return BigInt(Math.round(x * 100000));\n } catch (e) {\n return 0n;\n }\n} // ANV\n\n\nfunction eToAnv(x) {\n if (!x) return null;\n return (Number(BigInt(x) * 100n / 100000n) / 100).toFixed(2);\n}\n\nfunction anvToE(x) {\n try {\n return BigInt(Math.round(x * 100000));\n } catch (e) {\n return 0n;\n }\n}\n\nfunction TextToSlot(aid, range) {\n return Number(range[0]) + (0, _data.bytesArrayToNumber)((0, _data.fromHexString)(aid).slice(-4)) % (1 + Number(range[1] - range[0]));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.itemUse = exports.itemTransfer = exports.itemQuality = exports.itemHold = void 0;\nconst itemQuality = {\n light: [{\n label: \"Poor\",\n color: \"#777777\"\n }, {\n label: \"Common\",\n color: \"#000000\"\n }, {\n label: \"Uncommon\",\n color: \"#25a014\"\n }, {\n label: \"Rare\",\n color: \"#0e58a0\"\n }, {\n label: \"Epic\",\n color: \"#851ecc\"\n }, {\n label: \"Legendary\",\n color: \"#bc6104\"\n }, {\n label: \"Artifact\",\n color: \"#c79810\"\n }],\n dark: [{\n label: \"Poor\",\n color: \"#9d9d9d\"\n }, {\n label: \"Common\",\n color: \"#ffffff\"\n }, {\n label: \"Uncommon\",\n color: \"#1eff00\"\n }, {\n label: \"Rare\",\n color: \"#0070dd\"\n }, {\n label: \"Epic\",\n color: \"#a335ee\"\n }, {\n label: \"Legendary\",\n color: \"#ff8000\"\n }, {\n label: \"Artifact\",\n color: \"#e6cc80\"\n }]\n};\nexports.itemQuality = itemQuality;\nconst itemTransfer = [{\n val: \"unrestricted\",\n label: \"Unrestricted transfer\"\n}, {\n val: \"bindsForever\",\n label: \"Binds on transfer\"\n}, {\n val: \"bindsDuration\",\n label: \"Binds on transfer for duration\"\n}];\nexports.itemTransfer = itemTransfer;\nconst itemUse = [{\n val: \"cooldown\",\n label: \"Cooldown\"\n}, {\n val: \"consumable\",\n label: \"Consumable\"\n}];\nexports.itemUse = itemUse;\nconst itemHold = [{\n val: \"external\",\n label: \"Extension managed\"\n}];\nexports.itemHold = itemHold;","/* global BigInt */\nimport React, { useEffect, useState } from \"react\";\n\nimport styled from \"@emotion/styled\";\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\n\nimport {\n useAnvilSelector as useSelector,\n useAnvilDispatch as useDispatch,\n} from \"../index.js\";\n\nimport { Tooltip } from \"@chakra-ui/react\";\nimport { useColorModeValue } from \"@chakra-ui/react\";\nconst Stx = styled.span`\n font-family: Verdana;\n letter-spacing: 1px;\n text-transform: uppercase;\n color: rgb(117, 130, 149);\n b {\n color: rgb(110, 200, 170);\n }\n`;\n\nexport const TX = ({ children }) => {\n return (\n \n TX\n {children.slice(2)}\n \n );\n};\n\nconst Sacc = styled.span`\n font-family: Verdana;\n font-size: 80%;\n letter-spacing: 2px;\n text-transform: uppercase;\n color: ${(props) =>\n props.mode === \"light\" ? \"rgb(230, 240, 240)\" : \"rgb(90, 100, 100)\"};\n b {\n color: rgb(170, 255, 0);\n }\n`;\n\nconst hexColors = {\n light: {\n 0: \"#49fc32\",\n 1: \"#a7ef15\",\n 2: \"#e8dc16\",\n 3: \"#ffbb33\",\n 4: \"#ff906c\",\n 5: \"#ff87b3\",\n 6: \"#ff92ff\",\n 7: \"#ffa9ff\",\n 8: \"#c8c8ff\",\n 9: \"#00e4ff\",\n A: \"#00f3ff\",\n B: \"#29f7db\",\n C: \"#c9e1bb\",\n D: \"#ffc8d1\",\n E: \"#e8cfff\",\n F: \"#cdd9fd\",\n },\n dark: {\n 0: \"#219812\",\n 1: \"#6f9f0d\",\n 2: \"#8c8509\",\n 3: \"#946507\",\n 4: \"#902705\",\n 5: \"#840835\",\n 6: \"#8e088e\",\n 7: \"#950b95\",\n 8: \"#09098b\",\n 9: \"#097b88\",\n A: \"#07757a\",\n B: \"#067969\",\n C: \"#38850b\",\n D: \"#a41d33\",\n E: \"#4e1187\",\n F: \"#153081\",\n },\n};\n\nexport const ACC = ({ children, short = false }) => {\n const mode = useColorModeValue(\"dark\", \"light\");\n const color = hexColors[mode];\n\n let a = children\n .slice(0, 5)\n .toUpperCase()\n .split(\"\")\n .map((x, idx) => (\n \n {x}\n \n ));\n let b = children.slice(5, -5);\n let c = children\n .slice(-5)\n .toUpperCase()\n .split(\"\")\n .map((x, idx) => (\n \n {x}\n \n ));\n\n return (\n \n {a}\n {short ? \"...\" : b}\n {c}\n \n );\n};\n\nconst Spri = styled.span`\n font-family: Verdana;\n font-size: 80%;\n letter-spacing: 2px;\n text-transform: uppercase;\n color: rgb(220, 220, 220);\n b {\n color: rgb(220, 220, 220);\n }\n`;\n\nexport const PRI = ({ children }) => {\n let p = children.split(\"-\");\n return (\n \n {p.map((x, idx) => {\n return (\n \n {idx !== 0 ? \"-\" : null}\n {x}\n \n );\n })}\n \n );\n};\n\nconst Snfta = styled.span`\n font-family: Verdana;\n letter-spacing: 1px;\n text-transform: uppercase;\n color: rgb(117, 130, 149);\n b {\n color: rgb(250, 0, 120);\n }\n`;\n\nexport const NFTA = ({ children }) => {\n if (!children)\n return (\n \n NFTA\n \n );\n return (\n \n NFTA\n {children.slice(4)}\n \n );\n};\n\nconst Sanv = styled.span`\n font-family: Verdana;\n letter-spacing: 1px;\n text-transform: uppercase;\n color: rgb(220, 80, 255);\n span {\n color: rgb(160, 0, 255);\n vertical-align: super;\n font-size: 8px;\n position: relative;\n top: 0.1em;\n }\n b {\n color: rgb(160, 40, 250);\n }\n`;\n\nexport const ANV = ({ children }) => {\n if (!children)\n return (\n \n ANV\n \n );\n let val = AccountIdentifier.eToAnv(children);\n let [a, b] = val.toString().split(\".\");\n return (\n \n {a}.{b} ANV\n \n );\n};\n\nconst Spwr = styled.span`\n font-family: Verdana;\n letter-spacing: 1px;\n text-transform: uppercase;\n color: rgb(220, 80, 255);\n span {\n color: rgb(160, 0, 255);\n vertical-align: super;\n font-size: 8px;\n position: relative;\n top: 0.1em;\n }\n b {\n color: rgb(160, 40, 250);\n }\n`;\n\nexport const PWR = ({ children }) => {\n if (!children)\n return (\n \n PWR\n \n );\n let val = AccountIdentifier.e8sToPwr(children);\n let [a, b] = val.toString().split(\".\");\n return (\n \n {a}.{b} PWR\n \n );\n};\n\nconst Sicp = styled.span`\n font-family: Verdana;\n letter-spacing: 1px;\n text-transform: uppercase;\n color: rgb(120, 200, 255);\n span {\n color: rgb(60, 160, 230);\n vertical-align: super;\n font-size: 8px;\n position: relative;\n top: 0.1em;\n }\n b {\n color: rgb(0, 160, 250);\n }\n`;\n\nexport const ICP = ({ children, digits = 4 }) => {\n const icpCycles = BigInt(useSelector((state) => state.user.oracle.icpCycles));\n\n if (!children)\n return (\n \n ICP\n \n );\n\n const xdr = Number((BigInt(children) * icpCycles) / 10000000000n) / 100;\n\n let val = AccountIdentifier.e8sToIcp(children);\n let [a, b] = val.toString().split(\".\");\n b = b.substring(0, digits);\n return (\n \n \n {a}.{b} ICP\n \n \n );\n};\n\nconst Shash = styled.span`\n font-family: Verdana;\n font-size: 8px;\n letter-spacing: 2px;\n text-transform: uppercase;\n color: ${(props) =>\n props.mode === \"light\" ? \"#377a5f\" : \"rgb(110, 200, 170)\"};\n\n b {\n color: ${(props) =>\n props.mode === \"light\" ? \"#005e47\" : \"rgb(140, 240, 220)\"};\n }\n`;\n\nexport const HASH = ({ children, short = false }) => {\n const mode = useColorModeValue(\"light\", \"dark\");\n let t = short\n ? (children = children.slice(0, 4) + \"..\" + children.slice(-4))\n : children;\n\n let txt = t\n .split(\"\")\n .map((x, idx) => (Math.floor(idx / 2) % 2 == 0 ? {x} : x));\n return {txt};\n};\n","/* global BigInt */\nimport React, { useEffect, useState } from \"react\";\n\nimport {\n Text,\n useColorMode,\n Stack,\n Box,\n useColorModeValue,\n AbsoluteCenter,\n} from \"@chakra-ui/react\";\nimport { itemQuality } from \"@vvv-interactive/nftanvil-tools/cjs/items.js\";\nimport {\n nft_fetch,\n nft_enter_code,\n nft_burn,\n nft_transfer,\n nft_use,\n nft_transfer_link,\n nft_claim_link,\n nft_plug,\n nft_unsocket,\n nft_approve,\n nft_set_price,\n nft_purchase,\n nft_recharge,\n nft_recharge_quote,\n} from \"../reducers/nft\";\n\nimport {\n NumberInput,\n NumberInputField,\n NumberInputStepper,\n NumberIncrementStepper,\n NumberDecrementStepper,\n} from \"@chakra-ui/react\";\n\nimport { verify_domain, verify_domain_twitter } from \"../reducers/inventory\";\nimport { NftHistory } from \"./History\";\nimport { Spinner } from \"@chakra-ui/react\";\nimport Confetti from \"./Confetti\";\nimport { LoginRequired } from \"./LoginRequired\";\nimport { toast } from \"react-toastify\";\nimport lodash from \"lodash\";\nimport { tokenFromText } from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport {\n useAnvilSelector as useSelector,\n useAnvilDispatch as useDispatch,\n} from \"../index.js\";\nimport {\n Center,\n Button,\n Wrap,\n useDisclosure,\n FormLabel,\n FormControl,\n Input,\n Tooltip,\n} from \"@chakra-ui/react\";\nimport {\n Modal,\n ModalOverlay,\n ModalContent,\n ModalHeader,\n ModalFooter,\n ModalBody,\n ModalCloseButton,\n HStack,\n Tag,\n} from \"@chakra-ui/react\";\nimport {\n AlertDialog,\n AlertDialogBody,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogContent,\n AlertDialogOverlay,\n} from \"@chakra-ui/react\";\nimport {\n Alert,\n AlertIcon,\n AlertTitle,\n AlertDescription,\n Flex,\n Spacer,\n} from \"@chakra-ui/react\";\nimport { VerifiedIcon } from \"../icons\";\nimport moment from \"moment\";\nimport styled from \"@emotion/styled\";\nimport thumb_bg from \"../assets/default.png\";\nimport thumb_over from \"../assets/over.png\";\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\nimport { Principal } from \"@dfinity/principal\";\nimport {\n TransactionToast,\n TransactionFailed,\n} from \"../components/TransactionToast\";\nimport { TX, ACC, NFTA, HASH, ICP, PWR } from \"./Code\";\nimport { toHexString } from \"@vvv-interactive/nftanvil-tools/cjs/data.js\";\nimport { MARKETPLACE_AID, MARKETPLACE_SHARE, ANVIL_SHARE } from \"../config.js\";\nimport {\n AVG_MESSAGE_COST,\n FULLY_CHARGED_MINUTES,\n} from \"@vvv-interactive/nftanvil-tools/cjs/pricing.js\";\n\nconst ContentBox = styled.div`\n margin: 12px 0px;\n\n video,\n img {\n max-width: 85vw;\n max-height: 85vh;\n margin-bottom: 5vh;\n margin-top: 1vh;\n width: 85vw;\n height: auto;\n object-fit: contain;\n border-radius: 6px;\n }\n`;\n\nconst Thumb = styled.div`\n width: 72px;\n height: 72px;\n border-radius: 6px;\n position: relative;\n box-overflow: hidden;\n\n .border {\n top: 0px;\n left: 0px;\n position: absolute;\n background: url(${thumb_bg});\n background-size: 72px 72px;\n width: 72px;\n height: 72px;\n\n &:hover {\n background-image: url(${thumb_over});\n }\n }\n .custom {\n top: 0px;\n left: 0px;\n position: absolute;\n margin: 4px 4px;\n object-fit: cover;\n object-position: center center;\n height: 64px;\n width: 64px;\n border-radius: 8px;\n }\n`;\n\nconst ThumbLarge = styled.div`\n width: 216px;\n height: 270px;\n position: relative;\n box-overflow: hidden;\n\n .custom {\n top: 0px;\n left: 0px;\n position: absolute;\n object-fit: cover;\n object-position: center center;\n height: 216px;\n width: 216px;\n border-radius: 8px 8px 0px 0px;\n }\n\n .info {\n font-size: 12px;\n position: absolute;\n padding-bottom: 3px;\n padding-left: 10px;\n border-radius: 0px 0px 6px 6px;\n left: 0px;\n bottom: 0px;\n right: 0px;\n height: 54px;\n // text-shadow: 4px 4px 2px rgba(0, 0, 0, 0.6);\n background: ${(props) => (props.mode === \"light\" ? \"#fff\" : \"#1d1b24\")};\n border: 1px solid\n ${(props) => (props.mode === \"light\" ? \"#c4bcdb\" : \"#3f3855\")};\n border-top: 0px solid;\n .label {\n font-size: 9px;\n margin-bottom: -2px;\n }\n .collection {\n position: absolute;\n top: 0px;\n }\n .author {\n position: absolute;\n top: 19px;\n }\n .price {\n text-align: right;\n position: absolute;\n top: 19px;\n right: 8px;\n }\n }\n`;\n\nexport const NFTMenu = ({ id, meta, owner, nobuy = false, renderButtons }) => {\n const pro = useSelector((state) => state.user.pro);\n\n return (\n \n {owner ? (\n \n {renderButtons ? renderButtons({ id, meta }) : null}\n {pro ? : null}\n\n \n {pro ? : null}\n \n \n\n \n {pro ? : null}\n {pro ? : null}\n \n ) : (\n \n {!nobuy && meta.transferable && meta.price.amount !== \"0\" ? (\n \n \n \n ) : null}\n \n )}\n \n );\n};\n\nfunction SetPriceButton({ id, meta }) {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const dispatch = useDispatch();\n const address = useSelector((state) => state.user.address);\n\n const initialRef = React.useRef();\n const removeSale = async () => {\n onClose();\n let toastId = toast(\"Removing from sale...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n\n let price = {\n amount: 0,\n marketplace: [\n {\n address: AccountIdentifier.TextToArray(MARKETPLACE_AID),\n share: MARKETPLACE_SHARE,\n },\n ],\n };\n\n try {\n await dispatch(nft_set_price({ id, price }));\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n
\n
Removed from sale.
\n
\n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n console.error(\"Remove from sale error\", e);\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n };\n const setPriceOk = async () => {\n let priceval = parseFloat(initialRef.current.value);\n\n let amount = AccountIdentifier.icpToE8s(\n priceval /\n (1 - (MARKETPLACE_SHARE + ANVIL_SHARE + meta.authorShare) / 10000)\n );\n\n let price = {\n amount: amount,\n marketplace: [\n {\n address: AccountIdentifier.TextToArray(MARKETPLACE_AID),\n share: MARKETPLACE_SHARE,\n },\n ],\n };\n // console.log(price);\n\n onClose();\n let toastId = toast(\"Setting price...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n\n try {\n await dispatch(nft_set_price({ id, price }));\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n
\n
Setting price successfull.
\n
\n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n console.error(\"SetPrice error\", e);\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n };\n\n return (\n <>\n \n\n \n \n \n Set Sell Price\n \n \n \n \n Price in \n \n\n \n \n \n \n \n \n \n\n {/* */}\n \n \n The amount you specify is increased by:\n \n {(MARKETPLACE_SHARE / 100).toFixed(2)}% Marketplace share.\n \n \n {(ANVIL_SHARE / 100).toFixed(2)}% Anvil protocol share.\n \n \n {(meta.authorShare / 100).toFixed(2)}% NFT author share.\n \n \n Additional flat recharge fee if it's not fully charged.\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction TransferButton({ id, meta }) {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const [alertOpen, setAlertOpen] = React.useState(false);\n\n const dispatch = useDispatch();\n const initialRef = React.useRef();\n\n const confirmOk = async () => {\n let toAddress = initialRef.current.value.toUpperCase();\n\n onClose();\n\n await dispatch(nft_transfer({ id, toAddress }));\n };\n\n const transferOk = async () => {\n let toAddress = initialRef.current.value.toUpperCase();\n if (toAddress.toLowerCase().indexOf(\"a00\") !== 0) {\n setAlertOpen(true);\n return;\n }\n\n onClose();\n\n await dispatch(nft_transfer({ id, toAddress }));\n };\n\n return (\n <>\n \n\n \n \n \n \n \n \n \n {\" \"}\n Warning!\n
\n Address may not support this NFT\n
\n
\n
\n\n \n All NFTAnvil addresses start with A00 and this one doesn't. If you\n send to such address you may not be able to access your NFT.\n \n\n \n \n \n \n
\n
\n
\n\n \n \n \n Send NFT\n \n \n \n To Address\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction ApproveButton({ id, meta }) {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const dispatch = useDispatch();\n const initialRef = React.useRef();\n\n const approveOk = async () => {\n let spender = Principal.fromText(initialRef.current.value);\n\n onClose();\n let toastId = toast(\"Approving...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n try {\n let { transactionId } = await dispatch(nft_approve({ id, spender }));\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n console.error(\"Transfer error\", e);\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n };\n\n return (\n <>\n \n\n \n \n \n Approve\n \n \n \n This will allow a principal to transfer, socket, unsocket and use\n this NFT. Setting one clears the previous.\n \n \n Principal\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction UnsocketButton({ id }) {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const dispatch = useDispatch();\n const initialRef = React.useRef();\n\n const transferOk = async () => {\n let plug_id = initialRef.current.value;\n onClose();\n let toastId = toast(\"Unplugging...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n try {\n let { transactionId } = await dispatch(\n nft_unsocket({ socket_id: id, plug_id })\n );\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n console.error(\"Unplugging error\", e);\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n };\n return (\n <>\n \n\n \n \n \n Unplug NFT from socket\n \n \n \n Target plug token identifier\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction SocketButton({ id }) {\n const { isOpen, onOpen, onClose } = useDisclosure();\n const dispatch = useDispatch();\n const initialRef = React.useRef();\n\n const transferOk = async () => {\n let socket_id = initialRef.current.value;\n onClose();\n let toastId = toast(\"Plugging...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n try {\n let { transactionId } = await dispatch(\n nft_plug({ plug_id: id, socket_id })\n );\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n console.error(\"Plugging error\", e);\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: ,\n });\n }\n };\n return (\n <>\n \n\n \n \n \n Plug NFT into socket\n \n \n \n Target socket token identifier\n \n \n Both the plug and the socket need to be owned by the same\n account\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport const UseButton = ({ id, meta }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const onClose = () => setIsOpen(false);\n const dispatch = useDispatch();\n\n const cancelRef = React.useRef();\n\n const useOk = async () => {\n onClose();\n let toastId = toast(\"Using...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n\n try {\n let useData = { cooldown: 2 };\n let memo = [12, 10, 5, 0, 0, 1, 7];\n let { transactionId } = await dispatch(\n nft_use({ id, use: useData, memo })\n );\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n let msg = \"OnCooldown\" in e ? \"On cooldown\" : JSON.stringify(e);\n\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n
\n
Using error.
\n
{msg}
\n
\n ),\n });\n }\n };\n\n return (\n <>\n \n\n \n \n \n \n Use NFT\n \n\n \n This use is for demo purposes. Once used, the NFT will have 2 min\n cooldown.\n \n\n \n \n \n \n \n \n \n \n );\n};\n\nexport const TransferLinkButton = ({ id, meta }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [creatingLink, setCreateLink] = React.useState(false);\n\n const onClose = () => setIsOpen(false);\n const dispatch = useDispatch();\n\n const cancelRef = React.useRef();\n\n const transferOk = async () => {\n setCreateLink(true);\n let code = await dispatch(nft_transfer_link({ id }));\n setCreateLink(false);\n\n setLink(\"https://nftanvil.com/\" + code);\n };\n\n const [link, setLink] = React.useState(false);\n\n return (\n <>\n \n\n \n \n \n {!link ? (\n <>\n \n Create gift code\n \n\n \n Are you sure? Anyone with the code/link will be able to take\n the NFT from you.\n \n\n \n {!creatingLink ? (\n \n ) : null}\n \n Create link\n \n \n \n ) : (\n <>\n \n Link to claim NFT\n \n\n {link}\n\n \n \n \n \n )}\n \n \n \n \n );\n};\n\nexport const BuyButton = ({ id, meta }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const onClose = () => setIsOpen(false);\n const dispatch = useDispatch();\n\n const cancelRef = React.useRef();\n\n let amount = BigInt(meta.price.amount);\n\n const buyOk = () => {\n onClose();\n dispatch(nft_purchase({ id, amount }));\n };\n\n return (\n <>\n {\n setIsOpen(true);\n }}\n >\n Buy\n \n\n \n \n \n \n Buy NFT\n \n\n \n Buy for {AccountIdentifier.e8sToIcp(amount)} ICP ?\n \n The price includes full recharge\n \n \n Please make sure the seller or the author are reputable and\n known to you. If the NFT has domain verification, make sure you\n trust its domain. Someone could have minted artwork downloaded\n from the Internet without the rights to do so. Being displayed\n here doesn't make it legitimate.\n \n \n\n \n \n \n \n \n \n \n \n );\n};\n\nexport const BurnButton = ({ id }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const onClose = () => setIsOpen(false);\n const dispatch = useDispatch();\n\n const cancelRef = React.useRef();\n\n const burnOk = async () => {\n onClose();\n\n let toastId = toast(\"Burning...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n\n try {\n let { transactionId } = await dispatch(nft_burn({ id }));\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n \n ),\n });\n }\n };\n return (\n <>\n \n\n \n \n \n \n Burn NFT\n \n\n \n Are you sure? This will destroy the NFT completely. You can't undo\n this action afterwards.\n \n\n \n \n \n \n \n \n \n \n );\n};\n\nexport const RechargeButton = ({ id, meta }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [rechargeCost, setRechargeCost] = React.useState(0);\n\n const onClose = () => setIsOpen(false);\n const dispatch = useDispatch();\n\n const cancelRef = React.useRef();\n\n useEffect(() => {\n dispatch(nft_recharge_quote({ id })).then((re) => {\n setRechargeCost(re);\n });\n }, [id, meta, dispatch]);\n\n const rechargeOk = async () => {\n onClose();\n dispatch(nft_recharge({ id, amount: rechargeCost }));\n };\n\n if (!rechargeCost) return null;\n return (\n <>\n \n\n \n \n \n \n Recharge NFT\n \n\n \n Are you sure? This will take {rechargeCost} from your\n balance and put it in the NFT\n \n\n \n \n \n \n \n \n \n \n );\n};\n\nexport const NFTPopover = ({ meta }) => {\n return (\n \n {/*
\n \n
*/}\n
\n \n
\n
\n );\n};\n\nexport const NFTLarge = ({ id }) => {\n const meta = useSelector((state) => state.nft[id]);\n\n const mode = useColorModeValue(\"light\", \"dark\");\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(nft_fetch(id));\n }, [id, dispatch]);\n\n if (!meta) return null;\n\n return (\n \n {meta.thumb?.ipfs?.url ? (\n \"\"\n ) : meta.thumb?.internal?.url ? (\n \"\"\n ) : meta.thumb?.external ? (\n \"\"\n ) : (\n \"\"\n )}\n\n
\n {meta.domain ? (\n meta.domain.indexOf(\"twitter.com/\") !== -1 ? (\n \n ) : (\n \n )\n ) : null}\n {/* {meta.domain ? (\n
\n \n
\n ) : null} */}\n\n
\n
AUTHOR
\n
\n {meta.author}\n
\n
\n {meta.price.amount && meta.price.amount !== \"0\" ? (\n
\n
PRICE
\n {meta.price.amount}\n
\n ) : null}\n
\n
\n );\n};\n\nexport const NFT = ({ id, thumbSize, onClick }) => {\n const meta = useSelector((state) => state.nft[id]);\n\n const dispatch = useDispatch();\n\n const [popoverOpen, setPopover] = useState(false);\n\n useEffect(() => {\n dispatch(nft_fetch(id));\n }, [id, dispatch]);\n\n return (\n {\n setPopover(true);\n }}\n onMouseOut={() => {\n setPopover(false);\n }}\n >\n {meta?.thumb?.ipfs?.url ? (\n \"\"\n ) : meta?.thumb?.internal?.url ? (\n \"\"\n ) : meta?.thumb?.external ? (\n \"\"\n ) : (\n \"\"\n )}\n
\n {popoverOpen ? (\n \n \n \n ) : null}\n \n );\n};\n\nexport const NFTClaim = ({ code, onRedirect }) => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n onRedirect(dispatch(nft_enter_code(code)));\n }, [code, dispatch]);\n\n return null;\n};\n\nexport const NFTPage = ({ id, code, renderButtons }) => {\n // const id = p.match.params.id;\n // const code = p.match.params.code;\n const address = useSelector((state) => state.user.address);\n\n const meta = useSelector((state) => state.nft[id]);\n const pro = useSelector((state) => state.user.pro);\n\n const [claimed, setClaimed] = useState(false);\n const [error, setError] = useState(false);\n const [claiming, setClaiming] = useState(false);\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(nft_fetch(id));\n }, [id, dispatch]);\n\n const onClaim = async () => {\n setClaiming(true);\n setError(false);\n\n let resp = await dispatch(nft_claim_link({ code }));\n setClaiming(false);\n\n if (resp.ok !== undefined) {\n setClaimed(true);\n } else {\n setError(true);\n }\n };\n\n if (!meta) return null;\n return (\n \n
\n \n
\n
\n \n \n \n\n {pro ? : null}\n \n
\n\n
\n \n
\n\n {claimed ? (\n <>\n \n \n \n Claiming sucess!\n \n The NFT is now yours. This link can't be used again.\n \n \n \n ) : null}\n {!claimed && code ? (\n <>\n
\n \n \n Claim NFT\n \n \n
\n\n {error ? (\n \n \n Claiming failed!\n \n Perhaps someone else claimed this code before you or it's not\n valid\n \n \n ) : null}\n \n ) : null}\n {meta.history ? (\n \n ) : null}\n
\n );\n};\n\nexport const NFTContent = (p) => {\n const dispatch = useDispatch();\n\n //if (p.meta?.content?.external) return null;\n\n const c =\n p.meta?.content?.internal ||\n p.meta?.content?.ipfs ||\n p.meta?.content?.external;\n\n if (!c) return null;\n\n const ctype = c.contentType\n ? c.contentType.indexOf(\"image/\") !== -1\n ? \"image\"\n : c.contentType.indexOf(\"video/\") !== -1\n ? \"video\"\n : \"unknown\"\n : \"image\";\n\n if (ctype === \"unknown\") return null;\n\n const url = c.url || c;\n\n return (\n \n {ctype === \"image\" && url ? (\n \"\"\n ) : null}\n {ctype === \"video\" && url ? (\n \n ) : null}\n \n );\n};\n\nexport const NFTPreview = (p) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport const NFTThumb = (p) => {\n if (p.meta?.thumb?.external) return null;\n\n const c =\n p.meta?.thumb?.internal || p.meta?.thumb?.ipfs || p.meta?.thumb?.external;\n\n if (!c) return null;\n\n return (\n \n {c.url ? \"\" : \"\"}\n
\n \n );\n};\n\nexport const NFTThumbLarge = (p) => {\n const mode = useColorModeValue(\"light\", \"dark\");\n if (p.meta?.thumb?.external) return null;\n\n const c =\n p.meta?.thumb?.internal || p.meta?.thumb?.ipfs || p.meta?.thumb?.external;\n\n if (!c) return null;\n\n return (\n \n {c.url ? \"\" : \"\"}\n
\n {p.meta.domain ? (\n
\n {p.meta.domain ? (\n p.meta.domain.indexOf(\"twitter.com/\") !== -1 ? (\n \n ) : (\n \n )\n ) : null}\n
\n ) : null}\n\n
\n
AUTHOR
\n
\n {p.meta.author}\n
\n
\n {p.meta.price.amount && p.meta.price.amount !== \"0\" ? (\n
\n
PRICE
\n {p.meta.price.amount}\n
\n ) : null}\n
\n
\n );\n};\n\nconst MetaDomainTwitter = ({ meta, showLink }) => {\n let url = new URL(\"https://\" + meta.domain);\n let surl = url.href.replace(/^https?:\\/\\//, \"\");\n const dispatch = useDispatch();\n const domainInfo = useSelector((state) => state.inventory[surl + \"_domain\"]);\n const isLoading = domainInfo === -1 ? true : false;\n let verified = false;\n try {\n if (!isLoading && domainInfo === meta.author) verified = true;\n } catch (e) {\n console.log(e);\n }\n\n useEffect(() => {\n dispatch(verify_domain_twitter(surl));\n }, [surl, dispatch]);\n\n let urlSafe = verified ? \"https://\" + surl : null;\n\n const [a, b, c, d] = meta.domain.split(\"/\");\n\n let content = (\n <>\n {a}/{b}{\" \"}\n {isLoading ? (\n \n ) : verified ? (\n \n ) : null}\n \n );\n\n return (\n \n {showLink && urlSafe ? (\n \n {content}\n \n ) : (\n content\n )}\n \n );\n};\n\nconst MetaDomain = ({ meta, showLink }) => {\n let url = new URL(\"https://\" + meta.domain);\n const dispatch = useDispatch();\n const domainInfo = useSelector(\n (state) => state.inventory[url.hostname + \"_domain\"]\n );\n const isLoading = domainInfo === -1 ? true : false;\n let verified = false;\n try {\n if (\n !isLoading &&\n typeof domainInfo === \"object\" &&\n domainInfo[url.pathname].indexOf(meta.author) !== -1\n )\n verified = true;\n } catch (e) {\n console.log(e);\n }\n\n useEffect(() => {\n dispatch(verify_domain(url.hostname));\n }, [url.hostname, dispatch]);\n\n let urlSafe = verified ? \"https://\" + url.hostname + url.pathname : null;\n\n let content = (\n <>\n {meta.domain}{\" \"}\n {isLoading ? (\n \n ) : verified ? (\n \n ) : null}\n \n );\n\n return (\n \n {showLink && urlSafe ? (\n \n {content}\n \n ) : (\n content\n )}\n \n );\n};\n\nconst capitalize = (x) => x.charAt(0).toUpperCase() + x.slice(1);\n\nexport const NFTInfo = ({ id, meta }) => {\n const mode = useColorModeValue(\"light\", \"dark\");\n\n const bg = useColorModeValue(\"gray.100\", \"gray.700\");\n const textColor = useColorModeValue(\"gray.900\", \"gray.100\");\n const isDark = mode === \"dark\";\n if (!meta || !(\"quality\" in meta)) return null;\n const qcolor = itemQuality[mode][meta.quality].color;\n let nowMinutes = Math.floor(Date.now() / 1000 / 60);\n\n let things = [\n meta.name ? (\n \n {capitalize(meta.name)}\n \n ) : null,\n meta.tags && meta.tags.length ? (\n \n {meta.tags.map((a, idx) => (\n \n {a}\n \n ))}\n \n ) : null,\n meta.domain ? (\n meta.domain.indexOf(\"twitter.com/\") !== -1 ? (\n \n ) : (\n \n )\n ) : null,\n \"bindsForever\" in meta.transfer ? (\n \n Binds on transfer\n \n ) : null,\n \"bindsDuration\" in meta.transfer ? (\n \n Binds on transfer for{\" \"}\n {moment.duration(meta.transfer.bindsDuration, \"minutes\").humanize()}\n \n ) : null,\n meta.boundUntil > nowMinutes ? (\n \n {\"bound for \" +\n moment.duration(meta.boundUntil - nowMinutes, \"minutes\").humanize()}\n \n ) : null,\n meta?.use?.consumable?.desc ? (\n \n Use: {capitalize(meta.use.consumable.desc)} (Consumed in the process)\n \n ) : null,\n meta.cooldownUntil > nowMinutes ? (\n \n {moment\n .duration(meta.cooldownUntil - nowMinutes, \"minutes\")\n .humanize() + \" cooldown left\"}\n \n ) : null,\n meta?.use?.cooldown?.desc ? (\n \n Use: {capitalize(meta.use.cooldown.desc)} (\n {moment.duration(meta.use.cooldown.duration, \"minutes\").humanize()}{\" \"}\n cooldown)\n \n ) : null,\n meta?.secret ? (\n \n Secret\n \n ) : null,\n meta.hold?.external?.desc ? (\n \n Hold: {capitalize(meta.hold.external.desc)}\n \n ) : null,\n meta.attributes && meta.attributes.length\n ? meta.attributes.map((a, idx) => (\n \n {a[1] >= 0 ? \"+\" : \"\"}\n {a[1]} {capitalize(a[0])}\n \n ))\n : null,\n meta.lore ? (\n \n \"{capitalize(meta.lore)}\"\n \n ) : null,\n meta.rechargeable && meta.ttl && meta.ttl > 0 ? (\n \n Recharge in {moment.duration(meta.ttl, \"minutes\").humanize()}\n \n ) : null,\n !meta.rechargeable && meta.ttl && meta.ttl > 0 ? (\n \n Expires in {moment.duration(meta.ttl, \"minutes\").humanize()}\n \n ) : null,\n meta.sockets && meta.sockets.length ? (\n \n {meta.sockets.map((tid, idx) => (\n \n ))}\n \n ) : null,\n meta.price.amount && meta.price.amount !== \"0\" ? (\n \n {meta.price.amount}\n \n ) : null,\n id ? (\n \n \n \n\n \n {id}\n \n \n ) : null,\n ].filter(Boolean);\n\n if (!things.length) return null;\n return (\n \n {meta.content?.thumb?.url ? : \"\"}\n\n {things}\n \n );\n};\n\nconst NFTBatFull = styled.span`\n display: inline-block;\n background-color: ${(props) => props.color};\n width: 4px;\n margin-left: 1px;\n border-radius: 1px;\n height: 7px;\n`;\n\nexport const NFTBattery = ({ meta }) => {\n const icpCycles = Number(useSelector((state) => state.user.oracle.icpCycles));\n\n const avg_msg_cost_pwr = Number(AVG_MESSAGE_COST) / icpCycles; //TODO: calculate it from oracle data\n let ttl = meta.ttl > 0 ? meta.ttl : Number(FULLY_CHARGED_MINUTES);\n let msg_full = (ttl / 60 / 24 + 100) * avg_msg_cost_pwr;\n let perc = meta.pwr[0] / msg_full;\n let avg_num_ops_left = Math.round(meta.pwr[0] / avg_msg_cost_pwr);\n\n let color = `rgb(${Math.floor(125 - 125 * perc)}, ${Math.floor(\n 200 * perc\n )}, 255)`;\n let colorEmpty = `rgb(${Math.floor(255 - 255 * perc)}, 70, 70)`;\n return (\n \n \n {avg_num_ops_left + \" operations left\"}\n \n \n Indicator displaying PWR stored inside the NFT. Refills\n automatically on marketplace sale.\n \n \n }\n >\n \n = 0.15 ? color : colorEmpty} />\n = 0.5 ? color : colorEmpty} />\n = 0.75 ? color : colorEmpty} />\n = 0.9 ? color : colorEmpty} />\n \n \n );\n};\n\nexport const NFTProInfo = ({ id, meta }) => {\n const bg = useColorModeValue(\"gray.200\", \"gray.900\");\n if (!meta || !(\"quality\" in meta)) return null;\n\n let nowMinutes = Math.floor(Date.now() / 1000 / 60);\n\n //if (!meta.name) return null;\n return (\n \n {meta.content?.thumb?.url ? : \"\"}\n\n \n {/* {id ? (\n \n ID: {id}\n \n ) : null} */}\n {meta.pwr ? (\n \n Ops: {meta.pwr[0]} Storage: {meta.pwr[1]}\n \n ) : null}\n {meta.bearer ? (\n \n Bearer: {meta.bearer}\n \n ) : null}\n {meta.author ? (\n \n Author: {meta.author}\n \n ) : null}\n {meta.authorShare ? (\n \n Author's share: {(meta.authorShare / 100).toFixed(2)}%\n \n ) : null}\n {meta.created ? (\n \n Minted: {moment(meta.created * 60 * 1000).format(\"LLLL\")}\n \n ) : null}\n {meta.entropy ? (\n \n Entropy: {toHexString(meta.entropy)}\n \n ) : null}\n \n \n );\n};\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { AuthClient } from \"@dfinity/auth-client\";\nimport { router } from \"@vvv-interactive/nftanvil-canisters/cjs/router.js\";\n// import Cookies from \"js-cookie\";\nimport { ledgerCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/ledger.js\";\nimport { pwrCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/pwr.js\";\n\nimport authentication from \"../auth\";\n\nimport {\n principalToAccountIdentifier,\n getSubAccountArray,\n} from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\n\nimport { BigIntToString } from \"@vvv-interactive/nftanvil-tools/cjs/data.js\";\n\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport { PrincipalFromSlot } from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\n\nconst initialState = {\n address: null,\n subaccount: null,\n principal: null,\n anonymous: true,\n focused: true,\n icp: \"0\",\n anv: \"0\",\n map: {},\n acccan: \"\",\n oracle: {\n icpCycles: \"160000\",\n icpFee: \"10000\",\n pwrFee: \"10000\",\n anvFee: \"10000\",\n },\n pro: false,\n};\n\nexport const userSlice = createSlice({\n name: \"user\",\n initialState,\n reducers: {\n resetReducer: () => initialState,\n balancesSet: (state, action) => {\n return {\n ...state,\n icp: action.payload.icp,\n anv: action.payload.anv,\n oracle: action.payload.oracle,\n };\n },\n focusSet: (state, action) => {\n return { ...state, focused: action.payload };\n },\n proSet: (state, action) => {\n return {\n ...state,\n pro: action.payload,\n };\n },\n\n authSet: (state, action) => {\n const { address, subaccount, principal, anonymous, map, acccan } =\n action.payload;\n return {\n ...state,\n address,\n principal,\n anonymous,\n subaccount,\n ...(map ? { map, acccan } : {}),\n };\n },\n mapSet: (state, action) => {\n return {\n ...state,\n map: action.payload,\n };\n },\n },\n});\n\n// Action creators are generated for each case reducer function\nexport const { resetReducer, proSet, authSet, balancesSet, focusSet, mapSet } =\n userSlice.actions;\n\nexport const user_login = () => (dispatch) => {\n dispatch(user_auth(false));\n};\n\nexport const user_auth =\n (allowAnonymous = true) =>\n async (dispatch, getState) => {\n await authentication.create();\n let authClient = authentication.client;\n\n if (!allowAnonymous && !(await authClient.isAuthenticated())) {\n await new Promise(async (resolve, reject) => {\n authClient.login({\n //maxTimeToLive: 10000000000n,\n ...(process.env.REACT_APP_IDENTITY_PROVIDER\n ? { identityProvider: process.env.REACT_APP_IDENTITY_PROVIDER }\n : {}),\n onSuccess: async (e) => {\n console.log(authClient);\n resolve();\n },\n onError: reject,\n });\n });\n }\n\n const identity = await authClient.getIdentity();\n\n let principal = identity.getPrincipal().toString();\n let anonymous = !(await authClient.isAuthenticated());\n let address, subaccount;\n\n if (!anonymous) {\n for (let i = 0; i < 100000; i++) {\n let c = principalToAccountIdentifier(principal, i);\n\n if (c.substring(0, 3) === \"a00\") {\n address = c;\n subaccount = AccountIdentifier.ArrayToText(getSubAccountArray(i));\n //console.log(subaccount);\n\n break;\n }\n }\n }\n\n let pro = window.localStorage.getItem(\"pro\") == \"true\";\n if (pro) dispatch(proSet(true));\n\n router.setOptions(process.env.REACT_APP_ROUTER_CANISTER_ID, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let map = await router.config_get();\n\n map.router = map.router.toString();\n map = BigIntToString(map);\n\n // console.log(\"ROUTER MAP\", map);\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n console.log(\n \"Proxy command:\\n icx-proxy --address 127.0.0.1:8453 --dns-alias \" +\n map.nft_avail\n .map(\n (slot) =>\n `${slot}.lvh.me:${PrincipalFromSlot(map.space, slot).toText()}`\n )\n .join(\" \")\n );\n }\n\n let acccan = address\n ? PrincipalFromSlot(\n map.space,\n AccountIdentifier.TextToSlot(address, map.account)\n ).toText()\n : null;\n\n dispatch(\n authSet({ address, subaccount, principal, anonymous, map, acccan })\n );\n dispatch(user_refresh_balances());\n };\n\nexport const user_refresh_config = () => async (dispatch, getState) => {\n let map = await router.config_get();\n map = BigIntToString(map);\n // console.log(\"ROUTER MAP\", map);\n dispatch(mapSet(map));\n};\n\nexport const user_refresh_balances = () => async (dispatch, getState) => {\n if (!authentication || !authentication.client) return;\n if (!(await authentication.client.isAuthenticated())) return;\n await dispatch(user_refresh_icp_balance());\n if (!(await authentication.client.isAuthenticated())) return;\n dispatch(user_refresh_pwr_balance());\n dispatch(user_restore_purchase());\n};\n\nexport const user_logout = () => async (dispatch, getState) => {\n var authClient = await AuthClient.create();\n\n authClient.logout();\n\n const identity = await authClient.getIdentity();\n router.setOptions(process.env.REACT_APP_ROUTER_CANISTER_ID, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let principal = identity.getPrincipal().toString();\n let anonymous = !(await authClient.isAuthenticated());\n\n //dispatch(authSet({ address: null, principal, anonymous }));\n\n dispatch(resetReducer());\n dispatch(user_auth());\n};\n\nexport const user_refresh_icp_balance = () => async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n\n let s = getState();\n\n let address = s.user.address;\n if (!address) return;\n\n let ledger = ledgerCanister({\n agentOptions: authentication.getAgentOptions(),\n });\n\n await ledger\n .account_balance({\n account: AccountIdentifier.TextToArray(address),\n })\n .then((icp) => {\n let e8s = icp.e8s;\n\n if (e8s >= 30000n) {\n // automatically wrap ICP\n dispatch(user_pwr_buy({ amount: e8s - 10000n }));\n }\n })\n .catch((e) => {\n if (!process.env.REACT_APP_LOCAL_BACKEND) console.log(e); // Will always show bug in dev mode because there is ledger canister on the local replica\n });\n};\n\nexport const user_refresh_pwr_balance = () => async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n\n let s = getState();\n\n let address = s.user.address;\n if (!address) return;\n\n let pwrcan = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n { agentOptions: authentication.getAgentOptions() }\n );\n\n await pwrcan\n .balance({\n user: { address: AccountIdentifier.TextToArray(address) },\n })\n .then(async ({ pwr, anv, oracle }) => {\n // if (Number(pwr) === 0) {\n // //TODO: Remove in production\n // let fres = await pwrcan.faucet({\n // aid: AccountIdentifier.TextToArray(address),\n // amount: 800000000n,\n // });\n // dispatch(refresh_pwr_balance());\n // return;\n // }\n\n oracle = BigIntToString(oracle);\n dispatch(\n balancesSet({ icp: pwr.toString(), anv: anv.toString(), oracle })\n );\n })\n .catch((e) => {\n // We are most probably logged out. There is currently no better way to handle expired agentjs chain\n if (e.toString().includes(\"delegation has expired\"))\n dispatch(user_logout());\n });\n};\n\nexport const user_pwr_transfer =\n ({ to, amount, memo = [] }) =>\n async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n\n let s = getState();\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let pwr = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n {\n agentOptions: authentication.getAgentOptions(),\n }\n );\n\n let trez = await pwr.pwr_transfer({\n amount,\n from: { address: AccountIdentifier.TextToArray(address) },\n to: { address: AccountIdentifier.TextToArray(to) },\n subaccount: subaccount,\n memo,\n });\n\n if (!(\"ok\" in trez)) throw new Error(JSON.stringify(trez));\n\n dispatch(user_refresh_balances());\n\n return trez;\n };\n\nexport const user_transfer_icp =\n ({ to, amount }) =>\n async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n\n let s = getState();\n\n let address = s.user.address;\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let pwr = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n {\n agentOptions: authentication.getAgentOptions(),\n }\n );\n\n let trez = await pwr.pwr_withdraw({\n amount,\n from: { address: AccountIdentifier.TextToArray(address) },\n to: { address: AccountIdentifier.TextToArray(to) },\n subaccount: subaccount,\n });\n\n if (!(\"ok\" in trez)) throw new Error(JSON.stringify(trez));\n\n dispatch(user_refresh_balances());\n\n return trez;\n };\n\nexport const user_pwr_buy =\n ({ amount }) =>\n async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n let address = s.user.address;\n\n let pwr = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n {\n agentOptions: authentication.getAgentOptions(),\n }\n );\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let intent = await pwr.pwr_purchase_intent({\n user: { address: AccountIdentifier.TextToArray(address) },\n subaccount,\n });\n if (intent.err) throw intent.err;\n\n let paymentAddress = intent.ok;\n\n let ledger = ledgerCanister({\n agentOptions: authentication.getAgentOptions(),\n });\n\n let ledger_result = await ledger.transfer({\n memo: 0,\n amount: { e8s: amount },\n fee: { e8s: 10000n },\n from_subaccount: subaccount,\n to: paymentAddress,\n created_at_time: [],\n });\n\n if (ledger_result.Ok) {\n } else {\n console.error(ledger_result.Err);\n return;\n }\n\n try {\n let claim = await pwr.pwr_purchase_claim({\n user: { address: AccountIdentifier.TextToArray(address) },\n subaccount,\n });\n\n if (claim.err) throw claim.err;\n\n let { transactionId } = claim.ok;\n } catch (e) {}\n\n dispatch(user_refresh_balances());\n };\n\nexport const user_restore_purchase = () => async (dispatch, getState) => {\n let s = getState();\n\n let identity = authentication.client.getIdentity();\n\n let address = s.user.address;\n\n let pwr = pwrCanister(\n PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.pwr)\n ),\n {\n agentOptions: authentication.getAgentOptions(),\n }\n );\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n try {\n let claim = await pwr.pwr_purchase_claim({\n user: { address: AccountIdentifier.TextToArray(address) },\n subaccount,\n });\n\n if (claim.err) throw claim.err;\n\n let { transactionId } = claim.ok;\n\n dispatch(user_refresh_pwr_balance());\n } catch (e) {}\n};\n\nexport const window_focus = () => async (dispatch, getState) => {\n dispatch(focusSet(true));\n dispatch(user_refresh_balances());\n};\n\nexport const window_blur = () => async (dispatch, getState) => {\n dispatch(focusSet(false));\n};\n\nexport default userSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { accountCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/account.js\";\nimport authentication from \"../auth\";\nimport { produce } from \"immer\";\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport { PrincipalFromSlot } from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\nimport { tokenToText } from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\n\nexport const inventorySlice = createSlice({\n name: \"inventory\",\n initialState: {},\n reducers: {\n pageSet: (state, action) => {\n return produce(state, (draft) => {\n if (!draft[action.payload.aid]) draft[action.payload.aid] = [];\n draft[action.payload.aid][action.payload.pageIdx] = action.payload.list;\n return draft;\n });\n },\n metaSet: (state, action) => {\n return { ...state, [action.payload.aid + \"meta\"]: action.payload.meta };\n },\n verifiedDomainSet: (state, action) => {\n return {\n ...state,\n [action.payload.domain + \"_domain\"]: action.payload.data,\n };\n },\n },\n});\n\nconst { pageSet, metaSet, verifiedDomainSet } = inventorySlice.actions;\n\nexport const load_inventory =\n (aid, pageIdx, max) => async (dispatch, getState) => {\n let identity = authentication.client\n ? authentication.client.getIdentity()\n : null;\n let s = getState();\n if (!s.user.map.account?.length) return null;\n\n let can = PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(aid, s.user.map.account)\n );\n let acc = accountCanister(can, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let meta = await acc.meta(AccountIdentifier.TextToArray(aid));\n if (meta[0]) dispatch(metaSet({ aid, meta: meta[0] }));\n // console.log(\"ACC META\", meta);\n\n pageIdx = parseInt(pageIdx, 10);\n let list = await acc.list(\n AccountIdentifier.TextToArray(aid),\n pageIdx * max,\n (pageIdx + 1) * max\n );\n list = list.filter((x) => x !== 0n).map((x) => tokenToText(x));\n dispatch(pageSet({ aid, pageIdx, list }));\n };\n\nexport const verify_domain_twitter = (domain) => async (dispatch, getState) => {\n let s = getState();\n\n if (s.inventory[domain + \"_domain\"] === undefined) {\n dispatch(verifiedDomainSet({ domain, data: -1 }));\n\n let data = await new Promise((resolve, reject) => {\n fetch(\"https://nftpkg.com/api/v1/verify?url=\" + domain)\n .then((response) => {\n return response.json();\n })\n .then((data) => {\n try {\n resolve(data.text.replace(/[\\s]+/gs, \"\"));\n } catch (e) {\n console.log(e);\n resolve(false);\n }\n })\n .catch((e) => {\n resolve(false);\n });\n });\n\n dispatch(verifiedDomainSet({ domain, data }));\n }\n};\n\nexport const verify_domain = (domain) => async (dispatch, getState) => {\n let s = getState();\n\n if (s.inventory[domain + \"_domain\"] === undefined) {\n dispatch(verifiedDomainSet({ domain, data: -1 }));\n\n let data = await new Promise((resolve, reject) => {\n fetch(\"https://\" + domain + \"/.well-known/nftanvil.json\")\n .then((response) => response.json())\n .then((data) => {\n try {\n resolve(data);\n } catch (e) {\n console.log(e);\n resolve(false);\n }\n })\n .catch((e) => {\n console.log(e);\n resolve(false);\n });\n });\n\n dispatch(verifiedDomainSet({ domain, data }));\n }\n};\n\nexport default inventorySlice.reducer;\n","import {\n Box,\n Spinner,\n Wrap,\n useColorModeValue,\n Center,\n Stack,\n Text,\n IconButton,\n} from \"@chakra-ui/react\";\n\nimport {\n HamburgerIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"@chakra-ui/icons\";\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { NFTLarge, NFT } from \"./NFT\";\nimport itemgrid from \"../assets/itemgrid.png\";\nimport itemgrid_light from \"../assets/itemgrid_light.png\";\nimport { useWindowSize } from \"react-use\";\n\nimport {\n useAnvilSelector as useSelector,\n useAnvilDispatch as useDispatch,\n} from \"../index.js\";\nimport { load_inventory } from \"../reducers/inventory\";\nimport styled from \"@emotion/styled\";\nimport { TX, ACC, NFTA, HASH, PWR, ICP } from \"./Code\";\nimport { NftHistory } from \"./History\";\nimport { tokenToText } from \"@vvv-interactive/nftanvil-tools/cjs/token\";\n\nconst InventoryBox = styled.div`\n background: url(${(props) => props.bg});\n background-size: 72px 72px;\n width: ${(props) => props.width}px;\n height: ${(props) => props.height}px;\n margin-top: 28px;\n padding: 0px;\n border-radius: 8px;\n cursor: pointer;\n`;\n\nexport const Inventory = ({ address, onOpenNft }) => {\n const maxItems = 100;\n\n const acc = useSelector((state) => state.user.map.account);\n const { width, height } = useWindowSize();\n const [pageIdx, setPageIdx] = useState(0);\n\n const [isLoading, setLoading] = useState(true);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n await dispatch(load_inventory(address, pageIdx, maxItems));\n setLoading(false);\n };\n let bg = useColorModeValue(itemgrid_light, itemgrid);\n\n useEffect(() => {\n if (!acc?.length) return null;\n load();\n }, [address, acc, pageIdx]);\n\n const items = useSelector(\n (state) => state.inventory[address] && state.inventory[address][pageIdx]\n );\n const meta = useSelector((state) => state.inventory[address + \"meta\"]);\n\n if (!items) return null;\n\n const cols = Math.min(Math.floor((width - 50) / 72), 10);\n const rows = Math.ceil(maxItems / cols);\n\n return (\n \n \n\n
\n \n {isLoading ? (\n \n
\n \n
\n
\n ) : (\n \n {items &&\n items.map((id, idx) => (\n onOpenNft(id)} />\n ))}\n \n )}\n
\n
\n\n \n\n {/* {meta ? (\n \n ) : null} */}\n
\n );\n};\n\nexport const InventoryLarge = ({ address }) => {\n const maxItems = 40;\n\n const acc = useSelector((state) => state.user.map.account);\n // const { width, height } = useWindowSize();\n const [pageIdx, setPageIdx] = useState(0);\n\n const [isLoading, setLoading] = useState(true);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n await dispatch(load_inventory(address, pageIdx, maxItems)).catch((e) => {\n console.log(e);\n });\n setLoading(false);\n };\n\n let bg = useColorModeValue(itemgrid_light, itemgrid);\n\n useEffect(() => {\n if (!acc?.length) return null;\n load();\n }, [address, acc, pageIdx]);\n\n const items = useSelector(\n (state) => state.inventory[address] && state.inventory[address][pageIdx]\n );\n\n const meta = useSelector((state) => state.inventory[address + \"meta\"]);\n\n if (!items) return null;\n\n // console.log({ items, meta, address, pageIdx, maxItems });\n\n return (\n \n \n\n
\n \n {isLoading ? (\n \n
\n \n
\n
\n ) : (\n \n {items && items.map((id) => )}\n \n )}\n
\n
\n\n \n\n {/* {meta ? (\n \n ) : null} */}\n
\n );\n};\n\nconst Pagination = ({ address, pageIdx, setPageIdx, end, lg = false }) => {\n return (\n \n {address}\n\n }\n variant=\"solid\"\n disabled={pageIdx - 1 < 0}\n onClick={() => {\n setPageIdx(pageIdx - 1);\n }}\n />\n\n }\n variant=\"outline\"\n disabled={end}\n onClick={() => {\n setPageIdx(pageIdx + 1);\n }}\n />\n \n );\n};\n","import React, { useEffect, useState } from \"react\";\n\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\nimport {\n useAnvilSelector as useSelector,\n useAnvilDispatch as useDispatch,\n} from \"../index.js\";\nimport { TX, ACC, NFTA, HASH } from \"./Code\";\n\nexport const TransactionToast = (props) => {\n const dispatch = useDispatch();\n\n return (\n {\n // if (props.tokenId) dispatch(push(props.tokenId));\n // else if (props.transactionId)\n // dispatch(push(\"/\" + TransactionId.toText(props.transactionId)));\n // }}\n >\n
{props.title}
\n {props.tokenId ? (\n
\n {props.tokenId}\n
\n ) : null}\n {props.transactionId ? (\n
\n {TransactionId.toText(props.transactionId)}\n
\n ) : null}\n
\n );\n};\n\nexport const TransactionFailed = ({ title, message }) => {\n return (\n
\n
{title}
\n
{message}
\n
\n );\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.priceStorage = exports.priceOps = exports.STORAGE_KB_PER_MIN = exports.QUALITY_PRICE = exports.FULLY_CHARGED_MINUTES = exports.FULLY_CHARGED_MESSAGES = exports.AVG_MESSAGE_COST = void 0;\nconst QUALITY_PRICE = 1000n; // max quality price per min\n\nexports.QUALITY_PRICE = QUALITY_PRICE;\nconst STORAGE_KB_PER_MIN = 8n; // prices are in cycles\n\nexports.STORAGE_KB_PER_MIN = STORAGE_KB_PER_MIN;\nconst AVG_MESSAGE_COST = 4000000n; // prices are in cycles\n\nexports.AVG_MESSAGE_COST = AVG_MESSAGE_COST;\nconst FULLY_CHARGED_MINUTES = 8409600n; //(16 * 365 * 24 * 60) 16 years\n\nexports.FULLY_CHARGED_MINUTES = FULLY_CHARGED_MINUTES;\nconst FULLY_CHARGED_MESSAGES = 5840n; // 1 message per day\n\nexports.FULLY_CHARGED_MESSAGES = FULLY_CHARGED_MESSAGES;\n\nconst priceStorage = _ref => {\n let {\n custom,\n content,\n thumb,\n quality,\n ttl\n } = _ref;\n // WARNING: Has to mirror motoko calulcations in nft_interface\n let cost_per_min = STORAGE_KB_PER_MIN * 100n;\n cost_per_min += BigInt(custom) * STORAGE_KB_PER_MIN / 1024n;\n if (content && content.internal) cost_per_min += BigInt(content.internal.size) * STORAGE_KB_PER_MIN / 1024n;\n if (thumb && thumb.internal) cost_per_min += BigInt(thumb.internal.size) * STORAGE_KB_PER_MIN / 1024n;\n cost_per_min += BigInt(Math.pow(quality, 3)) * QUALITY_PRICE;\n return 2n * cost_per_min * (ttl ? BigInt(ttl) : FULLY_CHARGED_MINUTES);\n};\n\nexports.priceStorage = priceStorage;\n\nconst priceOps = _ref2 => {\n let {\n ttl\n } = _ref2;\n return 2n * (ttl ? AVG_MESSAGE_COST * 100n + BigInt(ttl) * AVG_MESSAGE_COST / 60n / 24n : FULLY_CHARGED_MESSAGES * AVG_MESSAGE_COST);\n};\n\nexports.priceOps = priceOps;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"idlFactory\", {\n enumerable: true,\n get: function () {\n return _pwrDid.idlFactory;\n }\n});\nexports.pwrCanister = void 0;\n\nvar _agent = require(\"@dfinity/agent\");\n\nvar _pwrDid = require(\"./declarations/pwr/pwr.did.js\");\n\n// Imports and re-exports candid interface\nconst pwrCanister = (canisterId, options) => {\n const agent = new _agent.HttpAgent({ ...(options ? options.agentOptions : {})\n }); // Fetch root key for certificate validation during development\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch(err => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n } // Creates an actor with using the candid interface and the HttpAgent\n\n\n return _agent.Actor.createActor(_pwrDid.idlFactory, {\n agent,\n canisterId: canisterId.toText ? canisterId.toText() : canisterId,\n ...(options ? options.actorOptions : {})\n });\n};\n\nexports.pwrCanister = pwrCanister;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"idlFactory\", {\n enumerable: true,\n get: function () {\n return _routerDid.idlFactory;\n }\n});\nexports.routerCanister = exports.router = void 0;\n\nvar _agent = require(\"@dfinity/agent\");\n\nvar _routerDid = require(\"./declarations/router/router.did.js\");\n\n// Imports and re-exports candid interface\nconst defaultRouter = \"kbzti-laaaa-aaaai-qe2ma-cai\"; // CANISTER_ID is replaced by webpack based on node environment\n\nconst routerCanister = (canisterId, options) => {\n canisterId = canisterId || defaultRouter;\n const agent = new _agent.HttpAgent({ ...(options ? options.agentOptions : {})\n }); // Fetch root key for certificate validation during development\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch(err => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n } // Creates an actor with using the candid interface and the HttpAgent\n\n\n let actor = _agent.Actor.createActor(_routerDid.idlFactory, {\n agent,\n canisterId: canisterId.toText ? canisterId.toText() : canisterId,\n ...(options ? options.actorOptions : {})\n });\n\n return {\n router: actor,\n agent\n };\n};\n\nexports.routerCanister = routerCanister;\nconst router = {};\nexports.router = router;\n\nrouter.setOptions = (canisterId, options) => {\n canisterId = canisterId || defaultRouter;\n let x = routerCanister(canisterId, options);\n\n for (let key in x.router) {\n router[key] = function () {\n return x.router[key](...arguments);\n };\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canisterId = void 0;\nObject.defineProperty(exports, \"idlFactory\", {\n enumerable: true,\n get: function () {\n return _ledgerDid.idlFactory;\n }\n});\nexports.ledgerCanister = void 0;\n\nvar _agent = require(\"@dfinity/agent\");\n\nvar _ledgerDid = require(\"./declarations/ledger/ledger.did.js\");\n\n// Imports and re-exports candid interface\nconst canisterId = \"ryjl3-tyaaa-aaaaa-aaaba-cai\"; //process.env.NFT_CANISTER_ID;\n\nexports.canisterId = canisterId;\n\nconst ledgerCanister = options => {\n const agent = new _agent.HttpAgent({ ...(options ? options.agentOptions : {})\n }); // Fetch root key for certificate validation during development\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch(err => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n } // Creates an actor with using the candid interface and the HttpAgent\n\n\n return _agent.Actor.createActor(_ledgerDid.idlFactory, {\n agent,\n canisterId,\n ...(options ? options.actorOptions : {})\n });\n};\n\nexports.ledgerCanister = ledgerCanister;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tokenUrl = exports.tokenToText = exports.tokenFromText = exports.tokenFromBlob = exports.principalToAccountIdentifier = exports.neuronStakeAccountIdentifier = exports.ipfsTokenUrl = exports.getSubAccountArray = exports.encodeTokenId = exports.encodeChunkId = exports.decodeTokenId = void 0;\n\nvar _getCrc = require(\"@dfinity/principal/lib/cjs/utils/getCrc\");\n\nvar _sha = require(\"@dfinity/principal/lib/cjs/utils/sha224\");\n\nvar _principal = require(\"@dfinity/principal\");\n\nvar _data = require(\"./data.js\");\n\nvar _principal2 = require(\"./principal.js\");\n\nvar _baseX = _interopRequireDefault(require(\"base-x\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n//var token_base = basex(\"0123456789abcdefghijkmnopqrstuvwxyz\");\nvar token_base = (0, _baseX.default)(\"0123456789ABCDEFGHJKLMNPQRSTUVWXYZ\");\n\nconst neuronStakeAccountIdentifier = (p, s) => {\n const padding = [12, 110, 101, 117, 114, 111, 110, 45, 115, 116, 97, 107, 101]; // Buffer(\"\\x0Cneuron-stake\");\n\n const array = new Uint8Array([...padding, ..._principal.Principal.fromText(p).toUint8Array(), ...getSubAccountArray(s)]);\n const hash = (0, _sha.sha224)(array);\n const checksum = to32bits((0, _getCrc.getCrc32)(hash));\n const array2 = new Uint8Array([...checksum, ...hash]);\n return (0, _data.toHexString)(array2);\n};\n\nexports.neuronStakeAccountIdentifier = neuronStakeAccountIdentifier;\n\nconst principalToAccountIdentifier = (p, s) => {\n const padding = [10, 97, 99, 99, 111, 117, 110, 116, 45, 105, 100]; //Buffer(\"\\x0Aaccount-id\");\n\n const array = new Uint8Array([...padding, ..._principal.Principal.fromText(p).toUint8Array(), ...getSubAccountArray(s)]);\n const hash = (0, _sha.sha224)(array);\n const checksum = to32bits((0, _getCrc.getCrc32)(hash));\n const array2 = new Uint8Array([...checksum, ...hash]);\n return (0, _data.toHexString)(array2);\n};\n\nexports.principalToAccountIdentifier = principalToAccountIdentifier;\n\nconst getSubAccountArray = s => {\n if (Array.isArray(s)) {\n return s.concat(Array(32 - s.length).fill(0));\n } else {\n return Array(28).fill(0).concat(to32bits(s ? s : 0));\n }\n};\n\nexports.getSubAccountArray = getSubAccountArray;\n\nconst to32bits = num => {\n let b = new ArrayBuffer(4);\n new DataView(b).setUint32(0, num);\n return Array.from(new Uint8Array(b));\n};\n\nconst encodeTokenId = (slot, index) => {\n let t = Number(slot) << 16 | Number(index);\n return t;\n};\n\nexports.encodeTokenId = encodeTokenId;\n\nconst decodeTokenId = t => {\n t = Number(t);\n let slot = t >> 16;\n let index = t & 65535; // 16 bits\n\n return {\n slot,\n index\n };\n};\n\nexports.decodeTokenId = decodeTokenId;\n\nconst tokenToText = tid => {\n let p = new Uint8Array([...(0, _data.numberToBytesArray)((0, _getCrc.getCrc32)((0, _data.numberToBytesArray)(tid, 8)) & 65535, 2), ...(0, _data.numberToBytesArray)(tid, 8)]);\n return (\"NFTA\" + token_base.encode(p)).toLowerCase();\n};\n\nexports.tokenToText = tokenToText;\n\nconst tokenFromText = str => {\n str = str.toUpperCase();\n if (str.slice(0, 4) !== \"NFTA\") return null;\n let p = [...token_base.decode(str.slice(4))];\n let t = (0, _data.bytesArrayToNumber)(p.splice(-8)); // console.log(\n // str,\n // t,\n // decodeTokenId(t),\n // encodeTokenId(5, 1),\n // tokenToText(encodeTokenId(5, 1))\n // );\n\n return t;\n}; // console.log(\n// 4294967295,\n// tokenToText(4294967295),\n// tokenFromText(tokenToText(4294967295))\n// );\n// console.log(123, tokenToText(123), tokenFromText(tokenToText(123)));\n// export const encodeTokenId = (principal, index) => {\n// const padding = Buffer(\"\\x0Atid\");\n// const array = new Uint8Array([\n// ...padding,\n// ...Principal.fromText(principal).toUint8Array(),\n// ...to32bits(index),\n// ]);\n// return Principal.fromUint8Array(array).toText();\n// };\n\n\nexports.tokenFromText = tokenFromText;\n\nconst tokenFromBlob = b => {\n return _principal.Principal.fromUint8Array(b).toText();\n}; // export const decodeTokenId = (tid) => {\n// var p = [...Principal.fromText(tid).toUint8Array()];\n// var padding = p.splice(0, 4);\n// if (toHexString(padding) !== toHexString(Buffer(\"\\x0Atid\"))) {\n// return {\n// index: 0,\n// canister: tid,\n// token: encodeTokenId(tid, 0),\n// };\n// } else {\n// return {\n// index: from32bits(p.splice(-4)),\n// canister: Principal.fromUint8Array(p).toText(),\n// token: tid,\n// };\n// }\n// };\n\n\nexports.tokenFromBlob = tokenFromBlob;\n\nconst from32bits = ba => {\n var value;\n\n for (var i = 0; i < 4; i++) {\n value = value << 8 | ba[i];\n }\n\n return value;\n};\n\nconst bitShiftLeft = (x, l) => {\n return x << l >>> 0;\n};\n\nconst bitShiftRight = (x, l) => {\n return x >>> l;\n};\n\nconst bitUnsignedFix = x => {\n return x >>> 0;\n};\n\nconst encodeChunkId = (tokenIndex, chunkIndex, ctype) => {\n let r = bitUnsignedFix(bitShiftLeft(tokenIndex, 16) | bitUnsignedFix(bitShiftRight(chunkIndex & 255, 2) | ctype)); // 0 - content , 1 - thumb\n //console.log({ tokenIndex, chunkIndex, ctype }, r);\n\n return r;\n};\n\nexports.encodeChunkId = encodeChunkId;\n\nconst ipfsTokenUrl = cid => {\n return \"https://ipfs.io/ipfs/\" + cid;\n};\n\nexports.ipfsTokenUrl = ipfsTokenUrl;\n\nconst tokenUrl = (space, tid, type) => {\n let {\n index,\n slot\n } = decodeTokenId(tid);\n let canister = (0, _principal2.PrincipalFromSlot)(space, slot).toText();\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n return \"http://\" + slot + \".lvh.me:8453/\" + encodeChunkId(index, 0, type === \"content\" ? 0 : 1).toString(16);\n } else {\n return \"https://\" + canister + \".raw.ic0.app/\" + encodeChunkId(index, 0, type === \"content\" ? 0 : 1).toString(16);\n }\n};\n\nexports.tokenUrl = tokenUrl;","/* global BigInt */\nimport React from \"react\";\nimport {\n Box,\n Spinner,\n Wrap,\n useColorModeValue,\n Center,\n Button,\n Stack,\n Flex,\n ButtonGroup,\n Spacer,\n HStack,\n} from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useTheme } from \"@chakra-ui/react\";\nimport { NFT } from \"./NFT\";\nimport itemgrid from \"../assets/itemgrid.png\";\nimport itemgrid_light from \"../assets/itemgrid_light.png\";\nimport { useWindowSize, useInterval } from \"react-use\";\nimport moment from \"moment\";\n\nimport {\n useAnvilSelector as useSelector,\n useAnvilDispatch as useDispatch,\n} from \"../index.js\";\nimport {\n loadInfo,\n loadHistory,\n tailHistory,\n loadNftHistory,\n} from \"../reducers/history\";\nimport styled from \"@emotion/styled\";\n\nimport {\n toHexString,\n bytesToBase58,\n} from \"@vvv-interactive/nftanvil-tools/cjs/data.js\";\nimport {\n tokenFromBlob,\n tokenToText,\n decodeTokenId,\n} from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport {\n PrincipalFromSlot,\n PrincipalToIdx,\n PrincipalToSlot,\n} from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\n\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\n\nimport { TX, ACC, NFTA, HASH, PWR, ICP } from \"./Code\";\n\nimport { NFTLarge } from \"./NFT\";\n\nconst SHOW = 10; // max records shown on screen\nconst TAIL_INTERVAL = 1000; // every 1 sec\n\nexport const HistoryRedirect = () => {\n const [isLoading, setLoading] = useState(true);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n setLoading(false);\n\n let { total, canister } = await dispatch(loadInfo());\n let from = total - SHOW;\n if (from <= 0) from = 0;\n let to = total;\n // dispatch(push(`/history/${canister}/${from}/${to}`));\n };\n\n useEffect(() => {\n load();\n }, [dispatch]);\n\n return (\n \n \n \n );\n};\n\nconst KeyVal = ({ k, v }) => {\n const dark = useColorModeValue(true, false);\n return (\n \n {k}\n {v}\n \n );\n};\n\nconst Key = styled.div`\n text-transform: capitalize;\n color: ${(p) => (p.dark ? \"gray.200\" : \"gray.900\")};\n width: 130px;\n font-size: 12px;\n font-family: Verdana;\n text-transform: uppercase;\n`;\n\nconst Val = styled.div`\n width: 100%;\n word-break: break-all;\n a {\n color: rgb(133, 200, 255);\n }\n\n font-size: 12px;\n font-weight: normal;\n`;\n\nconst HistoryEvent = ({ ev, canister, idx, showThumb = true }) => {\n const boxColor = useColorModeValue(\"white\", \"gray.700\");\n const space = useSelector((state) => state.user.map.space);\n\n if (!ev?.info) return null;\n let etype = Object.keys(ev.info)[0];\n let action = Object.keys(ev.info[etype])[0];\n let details = ev.info[etype][action];\n\n let transactionId = TransactionId.toText(\n TransactionId.encode(\n PrincipalToSlot(space, Principal.fromText(canister)),\n idx\n )\n );\n let timestamp = Number(BigInt(details.created) / 1000000n);\n //TODO: This is will be done in a better way\n\n const inner = (\n \n {transactionId}} />\n \n\n {etype + \"-\" + action}} />\n\n {Object.keys(details).map((key, idx) => {\n if (key === \"created\") return null;\n\n let val = details[key];\n if (val.length === 32) {\n val = AccountIdentifier.ArrayToText(val);\n val = {val};\n }\n\n if (key === \"token\" || key === \"socket\" || key === \"plug\") {\n val = tokenToText(val); //tokenFromBlob(val);\n val = {val};\n }\n\n if (key === \"use\") {\n val = JSON.stringify(val);\n }\n\n if (key === \"memo\") {\n val = toHexString(val);\n }\n\n if (key === \"marketplace\" || key === \"affiliate\" || key === \"author\") {\n if (!val || val.length === 0) return null;\n if (Array.isArray(val)) val = val[0];\n if (!val) return null;\n\n return (\n
\n \n \n {AccountIdentifier.ArrayToText(val.address)}\n \n
{val.share / 100 + \"%\"}
\n \n }\n />\n
\n );\n }\n\n if (key === \"spender\") {\n val = Principal.fromUint8Array(val._arr).toText();\n }\n\n if (key === \"amount\") {\n if (val.e8s) val = {val.e8s};\n else val = {val};\n }\n\n if (key === \"pwr\") {\n val = {val};\n }\n\n if (key === \"price\") {\n val = (\n \n
\n {val.amount}\n
\n {val.marketplace[0] ? (\n
\n marketplace share{\" \"}\n {(val.marketplace[0].share / 100).toFixed(2)}% -\n \n {AccountIdentifier.ArrayToText(val.marketplace[0].address)}\n \n
\n ) : null}\n
\n );\n }\n\n return ;\n })}\n {toHexString(ev.hash)}} />\n
\n );\n\n if (!showThumb) return inner;\n\n return (\n \n {\"token\" in details ? (\n \n \n \n ) : null}\n {inner}\n \n );\n};\n\nexport const History = (p) => {\n const total = useSelector((state) => state.history.total);\n const events = useSelector((state) => state.history.events);\n const focused = useSelector((state) => state.user.focused);\n\n const canister = p.match.params.canister;\n let from = parseInt(p.match.params.from, 10);\n if (from <= 0) from = 0;\n\n const to = parseInt(p.match.params.to, 10);\n const [isLoading, setLoading] = useState(true);\n\n const [isTailing, setTailing] = useState(true);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n dispatch(loadHistory({ canister, from, to }));\n setLoading(false);\n };\n\n useEffect(() => {\n load();\n }, [dispatch, from, to, canister]);\n\n useInterval(\n async () => {\n let { total, canister } = await dispatch(loadInfo());\n if (to !== total) {\n // dispatch(push(`/history/${canister}/${total - SHOW}/${total}`));\n }\n },\n focused && isTailing ? TAIL_INTERVAL : null\n );\n\n if (!events || !events.length) return null;\n\n let evlist = [];\n for (let idx = events.length; idx >= 0; idx--) {\n evlist.push(\n \n );\n }\n\n return (\n \n {/* \n
History canister: {canister}
\n
From {from}
\n
To {to}
\n
Total {total}
\n
*/}\n \n \n \n\n \n \n \n setTailing(!isTailing)}\n >\n Tail\n \n \n {evlist}\n
\n );\n};\n\nexport const HistoryTx = (p) => {\n const total = useSelector((state) => state.history.total);\n const events = useSelector((state) => state.history.events);\n const space = useSelector((state) => state.user.map.space);\n\n const tx = p.match.params.tx;\n\n const { slot, idx: from } = TransactionId.decode(TransactionId.fromText(tx));\n let canister = PrincipalFromSlot(space, slot).toText();\n //console.log({ canister, slot, from, space });\n // const from = parseInt(tx.substr(tx.lastIndexOf(\"-\") + 1), 10);\n\n const to = from + 1;\n\n const [isLoading, setLoading] = useState(true);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n dispatch(loadHistory({ canister, from, to }));\n setLoading(false);\n };\n\n useEffect(() => {\n load();\n }, [dispatch, from, to, canister]);\n\n if (!events || !events.length) return null;\n\n return (\n \n \n \n \n {events.map((ev, idx) => (\n \n ))}\n \n );\n};\n\nexport const NftHistory = ({ transactions, showThumb }) => {\n const [events, setEvents] = useState([]);\n\n const dispatch = useDispatch();\n\n const load = async () => {\n let evs = await dispatch(loadNftHistory({ transactions }));\n setEvents(evs);\n };\n\n useEffect(() => {\n load();\n }, [dispatch, transactions]);\n\n if (!events || !events.length) return null;\n\n return (\n
\n \n {events.map(({ idx, canister, data }, n) => (\n \n ))}\n \n
\n );\n};\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import { AuthClient } from \"@dfinity/auth-client\";\n\nlet client = null;\n\nconst defaultOptions = { cookie: false };\n\nconst auth = {\n client,\n options: defaultOptions,\n};\n\nauth.setOptions = (opt) => {\n auth.options = { ...defaultOptions, ...opt };\n};\n\nauth.create = async () => {\n const storage = new MyStorage();\n auth.client = await AuthClient.create(auth.options.cookie ? {} : { storage });\n};\n\nauth.getAgentOptions = () => {\n let identity = auth.client.getIdentity();\n\n return {\n identity,\n host: process.env.REACT_APP_IC_GATEWAY || \"https://ic0.app\",\n };\n};\n\n//\n\nclass MyStorage {\n constructor() {\n this.my = {};\n }\n\n async get(key) {\n return this.my[key];\n }\n\n async set(key, value) {\n this.my[key] = value;\n }\n\n async remove(key) {\n delete this.my[key];\n }\n}\n\nexport { auth as default };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decode = decode;\nexports.encode = encode;\nexports.fromText = fromText;\nexports.toText = toText;\n\nvar _principal = require(\"@dfinity/principal\");\n\nvar _data = require(\"./data.js\");\n\nvar _baseX = _interopRequireDefault(require(\"base-x\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar bs = (0, _baseX.default)(\"812345679abcdefghijkmnopqrstuvwxyz\");\n\nfunction encode(slot, idx) {\n // console.log(\"ENCODE\", slot, idx);\n return [...(0, _data.numberToBytesArray)(slot, 8), ...(0, _data.numberToBytesArray)(idx, 4)];\n}\n\nfunction decode(p) {\n //let p = fromText(tx);\n let idx = (0, _data.bytesArrayToNumber)(p.slice(-4));\n let slot = (0, _data.bytesArrayToNumber)(p.slice(0, -4));\n return {\n slot,\n idx\n };\n}\n\nfunction toText(bytes) {\n return \"tx\" + bs.encode(new Uint8Array([...bytes]));\n}\n\nfunction fromText(t) {\n return [...bs.decode(t.slice(2).toLowerCase())];\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"idlFactory\", {\n enumerable: true,\n get: function () {\n return _nftDid.idlFactory;\n }\n});\nexports.nftCanister = void 0;\n\nvar _agent = require(\"@dfinity/agent\");\n\nvar _nftDid = require(\"./declarations/nft/nft.did.js\");\n\n// Imports and re-exports candid interface\nconst nftCanister = (canisterId, options) => {\n const agent = new _agent.HttpAgent({ ...(options ? options.agentOptions : {})\n }); // Fetch root key for certificate validation during development\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch(err => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n } // Creates an actor with using the candid interface and the HttpAgent\n\n\n return _agent.Actor.createActor(_nftDid.idlFactory, {\n agent,\n canisterId: canisterId.toText ? canisterId.toText() : canisterId,\n ...(options ? options.actorOptions : {})\n });\n};\n\nexports.nftCanister = nftCanister;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.init = exports.idlFactory = void 0;\n\nconst idlFactory = _ref => {\n let {\n IDL\n } = _ref;\n const TokenIdentifier = IDL.Nat64;\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const User = IDL.Variant({\n 'principal': IDL.Principal,\n 'address': AccountIdentifier\n });\n const Request__1 = IDL.Record({\n 'token': TokenIdentifier,\n 'owner': User,\n 'spender': IDL.Principal\n });\n const Balance = IDL.Nat64;\n const CommonError = IDL.Variant({\n 'InvalidToken': IDL.Null,\n 'Other': IDL.Text\n });\n const Response__1 = IDL.Variant({\n 'ok': Balance,\n 'err': CommonError\n });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const ApproveRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'subaccount': IDL.Opt(SubAccount),\n 'allowance': Balance,\n 'spender': IDL.Principal\n });\n const TransactionId = IDL.Vec(IDL.Nat8);\n const ApproveResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'Other': IDL.Text\n })\n });\n const BalanceRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'user': User\n });\n const BalanceResponse = IDL.Variant({\n 'ok': Balance,\n 'err': CommonError\n });\n const BearerResponse = IDL.Variant({\n 'ok': AccountIdentifier,\n 'err': CommonError\n });\n const Memo = IDL.Vec(IDL.Nat8);\n const BurnRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'memo': Memo,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount)\n });\n const TransferResponseError = IDL.Variant({\n 'ICE': IDL.Text,\n 'InsufficientBalance': IDL.Null,\n 'NotTransferable': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'Other': IDL.Text\n });\n const BurnResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': TransferResponseError\n });\n const ClaimLinkRequest = IDL.Record({\n 'to': User,\n 'key': IDL.Vec(IDL.Nat8),\n 'token': TokenIdentifier\n });\n const ClaimLinkResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'Rejected': IDL.Null,\n 'Other': IDL.Text\n })\n });\n const CanisterSlot = IDL.Nat64;\n const CanisterRange = IDL.Tuple(CanisterSlot, CanisterSlot);\n const Config = IDL.Record({\n 'nft': CanisterRange,\n 'pwr': CanisterRange,\n 'anvil': CanisterSlot,\n 'history': CanisterSlot,\n 'nft_avail': IDL.Vec(CanisterSlot),\n 'space': IDL.Vec(IDL.Vec(IDL.Nat64)),\n 'account': CanisterRange,\n 'history_range': CanisterRange,\n 'router': IDL.Principal,\n 'treasury': CanisterSlot\n });\n const TokenIndex = IDL.Nat16;\n const FetchChunkRequest = IDL.Record({\n 'tokenIndex': TokenIndex,\n 'subaccount': IDL.Opt(SubAccount),\n 'chunkIdx': IDL.Nat32,\n 'position': IDL.Variant({\n 'thumb': IDL.Null,\n 'content': IDL.Null\n })\n });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const Request = IDL.Record({\n 'url': IDL.Text,\n 'method': IDL.Text,\n 'body': IDL.Vec(IDL.Nat8),\n 'headers': IDL.Vec(HeaderField)\n });\n const Token = IDL.Record({\n 'key': IDL.Text,\n 'sha256': IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'index': IDL.Nat,\n 'content_encoding': IDL.Text\n });\n const CallbackFunc = IDL.Func([], [], []);\n const StreamingStrategy = IDL.Variant({\n 'Callback': IDL.Record({\n 'token': Token,\n 'callback': CallbackFunc\n })\n });\n const Response = IDL.Record({\n 'body': IDL.Vec(IDL.Nat8),\n 'headers': IDL.Vec(HeaderField),\n 'streaming_strategy': IDL.Opt(StreamingStrategy),\n 'status_code': IDL.Nat16\n });\n const Callback = IDL.Record({\n 'token': IDL.Opt(Token),\n 'body': IDL.Vec(IDL.Nat8)\n });\n const ContentType = IDL.Text;\n const IPFS_CID = IDL.Text;\n const ExternalUrl = IDL.Text;\n const Content = IDL.Variant({\n 'internal': IDL.Record({\n 'contentType': ContentType,\n 'size': IDL.Nat32\n }),\n 'ipfs': IDL.Record({\n 'cid': IPFS_CID,\n 'contentType': ContentType,\n 'size': IDL.Nat32\n }),\n 'external': ExternalUrl\n });\n const DomainName = IDL.Text;\n const Share = IDL.Nat16;\n const CustomData = IDL.Vec(IDL.Nat8);\n const Quality = IDL.Nat8;\n const ItemLore = IDL.Text;\n const ItemName = IDL.Text;\n const Tag = IDL.Text;\n const Tags = IDL.Vec(Tag);\n const Attribute = IDL.Tuple(IDL.Text, IDL.Nat16);\n const Attributes = IDL.Vec(Attribute);\n const ItemTransfer = IDL.Variant({\n 'unrestricted': IDL.Null,\n 'bindsForever': IDL.Null,\n 'bindsDuration': IDL.Nat32\n });\n const Metadata = IDL.Record({\n 'thumb': Content,\n 'created': IDL.Nat32,\n 'content': IDL.Opt(Content),\n 'domain': IDL.Opt(DomainName),\n 'authorShare': Share,\n 'custom': IDL.Opt(CustomData),\n 'quality': Quality,\n 'lore': IDL.Opt(ItemLore),\n 'name': IDL.Opt(ItemName),\n 'tags': Tags,\n 'secret': IDL.Bool,\n 'author': AccountIdentifier,\n 'entropy': IDL.Vec(IDL.Nat8),\n 'attributes': Attributes,\n 'transfer': ItemTransfer,\n 'rechargeable': IDL.Bool\n });\n const Sockets = IDL.Vec(TokenIdentifier);\n const Price = IDL.Record({\n 'marketplace': IDL.Opt(IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n })),\n 'amount': IDL.Nat64\n });\n const MetavarsFrozen = IDL.Record({\n 'ttl': IDL.Opt(IDL.Nat32),\n 'cooldownUntil': IDL.Opt(IDL.Nat32),\n 'boundUntil': IDL.Opt(IDL.Nat32),\n 'sockets': Sockets,\n 'history': IDL.Vec(IDL.Vec(IDL.Nat8)),\n 'pwrOps': IDL.Nat64,\n 'pwrStorage': IDL.Nat64,\n 'allowance': IDL.Opt(IDL.Principal),\n 'price': Price\n });\n const MetadataResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'data': Metadata,\n 'vars': MetavarsFrozen,\n 'bearer': AccountIdentifier\n }),\n 'err': CommonError\n });\n const CustomVar = IDL.Vec(IDL.Nat8);\n const MetadataInput = IDL.Record({\n 'ttl': IDL.Opt(IDL.Nat32),\n 'thumb': Content,\n 'content': IDL.Opt(Content),\n 'domain': IDL.Opt(DomainName),\n 'authorShare': Share,\n 'custom': IDL.Opt(CustomData),\n 'quality': Quality,\n 'lore': IDL.Opt(IDL.Text),\n 'name': IDL.Opt(IDL.Text),\n 'tags': Tags,\n 'secret': IDL.Bool,\n 'attributes': Attributes,\n 'price': Price,\n 'transfer': ItemTransfer,\n 'rechargeable': IDL.Bool,\n 'customVar': IDL.Opt(CustomVar)\n });\n const MintRequest = IDL.Record({\n 'metadata': MetadataInput,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount)\n });\n const MintResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'tokenIndex': TokenIndex,\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'Pwr': TransferResponseError,\n 'Invalid': IDL.Text,\n 'InsufficientBalance': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': IDL.Null,\n 'ClassError': IDL.Text,\n 'OutOfMemory': IDL.Null\n })\n });\n const Oracle = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const PlugRequest = IDL.Record({\n 'socket': TokenIdentifier,\n 'memo': Memo,\n 'plug': TokenIdentifier,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount)\n });\n const SocketError = IDL.Variant({\n 'InsufficientBalance': IDL.Null,\n 'NotLegitimateCaller': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'ClassError': IDL.Text,\n 'Other': IDL.Text,\n 'SocketsFull': IDL.Null\n });\n const PlugResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'InsufficientBalance': IDL.Null,\n 'SocketError': SocketError,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'Other': IDL.Text\n })\n });\n const PurchaseRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount),\n 'affiliate': IDL.Opt(IDL.Record({\n 'address': AccountIdentifier,\n 'amount': Balance\n })),\n 'amount': Balance\n });\n const Time = IDL.Int;\n const NFTPurchase = IDL.Record({\n 'created': Time,\n 'token': TokenIdentifier,\n 'marketplace': IDL.Opt(IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n })),\n 'seller': AccountIdentifier,\n 'author': IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n }),\n 'recharge': Balance,\n 'affiliate': IDL.Opt(IDL.Record({\n 'address': AccountIdentifier,\n 'amount': Balance\n })),\n 'buyer': AccountIdentifier,\n 'amount': Balance\n });\n const PurchaseResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'purchase': NFTPurchase,\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'TreasuryNotifyFailed': IDL.Null,\n 'Refunded': IDL.Null,\n 'InsufficientPayment': Balance,\n 'ErrorWhileRefunding': IDL.Null,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': IDL.Null,\n 'NotForSale': IDL.Null,\n 'NotEnoughToRefund': IDL.Null\n })\n });\n const RechargeRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount),\n 'amount': Balance\n });\n const RechargeResponse = IDL.Variant({\n 'ok': IDL.Null,\n 'err': IDL.Variant({\n 'InsufficientPayment': Balance,\n 'RechargeUnnecessary': IDL.Null,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': IDL.Null\n })\n });\n const SetPriceRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount),\n 'price': Price\n });\n const SetPriceResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'TooHigh': IDL.Null,\n 'InsufficientBalance': IDL.Null,\n 'NotTransferable': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'TooLow': IDL.Null,\n 'Other': IDL.Text\n })\n });\n const SocketRequest = IDL.Record({\n 'socket': TokenIdentifier,\n 'plug': TokenIdentifier,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount)\n });\n const SocketResponse = IDL.Variant({\n 'ok': IDL.Null,\n 'err': SocketError\n });\n const SupplyResponse = IDL.Variant({\n 'ok': Balance,\n 'err': CommonError\n });\n const TransferRequest = IDL.Record({\n 'to': User,\n 'token': TokenIdentifier,\n 'from': User,\n 'memo': Memo,\n 'subaccount': IDL.Opt(SubAccount)\n });\n const TransferResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': TransferResponseError\n });\n const TransferLinkRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'from': User,\n 'hash': IDL.Vec(IDL.Nat8),\n 'subaccount': IDL.Opt(SubAccount)\n });\n const TransferLinkResponse = IDL.Variant({\n 'ok': IDL.Null,\n 'err': IDL.Variant({\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'Other': IDL.Text\n })\n });\n const UnsocketRequest = IDL.Record({\n 'socket': TokenIdentifier,\n 'memo': Memo,\n 'plug': TokenIdentifier,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount)\n });\n const UnplugError = IDL.Variant({\n 'InsufficientBalance': IDL.Null,\n 'NotLegitimateCaller': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'Other': IDL.Text\n });\n const UnplugResponse = IDL.Variant({\n 'ok': IDL.Null,\n 'err': UnplugError\n });\n const UnsocketResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'UnplugError': UnplugError,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'Other': IDL.Text\n })\n });\n const UploadChunkRequest = IDL.Record({\n 'tokenIndex': TokenIndex,\n 'data': IDL.Vec(IDL.Nat8),\n 'subaccount': IDL.Opt(SubAccount),\n 'chunkIdx': IDL.Nat32,\n 'position': IDL.Variant({\n 'thumb': IDL.Null,\n 'content': IDL.Null\n })\n });\n const Cooldown = IDL.Nat32;\n const ItemUse = IDL.Variant({\n 'consume': IDL.Null,\n 'prove': IDL.Null,\n 'cooldown': Cooldown\n });\n const UseRequest = IDL.Record({\n 'use': ItemUse,\n 'token': TokenIdentifier,\n 'memo': Memo,\n 'user': User,\n 'subaccount': IDL.Opt(SubAccount),\n 'customVar': IDL.Opt(CustomVar)\n });\n const UseResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'ExtensionError': IDL.Text,\n 'Other': IDL.Text,\n 'OnCooldown': IDL.Null\n })\n });\n const Class = IDL.Service({\n 'allowance': IDL.Func([Request__1], [Response__1], ['query']),\n 'approve': IDL.Func([ApproveRequest], [ApproveResponse], []),\n 'balance': IDL.Func([BalanceRequest], [BalanceResponse], ['query']),\n 'bearer': IDL.Func([TokenIdentifier], [BearerResponse], ['query']),\n 'burn': IDL.Func([BurnRequest], [BurnResponse], []),\n 'claim_link': IDL.Func([ClaimLinkRequest], [ClaimLinkResponse], []),\n 'config_set': IDL.Func([Config], [], []),\n 'fetch_chunk': IDL.Func([FetchChunkRequest], [IDL.Opt(IDL.Vec(IDL.Nat8))], []),\n 'http_request': IDL.Func([Request], [Response], ['query']),\n 'http_request_streaming_callback': IDL.Func([Token], [Callback], ['query']),\n 'metadata': IDL.Func([TokenIdentifier], [MetadataResponse], ['query']),\n 'mint': IDL.Func([MintRequest], [MintResponse], []),\n 'oracle_set': IDL.Func([Oracle], [], []),\n 'plug': IDL.Func([PlugRequest], [PlugResponse], []),\n 'purchase': IDL.Func([PurchaseRequest], [PurchaseResponse], []),\n 'recharge': IDL.Func([RechargeRequest], [RechargeResponse], []),\n 'set_price': IDL.Func([SetPriceRequest], [SetPriceResponse], []),\n 'socket': IDL.Func([SocketRequest], [SocketResponse], []),\n 'stats': IDL.Func([], [IDL.Record({\n 'cycles_recieved': IDL.Nat,\n 'rts_max_live_size': IDL.Nat,\n 'transfers': IDL.Nat32,\n 'minted': IDL.Nat16,\n 'cycles': IDL.Nat,\n 'icall_errors': IDL.Nat,\n 'rts_memory_size': IDL.Nat,\n 'rts_total_allocation': IDL.Nat,\n 'burned': IDL.Nat32,\n 'rts_heap_size': IDL.Nat,\n 'rts_reclaimed': IDL.Nat,\n 'rts_version': IDL.Text\n })], ['query']),\n 'supply': IDL.Func([TokenIdentifier], [SupplyResponse], ['query']),\n 'transfer': IDL.Func([TransferRequest], [TransferResponse], []),\n 'transfer_link': IDL.Func([TransferLinkRequest], [TransferLinkResponse], []),\n 'unplug': IDL.Func([UnsocketRequest], [UnplugResponse], []),\n 'unsocket': IDL.Func([UnsocketRequest], [UnsocketResponse], []),\n 'upload_chunk': IDL.Func([UploadChunkRequest], [], []),\n 'use': IDL.Func([UseRequest], [UseResponse], []),\n 'wallet_receive': IDL.Func([], [], [])\n });\n return Class;\n};\n\nexports.idlFactory = idlFactory;\n\nconst init = _ref2 => {\n let {\n IDL\n } = _ref2;\n return [];\n};\n\nexports.init = init;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.init = exports.idlFactory = void 0;\n\nconst idlFactory = _ref => {\n let {\n IDL\n } = _ref;\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const User__2 = IDL.Variant({\n 'principal': IDL.Principal,\n 'address': AccountIdentifier\n });\n const BalanceRequest = IDL.Record({\n 'user': User__2\n });\n const Balance__1 = IDL.Nat64;\n const Oracle__1 = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const BalanceResponse = IDL.Record({\n 'anv': Balance__1,\n 'pwr': Balance__1,\n 'oracle': Oracle__1\n });\n const AccountIdentifier__2 = IDL.Vec(IDL.Nat8);\n const Balance__3 = IDL.Nat64;\n const CanisterSlot = IDL.Nat64;\n const CanisterRange = IDL.Tuple(CanisterSlot, CanisterSlot);\n const Config = IDL.Record({\n 'nft': CanisterRange,\n 'pwr': CanisterRange,\n 'anvil': CanisterSlot,\n 'history': CanisterSlot,\n 'nft_avail': IDL.Vec(CanisterSlot),\n 'space': IDL.Vec(IDL.Vec(IDL.Nat64)),\n 'account': CanisterRange,\n 'history_range': CanisterRange,\n 'router': IDL.Principal,\n 'treasury': CanisterSlot\n });\n const ContentType = IDL.Text;\n const IPFS_CID = IDL.Text;\n const ExternalUrl = IDL.Text;\n const Content = IDL.Variant({\n 'internal': IDL.Record({\n 'contentType': ContentType,\n 'size': IDL.Nat32\n }),\n 'ipfs': IDL.Record({\n 'cid': IPFS_CID,\n 'contentType': ContentType,\n 'size': IDL.Nat32\n }),\n 'external': ExternalUrl\n });\n const DomainName = IDL.Text;\n const Share = IDL.Nat16;\n const CustomData = IDL.Vec(IDL.Nat8);\n const Quality = IDL.Nat8;\n const Tag = IDL.Text;\n const Tags = IDL.Vec(Tag);\n const Attribute = IDL.Tuple(IDL.Text, IDL.Nat16);\n const Attributes = IDL.Vec(Attribute);\n const Price = IDL.Record({\n 'marketplace': IDL.Opt(IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n })),\n 'amount': IDL.Nat64\n });\n const ItemTransfer = IDL.Variant({\n 'unrestricted': IDL.Null,\n 'bindsForever': IDL.Null,\n 'bindsDuration': IDL.Nat32\n });\n const CustomVar = IDL.Vec(IDL.Nat8);\n const MetadataInput = IDL.Record({\n 'ttl': IDL.Opt(IDL.Nat32),\n 'thumb': Content,\n 'content': IDL.Opt(Content),\n 'domain': IDL.Opt(DomainName),\n 'authorShare': Share,\n 'custom': IDL.Opt(CustomData),\n 'quality': Quality,\n 'lore': IDL.Opt(IDL.Text),\n 'name': IDL.Opt(IDL.Text),\n 'tags': Tags,\n 'secret': IDL.Bool,\n 'attributes': Attributes,\n 'price': Price,\n 'transfer': ItemTransfer,\n 'rechargeable': IDL.Bool,\n 'customVar': IDL.Opt(CustomVar)\n });\n const SubAccount__2 = IDL.Vec(IDL.Nat8);\n const MintRequest = IDL.Record({\n 'metadata': MetadataInput,\n 'user': User__2,\n 'subaccount': IDL.Opt(SubAccount__2)\n });\n const TokenIndex = IDL.Nat16;\n const TransactionId = IDL.Vec(IDL.Nat8);\n const TransferResponseError = IDL.Variant({\n 'ICE': IDL.Text,\n 'InsufficientBalance': IDL.Null,\n 'NotTransferable': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': AccountIdentifier,\n 'OutOfPower': IDL.Null,\n 'Other': IDL.Text\n });\n const MintResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'tokenIndex': TokenIndex,\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'Pwr': TransferResponseError,\n 'Invalid': IDL.Text,\n 'InsufficientBalance': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': IDL.Null,\n 'ClassError': IDL.Text,\n 'OutOfMemory': IDL.Null\n })\n });\n const TokenIdentifier = IDL.Nat64;\n const Balance__2 = IDL.Nat64;\n const PurchaseRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'user': User__2,\n 'subaccount': IDL.Opt(SubAccount__2),\n 'affiliate': IDL.Opt(IDL.Record({\n 'address': AccountIdentifier,\n 'amount': Balance__2\n })),\n 'amount': Balance__2\n });\n const Time = IDL.Int;\n const NFTPurchase = IDL.Record({\n 'created': Time,\n 'token': TokenIdentifier,\n 'marketplace': IDL.Opt(IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n })),\n 'seller': AccountIdentifier,\n 'author': IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n }),\n 'recharge': Balance__2,\n 'affiliate': IDL.Opt(IDL.Record({\n 'address': AccountIdentifier,\n 'amount': Balance__2\n })),\n 'buyer': AccountIdentifier,\n 'amount': Balance__2\n });\n const PurchaseResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'purchase': NFTPurchase,\n 'transactionId': TransactionId\n }),\n 'err': IDL.Variant({\n 'ICE': IDL.Text,\n 'TreasuryNotifyFailed': IDL.Null,\n 'Refunded': IDL.Null,\n 'InsufficientPayment': Balance__2,\n 'ErrorWhileRefunding': IDL.Null,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': IDL.Null,\n 'NotForSale': IDL.Null,\n 'NotEnoughToRefund': IDL.Null\n })\n });\n const RechargeRequest = IDL.Record({\n 'token': TokenIdentifier,\n 'user': User__2,\n 'subaccount': IDL.Opt(SubAccount__2),\n 'amount': Balance__2\n });\n const RechargeResponse = IDL.Variant({\n 'ok': IDL.Null,\n 'err': IDL.Variant({\n 'InsufficientPayment': Balance__2,\n 'RechargeUnnecessary': IDL.Null,\n 'InsufficientBalance': IDL.Null,\n 'InvalidToken': IDL.Null,\n 'Rejected': IDL.Null,\n 'Unauthorized': IDL.Null\n })\n });\n const Oracle = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const User__1 = IDL.Variant({\n 'principal': IDL.Principal,\n 'address': AccountIdentifier\n });\n const SubAccount__1 = IDL.Vec(IDL.Nat8);\n const PurchaseClaimRequest = IDL.Record({\n 'user': User__1,\n 'subaccount': IDL.Opt(SubAccount__1)\n });\n const ICP = IDL.Record({\n 'e8s': IDL.Nat64\n });\n const BlockIndex = IDL.Nat64;\n const TransferError = IDL.Variant({\n 'TxTooOld': IDL.Record({\n 'allowed_window_nanos': IDL.Nat64\n }),\n 'BadFee': IDL.Record({\n 'expected_fee': ICP\n }),\n 'TxDuplicate': IDL.Record({\n 'duplicate_of': BlockIndex\n }),\n 'TxCreatedInFuture': IDL.Null,\n 'InsufficientFunds': IDL.Record({\n 'balance': ICP\n })\n });\n const PurchaseClaimResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': IDL.Vec(IDL.Nat8)\n }),\n 'err': IDL.Variant({\n 'PaymentTooSmall': IDL.Null,\n 'Ledger': TransferError\n })\n });\n const PurchaseIntentRequest = IDL.Record({\n 'user': User__1,\n 'subaccount': IDL.Opt(SubAccount__1)\n });\n const AccountIdentifier__1 = IDL.Vec(IDL.Nat8);\n const PurchaseIntentResponse = IDL.Variant({\n 'ok': AccountIdentifier__1,\n 'err': IDL.Text\n });\n const Memo = IDL.Vec(IDL.Nat8);\n const TransferRequest = IDL.Record({\n 'to': User__1,\n 'from': User__1,\n 'memo': Memo,\n 'subaccount': IDL.Opt(SubAccount__1),\n 'amount': Balance__1\n });\n const TransferResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': IDL.Vec(IDL.Nat8)\n }),\n 'err': TransferResponseError\n });\n const User = IDL.Variant({\n 'principal': IDL.Principal,\n 'address': AccountIdentifier\n });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Balance = IDL.Nat64;\n const WithdrawRequest = IDL.Record({\n 'to': User,\n 'from': User,\n 'subaccount': IDL.Opt(SubAccount),\n 'amount': Balance\n });\n const WithdrawResponse = IDL.Variant({\n 'ok': IDL.Record({\n 'transactionId': IDL.Vec(IDL.Nat8)\n }),\n 'err': TransferResponseError\n });\n const Class = IDL.Service({\n 'balance': IDL.Func([BalanceRequest], [BalanceResponse], ['query']),\n 'balanceAddExternal': IDL.Func([IDL.Variant({\n 'anv': IDL.Null,\n 'pwr': IDL.Null\n }), AccountIdentifier__2, Balance__3], [], []),\n 'config_set': IDL.Func([Config], [], []),\n 'nft_mint': IDL.Func([CanisterSlot, MintRequest], [MintResponse], []),\n 'nft_purchase': IDL.Func([CanisterSlot, PurchaseRequest], [PurchaseResponse], []),\n 'nft_recharge': IDL.Func([CanisterSlot, RechargeRequest], [RechargeResponse], []),\n 'oracle_set': IDL.Func([Oracle], [], []),\n 'pwr_purchase_claim': IDL.Func([PurchaseClaimRequest], [PurchaseClaimResponse], []),\n 'pwr_purchase_intent': IDL.Func([PurchaseIntentRequest], [PurchaseIntentResponse], []),\n 'pwr_transfer': IDL.Func([TransferRequest], [TransferResponse], []),\n 'pwr_withdraw': IDL.Func([WithdrawRequest], [WithdrawResponse], []),\n 'stats': IDL.Func([], [IDL.Record({\n 'cycles_recieved': IDL.Nat,\n 'total_accounts': IDL.Nat,\n 'rts_max_live_size': IDL.Nat,\n 'mint_accumulated': IDL.Nat64,\n 'cycles': IDL.Nat,\n 'rts_memory_size': IDL.Nat,\n 'rts_total_allocation': IDL.Nat,\n 'icp_withdrawn': IDL.Nat64,\n 'fees_charged': IDL.Nat64,\n 'distributed_anvil': IDL.Nat64,\n 'distributed_seller': IDL.Nat64,\n 'recharge_accumulated': IDL.Nat64,\n 'icp_deposited': IDL.Nat64,\n 'distributed_author': IDL.Nat64,\n 'distributed_marketplace': IDL.Nat64,\n 'purchases_accumulated': IDL.Nat64,\n 'rts_heap_size': IDL.Nat,\n 'distributed_affiliate': IDL.Nat64,\n 'rts_reclaimed': IDL.Nat,\n 'rts_version': IDL.Text\n })], ['query']),\n 'wallet_receive': IDL.Func([], [], [])\n });\n return Class;\n};\n\nexports.idlFactory = idlFactory;\n\nconst init = _ref2 => {\n let {\n IDL\n } = _ref2;\n return [];\n};\n\nexports.init = init;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.init = exports.idlFactory = void 0;\n\nconst idlFactory = _ref => {\n let {\n IDL\n } = _ref;\n const CanisterSlot = IDL.Nat64;\n const CanisterRange = IDL.Tuple(CanisterSlot, CanisterSlot);\n const Config__1 = IDL.Record({\n 'nft': CanisterRange,\n 'pwr': CanisterRange,\n 'anvil': CanisterSlot,\n 'history': CanisterSlot,\n 'nft_avail': IDL.Vec(CanisterSlot),\n 'space': IDL.Vec(IDL.Vec(IDL.Nat64)),\n 'account': CanisterRange,\n 'history_range': CanisterRange,\n 'router': IDL.Principal,\n 'treasury': CanisterSlot\n });\n const LogEvent = IDL.Record({\n 'msg': IDL.Text,\n 'time': IDL.Nat32\n });\n const Oracle__1 = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const Config = IDL.Record({\n 'nft': CanisterRange,\n 'pwr': CanisterRange,\n 'anvil': CanisterSlot,\n 'history': CanisterSlot,\n 'nft_avail': IDL.Vec(CanisterSlot),\n 'space': IDL.Vec(IDL.Vec(IDL.Nat64)),\n 'account': CanisterRange,\n 'history_range': CanisterRange,\n 'router': IDL.Principal,\n 'treasury': CanisterSlot\n });\n const Oracle = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const Router = IDL.Service({\n 'config_get': IDL.Func([], [Config__1], ['query']),\n 'config_set': IDL.Func([Config__1], [], []),\n 'create_local_canisters': IDL.Func([], [], []),\n 'event_history_full': IDL.Func([], [], []),\n 'event_nft_full': IDL.Func([IDL.Principal], [], []),\n 'log_get': IDL.Func([], [IDL.Vec(LogEvent)], ['query']),\n 'oracle_set': IDL.Func([Oracle__1], [], []),\n 'refuel': IDL.Func([], [], []),\n 'refuel_unoptimised': IDL.Func([], [], []),\n 'reinstall': IDL.Func([], [], []),\n 'settings_get': IDL.Func([], [Config, Oracle], ['query']),\n 'start_all': IDL.Func([], [], []),\n 'stats': IDL.Func([], [IDL.Record({\n 'jobs_fail': IDL.Nat,\n 'cycles_recieved': IDL.Nat,\n 'rts_max_live_size': IDL.Nat,\n 'jobs_success': IDL.Nat,\n 'cycles': IDL.Nat,\n 'rts_memory_size': IDL.Nat,\n 'rts_total_allocation': IDL.Nat,\n 'maintenance': IDL.Bool,\n 'rts_heap_size': IDL.Nat,\n 'rts_reclaimed': IDL.Nat,\n 'rts_version': IDL.Text,\n 'refuel': IDL.Nat\n })], ['query']),\n 'stop_all': IDL.Func([], [], []),\n 'upgrade': IDL.Func([], [], []),\n 'wallet_receive': IDL.Func([], [], []),\n 'wasm_set': IDL.Func([IDL.Record({\n 'name': IDL.Text,\n 'wasm': IDL.Vec(IDL.Nat8)\n })], [], [])\n });\n return Router;\n};\n\nexports.idlFactory = idlFactory;\n\nconst init = _ref2 => {\n let {\n IDL\n } = _ref2;\n return [];\n};\n\nexports.init = init;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.init = exports.idlFactory = void 0;\n\nconst idlFactory = _ref => {\n let {\n IDL\n } = _ref;\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const AccountBalanceArgs = IDL.Record({\n account: AccountIdentifier\n });\n const Tokens = IDL.Record({\n e8s: IDL.Nat64\n });\n const Memo = IDL.Nat64;\n const SubAccount = IDL.Vec(IDL.Nat8);\n const TimeStamp = IDL.Record({\n timestamp_nanos: IDL.Nat64\n });\n const TransferArgs = IDL.Record({\n to: AccountIdentifier,\n fee: Tokens,\n memo: Memo,\n from_subaccount: IDL.Opt(SubAccount),\n created_at_time: IDL.Opt(TimeStamp),\n amount: Tokens\n });\n const BlockIndex = IDL.Nat64;\n const TransferError = IDL.Variant({\n TxTooOld: IDL.Record({\n allowed_window_nanos: IDL.Nat64\n }),\n BadFee: IDL.Record({\n expected_fee: Tokens\n }),\n TxDuplicate: IDL.Record({\n duplicate_of: BlockIndex\n }),\n TxCreatedInFuture: IDL.Null,\n InsufficientFunds: IDL.Record({\n balance: Tokens\n })\n });\n const TransferResult = IDL.Variant({\n Ok: BlockIndex,\n Err: TransferError\n });\n const NotifyArgs = IDL.Record({\n to_subaccount: IDL.Opt(SubAccount),\n from_subaccount: IDL.Opt(SubAccount),\n // notify_using_protobuf: IDL.Bool,\n to_canister: IDL.Principal,\n max_fee: Tokens,\n block_height: BlockIndex\n });\n const NotifyResult = IDL.Variant({\n Ok: IDL.Vec(IDL.Nat8),\n Err: IDL.Text\n });\n return IDL.Service({\n account_balance: IDL.Func([AccountBalanceArgs], [Tokens], [\"query\"]),\n transfer: IDL.Func([TransferArgs], [TransferResult], []),\n notify_dfx: IDL.Func([NotifyArgs], [NotifyResult], [])\n });\n};\n\nexports.idlFactory = idlFactory;\n\nconst init = _ref2 => {\n let {\n IDL\n } = _ref2;\n return [];\n};\n\nexports.init = init;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.init = exports.idlFactory = void 0;\n\nconst idlFactory = _ref => {\n let {\n IDL\n } = _ref;\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const TokenIndex = IDL.Nat16;\n const TransactionId = IDL.Vec(IDL.Nat8);\n const CanisterSlot = IDL.Nat64;\n const CanisterRange = IDL.Tuple(CanisterSlot, CanisterSlot);\n const Config = IDL.Record({\n 'nft': CanisterRange,\n 'pwr': CanisterRange,\n 'anvil': CanisterSlot,\n 'history': CanisterSlot,\n 'nft_avail': IDL.Vec(CanisterSlot),\n 'space': IDL.Vec(IDL.Vec(IDL.Nat64)),\n 'account': CanisterRange,\n 'history_range': CanisterRange,\n 'router': IDL.Principal,\n 'treasury': CanisterSlot\n });\n const TokenIdentifier__1 = IDL.Nat64;\n const TokenIdentifier = IDL.Nat64;\n const AddressInfo = IDL.Record({\n 'background': TokenIdentifier,\n 'name': IDL.Text,\n 'avatar': TokenIdentifier\n });\n const AccountMeta = IDL.Record({\n 'info': IDL.Opt(AddressInfo),\n 'transactions': IDL.Vec(TransactionId)\n });\n const Oracle = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const Class = IDL.Service({\n 'add': IDL.Func([AccountIdentifier, TokenIndex], [], []),\n 'add_transaction': IDL.Func([AccountIdentifier, TransactionId], [], []),\n 'config_set': IDL.Func([Config], [], []),\n 'list': IDL.Func([AccountIdentifier, IDL.Nat, IDL.Nat], [IDL.Vec(TokenIdentifier__1)], ['query']),\n 'meta': IDL.Func([AccountIdentifier], [IDL.Opt(AccountMeta)], ['query']),\n 'oracle_set': IDL.Func([Oracle], [], []),\n 'rem': IDL.Func([AccountIdentifier, TokenIndex], [], []),\n 'stats': IDL.Func([], [IDL.Record({\n 'cycles_recieved': IDL.Nat,\n 'total_accounts': IDL.Nat,\n 'rts_max_live_size': IDL.Nat,\n 'cycles': IDL.Nat,\n 'rts_memory_size': IDL.Nat,\n 'rts_total_allocation': IDL.Nat,\n 'rts_heap_size': IDL.Nat,\n 'rts_reclaimed': IDL.Nat,\n 'rts_version': IDL.Text\n })], ['query']),\n 'wallet_receive': IDL.Func([], [], [])\n });\n return Class;\n};\n\nexports.idlFactory = idlFactory;\n\nconst init = _ref2 => {\n let {\n IDL\n } = _ref2;\n return [];\n};\n\nexports.init = init;","import { createSlice } from \"@reduxjs/toolkit\";\nimport { AuthClient } from \"@dfinity/auth-client\";\nimport { router } from \"@vvv-interactive/nftanvil-canisters/cjs/router.js\";\nimport { ledger } from \"@vvv-interactive/nftanvil-canisters/cjs/ledger.js\";\nimport { historyCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/history.js\";\n\nimport authentication from \"../auth\";\n\nimport { principalToAccountIdentifier } from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\n\nimport { Principal } from \"@dfinity/principal\";\n\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\n\nimport { PrincipalFromSlot } from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\n\nimport { toast } from \"react-toastify\";\nimport _ from \"lodash\";\n\nexport const userSlice = createSlice({\n name: \"history\",\n initialState: {\n lastUpdated: 0,\n total: 0,\n from: 0,\n to: 0,\n events: [],\n },\n reducers: {\n setEvents: (state, action) => {\n return {\n ...state,\n lastUpdated: Math.floor(Date.now() / 1000),\n events: action.payload,\n };\n },\n setInfo: (state, action) => {\n return { ...state, ...action.payload };\n },\n },\n});\n\n// Action creators are generated for each case reducer function\nexport const { setEvents, setInfo } = userSlice.actions;\n\nexport const loadInfo = () => async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n let s = getState();\n\n let history = historyCanister(\n PrincipalFromSlot(s.user.map.space, s.user.map.history),\n { agentOptions: await authentication.getAgentOptions() }\n );\n\n let { total, previous } = await history.info();\n let p = {\n total,\n canister: PrincipalFromSlot(s.user.map.space, s.user.map.history).toText(),\n };\n dispatch(setInfo({ total }));\n return p;\n};\n\nexport const tailHistory =\n ({ canister }) =>\n async (dispatch, getState) => {};\n\nexport const loadHistory =\n ({ canister, from, to }) =>\n async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n\n let s = getState();\n dispatch(loadInfo());\n\n let history = historyCanister(Principal.fromText(canister), {\n agentOptions: await authentication.getAgentOptions(),\n });\n\n let events = await history.list({\n from,\n to,\n });\n\n events = mapValuesDeep(events, (v) => {\n return typeof v === \"bigint\" ? v.toString() : v;\n });\n\n dispatch(setEvents(events));\n };\n\nexport const loadNftHistory =\n ({ transactions }) =>\n async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n let s = getState();\n\n let r = await Promise.all(\n transactions.map(async (tx_id) => {\n let { slot, idx } = TransactionId.decode(tx_id);\n\n let canister = PrincipalFromSlot(s.user.map.space, slot);\n\n let history = historyCanister(canister, {\n agentOptions: await authentication.getAgentOptions(),\n });\n let resp = await history.list({\n from: idx,\n to: idx + 1,\n });\n return {\n idx,\n canister: canister.toText(),\n data: resp[0] ? resp[0][0] : null,\n };\n })\n );\n return r;\n };\n\nconst mapValuesDeep = (obj, cb) => {\n if (_.isArray(obj)) {\n return obj.map((innerObj) => mapValuesDeep(innerObj, cb));\n } else if (_.isObject(obj)) {\n return _.mapValues(obj, (val) => mapValuesDeep(val, cb));\n } else {\n return cb(obj);\n }\n};\n\nexport const cluster_info = () => async (dispatch, getState) => {\n let identity = authentication.client.getIdentity();\n\n let s = getState();\n\n let map = await router.config_get();\n\n let log = await router.log_get();\n\n return { map, log };\n};\n\nexport default userSlice.reducer;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.historyCanister = void 0;\nObject.defineProperty(exports, \"idlFactory\", {\n enumerable: true,\n get: function () {\n return _historyDid.idlFactory;\n }\n});\n\nvar _agent = require(\"@dfinity/agent\");\n\nvar _historyDid = require(\"./declarations/history/history.did.js\");\n\n// Imports and re-exports candid interface\nconst historyCanister = (canisterId, options) => {\n const agent = new _agent.HttpAgent({ ...(options ? options.agentOptions : {})\n }); // Fetch root key for certificate validation during development\n\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch(err => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n } // Creates an actor with using the candid interface and the HttpAgent\n\n\n return _agent.Actor.createActor(_historyDid.idlFactory, {\n agent,\n canisterId: canisterId.toText ? canisterId.toText() : canisterId,\n ...(options ? options.actorOptions : {})\n });\n};\n\nexports.historyCanister = historyCanister;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.init = exports.idlFactory = void 0;\n\nconst idlFactory = _ref => {\n let {\n IDL\n } = _ref;\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const Timestamp = IDL.Int;\n const Memo = IDL.Vec(IDL.Nat8);\n const Balance = IDL.Nat64;\n const EventFungibleTransaction = IDL.Record({\n 'to': AccountIdentifier,\n 'created': Timestamp,\n 'from': AccountIdentifier,\n 'memo': Memo,\n 'amount': Balance\n });\n const AnvEvent = IDL.Variant({\n 'transfer': EventFungibleTransaction\n });\n const Cooldown = IDL.Nat32;\n const ItemUse = IDL.Variant({\n 'consume': IDL.Null,\n 'prove': IDL.Null,\n 'cooldown': Cooldown\n });\n const TokenIdentifier = IDL.Nat64;\n const Share = IDL.Nat16;\n const Price = IDL.Record({\n 'marketplace': IDL.Opt(IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n })),\n 'amount': IDL.Nat64\n });\n const Time = IDL.Int;\n const NFTPurchase = IDL.Record({\n 'created': Time,\n 'token': TokenIdentifier,\n 'marketplace': IDL.Opt(IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n })),\n 'seller': AccountIdentifier,\n 'author': IDL.Record({\n 'share': Share,\n 'address': AccountIdentifier\n }),\n 'recharge': Balance,\n 'affiliate': IDL.Opt(IDL.Record({\n 'address': AccountIdentifier,\n 'amount': Balance\n })),\n 'buyer': AccountIdentifier,\n 'amount': Balance\n });\n const NftEvent = IDL.Variant({\n 'use': IDL.Record({\n 'use': ItemUse,\n 'created': Timestamp,\n 'token': TokenIdentifier,\n 'memo': Memo,\n 'user': AccountIdentifier\n }),\n 'socket': IDL.Record({\n 'created': Timestamp,\n 'socket': TokenIdentifier,\n 'memo': Memo,\n 'plug': TokenIdentifier,\n 'user': AccountIdentifier\n }),\n 'unsocket': IDL.Record({\n 'created': Timestamp,\n 'socket': TokenIdentifier,\n 'memo': Memo,\n 'plug': TokenIdentifier,\n 'user': AccountIdentifier\n }),\n 'burn': IDL.Record({\n 'created': Timestamp,\n 'token': TokenIdentifier,\n 'memo': Memo,\n 'user': AccountIdentifier\n }),\n 'mint': IDL.Record({\n 'pwr': Balance,\n 'created': Timestamp,\n 'token': TokenIdentifier,\n 'user': AccountIdentifier\n }),\n 'approve': IDL.Record({\n 'created': Timestamp,\n 'token': TokenIdentifier,\n 'user': AccountIdentifier,\n 'spender': IDL.Principal\n }),\n 'price': IDL.Record({\n 'created': Timestamp,\n 'token': TokenIdentifier,\n 'user': AccountIdentifier,\n 'price': Price\n }),\n 'transfer': IDL.Record({\n 'to': AccountIdentifier,\n 'created': Timestamp,\n 'token': TokenIdentifier,\n 'from': AccountIdentifier,\n 'memo': Memo\n }),\n 'purchase': NFTPurchase\n });\n const PwrWithdraw = IDL.Record({\n 'to': AccountIdentifier,\n 'created': Timestamp,\n 'from': AccountIdentifier,\n 'amount': Balance\n });\n const EventFungibleMint = IDL.Record({\n 'created': Timestamp,\n 'user': AccountIdentifier,\n 'amount': Balance\n });\n const PwrEvent = IDL.Variant({\n 'withdraw': PwrWithdraw,\n 'mint': EventFungibleMint,\n 'transfer': EventFungibleTransaction\n });\n const EventInfo__1 = IDL.Variant({\n 'anv': AnvEvent,\n 'nft': NftEvent,\n 'pwr': PwrEvent\n });\n const AddResponse = IDL.Vec(IDL.Nat8);\n const CanisterSlot = IDL.Nat64;\n const CanisterRange = IDL.Tuple(CanisterSlot, CanisterSlot);\n const Config = IDL.Record({\n 'nft': CanisterRange,\n 'pwr': CanisterRange,\n 'anvil': CanisterSlot,\n 'history': CanisterSlot,\n 'nft_avail': IDL.Vec(CanisterSlot),\n 'space': IDL.Vec(IDL.Vec(IDL.Nat64)),\n 'account': CanisterRange,\n 'history_range': CanisterRange,\n 'router': IDL.Principal,\n 'treasury': CanisterSlot\n });\n const EventIndex = IDL.Nat32;\n const EventInfo = IDL.Variant({\n 'anv': AnvEvent,\n 'nft': NftEvent,\n 'pwr': PwrEvent\n });\n const Event = IDL.Record({\n 'hash': IDL.Vec(IDL.Nat8),\n 'info': EventInfo\n });\n const InfoResponse = IDL.Record({\n 'total': EventIndex,\n 'previous': IDL.Opt(IDL.Principal)\n });\n const ListRequest = IDL.Record({\n 'to': EventIndex,\n 'from': EventIndex\n });\n const ListResponse = IDL.Vec(IDL.Opt(Event));\n const Oracle = IDL.Record({\n 'icpFee': IDL.Nat64,\n 'anvFee': IDL.Nat64,\n 'icpCycles': IDL.Nat64,\n 'pwrFee': IDL.Nat64\n });\n const Class = IDL.Service({\n 'add': IDL.Func([EventInfo__1], [AddResponse], []),\n 'config_set': IDL.Func([Config], [], []),\n 'get': IDL.Func([EventIndex], [IDL.Opt(Event)], ['query']),\n 'info': IDL.Func([], [InfoResponse], ['query']),\n 'list': IDL.Func([ListRequest], [ListResponse], ['query']),\n 'oracle_set': IDL.Func([Oracle], [], []),\n 'stats': IDL.Func([], [IDL.Record({\n 'cycles_recieved': IDL.Nat,\n 'rts_max_live_size': IDL.Nat,\n 'cycles': IDL.Nat,\n 'rts_memory_size': IDL.Nat,\n 'rts_total_allocation': IDL.Nat,\n 'transactions': IDL.Nat32,\n 'rts_heap_size': IDL.Nat,\n 'rts_reclaimed': IDL.Nat,\n 'rts_version': IDL.Text\n })], ['query']),\n 'wallet_receive': IDL.Func([], [], [])\n });\n return Class;\n};\n\nexports.idlFactory = idlFactory;\n\nconst init = _ref2 => {\n let {\n IDL\n } = _ref2;\n return [];\n};\n\nexports.init = init;","import React from \"react\";\nimport useWindowSize from \"react-use/lib/useWindowSize\";\nimport Confetti from \"react-confetti\";\n\nexport default function Conf() {\n const { width, height } = useWindowSize();\n return ;\n}\n","import React, { useEffect, useState } from \"react\";\n\nimport { login } from \"../reducers/user\";\nimport {\n useAnvilSelector as useSelector,\n useAnvilDispatch as useDispatch,\n} from \"../index.js\";\nimport { Button } from \"@chakra-ui/react\";\nimport Dfinity from \"../assets/dfinity.svg\";\n\nexport function LoginRequired({ label, children }) {\n const anonymous = useSelector((state) => state.user.anonymous);\n const dispatch = useDispatch();\n\n return anonymous ? (\n <>\n \n }\n mt={4}\n w={\"100%\"}\n colorScheme=\"teal\"\n size=\"lg\"\n onClick={() => dispatch(login())}\n >\n {label || \"Authenticate\"}\n \n \n ) : (\n children\n );\n}\n","export default __webpack_public_path__ + \"static/media/dfinity.ddd01f4a.svg\";","import React from \"react\";\n\nimport { createIcon } from \"@chakra-ui/react\";\n\nexport const Zap = createIcon({\n displayName: \"Zap\",\n viewBox: \"0 0 24 24\",\n // path can also be an array of elements, if you have multiple paths, lines, shapes, etc.\n path: (\n \n ),\n});\n\nexport const AnvilIcon = createIcon({\n displayName: \"UploadIcon\",\n viewBox: \"0 0 125.36 168.64\",\n path: (\n <>\n \n \n ),\n});\n\nexport const UploadIcon = createIcon({\n displayName: \"UploadIcon\",\n viewBox: \"0 0 24 24\",\n path: (\n \n ),\n});\n\nexport const VerifiedIcon = createIcon({\n displayName: \"VerifiedIcon\",\n viewBox: \"0 0 24 24\",\n path: (\n <>\n \n \n \n ),\n});\n","export default __webpack_public_path__ + \"static/media/default.7c6753e8.png\";","export default __webpack_public_path__ + \"static/media/over.bd464dfb.png\";","// If an item is sold and it doesn't match marketplace aid and share, or affiliate share it wont show in the frontend.\nexport const MARKETPLACE_AID =\n \"a00c26536f73f0add51dddd5ef3220bb1842b2783e8ba1c4dd4a2da172b1727a\";\nexport const MARKETPLACE_SHARE = 50; // 10000 is 100% ; 50 is 0.5%\nexport const ANVIL_SHARE = 50;\n\n// if there is affiliate, that will be the share\nexport const AFFILIATE_SHARE = 100;\n\n// This is the nft which curates the storefront\nexport const MARKETPLACE_STAKE_TOKEN_AUTHOR_AID = \"aid\";\n","export const idlFactory = ({ IDL }) => {\n const TokenIdentifier = IDL.Nat64;\n const Result_3 = IDL.Variant({ 'ok' : IDL.Null, 'err' : IDL.Text });\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const Basket = IDL.Vec(IDL.Opt(TokenIdentifier));\n const Result_4 = IDL.Variant({ 'ok' : Basket, 'err' : IDL.Text });\n const TransactionId = IDL.Vec(IDL.Nat8);\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Balance = IDL.Nat64;\n const Result_2 = IDL.Variant({ 'ok' : Balance, 'err' : IDL.Text });\n const Result_1 = IDL.Variant({ 'ok' : IDL.Vec(IDL.Nat8), 'err' : IDL.Text });\n const AccountRecordSerialized = IDL.Record({\n 'tokens' : IDL.Vec(TokenIdentifier),\n });\n const Result = IDL.Variant({\n 'ok' : AccountRecordSerialized,\n 'err' : IDL.Text,\n });\n const CanisterSlot = IDL.Nat64;\n const CanisterRange = IDL.Tuple(CanisterSlot, CanisterSlot);\n const Config = IDL.Record({\n 'nft' : CanisterRange,\n 'pwr' : CanisterRange,\n 'anvil' : CanisterSlot,\n 'history' : CanisterSlot,\n 'nft_avail' : IDL.Vec(CanisterSlot),\n 'space' : IDL.Vec(IDL.Vec(IDL.Nat64)),\n 'account' : CanisterRange,\n 'history_range' : CanisterRange,\n 'router' : IDL.Principal,\n 'treasury' : CanisterSlot,\n });\n const Class = IDL.Service({\n 'add' : IDL.Func([TokenIdentifier], [Result_3], []),\n 'airdrop_add' : IDL.Func([IDL.Vec(IDL.Nat8)], [Result_3], []),\n 'airdrop_use' : IDL.Func(\n [AccountIdentifier, IDL.Vec(IDL.Nat8)],\n [Result_4],\n [],\n ),\n 'buy_tx' : IDL.Func([TransactionId, IDL.Opt(SubAccount)], [Result_4], []),\n 'claim' : IDL.Func(\n [AccountIdentifier, IDL.Opt(SubAccount), TokenIdentifier],\n [Result_3],\n [],\n ),\n 'icp_balance' : IDL.Func([], [Result_2], []),\n 'icp_transfer' : IDL.Func([AccountIdentifier, Balance], [Result_1], []),\n 'owned' : IDL.Func([AccountIdentifier], [Result], ['query']),\n 'set_admin' : IDL.Func([IDL.Principal], [], ['oneway']),\n 'set_anvil_config' : IDL.Func([Config], [], []),\n 'set_params' : IDL.Func(\n [IDL.Record({ 'airdrop' : IDL.Nat, 'purchase' : IDL.Nat })],\n [],\n ['oneway'],\n ),\n 'stats' : IDL.Func(\n [],\n [\n IDL.Record({\n 'total' : IDL.Nat,\n 'added' : IDL.Nat,\n 'available' : IDL.Nat,\n 'airdrop' : IDL.Nat,\n 'purchase' : IDL.Nat,\n }),\n ],\n ['query'],\n ),\n });\n return Class;\n};\nexport const init = ({ IDL }) => { return []; };\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\n\n// Imports and re-exports candid interface\nimport { idlFactory } from \"./ito/ito.did.js\";\nexport { idlFactory } from \"./ito/ito.did.js\";\n// CANISTER_ID is replaced by webpack based on node environment\nexport const canisterId = process.env.REACT_APP_ITO_CANISTER_ID;\nconsole.log(\"REACT_APP_ITO_CANISTER_ID\", canisterId);\n/**\n *\n * @param {string | import(\"@dfinity/principal\").Principal} canisterId Canister ID of Agent\n * @param {{agentOptions?: import(\"@dfinity/agent\").HttpAgentOptions; actorOptions?: import(\"@dfinity/agent\").ActorConfig}} [options]\n * @return {import(\"@dfinity/agent\").ActorSubclass}\n */\nexport const createItoActor = (options) => {\n const agent = new HttpAgent({ ...options?.agentOptions });\n\n // // Fetch root key for certificate validation during development\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch((err) => {\n console.warn(\n \"Unable to fetch root key. Check to ensure that your local replica is running\"\n );\n console.error(err);\n });\n }\n\n // Creates an actor with using the candid interface and the HttpAgent\n return Actor.createActor(idlFactory, {\n agent,\n canisterId,\n ...options?.actorOptions,\n });\n};\n","import { createItoActor } from \"../declarations/ito.js\";\nimport {\n useAnvilDispatch,\n useAnvilSelector,\n user_login,\n user_logout,\n nft_fetch,\n user_pwr_transfer,\n user_refresh_balances,\n} from \"@vvv-interactive/nftanvil-react\";\n\nimport { base58ToBytes } from \"@vvv-interactive/nftanvil-tools/cjs/data.js\";\n\nimport { principalToAccountIdentifier } from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport { Principal } from \"@dfinity/principal\";\nimport authentication from \"@vvv-interactive/nftanvil-react/cjs/auth.js\";\n\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\n\nimport { createSlice } from \"@reduxjs/toolkit\";\nimport { accountCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/account.js\";\nimport { produce } from \"immer\";\nimport { PrincipalFromSlot } from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\nimport { tokenToText } from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport { toast } from \"react-toastify\";\n\nexport const msg =\n (msg, type = toast.TYPE.INFO) =>\n async (dispatch, getState) => {\n let toastId = toast(msg, {\n type,\n position: \"bottom-center\",\n isLoading: false,\n autoClose: true,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n };\n\nexport const stats = () => async (dispatch, getState) => {\n let ito = createItoActor({\n agentOptions: authentication.getAgentOptions(),\n });\n\n let stats = await ito.stats();\n //console.log(stats);\n return stats;\n};\n\nexport const airdrop_use = (key) => async (dispatch, getState) => {\n const s = getState();\n\n let address = AccountIdentifier.TextToArray(s.user.address);\n\n let ito = createItoActor({\n agentOptions: authentication.getAgentOptions(),\n });\n\n let brez = await ito.airdrop_use(address, base58ToBytes(key));\n\n console.log(\"airdrop_use\", brez);\n if (\"err\" in brez) throw new Error(brez.err);\n\n return brez.ok.map((x) => Number(x));\n};\n\nconst getStoredTx = () => {\n let rez;\n try {\n rez = JSON.parse(window.localStorage.getItem(\"unprocessed-tx\")) || [];\n } catch (e) {\n rez = [];\n }\n\n return rez;\n};\n\nconst saveStoredTx = (s) =>\n window.localStorage.setItem(\"unprocessed-tx\", JSON.stringify(s));\n\nconst addStoredTx = (tx) => saveStoredTx([...getStoredTx(), tx]);\n\nconst remStoredTx = (tx) => saveStoredTx(getStoredTx().filter((a) => a !== tx));\n\nexport const unprocessed_tx = () => async (dispatch, getState) => {\n let ids = getStoredTx();\n if (!ids.length) return false;\n\n dispatch(msg(\"Processing interrupted transaction\"));\n return dispatch(provide_tx(TransactionId.fromText(ids[0])));\n};\n\nexport const buy = (amount) => async (dispatch, getState) => {\n let destination = principalToAccountIdentifier(\n process.env.REACT_APP_ITO_CANISTER_ID\n );\n\n // make pwr transfer and get tx\n let dres = await dispatch(\n user_pwr_transfer({ to: destination, amount, memo: [] })\n );\n\n if (\"err\" in dres) throw new Error(dres.err);\n\n let txid = dres.ok.transactionId;\n\n addStoredTx(TransactionId.toText(txid));\n return dispatch(provide_tx(txid));\n};\n\nexport const provide_tx = (txid) => async (dispatch, getState) => {\n const s = getState();\n\n let address = AccountIdentifier.TextToArray(s.user.address);\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let ito = createItoActor({\n agentOptions: authentication.getAgentOptions(),\n });\n\n const attempt = async () => {\n // send tx_id to our custom ito.mo contract\n let brez = await ito.buy_tx(txid, subaccount);\n\n if (\"err\" in brez) {\n if (brez.err.match(\"already used\")) {\n remStoredTx(TransactionId.toText(txid));\n }\n throw new Error(brez.err);\n }\n\n remStoredTx(TransactionId.toText(txid));\n\n return brez.ok.map((x) => Number(x));\n };\n\n for (let i = 0; i < 10; i++) {\n try {\n return await attempt();\n } catch (e) {\n await delay(i * 1000);\n console.log(e);\n }\n }\n\n throw new Error(\n \"Attempted numerous times with no result. Are you sure you are connected?\"\n );\n};\n\nexport const claim = () => async (dispatch, getState) => {\n const s = getState();\n\n let address = AccountIdentifier.TextToArray(s.user.address);\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let ito = createItoActor({\n agentOptions: authentication.getAgentOptions(),\n });\n\n let owned = await ito.owned(address);\n if (owned.err) throw new Error(owned.err);\n\n let tokens = owned.ok.tokens.filter(Boolean);\n\n if (tokens.length > 0) dispatch(msg(\"Claiming \" + tokens.length + \" nfts\"));\n\n let claimed = await Promise.all(\n tokens.map((tid) => {\n return ito.claim(address, subaccount, tid);\n })\n );\n};\n\nexport const get_mine = () => async (dispatch, getState) => {\n let s = getState();\n if (!s.user.map.account?.length) return null;\n let address = s.user.address;\n\n let can = PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.account)\n );\n\n let acc = accountCanister(can, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let pageIdx = 0;\n let max = 100;\n let final = [];\n do {\n let list = await acc.list(\n AccountIdentifier.TextToArray(address),\n pageIdx * max,\n (pageIdx + 1) * max\n );\n\n list = list.filter((x) => x !== 0n).map((x) => Number(x));\n\n if (list.length === 0) break;\n\n final.push(...list);\n pageIdx++;\n } while (true);\n\n return final;\n};\n\nconst delay = (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms));\n","import React, { useEffect, useState } from \"react\";\nimport {\n useAnvilDispatch,\n useAnvilSelector,\n user_login,\n user_logout,\n nft_fetch,\n user_pwr_transfer,\n user_refresh_balances,\n TestAnvilComponent,\n} from \"@vvv-interactive/nftanvil-react\";\nimport { nft_transfer } from \"@vvv-interactive/nftanvil-react\";\nimport {\n TransactionToast,\n TransactionFailed,\n} from \"@vvv-interactive/nftanvil-react/cjs/components/TransactionToast\";\n\nimport { toast } from \"react-toastify\";\nimport { nft_use } from \"@vvv-interactive/nftanvil-react/cjs//reducers/nft\";\nimport { use_ticket } from \"../actions/ticket.js\";\nimport {\n Center,\n Button,\n Wrap,\n useDisclosure,\n FormLabel,\n FormControl,\n Input,\n Tooltip,\n} from \"@chakra-ui/react\";\n\nimport {\n AlertDialog,\n AlertDialogBody,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogContent,\n AlertDialogOverlay,\n} from \"@chakra-ui/react\";\n\nexport const UseButton = ({ id, meta }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const onClose = () => setIsOpen(false);\n const dispatch = useAnvilDispatch();\n\n const cancelRef = React.useRef();\n\n const useOk = async () => {\n onClose();\n let toastId = toast(\"Self-sacrificing...\", {\n type: toast.TYPE.INFO,\n position: \"bottom-right\",\n autoClose: false,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n\n try {\n const toAddress =\n \"c680df5bf386a6244478823794c2027d914bb61a8a372decf8ea7e156c2cb4b1\";\n let { transactionId } = await dispatch(nft_transfer({ id, toAddress }));\n // await dispatch(use_ticket(id));\n\n toast.update(toastId, {\n type: toast.TYPE.SUCCESS,\n isLoading: false,\n render: (\n \n ),\n autoClose: 9000,\n pauseOnHover: true,\n });\n } catch (e) {\n let msg = \"OnCooldown\" in e ? \"On cooldown\" : JSON.stringify(e);\n\n toast.update(toastId, {\n type: toast.TYPE.ERROR,\n isLoading: false,\n closeOnClick: true,\n\n render: (\n
\n
Self-sacrificing error.
\n
{msg}
\n
\n ),\n });\n }\n };\n\n return (\n <>\n \n\n \n \n \n \n Fight to save Ratoko\n \n\n \n Dear brave Bad Bot Ninja. You should know that those who go on\n this mission have little to no chance of returning. There will be\n no reward for the fallen, except the{\" \"}\n \n heroic songs sang for them.\n \n . Nither will there be profit for the living. Nobody knows how\n long it will take. Some say months, others - years. Take the time\n to say goodbye to your non-fungible warrior. . Danger and\n uncertainty shroud the future...\n
\n
\n \n Here are the heroes who volunteered.\n \n
\n\n \n \n \n \n
\n
\n \n \n );\n};\n","import React, { useEffect, useState } from \"react\";\n\nexport const ButtonModal = ({ name, children }) => {\n const [visibility, setVisibility] = React.useState(false);\n\n return (\n <>\n {\n setVisibility(true);\n }}\n >\n {name}\n \n {visibility ? (\n {\n setVisibility(false);\n }}\n >\n {\n e.stopPropagation();\n }}\n >\n {children({ setVisibility })}\n
\n \n ) : null}\n \n );\n};\n","import React, { useEffect, useState, useRef } from \"react\";\nimport {\n encodeTokenId,\n decodeTokenId,\n tokenUrl,\n ipfsTokenUrl,\n tokenToText,\n tokenFromText,\n} from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport {\n TestAnvilComponent,\n useAnvilDispatch,\n useAnvilSelector,\n user_login,\n user_logout,\n nft_fetch,\n user_transfer_icp,\n} from \"@vvv-interactive/nftanvil-react\";\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport { ButtonModal } from \"./Tools.js\";\nimport { msg } from \"../actions/purchase.js\";\nimport { toast } from \"react-toastify\";\n\nexport function User() {\n const dispatch = useAnvilDispatch();\n const addressInput = useRef(null);\n const amountInput = useRef(null);\n const [working, setWorking] = useState(false);\n\n const address = useAnvilSelector((state) => state.user.address);\n const e8s = useAnvilSelector((state) => state.user.icp);\n const icp = AccountIdentifier.e8sToIcp(e8s);\n\n const sendIcp = async () => {\n let to = addressInput.current.value;\n let amount = Math.floor(amountInput.current.value * 100000000) - 10000;\n setWorking(true);\n try {\n await dispatch(user_transfer_icp({ to, amount }));\n dispatch(msg(\"Transfer complete\"));\n } catch (e) {\n dispatch(msg(e.message, toast.TYPE.ERROR));\n }\n setWorking(false);\n\n amountInput.current.value = \"\";\n console.log({ to, amount });\n };\n\n return (\n
\n {address ? (\n <>\n
\n
your address
\n
{address}
\n
{\" \"}\n
\n {icp} ICP ({e8s} e8s)\n
\n \n ) : null}\n
\n {address ? (\n
\n {\n dispatch(user_logout());\n }}\n >\n Logout\n \n \n {({ setVisibility }) => (\n \n
Transfer ICP
\n {working ? (\n
Transferring...
\n ) : null}\n\n
\n \n \n
\n
\n \n \n
\n
\n setVisibility(false)}\n >\n Cancel\n \n \n
\n
\n ICP transfer fee 0.0001{\" \"}\n (10000 e8s)\n
\n
\n )}\n \n
\n ) : (\n {\n dispatch(user_login());\n }}\n >\n Login\n \n )}\n
\n \n );\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport {\n encodeTokenId,\n decodeTokenId,\n tokenUrl,\n ipfsTokenUrl,\n tokenToText,\n tokenFromText,\n} from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport {\n useAnvilDispatch,\n useAnvilSelector,\n nft_fetch,\n nft_transfer,\n nft_set_price,\n nft_purchase,\n} from \"@vvv-interactive/nftanvil-react\";\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport {\n MARKETPLACE_AID,\n MARKETPLACE_SHARE,\n ANVIL_SHARE,\n AUTHOR_SHARE,\n} from \"../config.js\";\n\nimport { ButtonModal } from \"./Tools.js\";\nimport { msg } from \"../actions/purchase.js\";\nimport { toast } from \"react-toastify\";\nimport { itemQuality } from \"@vvv-interactive/nftanvil-tools/cjs/items.js\";\n\nexport function NftSingle({ id }) {\n const meta = useAnvilSelector((state) => state.nft[id]);\n\n const dispatch = useAnvilDispatch();\n\n useEffect(() => {\n dispatch(nft_fetch(id));\n }, [id, dispatch]);\n\n if (!meta) return null;\n\n let nft = [\n tokenFromText(id),\n meta.quality,\n meta.name,\n meta.lore,\n meta.attributes,\n meta.tags,\n ];\n\n return (\n
\n \n
\n );\n}\n\nfunction NftTransfer({ id }) {\n const [working, setWorking] = useState(false);\n const addressInput = useRef(null);\n const dispatch = useAnvilDispatch();\n\n const sendNft = async () => {\n let toAddress = addressInput.current.value;\n\n console.log(\"id\", id, \"toAddress\", toAddress);\n\n setWorking(true);\n try {\n await dispatch(nft_transfer({ id, toAddress }));\n dispatch(msg(\"Transfer complete\"));\n } catch (e) {\n dispatch(msg(e.message, toast.TYPE.ERROR));\n }\n setWorking(false);\n\n addressInput.current.value = \"\";\n };\n\n return (\n \n {({ setVisibility }) => (\n
\n
Transfer NFT
\n {working ? (\n
Transferring...
\n ) : null}\n\n
\n \n \n
\n
\n \n sendNft().then(() => setVisibility(false))}\n >\n Send\n \n
\n
\n )}\n
\n );\n}\n\nfunction NftSell({ id, myprice }) {\n const [working, setWorking] = useState(false);\n const amountInput = useRef(null);\n const dispatch = useAnvilDispatch();\n\n const sellNft = async () => {\n setWorking(true);\n\n let priceval = parseFloat(amountInput.current.value);\n\n let amount = AccountIdentifier.icpToE8s(\n priceval / (1 - (MARKETPLACE_SHARE + ANVIL_SHARE + AUTHOR_SHARE) / 10000)\n );\n\n let price = {\n amount,\n marketplace: [\n // {\n // address: AccountIdentifier.TextToArray(MARKETPLACE_AID),\n // share: MARKETPLACE_SHARE,\n // },\n ],\n };\n\n try {\n await dispatch(nft_set_price({ id, price }));\n dispatch(msg(\"Price set\"));\n } catch (e) {\n dispatch(msg(e.message, toast.TYPE.ERROR));\n }\n\n setWorking(false);\n };\n\n const removeSaleNft = async () => {\n setWorking(true);\n\n let amount = 0;\n\n let price = {\n amount,\n marketplace: [\n // {\n // address: AccountIdentifier.TextToArray(MARKETPLACE_AID),\n // share: MARKETPLACE_SHARE,\n // },\n ],\n };\n\n try {\n await dispatch(nft_set_price({ id, price }));\n dispatch(msg(\"Price removed\"));\n } catch (e) {\n dispatch(msg(e.message, toast.TYPE.ERROR));\n }\n\n setWorking(false);\n };\n\n return (\n \n {({ setVisibility }) => (\n
\n
Sell NFT
\n {working ? (\n
Setting price...
\n ) : null}\n\n
\n \n \n
\n
\n removeSaleNft().then(() => setVisibility(false))}\n >\n Don't sell\n \n \n sellNft().then(() => setVisibility(false))}\n >\n Set\n \n
\n
\n
+0.5% protocol fee
\n
+1.0% author royalty
\n
\n )}\n \n );\n}\n\nfunction NftBuy({ className, refreshMine, id, price }) {\n const [working, setWorking] = useState(false);\n\n const [confirm, setConfirm] = React.useState(false);\n const dispatch = useAnvilDispatch();\n\n const onBuy = async () => {\n let amount = price;\n setWorking(true);\n\n try {\n await dispatch(nft_purchase({ id, amount }));\n dispatch(msg(\"Purchase complete\"));\n } catch (e) {\n dispatch(msg(e.message, toast.TYPE.ERROR));\n }\n setWorking(false);\n };\n\n if (!price) return null;\n return (\n <>\n {working ? (\n
Buying...
\n ) : (\n <>\n {confirm ? (\n
\n confirm\n
\n ) : null}\n {\n if (!confirm) setConfirm(true);\n else {\n setConfirm(false);\n await onBuy();\n }\n }}\n >\n {confirm\n ? \"Yes Buy\"\n : \"Buy for \" + AccountIdentifier.e8sToIcp(price) + \" ICP\"}\n \n {confirm ? (\n {\n setConfirm(false);\n }}\n >\n No\n \n ) : null}\n \n )}\n \n );\n}\n\nexport function NftThumb({ nft, owner = false, mine, meta }) {\n let [id, quality, name, lore, attributes, tags, price] = nft;\n\n // attributes = [\n // [\"attack\", 30],\n // [\"defence\", 100],\n // [\"harvest\", 40],\n // [\"airdrops\", 40],\n // ];\n const idt = tokenToText(id);\n const map = useAnvilSelector((state) => state.user.map);\n if (!map.history) return null;\n let url = meta?.thumb?.external || tokenUrl(map.space, id, \"thumb\");\n let qa = itemQuality.dark[quality];\n\n const is_mine = mine ? mine.indexOf(id) !== -1 : false;\n\n return (\n
\n
\n \"nft\"\n
\n
\n
\n {name}\n
\n
{qa.label}
\n
{lore}
\n {is_mine ? (\n
\n \n \n
\n ) : (\n
\n \n
\n )}\n
\n {!attributes.length ? null : (\n
\n {attributes.map((attr, idx) => (\n
\n {attr[0]}{\" \"}\n +{attr[1]}\n
\n ))}\n
\n )}\n
\n );\n}\n","/* global BigInt */\n\nimport React, { useEffect, useState, useRef } from \"react\";\nimport {\n encodeTokenId,\n decodeTokenId,\n tokenUrl,\n ipfsTokenUrl,\n tokenToText,\n tokenFromText,\n} from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport {\n useAnvilDispatch,\n useAnvilSelector,\n user_login,\n user_logout,\n nft_fetch,\n} from \"@vvv-interactive/nftanvil-react\";\nimport { NftThumb } from \"./Nft\";\nimport {\n HStack,\n Center,\n Flex,\n Box,\n Select,\n Checkbox,\n Switch,\n} from \"@chakra-ui/react\";\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\n\nimport { itemQuality } from \"@vvv-interactive/nftanvil-tools/cjs/items.js\";\n\nconst ATTR = [\"luck\", \"attack\", \"defense\", \"airdrops\", \"harvest\"];\n\nfunction standardDeviation(numArray) {\n const mean = numArray.reduce((s, n) => s + n[6], 0) / numArray.length;\n const variance =\n numArray.reduce((s, n) => s + (n[6] - mean) ** 2, 0) /\n (numArray.length - 1);\n const std = Math.sqrt(variance);\n\n return { mean, variance, std };\n}\n\nexport function Collection({ nfts, mine, only, prices }) {\n const actionsRef = useRef(null);\n\n const [page, setPage] = React.useState(0);\n const [filterQuality, setFilterQuality] = React.useState(6);\n const [sortBy, setSortBy] = React.useState(\"priceasc\");\n const [showMine, setShowMine] = React.useState(false);\n\n let nftcut = showMine\n ? nfts.filter((x) => {\n return mine.indexOf(x[0]) !== -1;\n })\n : nfts;\n\n let filtered = nftcut.filter((x) => {\n if (filterQuality <= 0) return true;\n return x[1] == filterQuality;\n });\n\n let priced = filtered\n .map((x) => {\n let pr = prices[x[0]][1];\n if (sortBy === \"priceasc\" && !pr) return false;\n if (sortBy === \"pricedesc\" && !pr) return false;\n return [...x, pr];\n })\n .filter(Boolean);\n\n let price_min = false;\n let price_max = false;\n\n let sorted = !sortBy\n ? priced\n : priced.sort((a, b) => {\n if (sortBy === \"priceasc\") return a[6] - b[6];\n if (sortBy === \"pricedesc\") return b[6] - a[6];\n\n let q = a[4] ? a[4].find((z) => z[0] === sortBy) : false;\n q = q ? q[1] : 0;\n\n let m = b[4] ? b[4].find((z) => z[0] === sortBy) : false;\n m = m ? m[1] : 0;\n\n return m - q;\n });\n\n sorted.forEach((x) => {\n if (!x[6]) return;\n if (price_min === false || x[6] < price_min) price_min = x[6];\n if (price_max === false || x[6] > price_max) price_max = x[6];\n });\n\n const { mean, std } = standardDeviation(sorted.filter((x) => x[6] !== 0));\n\n let slice = sorted.slice(page * 30, (page + 1) * 30);\n const pagination = (\n
\n {\n setPage(page - 1);\n actionsRef.current.scrollIntoView();\n }}\n >\n Prev\n \n {\n setPage(page + 1);\n actionsRef.current.scrollIntoView();\n }}\n >\n Next\n \n
\n );\n\n const filters = (\n
\n
\n \n \n {\n setFilterQuality(e.target.value);\n setPage(0);\n }}\n defaultValue={filterQuality}\n >\n {itemQuality.dark.map(({ label, color }, idx) => (\n \n ))}\n \n \n \n {\n setSortBy(e.target.value);\n setPage(0);\n }}\n defaultValue=\"priceasc\"\n >\n \n \n \n {ATTR.map((att, idx) => (\n \n ))}\n \n \n \n {\n setShowMine(!showMine);\n }}\n >\n Owned\n \n \n \n
\n
\n );\n\n return (\n <>\n {filters}\n
\n Items: {filtered.length}\n {price_min !== false && price_max !== false && mean && std ? (\n <>\n Floor: {AccountIdentifier.e8sToIcp(price_min)} ICP\n\n \n Std low:\n {AccountIdentifier.e8sToIcp(BigInt(Math.round(mean - std)))} ICP\n \n \n Mean: {AccountIdentifier.e8sToIcp(BigInt(Math.round(mean)))} ICP\n \n \n Std high:\n {AccountIdentifier.e8sToIcp(BigInt(Math.round(mean + std)))} ICP\n \n \n ) : null}\n
\n {pagination}\n
\n {slice.map((nft, idx) => {\n return (\n \n );\n })}\n
\n {pagination}\n \n );\n}\n","export const idlFactory = ({ IDL }) => {\n const AccountIdentifier = IDL.Vec(IDL.Nat8);\n const SubAccount = IDL.Vec(IDL.Nat8);\n const TokenIdentifier = IDL.Nat64;\n const Result_4 = IDL.Variant({ 'ok' : IDL.Null, 'err' : IDL.Text });\n const Balance = IDL.Nat64;\n const Result_3 = IDL.Variant({ 'ok' : Balance, 'err' : IDL.Text });\n const Result_2 = IDL.Variant({ 'ok' : IDL.Vec(IDL.Nat8), 'err' : IDL.Text });\n const AccountRecordSerialized = IDL.Record({\n 'tokens' : IDL.Vec(TokenIdentifier),\n });\n const Result_1 = IDL.Variant({\n 'ok' : AccountRecordSerialized,\n 'err' : IDL.Text,\n });\n const TransactionId = IDL.Vec(IDL.Nat8);\n const Basket = IDL.Vec(IDL.Opt(TokenIdentifier));\n const Result = IDL.Variant({ 'ok' : Basket, 'err' : IDL.Text });\n const Class = IDL.Service({\n 'claim' : IDL.Func(\n [AccountIdentifier, IDL.Opt(SubAccount), TokenIdentifier],\n [Result_4],\n [],\n ),\n 'get_script_address' : IDL.Func([], [IDL.Text], ['query']),\n 'icp_balance' : IDL.Func([], [Result_3], []),\n 'icp_transfer' : IDL.Func([AccountIdentifier, Balance], [Result_2], []),\n 'init_inventory' : IDL.Func([IDL.Nat], [], []),\n 'init_random' : IDL.Func([], [], []),\n 'owned' : IDL.Func([AccountIdentifier], [Result_1], ['query']),\n 'stats' : IDL.Func(\n [],\n [\n IDL.Record({\n 'total' : IDL.Nat,\n 'added' : IDL.Nat,\n 'available' : IDL.Nat,\n }),\n ],\n ['query'],\n ),\n 'use_tx' : IDL.Func([TransactionId, IDL.Opt(SubAccount)], [Result], []),\n });\n return Class;\n};\nexport const init = ({ IDL }) => { return []; };\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\n\n// Imports and re-exports candid interface\nimport { idlFactory } from \"./usewin/usewin.did.js\";\nexport { idlFactory } from \"./usewin/usewin.did.js\";\n// CANISTER_ID is replaced by webpack based on node environment\nexport const canisterId = process.env.REACT_APP_USEWIN_CANISTER_ID;\nconsole.log(\"REACT_APP_USEWIN_CANISTER_ID\", canisterId);\n/**\n *\n * @param {string | import(\"@dfinity/principal\").Principal} canisterId Canister ID of Agent\n * @param {{agentOptions?: import(\"@dfinity/agent\").HttpAgentOptions; actorOptions?: import(\"@dfinity/agent\").ActorConfig}} [options]\n * @return {import(\"@dfinity/agent\").ActorSubclass}\n */\nexport const createUsewinActor = (options) => {\n const agent = new HttpAgent({ ...options?.agentOptions });\n\n // // Fetch root key for certificate validation during development\n if (process.env.REACT_APP_LOCAL_BACKEND) {\n agent.fetchRootKey().catch((err) => {\n console.warn(\n \"Unable to fetch root key. Check to ensure that your local replica is running\"\n );\n console.error(err);\n });\n }\n\n // Creates an actor with using the candid interface and the HttpAgent\n return Actor.createActor(idlFactory, {\n agent,\n canisterId,\n ...options?.actorOptions,\n });\n};\n","import { createUsewinActor } from \"../declarations/usewin.js\";\nimport {\n useAnvilDispatch,\n useAnvilSelector,\n user_login,\n user_logout,\n nft_fetch,\n nft_use,\n user_pwr_transfer,\n user_refresh_balances,\n} from \"@vvv-interactive/nftanvil-react\";\n\nimport { base58ToBytes } from \"@vvv-interactive/nftanvil-tools/cjs/data.js\";\n\nimport { principalToAccountIdentifier } from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport { Principal } from \"@dfinity/principal\";\nimport authentication from \"@vvv-interactive/nftanvil-react/cjs/auth.js\";\n\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\n\nimport { createSlice } from \"@reduxjs/toolkit\";\nimport { accountCanister } from \"@vvv-interactive/nftanvil-canisters/cjs/account.js\";\nimport { produce } from \"immer\";\nimport { PrincipalFromSlot } from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\nimport { tokenToText } from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport { toast } from \"react-toastify\";\n\nexport const msg =\n (msg, type = toast.TYPE.INFO) =>\n async (dispatch, getState) => {\n let toastId = toast(msg, {\n type,\n position: \"bottom-center\",\n isLoading: false,\n autoClose: true,\n hideProgressBar: false,\n closeOnClick: false,\n pauseOnHover: true,\n draggable: false,\n });\n };\n\nexport const stats = () => async (dispatch, getState) => {\n let ito = createUsewinActor({\n agentOptions: authentication.getAgentOptions(),\n });\n\n let stats = await ito.stats();\n //console.log(stats);\n return stats;\n};\n\n// export const airdrop_use = (key) => async (dispatch, getState) => {\n// const s = getState();\n\n// let address = AccountIdentifier.TextToArray(s.user.address);\n\n// let ito = createUsewinActor({\n// agentOptions: authentication.getAgentOptions(),\n// });\n\n// let brez = await ito.airdrop_use(address, base58ToBytes(key));\n\n// console.log(\"airdrop_use\", brez);\n// if (\"err\" in brez) throw new Error(brez.err);\n\n// return brez.ok.map((x) => Number(x));\n// };\n\nconst getStoredTx = () => {\n let rez;\n try {\n rez = JSON.parse(window.localStorage.getItem(\"usewin-tx\")) || [];\n } catch (e) {\n rez = [];\n }\n\n return rez;\n};\n\nconst saveStoredTx = (s) =>\n window.localStorage.setItem(\"usewin-tx\", JSON.stringify(s));\n\nconst addStoredTx = (tx) => saveStoredTx([...getStoredTx(), tx]);\n\nconst remStoredTx = (tx) => saveStoredTx(getStoredTx().filter((a) => a !== tx));\n\nexport const unprocessed_tx = () => async (dispatch, getState) => {\n let ids = getStoredTx();\n if (!ids.length) return false;\n\n dispatch(msg(\"Processing interrupted transaction\"));\n return dispatch(provide_tx(TransactionId.fromText(ids[0])));\n};\n\nexport const usewin =\n ({ id }) =>\n async (dispatch, getState) => {\n const use = { cooldown: 10080 }; //\n\n let meta = await dispatch(nft_fetch(id));\n let now = Math.floor(Date.now() / 1000 / 60);\n if (meta.cooldownUntil >= now) throw new Error(\"cooldown\");\n\n // make pwr transfer and get tx\n let { transactionId } = await dispatch(nft_use({ id, use, memo: [] }));\n\n addStoredTx(TransactionId.toText(transactionId));\n\n return dispatch(provide_tx(transactionId));\n };\n\nexport const provide_tx = (txid) => async (dispatch, getState) => {\n const s = getState();\n\n let address = AccountIdentifier.TextToArray(s.user.address);\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let usewin = createUsewinActor({\n agentOptions: authentication.getAgentOptions(),\n });\n\n // const attempt = async () => {\n // send tx_id to our custom ito.mo contract\n let brez;\n try {\n brez = await usewin.use_tx(txid, subaccount);\n\n console.log(\"use_tx\", brez);\n\n remStoredTx(TransactionId.toText(txid));\n\n if (\"err\" in brez) {\n return false;\n }\n\n return brez.ok.map((x) => Number(x));\n } catch (e) {\n throw new Error(\n \"Attempted with no result. Are you sure you are connected?\"\n );\n }\n // };\n\n // for (let i = 0; i < 10; i++) {\n // try {\n // return await attempt();\n // } catch (e) {\n // await delay(i * 1000);\n // console.log(e);\n // }\n // }\n};\n\nexport const claim = () => async (dispatch, getState) => {\n const s = getState();\n\n let address = AccountIdentifier.TextToArray(s.user.address);\n\n let subaccount = [\n AccountIdentifier.TextToArray(s.user.subaccount) || null,\n ].filter(Boolean);\n\n let ito = createUsewinActor({\n agentOptions: authentication.getAgentOptions(),\n });\n\n let owned = await ito.owned(address);\n if (owned.err) throw new Error(owned.err);\n\n let tokens = owned.ok.tokens.filter(Boolean);\n\n if (tokens.length > 0) dispatch(msg(\"Claiming \" + tokens.length + \" nfts\"));\n\n let claimed = await Promise.all(\n tokens.map((tid) => {\n return ito.claim(address, subaccount, tid);\n })\n );\n};\n\nexport const get_mine = () => async (dispatch, getState) => {\n let s = getState();\n if (!s.user.map.account?.length) return null;\n let address = s.user.address;\n\n let can = PrincipalFromSlot(\n s.user.map.space,\n AccountIdentifier.TextToSlot(address, s.user.map.account)\n );\n\n let acc = accountCanister(can, {\n agentOptions: authentication.getAgentOptions(),\n });\n\n let pageIdx = 0;\n let max = 100;\n let final = [];\n do {\n let list = await acc.list(\n AccountIdentifier.TextToArray(address),\n pageIdx * max,\n (pageIdx + 1) * max\n );\n\n list = list.filter((x) => x !== 0n).map((x) => Number(x));\n\n if (list.length === 0) break;\n\n final.push(...list);\n pageIdx++;\n } while (true);\n\n return final;\n};\n\nconst delay = (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms));\n","import React, { useEffect, useState, useRef } from \"react\";\nimport useWindowSize from \"react-use/lib/useWindowSize\";\nimport useTimeout from \"react-use/lib/useTimeout\";\nimport Confetti from \"react-confetti\";\n\nexport default function Conf() {\n const [isReady, cancel] = useTimeout(10000);\n const { width, height } = useWindowSize();\n if (isReady()) return null;\n return ;\n}\n","import React, { useEffect, useState, useRef } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n useAnvilSelector,\n useAnvilDispatch,\n user_refresh_balances,\n} from \"@vvv-interactive/nftanvil-react\";\nimport { NftThumb } from \"./Nft\";\n\nimport {\n buy,\n claim,\n get_mine,\n airdrop_use,\n stats,\n provide_tx,\n msg,\n} from \"../actions/purchase\";\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport Confetti from \"./Confetti.js\";\nimport { ButtonModal } from \"./Tools.js\";\nimport nfts from \"../nfts.json\";\n\nconst UNAVAILABLE = true;\nconst SOLDOUT = true;\n\nfunction Basket({ ids, onClose }) {\n let nftcut = nfts\n ? nfts.filter((x) => {\n return ids.indexOf(x[0]) !== -1;\n })\n : nfts;\n\n return (\n
\n
\n \n
Congratulations!
\n
You just got {ids.length} NFTs
\n
\n \n
\n
\n {nftcut.map((nft, idx) => {\n return ;\n })}\n
\n
\n \n
\n
\n
\n );\n}\n\nfunction BuyButton({ price, className, refreshMine, onBuy }) {\n const [confirm, setConfirm] = React.useState(false);\n const dispatch = useAnvilDispatch();\n\n return (\n
\n {confirm ? (\n
\n confirm\n
\n ) : null}\n {\n if (!confirm) setConfirm(true);\n else {\n setConfirm(false);\n await onBuy(price);\n }\n }}\n >\n {confirm ? \"Yes\" : \"Buy Now\"}\n \n {confirm ? (\n {\n setConfirm(false);\n }}\n >\n No\n \n ) : null}\n
\n );\n}\n\nexport function PriceOptions({ refreshMine }) {\n const dispatch = useAnvilDispatch();\n const [working, setWorking] = React.useState(false);\n const [basket, setBasket] = React.useState(false);\n const codeInput = useRef(null);\n const logged = useAnvilSelector((state) => state.user.address);\n\n const price_1 = 29940120;\n const price_2 = 479041916;\n const price_3 = 134730539;\n\n const showPrice = (x) => {\n let p = (Math.round(AccountIdentifier.e8sToIcp(x) * 100) / 100)\n .toString()\n .split(/[\\.\\,]/);\n\n return (\n \n {p[0]}\n .{p[1]} ICP\n \n );\n };\n\n const onBuy = async (price) => {\n setWorking(true);\n let basket = false;\n try {\n basket = await dispatch(buy(price));\n } catch (e) {\n dispatch(msg(e.message));\n setWorking(false);\n return;\n }\n\n setBasket(basket);\n setWorking(false);\n\n dispatch(user_refresh_balances());\n await dispatch(claim());\n refreshMine();\n };\n\n const onAirdrop = async (code) => {\n setWorking(true);\n let basket = false;\n try {\n basket = await dispatch(airdrop_use(code));\n } catch (e) {\n dispatch(msg(e.message));\n setWorking(false);\n return;\n }\n\n setBasket(basket);\n setWorking(false);\n\n dispatch(user_refresh_balances());\n await dispatch(claim());\n refreshMine();\n };\n\n return (\n
\n {/* {SOLDOUT ?
Sold out!
: null}\n
\n \n
Shot
\n
{showPrice(price_1)}
\n
\n
1 NFT
\n
\n \n
\n\n \n {working ? : null}\n
BFF
\n
{showPrice(price_2)}
\n
\n
20 NFTs
\n
20% discount
\n
\n\n \n
\n\n \n
Splash
\n
{showPrice(price_3)}
\n
\n
5 NFTs
\n
10% discount
\n
\n \n \n */}\n\n
\n \n {({ setVisibility }) => (\n
\n
Use airdrop code
\n
\n \n \n
\n\n
\n \n {\n setVisibility(false);\n onAirdrop(codeInput.current.value.trim());\n codeInput.current.value = \"\";\n }}\n >\n Use\n \n
\n
\n )}\n
\n
\n {basket\n ? ReactDOM.createPortal(\n {\n setBasket(false);\n }}\n />,\n document.body\n )\n : null}\n \n );\n}\n\nexport function CenterSpinner() {\n return (\n
\n \n
\n );\n}\nexport function Spinner() {\n return (\n
\n
\n
\n
\n
\n
\n );\n}\n\nexport function ProgressBar() {\n const [st, setStats] = React.useState(false);\n const [count, setCount] = useState(0);\n\n const dispatch = useAnvilDispatch();\n const load = async () => {\n setStats(await dispatch(stats()));\n };\n\n useEffect(() => {\n load();\n const interval = setInterval(() => {\n load();\n setCount(count + 1);\n }, 5000);\n return () => clearInterval(interval);\n }, [count, dispatch]);\n\n if (!st) return null;\n\n let available = Math.min(Number(st.available), Number(st.purchase));\n let total = Number(st.total);\n\n let airdrop = Number(st.airdrop);\n // let purchase = Number(st.purchase);\n const perc = ((total - available) / total) * 100;\n //console.log(perc);\n return (\n <>\n
\n
\n
\n
\n {total} total | {available} left\n
\n \n );\n}\n","import React, { useEffect, useState, useRef } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n useAnvilSelector,\n useAnvilDispatch,\n user_refresh_balances,\n nft_transfer,\n} from \"@vvv-interactive/nftanvil-react\";\nimport { NftSingle } from \"./Nft\";\n\nimport { buy, claim, get_mine, stats, usewin, msg } from \"../actions/usewin\";\nimport * as AccountIdentifier from \"@vvv-interactive/nftanvil-tools/cjs/accountidentifier.js\";\nimport Confetti from \"./Confetti.js\";\nimport { ButtonModal } from \"./Tools.js\";\nimport nfts from \"../nfts.json\";\nimport { Button, Center, Box, Text } from \"@chakra-ui/react\";\nimport {\n encodeTokenId,\n decodeTokenId,\n tokenUrl,\n ipfsTokenUrl,\n tokenToText,\n tokenFromText,\n} from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\n\nfunction Basket({ ids, onClose }) {\n return (\n
\n
\n \n
Congratulations!
\n
You win
\n {ids.length > 3 ? (\n
\n \n
\n ) : null}\n
\n {ids.map((id, idx) => {\n return ;\n })}\n
\n
\n \n
\n
\n
\n );\n}\n\nfunction BuyButton({ price, className, refreshMine, onBuy }) {\n const [confirm, setConfirm] = React.useState(false);\n const dispatch = useAnvilDispatch();\n\n return (\n
\n {confirm ? (\n
\n confirm\n
\n ) : null}\n {\n if (!confirm) setConfirm(true);\n else {\n setConfirm(false);\n await onBuy(price);\n }\n }}\n >\n {confirm ? \"Yes\" : \"Buy Now\"}\n \n {confirm ? (\n {\n setConfirm(false);\n }}\n >\n No\n \n ) : null}\n
\n );\n}\n\nexport function UseWinGame({ refreshMine, nfts }) {\n const dispatch = useAnvilDispatch();\n const [working, setWorking] = React.useState(false);\n const [basket, setBasket] = React.useState(false); // tokenFromText(\"nftaad6cgztcvnra0tkp\"),\n const logged = useAnvilSelector((state) => state.user.address);\n const [log, setLog] = React.useState([]); // tokenFromText(\"nftaad6cgztcvnra0tkp\"),\n\n const onUse = async (price) => {\n setWorking(true);\n\n let allmine = await dispatch(get_mine());\n let mine = nfts\n .filter(([id]) => {\n return allmine.indexOf(id) !== -1;\n })\n .map((x) => x[0]);\n\n // FOR TESTING PURPOSES\n // let notmine = allmine.filter((id) => {\n // return mine.indexOf(id) == -1;\n // });\n\n // for (let n of notmine) {\n // await dispatch(\n // nft_transfer({\n // id: tokenToText(n),\n // toAddress:\n // \"c680df5bf386a6244478823794c2027d914bb61a8a372decf8ea7e156c2cb4b1\",\n // })\n // );\n // }\n\n let basket = false;\n let tmplog = [];\n const logme = (a) => {\n tmplog.push(a);\n setLog(tmplog);\n };\n logme(\"You have \" + mine.length + \" fighters\");\n for (let id of mine) {\n let data = nfts.find((x) => x[0] === id);\n let name = data[2];\n try {\n logme(\"'\" + name + \"' attacks the mighty boss...\");\n basket = await dispatch(usewin({ id: tokenToText(id) }));\n if (!basket || !basket.length) logme(\"'\" + name + \"' fails\");\n else logme(\"'\" + name + \"' wins!\");\n } catch (e) {\n console.log(e);\n if (e.message === \"cooldown\") {\n logme(\"'\" + name + \"' is cooling down and can't fight\");\n } else {\n dispatch(msg(JSON.stringify(e.message)));\n }\n }\n\n if (basket.length) {\n setBasket(basket);\n await dispatch(claim());\n }\n }\n setWorking(false);\n\n dispatch(user_refresh_balances());\n await dispatch(claim());\n refreshMine();\n };\n\n return (\n
\n \n \n \n This is just a little silly game for you to play with while we are\n developing the real thing. A{\" \"}\n \n smart contract\n {\" \"}\n is loaded with{\" \"}\n \n NFT loot\n \n . You can fight for a piece of it with your Bad Bot Ninja army once\n every 7 days.\n \n \n
\n \n Boss fight\n \n
\n
\n\n
\n \n {log.map((x, idx) => (\n {x}\n ))}\n \n
\n {basket\n ? ReactDOM.createPortal(\n {\n setBasket(false);\n }}\n />,\n document.body\n )\n : null}\n
\n );\n}\n\nexport function CenterSpinner() {\n return (\n
\n \n
\n );\n}\n\nexport function Spinner() {\n return (\n
\n
\n
\n
\n
\n
\n );\n}\n","export default __webpack_public_path__ + \"static/media/bbn_logo.35972ac3.png\";","export default __webpack_public_path__ + \"static/media/logo.6ce24c58.svg\";","import React, { useEffect, useState, useRef } from \"react\";\nimport {\n encodeTokenId,\n decodeTokenId,\n tokenUrl,\n ipfsTokenUrl,\n tokenToText,\n tokenFromText,\n} from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport { PrincipalToIdx } from \"@vvv-interactive/nftanvil-tools/cjs/principal.js\";\nimport { nft_enter_code } from \"@vvv-interactive/nftanvil-react/cjs/reducers/nft\";\nimport {\n useAnvilDispatch,\n useAnvilSelector,\n user_login,\n user_logout,\n nft_fetch,\n user_pwr_transfer,\n user_refresh_balances,\n TestAnvilComponent,\n} from \"@vvv-interactive/nftanvil-react\";\nimport { Inventory } from \"@vvv-interactive/nftanvil-react/cjs/components/Inventory\";\nimport {\n NFTPage,\n NFTClaim,\n} from \"@vvv-interactive/nftanvil-react/cjs/components/NFT\";\nimport { UseButton } from \"./components/Ticket.js\";\n\nimport { User } from \"./components/User\";\nimport { Collection } from \"./components/Collection\";\nimport * as TransactionId from \"@vvv-interactive/nftanvil-tools/cjs/transactionid.js\";\nimport { principalToAccountIdentifier } from \"@vvv-interactive/nftanvil-tools/cjs/token.js\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport authentication from \"@vvv-interactive/nftanvil-react/cjs/auth.js\";\nimport {\n claim as claimUsewin,\n unprocessed_tx as unprocessed_txUsewin,\n} from \"./actions/usewin\";\nimport {\n buy,\n claim,\n get_mine,\n airdrop_use,\n stats,\n unprocessed_tx,\n} from \"./actions/purchase\";\nimport { ButtonModal } from \"./components/Tools.js\";\nimport { PriceOptions, ProgressBar } from \"./components/Ito.js\";\nimport { UseWinGame } from \"./components/Usewin.js\";\nimport { ToastContainer } from \"react-toastify\";\nimport {\n Link,\n NavLink,\n BrowserRouter,\n Routes,\n Route,\n useNavigate,\n useParams,\n} from \"react-router-dom\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport {\n Box,\n Button,\n ButtonGroup,\n Center,\n useColorMode,\n Wrap,\n} from \"@chakra-ui/react\";\nimport logo from \"./logo.svg\";\nimport bbn_logo from \"./assets/bbn_logo.png\";\n\nimport nfts from \"./nfts.json\";\nimport \"./App.css\";\n\nconst START = 1651089600; //Date.now() / 1000 + 30;\n\nconst getShuffledArr = (arr) => {\n const newArr = arr.slice();\n for (let i = newArr.length - 1; i > 0; i--) {\n const rand = Math.floor(Math.random() * (i + 1));\n [newArr[i], newArr[rand]] = [newArr[rand], newArr[i]];\n }\n return newArr;\n};\n\nlet r_nfts = getShuffledArr(nfts);\n\nfunction About() {\n return (\n
\n

Welcome to badbot.ninja!

\n

\n Badbot Ninja is an open-source web3 dapp on the Internet Computer\n demonstrating how easy it is for developers to build their own NFT use\n cases with the Anvil protocol.\n

\n

\n Badbot Ninja metaverse apparel is our first showcase project, an NFT\n series with collectibility and accessibility in mind. We are starting\n with a 10k collection of helmets and will expand to include wearable\n NFTs for other character slots like chest, legs, hands, etc. In the\n future, we will be working on adding the functionality for crafting and\n enchanting items, along with avatar customization, to be applied in our\n metaverse space, Zraham City. We will be developing our own\n blockchain-based game engine so that Zraham City and its impeccably\n attired citizens can congregate and explore a dynamic digital arena.\n

\n

\n What you see here is a collection of 10k AI-generated helmet NFTs—each\n one is unique with its own name, description, and attributes, some are\n rarer than others. 5k of our inaugural set is available for purchase, 4k\n are allocated for airdrops, and 1k out of the NFT collection is left for\n the developer team. Every asset here is set up securely with smart\n contracts running on the ICP blockchain, meaning everyone has a fair\n chance of receiving truly randomized NFTs, even us!\n

\n

\n Because AIs are mysterious and no one knows exactly how they think, some\n NFTs might be strange. However, don’t worry if the AI selects a strange\n helmet for you! In the future, we will add the ability to disenchant\n your NFT into raw materials such as crystals, metals, and other supplies\n that you can use to craft new items in Zraham City.\n

\n

Try out our Dapp and have fun!

\n

\n Some useful links:\n
\n \n NFT Anvil\n {\" \"}\n
\n \n Anvil protocol docs\n \n
\n \n Github link to this dapp and smart contract\n \n

\n
\n
\n
\n Update: Sold out for 19 hours and price per NFT was ~0.3ICP.\n Marketplace is now available.\n
\n
\n

\n Update: Additional information about items and their utility\n

\n

\n Qualities: Artifacts - 44 | Legendary - 199 | Epic - 412 | Rare\n - 1334 | Uncommon - 2015 | Common - 5996\n

\n\n

\n Attributes:\n

\n

\n +luck | Benefits playing games of chance. Also affects the combat\n system.\n

\n

+attack | Increases your damage.

\n

+defence | Reduces damage taken.

\n

\n +airdrops | Increases your chance to get drops from events and looting\n

\n

\n +harvest | Benefits gathering of resources from mining, disenchanting\n and similar.\n

\n
\n

\n The higher the quality, the better materials it will disenchant to.\n The materials will be fungible tokens and will be used to craft\n special items with a given blueprint.\n

\n
\n\n

\n Zraham city is a long term project which will combine all technologies\n we work on. Unity world + Internet Computer + Anvil protocol +\n Kontribute lore + Smart contract game engine. Based on quality and\n provable randomness some items will get usable effects added to them.\n These effects (with cooldown) will interact with the world and with\n roleplayers.\n

\n

\n \n Next Badbot Ninja collection\n {\" \"}\n is coming early June{\" \"}\n

\n

\n Badbot.ninja will keep on releasing new item collections with the same\n airdrop/sale ratio to increase brand awareness. Next Wednesday 11 May\n - To demonstrate how \"crypto nft use on cooldown\" works, we will mint\n limited artwork - 50 Blacksmith posters, place them inside a smart\n contract and allow item holders to attempt to win them. Airdrop & luck\n attributes will be used along with randomness.\n

\n\n

\n Badbot.ninja proceeds are gathered in a pool which will support\n Zraham's builders.\n

\n
\n
\n );\n}\n\nfunction Timer({ children }) {\n const [count, setCount] = useState(0);\n const [time, setTime] = useState(\"\");\n const [open, setOpen] = useState(false);\n\n const dispatch = useAnvilDispatch();\n\n const load = async () => {\n let duration = START - Math.round(Date.now() / 1000);\n let days = Math.floor(duration / (60 * 60 * 24));\n let hours = Math.floor((duration - days * (60 * 60 * 24)) / (60 * 60));\n let min = Math.floor(\n (duration - days * (60 * 60 * 24) - hours * (60 * 60)) / 60\n );\n let sec = Math.floor(\n duration - days * (60 * 60 * 24) - hours * (60 * 60) - min * 60\n );\n\n if (duration <= 0) {\n setOpen(true);\n setTime(\"\");\n } else\n setTime(\n days +\n \" days \" +\n hours +\n \" hours \" +\n min +\n \" minutes \" +\n sec +\n \"seconds until start\"\n );\n };\n\n useEffect(() => {\n load();\n const interval = setInterval(() => {\n load();\n setCount(count + 1);\n }, 1000);\n return () => clearInterval(interval);\n }, [count, dispatch]);\n\n return (\n
\n {time}\n
{children}
\n
\n );\n}\n\nfunction App() {\n const loaded = useAnvilSelector((state) => state.user.map.history);\n const logged = useAnvilSelector((state) => state.user.address);\n const { colorMode, toggleColorMode } = useColorMode();\n\n const [count, setCount] = useState(0);\n const [prices, setPrices] = useState(false);\n\n const dispatch = useAnvilDispatch();\n const [mine, setMine] = React.useState([]);\n\n const load = async () => {\n setMine(await dispatch(get_mine()));\n };\n\n const getPrices = async () => {\n let x = await fetch(\n \"https://nftpkg.com/api/v1/prices/a004f41ea1a46f5b7e9e9639fbed84e037d9ce66b75d392d2c1640bb7a559cda\"\n ).then((x) => x.json());\n let r = {};\n for (let a of x) {\n r[a[0]] = [a[1], a[2]]; // + Math.floor(Math.random() * 1000000)\n }\n setPrices(r);\n };\n\n useEffect(() => {\n getPrices();\n const interval = setInterval(() => {\n load();\n getPrices(count + 1);\n }, 3000);\n return () => clearInterval(interval);\n }, [count, dispatch]);\n\n const unprocessed = async () => {\n // Unprocessed transactions are stored and this will try to use them in case user quit in the middle of it\n for (let j = 0; j < 10; j++) {\n let re = await dispatch(unprocessed_tx());\n\n if (re === false) break;\n }\n load();\n };\n\n const unprocessedUsewin = async () => {\n // Unprocessed transactions are stored and this will try to use them in case user quit in the middle of it\n for (let j = 0; j < 10; j++) {\n let re = await dispatch(unprocessed_txUsewin());\n\n if (re === false) break;\n }\n load();\n };\n\n useEffect(() => {\n if (colorMode === \"light\") toggleColorMode();\n if (loaded && logged) {\n dispatch(claim()).catch((e) => {});\n dispatch(claimUsewin()).catch((e) => {});\n\n // in case something went wrong, on refresh this will claim purchased nfts\n load();\n unprocessed();\n unprocessedUsewin();\n }\n }, [loaded, logged, dispatch]);\n\n if (!loaded) return null;\n if (!prices) return null;\n return (\n
\n \"Bad\n

Bad Bot Ninja

\n \n \n\n \n } />\n } />\n }\n />\n } />\n\n } />\n } />\n } />\n \n\n \n
\n );\n}\n\nfunction NFTPageWrapper() {\n let { id, code } = useParams();\n return (\n {\n if (\n meta.author !==\n \"a004f41ea1a46f5b7e9e9639fbed84e037d9ce66b75d392d2c1640bb7a559cda\"\n )\n return null;\n return ;\n }}\n />\n );\n}\n\nfunction NFTClaimWrapper() {\n let { code } = useParams();\n\n let navigate = useNavigate();\n const dispatch = useAnvilDispatch();\n const go = async () => {\n const url = await dispatch(nft_enter_code(code));\n navigate(url);\n };\n useEffect(() => {\n go();\n }, [code, dispatch]);\n\n return null;\n}\n\nfunction PageAbout() {\n return ;\n}\n\nfunction PageBoss() {\n return (\n {\n //load();\n }}\n />\n );\n}\nfunction PageInventory() {\n let navigate = useNavigate();\n\n const address = useAnvilSelector((state) => state.user.address);\n\n return (\n <>\n {\n navigate(\"/\" + id); //, { replace: true }\n }}\n />\n \n );\n}\nfunction PageMarketplace({ load, mine, prices }) {\n return (\n <>\n \n {\n load();\n }}\n />\n \n {/* */}\n {/*
\n
\n
*/}\n \n \n );\n}\nfunction PageTabs(p) {\n return (\n
\n \n \n \n {({ isActive }) => (\n \n )}\n \n \n {({ isActive }) => (\n \n )}\n \n {/* \n {({ isActive }) => (\n \n )}\n */}\n \n {({ isActive }) => (\n \n )}\n \n \n \n
\n );\n}\n\nexport default App;\n","import { extendTheme } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\n\nexport const theme = extendTheme({\n textStyles: {},\n colors: {\n brand: {\n 100: \"#eeeeee\",\n },\n },\n\n config: {\n initialColorMode: \"dark\",\n useSystemColorMode: false,\n },\n styles: {\n global: (props) => {\n return {\n body: {\n fontFamily: \"body\",\n color: mode(\"gray.800\", \"whiteAlpha.900\")(props),\n // bg: mode(\"gray.400\", \"gray.800\")(props),\n lineHeight: \"base\",\n // bg: \"linear-gradient(153deg,rgba(27, 32, 43, 1) 0%,rgba(40, 23, 32, 1) 100%)\",\n bg: mode(\n \"linear-gradient(153deg, #d5d1cd 0%, #b2b3ba 100%)\",\n \"linear-gradient(153deg,rgba(27, 32, 43, 1) 0%,rgba(50, 33, 32, 1) 100%)\"\n )(props),\n backgroundAttachment: \"fixed\",\n },\n html: {},\n \"*::placeholder\": {\n color: mode(\"gray.400\", \"whiteAlpha.400\")(props),\n scrollbarWidth: \"thin\",\n scrollbarColor: \" #564d56 #363636\",\n },\n\n \"html::-webkit-scrollbar\": {\n width: \"16px\",\n },\n\n \"html::-webkit-scrollbar-track\": {\n background: \"#363636\",\n },\n\n \"html::-webkit-scrollbar-thumb\": {\n backgroundColor: \"#564d56\",\n borderRadius: \"9px\",\n border: \"4px solid #363636\",\n },\n \"html::before, html::after\": {\n borderColor: mode(\"gray.200\", \"whiteAlpha.300\")(props),\n wordWrap: \"break-word\",\n },\n };\n },\n },\n});\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\n//import reportWebVitals from \"./reportWebVitals\";\nimport { AnvilProvider } from \"@vvv-interactive/nftanvil-react\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport { ChakraProvider } from \"@chakra-ui/react\";\nimport { ColorModeScript } from \"@chakra-ui/react\";\n\nimport { theme } from \"./theme.js\";\n\nimport authentication from \"@vvv-interactive/nftanvil-react/cjs/auth.js\";\nauthentication.setOptions({ cookie: true });\n\nwindow.lockdown({\n //comes from lockdown.umd.min.js\n consoleTaming: \"unsafe\", // Leave original start console in place\n overrideTaming: \"min\",\n});\n\nReactDOM.render(\n <>\n \n \n \n \n \n \n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n//reportWebVitals();\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.uploadFile = exports.toHexString = exports.numberToBytesArray = exports.jsonToNat8 = exports.generateKeyHashPair = exports.fromHexString = exports.encodeLink = exports.encodeArrayBuffer = exports.djb2xor = exports.decodeLink = exports.chunkBlob = exports.bytesToBase58 = exports.bytesArrayToNumber = exports.blobPrepare = exports.base58ToBytes = exports.BigIntToString = void 0;\n\nvar _baseX = _interopRequireDefault(require(\"base-x\"));\n\nvar _sha = require(\"@dfinity/principal/lib/cjs/utils/sha224\");\n\nvar _idl = require(\"@dfinity/candid/lib/cjs/idl\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BASE58 = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nvar bs58 = (0, _baseX.default)(BASE58);\n\nconst bytesArrayToNumber = a => {\n let n = 0;\n\n for (let i = a.length - 1; i >= 0; i--) {\n n += Math.pow(256, a.length - i - 1) * a[i];\n }\n\n return n;\n};\n\nexports.bytesArrayToNumber = bytesArrayToNumber;\n\nconst BigIntToString = x => {\n if (typeof x === \"bigint\") return x.toString();\n\n if (Array.isArray(x)) {\n return x.map(y => BigIntToString(y));\n }\n\n if (typeof x === \"object\") return Object.fromEntries(Object.keys(x).map(k => {\n return [k, BigIntToString(x[k])];\n }));\n return x;\n};\n\nexports.BigIntToString = BigIntToString;\n\nconst numberToBytesArray = (n, size) => {\n n = Number(n); // size in bytes\n\n const a = Array(size).fill(0);\n\n for (let i = 0; i < size; i++) {\n a[i] = n & 255;\n n = n >>> 8;\n }\n\n return new Uint8Array(a.reverse());\n};\n\nexports.numberToBytesArray = numberToBytesArray;\n\nconst generateKeyHashPair = function () {\n let getRandomValues = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n let key = getRandomValues ? getRandomValues(new Uint8Array(20)) : window.crypto.getRandomValues(new Uint8Array(20));\n var hash = (0, _sha.sha224)(key);\n return {\n key,\n hash\n };\n};\n\nexports.generateKeyHashPair = generateKeyHashPair;\n\nconst decodeLink = code => {\n let buf = bs58.decode(code);\n let slot = bytesArrayToNumber(buf.slice(0, 3));\n let tokenIndex = bytesArrayToNumber(buf.slice(3, 5));\n let key = buf.slice(5);\n return {\n slot,\n tokenIndex,\n key\n };\n};\n\nexports.decodeLink = decodeLink;\n\nconst encodeLink = (slot, tokenIndex, key) => {\n let a = numberToBytesArray(slot, 3);\n let b = numberToBytesArray(tokenIndex, 2);\n let x = new Uint8Array([...a, ...b, ...key]);\n return bs58.encode(x);\n};\n\nexports.encodeLink = encodeLink;\n\nconst bytesToBase58 = bytes => {\n return bs58.encode(new Uint8Array([...bytes]));\n};\n\nexports.bytesToBase58 = bytesToBase58;\n\nconst base58ToBytes = x => {\n return [...bs58.decode(x)];\n};\n\nexports.base58ToBytes = base58ToBytes;\n\nconst encodeArrayBuffer = file => Array.from(new Uint8Array(file));\n\nexports.encodeArrayBuffer = encodeArrayBuffer;\n\nconst jsonToNat8 = async json => {\n const bl = new Blob([JSON.stringify(json)], {\n type: \"application/json\"\n });\n const buffer = await bl.arrayBuffer();\n const arr = encodeArrayBuffer(buffer);\n return arr;\n};\n\nexports.jsonToNat8 = jsonToNat8;\n\nconst fromHexString = hexString => hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16));\n\nexports.fromHexString = fromHexString;\n\nconst toHexString = bytes => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"\"); // export const toHexString = (byteArray) => {\n// return Array.from(byteArray, function (byte) {\n// return (\"0\" + (byte & 0xff).toString(16)).slice(-2);\n// }).join(\"\");\n// };\n\n\nexports.toHexString = toHexString;\n\nconst chunkBlob = async url_or_blob => {\n let blob;\n if (typeof url_or_blob === \"string\") blob = await fetch(url_or_blob).then(r => r.blob());else blob = url_or_blob;\n let size = blob.size;\n let chunkSize = 1024 * 512;\n let chunks = Math.ceil(size / chunkSize);\n let r = [];\n\n for (let i = 0; i < chunks; i++) {\n r.push(blob.slice(i * chunkSize, (i + 1) * chunkSize));\n }\n\n return r;\n};\n\nexports.chunkBlob = chunkBlob;\n\nconst blobPrepare = async chunk => Array.from(new Uint8Array(await chunk.arrayBuffer()));\n\nexports.blobPrepare = blobPrepare;\n\nconst djb2xor = str => {\n // The normal djb2 from Text.hash is hard to do in js because overflow looses precision\n let len = str.length;\n let h = 5381;\n\n for (let i = 0; i < len; i++) {\n h = h * 33 ^ str.charCodeAt(i);\n }\n\n return h >>> 0;\n};\n\nexports.djb2xor = djb2xor;\n\nconst uploadFile = async function (nft, tokenIndex, position, chunks, subaccount) {\n let tried = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n try {\n await Promise.all(chunks.map(async (chunk, idx) => {\n return nft.upload_chunk({\n subaccount,\n position: {\n [position]: null\n },\n chunkIdx: idx,\n tokenIndex,\n data: await blobPrepare(chunk)\n });\n })).then(re => {});\n } catch (e) {\n await delay(2000 + tried * 1000);\n if (tried < 3) return await uploadFile(nft, tokenIndex, position, chunks, subaccount, tried + 1);else throw e;\n }\n};\n\nexports.uploadFile = uploadFile;\n\nconst delay = ms => new Promise((resolve, reject) => setTimeout(resolve, ms));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PrincipalToSlot = exports.PrincipalToIdx = exports.PrincipalFromSlot = exports.PrincipalFromIdx = void 0;\n\nvar _principal = require(\"@dfinity/principal\");\n\nvar _data = require(\"./data\");\n\nconst PrincipalFromIdx = idx => {\n return _principal.Principal.fromUint8Array([...(0, _data.numberToBytesArray)(idx, 8), 1, 1]);\n};\n\nexports.PrincipalFromIdx = PrincipalFromIdx;\n\nconst PrincipalFromSlot = (space, idx) => {\n let start = Number(space[0][0]);\n return PrincipalFromIdx(start + Number(idx));\n};\n\nexports.PrincipalFromSlot = PrincipalFromSlot;\n\nconst PrincipalToIdx = p => {\n let a = [...p.toUint8Array()].slice(0, -2);\n let idx = (0, _data.bytesArrayToNumber)(a);\n return idx;\n};\n\nexports.PrincipalToIdx = PrincipalToIdx;\n\nconst PrincipalToSlot = (space, p) => {\n let idx = PrincipalToIdx(p);\n let start = Number(space[0][0]);\n return idx - start;\n}; // let can = \"pfrbz-maaaa-aaaai-qcmiq-cai\";\n// console.log(can, PrincipalToIdx(Principal.fromText(can)));\n\n\nexports.PrincipalToSlot = PrincipalToSlot;","import React from \"react\";\nimport { configureStore } from \"@reduxjs/toolkit\";\n\nimport inventoryReducer, {\n load_inventory,\n verify_domain_twitter,\n verify_domain,\n} from \"./reducers/inventory\";\n\nimport userReducer, {\n user_auth,\n user_login,\n user_logout,\n user_refresh_balances,\n user_refresh_config,\n user_transfer_icp,\n user_pwr_transfer,\n window_focus,\n window_blur,\n} from \"./reducers/user\";\n\nimport nftReducer, {\n nft_fetch,\n nft_media_get,\n nft_purchase,\n // nft_purchase_intent,\n nft_transfer,\n nft_plug,\n nft_unsocket,\n nft_recharge,\n nft_burn,\n nft_approve,\n nft_use,\n nft_transfer_link,\n nft_claim_link,\n nft_enter_code,\n nft_recharge_quote,\n nft_set_price,\n} from \"./reducers/nft\";\n\nexport { load_inventory, verify_domain, verify_domain_twitter };\n\nexport {\n user_auth,\n user_login,\n user_logout,\n user_refresh_balances,\n user_refresh_config,\n user_transfer_icp,\n user_pwr_transfer,\n};\n\nexport {\n nft_fetch,\n nft_media_get,\n nft_purchase,\n // nft_purchase_intent,\n nft_transfer,\n nft_plug,\n nft_unsocket,\n nft_recharge,\n nft_burn,\n nft_approve,\n nft_use,\n nft_transfer_link,\n nft_claim_link,\n nft_enter_code,\n nft_recharge_quote,\n nft_set_price,\n};\nexport const TestAnvilComponent = () => {\n return
fun component sweet 123 123 123
;\n};\n\nimport { InventoryLarge } from \"./components/Inventory.js\";\nexport { InventoryLarge };\nimport {\n Provider,\n createStoreHook,\n createDispatchHook,\n createSelectorHook,\n} from \"react-redux\";\n\nconst MyContext = React.createContext(null);\n\n// Export your custom hooks if you wish to use them in other files.\nexport const useAnvilStore = createStoreHook(MyContext);\nexport const useAnvilDispatch = createDispatchHook(MyContext);\nexport const useAnvilSelector = createSelectorHook(MyContext);\n\nconst myStore = configureStore({\n // devTools: { name: \"Anvil\" },\n reducer: {\n user: userReducer,\n nft: nftReducer,\n inventory: inventoryReducer,\n },\n devTools: process.env.NODE_ENV !== \"production\",\n});\n\nexport function AnvilProvider({ children }) {\n return (\n \n {children}\n \n );\n}\n\n// Extra\n\nsetTimeout(() => {\n myStore.dispatch(user_auth());\n}, 100);\n\nif (typeof window !== \"undefined\") {\n window.addEventListener(\"focus\", () => myStore.dispatch(window_focus()));\n window.addEventListener(\"blur\", () => myStore.dispatch(window_blur()));\n}\n"],"sourceRoot":""}