├── .browserslistrc ├── .eslintrc.js ├── .firebaserc ├── .github └── workflows │ ├── codeql-analysis.yml │ ├── firebase-hosting-merge.yml │ └── firebase-hosting-pull-request.yml ├── .gitignore ├── .prettierignore ├── README.md ├── babel.config.js ├── contract ├── .gitignore ├── .prettierignore ├── .prettierrc ├── README.md ├── contracts │ ├── AlphabetToken.sol │ ├── BitcoinToken.sol │ ├── DotNounsToken.sol │ ├── LocalNounsToken.sol │ ├── LogoToken.sol │ ├── LuToken.sol │ ├── LuTokenProto.sol │ ├── MessageToken.sol │ ├── MessageTokenV2.sol │ ├── PaperNounsToken.sol │ ├── RedditToken.sol │ ├── SVGTokenV1.sol │ ├── SampleToken.sol │ ├── SplatterToken.sol │ ├── SushiNounsToken.sol │ ├── external │ │ ├── cyberbrokers │ │ │ └── ContractDataStorage.sol │ │ ├── nouns │ │ │ ├── NounsDescripter.sol │ │ │ ├── NounsSeeder.sol │ │ │ ├── NounsToken.sol │ │ │ ├── base │ │ │ │ ├── ERC721.sol │ │ │ │ ├── ERC721Checkpointable.sol │ │ │ │ └── ERC721Enumerable.sol │ │ │ ├── external │ │ │ │ └── opensea │ │ │ │ │ └── IProxyRegistry.sol │ │ │ ├── interfaces │ │ │ │ ├── IInflator.sol │ │ │ │ ├── INounsArt.sol │ │ │ │ ├── INounsAuctionHouse.sol │ │ │ │ ├── INounsDescriptor.sol │ │ │ │ ├── INounsDescriptorMinimal.sol │ │ │ │ ├── INounsDescriptorV2.sol │ │ │ │ ├── INounsSeeder.sol │ │ │ │ ├── INounsToken.sol │ │ │ │ ├── ISVGRenderer.sol │ │ │ │ └── IWETH.sol │ │ │ └── libs │ │ │ │ ├── Inflate.sol │ │ │ │ ├── MultiPartRLEToSVG.sol │ │ │ │ ├── NFTDescriptor.sol │ │ │ │ ├── NFTDescriptorV2.sol │ │ │ │ └── SSTORE2.sol │ │ └── opensea │ │ │ └── IProxyRegistry.sol │ ├── fonts │ │ ├── LondrinaSolid.sol │ │ ├── NotoSans.sol │ │ ├── README.md │ │ ├── fontData.ts │ │ ├── font_NotoSans │ │ │ ├── font_lower_case_letters │ │ │ │ ├── a.svg │ │ │ │ ├── b.svg │ │ │ │ ├── c.svg │ │ │ │ ├── d.svg │ │ │ │ ├── e.svg │ │ │ │ ├── f.svg │ │ │ │ ├── g.svg │ │ │ │ ├── h.svg │ │ │ │ ├── i.svg │ │ │ │ ├── j.svg │ │ │ │ ├── k.svg │ │ │ │ ├── l.svg │ │ │ │ ├── m.svg │ │ │ │ ├── n.svg │ │ │ │ ├── o.svg │ │ │ │ ├── p.svg │ │ │ │ ├── q.svg │ │ │ │ ├── r.svg │ │ │ │ ├── s.svg │ │ │ │ ├── t.svg │ │ │ │ ├── u.svg │ │ │ │ ├── v.svg │ │ │ │ ├── w.svg │ │ │ │ ├── x.svg │ │ │ │ ├── y.svg │ │ │ │ └── z.svg │ │ │ ├── font_numbers │ │ │ │ ├── 0.svg │ │ │ │ ├── 1.svg │ │ │ │ ├── 2.svg │ │ │ │ ├── 3.svg │ │ │ │ ├── 4.svg │ │ │ │ ├── 5.svg │ │ │ │ ├── 6.svg │ │ │ │ ├── 7.svg │ │ │ │ ├── 8.svg │ │ │ │ └── 9.svg │ │ │ ├── font_symbols │ │ │ │ ├── LT.svg │ │ │ │ ├── and.svg │ │ │ │ ├── apostrophe.svg │ │ │ │ ├── asterisk.svg │ │ │ │ ├── at.svg │ │ │ │ ├── back_slash.svg │ │ │ │ ├── big.svg │ │ │ │ ├── brackets_left.svg │ │ │ │ ├── brackets_right.svg │ │ │ │ ├── caret.svg │ │ │ │ ├── colon.svg │ │ │ │ ├── comma.svg │ │ │ │ ├── dallar.svg │ │ │ │ ├── double_quote.svg │ │ │ │ ├── double_quote_2.svg │ │ │ │ ├── equal.svg │ │ │ │ ├── ex.svg │ │ │ │ ├── grave.svg │ │ │ │ ├── hyphen.svg │ │ │ │ ├── left_bracket.svg │ │ │ │ ├── left_middle_bracket.svg │ │ │ │ ├── percent.svg │ │ │ │ ├── period.svg │ │ │ │ ├── plus.svg │ │ │ │ ├── question.svg │ │ │ │ ├── right_bracket.svg │ │ │ │ ├── right_middle_bracket.svg │ │ │ │ ├── semi_colon.svg │ │ │ │ ├── sharp.svg │ │ │ │ ├── slash.svg │ │ │ │ ├── tilde.svg │ │ │ │ ├── underline.svg │ │ │ │ ├── vertical.svg │ │ │ │ └── yen.svg │ │ │ └── font_upper_case_letters │ │ │ │ ├── A.svg │ │ │ │ ├── B.svg │ │ │ │ ├── C.svg │ │ │ │ ├── D.svg │ │ │ │ ├── E.svg │ │ │ │ ├── F.svg │ │ │ │ ├── G.svg │ │ │ │ ├── H.svg │ │ │ │ ├── I.svg │ │ │ │ ├── J.svg │ │ │ │ ├── K.svg │ │ │ │ ├── L.svg │ │ │ │ ├── M.svg │ │ │ │ ├── N.svg │ │ │ │ ├── O.svg │ │ │ │ ├── P.svg │ │ │ │ ├── Q.svg │ │ │ │ ├── R.svg │ │ │ │ ├── S.svg │ │ │ │ ├── T.svg │ │ │ │ ├── U.svg │ │ │ │ ├── V.svg │ │ │ │ ├── W.svg │ │ │ │ ├── X.svg │ │ │ │ ├── Y.svg │ │ │ │ └── Z.svg │ │ ├── font_lower_case_letters │ │ │ ├── a.svg │ │ │ ├── b.svg │ │ │ ├── c.svg │ │ │ ├── d.svg │ │ │ ├── e.svg │ │ │ ├── f.svg │ │ │ ├── g.svg │ │ │ ├── h.svg │ │ │ ├── i.svg │ │ │ ├── j.svg │ │ │ ├── k.svg │ │ │ ├── l.svg │ │ │ ├── m.svg │ │ │ ├── n.svg │ │ │ ├── o.svg │ │ │ ├── p.svg │ │ │ ├── q.svg │ │ │ ├── r.svg │ │ │ ├── s.svg │ │ │ ├── t.svg │ │ │ ├── u.svg │ │ │ ├── v.svg │ │ │ ├── w.svg │ │ │ ├── x.svg │ │ │ ├── y.svg │ │ │ └── z.svg │ │ ├── font_numbers │ │ │ ├── 0.svg │ │ │ ├── 1.svg │ │ │ ├── 2.svg │ │ │ ├── 3.svg │ │ │ ├── 4.svg │ │ │ ├── 5.svg │ │ │ ├── 6.svg │ │ │ ├── 7.svg │ │ │ ├── 8.svg │ │ │ └── 9.svg │ │ ├── font_symbols │ │ │ ├── LT.svg │ │ │ ├── and.svg │ │ │ ├── apostrophe.svg │ │ │ ├── asterisk.svg │ │ │ ├── at.svg │ │ │ ├── back_slash.svg │ │ │ ├── big.svg │ │ │ ├── brackets_left.svg │ │ │ ├── brackets_right.svg │ │ │ ├── caret.svg │ │ │ ├── colon.svg │ │ │ ├── comma.svg │ │ │ ├── dallar.svg │ │ │ ├── double_quote.svg │ │ │ ├── double_quote_2.svg │ │ │ ├── equal.svg │ │ │ ├── ex.svg │ │ │ ├── grave.svg │ │ │ ├── hyphen.svg │ │ │ ├── left_bracket.svg │ │ │ ├── left_middle_bracket.svg │ │ │ ├── percent.svg │ │ │ ├── period.svg │ │ │ ├── plus.svg │ │ │ ├── question.svg │ │ │ ├── right_bracket.svg │ │ │ ├── right_middle_bracket.svg │ │ │ ├── semi_colon.svg │ │ │ ├── sharp.svg │ │ │ ├── slash.svg │ │ │ ├── tilde.svg │ │ │ ├── underline.svg │ │ │ ├── vertical.svg │ │ │ └── yen.svg │ │ ├── font_upper_case_letters │ │ │ ├── A.svg │ │ │ ├── B.svg │ │ │ ├── C.svg │ │ │ ├── D.svg │ │ │ ├── E.svg │ │ │ ├── F.svg │ │ │ ├── G.svg │ │ │ ├── H.svg │ │ │ ├── I.svg │ │ │ ├── J.svg │ │ │ ├── K.svg │ │ │ ├── L.svg │ │ │ ├── M.svg │ │ │ ├── N.svg │ │ │ ├── O.svg │ │ │ ├── P.svg │ │ │ ├── Q.svg │ │ │ ├── R.svg │ │ │ ├── S.svg │ │ │ ├── T.svg │ │ │ ├── U.svg │ │ │ ├── V.svg │ │ │ ├── W.svg │ │ │ ├── X.svg │ │ │ ├── Y.svg │ │ │ └── Z.svg │ │ ├── gen.ts │ │ ├── logo.ts │ │ └── template.sol.txt │ ├── imageParts │ │ ├── interfaces │ │ │ ├── IMessageStoreV1.sol │ │ │ ├── IMessageStoreV2.sol │ │ │ ├── IParts.sol │ │ │ ├── ISVGArt.sol │ │ │ └── ISVGStoreV1.sol │ │ ├── logos │ │ │ ├── LogoArt1.sol │ │ │ └── data │ │ │ │ ├── LogoPartsOmochikaeri.sol │ │ │ │ ├── LogoPartsSingularitySociety.sol │ │ │ │ └── LogoPartsSingularitySocietyMark.sol │ │ ├── lu │ │ │ ├── LuArt1.sol │ │ │ └── data │ │ │ │ ├── LuPartsBg.sol │ │ │ │ ├── LuPartsChair.sol │ │ │ │ ├── LuPartsCloudRainbow.sol │ │ │ │ ├── LuPartsClouds.sol │ │ │ │ ├── LuPartsDoorsetA.sol │ │ │ │ ├── LuPartsDoorsetB.sol │ │ │ │ ├── LuPartsDoorsetC.sol │ │ │ │ ├── LuPartsHeartA.sol │ │ │ │ ├── LuPartsHeartB.sol │ │ │ │ ├── LuPartsHeartC.sol │ │ │ │ ├── LuPartsHeartcloud.sol │ │ │ │ ├── LuPartsHouseBase.sol │ │ │ │ ├── LuPartsLu01.sol │ │ │ │ ├── LuPartsLu02body2.sol │ │ │ │ ├── LuPartsLu02head1.sol │ │ │ │ ├── LuPartsLu02head2.sol │ │ │ │ ├── LuPartsPlane.sol │ │ │ │ ├── LuPartsRainbowA.sol │ │ │ │ ├── LuPartsRoofA.sol │ │ │ │ ├── LuPartsRoofB.sol │ │ │ │ └── LuPartsRoofC.sol │ │ └── svgstore │ │ │ ├── MessageStoreV1.sol │ │ │ ├── MessageStoreV2.sol │ │ │ └── SVGStoreV1.sol │ ├── interfaces │ │ ├── IAssetProviderWithProps.sol │ │ ├── ICategorizedAssetProvider.sol │ │ ├── IColorSchemes.sol │ │ ├── ILayoutGenerator.sol │ │ ├── IMessageToken.sol │ │ ├── IOnChainWallet.sol │ │ ├── ISVGImage1Parts.sol │ │ └── ITokenGate.sol │ ├── libs │ │ ├── AssetTokenGate.sol │ │ ├── ColorSchemes.sol │ │ ├── DynamicTokenGate.sol │ │ ├── MatrixGenerator.sol │ │ ├── OnChainWallet.sol │ │ ├── ProviderToken.sol │ │ ├── ProviderToken2.sol │ │ ├── ProviderToken3.sol │ │ ├── ProviderToken4.sol │ │ ├── ProviderTokenA1.sol │ │ ├── ProviderTokenA2.sol │ │ ├── SVGHelper.sol │ │ └── SVGHelperA.sol │ ├── localNouns │ │ ├── LocalNounsDescriptor.sol │ │ ├── LocalNounsMinter.sol │ │ ├── LocalNounsProvider.sol │ │ ├── LocalNounsSeeder.sol │ │ ├── README.md │ │ └── interfaces │ │ │ ├── IAssetProviderExMint.sol │ │ │ ├── ILocalNounsSeeder.sol │ │ │ ├── ILocalNounsToken.sol │ │ │ ├── INounsDescriptor.sol │ │ │ ├── INounsDescriptorMinimal.sol │ │ │ └── INounsSeeder.sol │ ├── pNouns │ │ └── interfaces │ │ │ ├── INounsDescriptor.sol │ │ │ ├── INounsDescriptorMinimal.sol │ │ │ └── INounsSeeder.sol │ ├── packages │ │ ├── ERC721P2P │ │ │ ├── ERC721AP2P.sol │ │ │ ├── ERC721AP2PTradable.sol │ │ │ ├── ERC721P2P.sol │ │ │ ├── IERC721P2P.sol │ │ │ ├── IERC721P2PTradable.sol │ │ │ ├── README.md │ │ │ ├── SampleAP2PToken.sol │ │ │ ├── SampleAP2PTradableToken.sol │ │ │ ├── SampleP2PToken.sol │ │ │ ├── erc721a │ │ │ │ ├── ERC721A.sol │ │ │ │ ├── IERC721A.sol │ │ │ │ ├── extensions │ │ │ │ │ ├── ERC4907A.sol │ │ │ │ │ ├── ERC721ABurnable.sol │ │ │ │ │ ├── ERC721AQueryable.sol │ │ │ │ │ ├── IERC4907A.sol │ │ │ │ │ ├── IERC721ABurnable.sol │ │ │ │ │ └── IERC721AQueryable.sol │ │ │ │ └── interfaces │ │ │ │ │ ├── IERC4907A.sol │ │ │ │ │ ├── IERC721A.sol │ │ │ │ │ ├── IERC721ABurnable.sol │ │ │ │ │ └── IERC721AQueryable.sol │ │ │ ├── opensea │ │ │ │ ├── DefaultOperatorFilterer.sol │ │ │ │ ├── IOperatorFilterRegistry.sol │ │ │ │ └── OperatorFilterer.sol │ │ │ ├── package-lock.json │ │ │ └── package.json │ │ ├── assetProvider │ │ │ ├── IAssetProvider.sol │ │ │ ├── ISVGHelper.sol │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── bytesarray │ │ │ ├── BytesArray.sol │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── graphics │ │ │ ├── .gitignore │ │ │ ├── .npmignore │ │ │ ├── IFontProvider.sol │ │ │ ├── Path.sol │ │ │ ├── README.md │ │ │ ├── SVG.sol │ │ │ ├── SVGFilter.sol │ │ │ ├── Text.sol │ │ │ ├── Transform.sol │ │ │ ├── Vector.sol │ │ │ ├── package-lock.json │ │ │ ├── package.json │ │ │ ├── pathUtils.ts │ │ │ ├── test_encode.ts │ │ │ └── tsconfig.json │ │ ├── randomizer │ │ │ ├── README.md │ │ │ ├── Randomizer.sol │ │ │ └── package.json │ │ └── trigonometry │ │ │ ├── README.md │ │ │ ├── Trigonometry.sol │ │ │ └── package.json │ ├── providers │ │ ├── AlphabetProvider.sol │ │ ├── AssetStoreProvider.sol │ │ ├── CircleStencilProvider.sol │ │ ├── CirclesProvider.sol │ │ ├── CoinHoleProvider.sol │ │ ├── CoinProvider.sol │ │ ├── DotNounsProvider.sol │ │ ├── DotNounsProviderV2.sol │ │ ├── GlassesStencilProvider.sol │ │ ├── LogoArtProvider.sol │ │ ├── LuArtProvider.sol │ │ ├── MatrixProvider.sol │ │ ├── MessageProvider.sol │ │ ├── MessageProvider2.sol │ │ ├── MessageProvider3.sol │ │ ├── MultiRepeatProvider.sol │ │ ├── MultiplexProvider.sol │ │ ├── NounsAssetProvider.sol │ │ ├── NounsAssetProviderV2.sol │ │ ├── PNounsProvider.sol │ │ ├── PNounsProvider2.sol │ │ ├── PaperNounsProvider.sol │ │ ├── RepeatProvider.sol │ │ ├── SVGImage1Provider.sol │ │ ├── SnowProvider.sol │ │ ├── SplatterProvider.sol │ │ ├── StarProvider.sol │ │ └── StencilProvider.sol │ ├── samples │ │ ├── SimpleFontToken.sol │ │ ├── SimplePathToken.sol │ │ ├── SimpleSVGToken.sol │ │ └── SimpleVectorToken.sol │ ├── sushi │ │ ├── README.md │ │ ├── SushiNounsDescriptor.sol │ │ ├── SushiNounsProvider.sol │ │ ├── SushiNounsSeeder.sol │ │ └── interfaces │ │ │ ├── IAssetProviderExMint.sol │ │ │ ├── INounsDescriptor.sol │ │ │ ├── INounsDescriptorMinimal.sol │ │ │ └── INounsSeeder.sol │ └── test │ │ ├── DummyProxy.sol │ │ ├── MessageTest.sol │ │ ├── Payload.sol │ │ ├── SVGMin.sol │ │ ├── SVGTest.sol │ │ ├── SVGTest2.sol │ │ ├── SVGTest3.sol │ │ ├── SVGTest4.sol │ │ ├── SVGTest5Nouns.sol │ │ ├── SVGTest6Dot.sol │ │ ├── SVGTest7Filter.sol │ │ └── TestToken.sol ├── hardhat.config.ts ├── package-lock.json ├── package.json ├── scripts │ ├── check_nouns.ts │ ├── deploy_alphabet.ts │ ├── deploy_alphatoken.ts │ ├── deploy_bitcoin.ts │ ├── deploy_bitcoin2.ts │ ├── deploy_circles.ts │ ├── deploy_colors.ts │ ├── deploy_dotnouns.ts │ ├── deploy_dotnounsV2.ts │ ├── deploy_dotnounstoken.ts │ ├── deploy_dynamic.ts │ ├── deploy_font.ts │ ├── deploy_font_NotoSans.ts │ ├── deploy_lilnouns.ts │ ├── deploy_localNouns.ts │ ├── deploy_lu.ts │ ├── deploy_matrix.ts │ ├── deploy_message.ts │ ├── deploy_message_2.ts │ ├── deploy_message_pnouns.ts │ ├── deploy_nouns.ts │ ├── deploy_nounsDescriptorV1.ts │ ├── deploy_nounsV2.ts │ ├── deploy_paperNouns.ts │ ├── deploy_papernounstoken.ts │ ├── deploy_payload.ts │ ├── deploy_pnouns.ts │ ├── deploy_pnouns2.ts │ ├── deploy_proxy.ts │ ├── deploy_reddit.ts │ ├── deploy_sample.ts │ ├── deploy_simpleSVG.ts │ ├── deploy_simplefont.ts │ ├── deploy_simplepath.ts │ ├── deploy_simplevector.ts │ ├── deploy_snow.ts │ ├── deploy_splatter.ts │ ├── deploy_star.ts │ ├── deploy_svgimage.ts │ ├── deploy_test.ts │ ├── deploy_test2.ts │ ├── deploy_test3.ts │ ├── deploy_test4.ts │ ├── deploy_test5.ts │ ├── deploy_test6.ts │ ├── deploy_test7.ts │ ├── deploy_tokengate.ts │ ├── populate_localNouns.ts │ ├── populate_localNouns2.ts │ ├── populate_nounsV1.ts │ ├── test_localNouns.ts │ └── test_nounsV1.ts ├── test │ ├── ap2p.ts │ ├── image-local-data.json │ ├── image-local-data2.json │ ├── image-original-nouns-data.json │ ├── image-sushi-data.ts │ ├── localNouns.ts │ ├── message.ts │ ├── p2p.ts │ ├── p2pTradable.ts │ ├── splatter.ts │ ├── sushi.ts │ ├── svg │ │ └── .empty │ ├── svg_p2p.ts │ ├── trait.ts │ └── utils │ │ └── utils.ts ├── tools │ ├── README.md │ ├── package.json │ └── src │ │ ├── gen.ts │ │ ├── pathUtils.ts │ │ ├── sample.ts │ │ └── svgtool.ts └── tsconfig.json ├── firebase.json ├── firestore.indexes.json ├── firestore.rules ├── functions ├── .eslintrc.js ├── .gitignore ├── package.json ├── src │ ├── common │ │ └── exportifneeded.ts │ ├── functions │ │ └── test.ts │ ├── index.ts │ └── wrappers │ │ └── tests │ │ └── test.ts ├── tsconfig.dev.json └── tsconfig.json ├── package.json ├── postcss.config.js ├── public ├── FullyOnChainLogo.ico ├── FullyOnChainLogo.png ├── banner.svg ├── favicon.ico ├── index.html └── logo.png ├── src ├── App.vue ├── abis │ ├── IAssetProvider.json │ ├── IFontProvider.json │ ├── ISVGHelper.json │ ├── ITokenGate.json │ ├── MessageProvider3.json │ ├── MessageStoreV1.json │ ├── MessageStoreV2.json │ ├── MessageStoreV2___.json │ ├── MessageToken.json │ ├── MessageTokenV2.json │ ├── ProviderToken.json │ ├── SVGTokenV1.json │ └── SplatterToken.json ├── assets │ ├── Splatter.svg │ ├── alphabetToken.svg │ ├── architecture_gen.png │ ├── bitcoinToken.svg │ ├── dotNounsToken.svg │ ├── paperNouns1.svg │ ├── pnouns1.svg │ ├── red160px.png │ ├── snowflake.svg │ └── splatterToken.svg ├── components │ ├── Blank.vue │ ├── Connect.vue │ ├── Font.vue │ ├── Header.vue │ ├── Languages.vue │ ├── Layout.vue │ ├── Mint.vue │ ├── NetworkError.vue │ ├── NetworkGate.vue │ ├── NotFound.vue │ ├── ProviderView.vue │ └── References.vue ├── config │ └── project.ts ├── generative │ ├── snow.ts │ └── splatter.ts ├── i18n │ ├── en.ts │ ├── index.ts │ ├── ja.ts │ ├── languages.ts │ └── utils.ts ├── index.css ├── index.d.ts ├── main.ts ├── models │ └── point.ts ├── router │ └── index.ts ├── shims-vue.d.ts ├── store │ └── index.ts ├── svgs │ ├── Character_Long2_Semi.svg │ ├── Debian-OpenLogo.svg │ ├── Hanafuda_April_Tanzaku_Alt.svg │ ├── Liuxingti.svg │ ├── Semi-Cur_Eg.svg │ ├── SingularitySociety-LogoType-Color.svg │ ├── Sustainable_Development_Goals.svg │ ├── aomori.svg │ ├── emoji │ │ ├── 1F439.svg │ │ ├── 1F6FC.svg │ │ ├── 1F94A.svg │ │ ├── 1F989.svg │ │ ├── 1F9A5.svg │ │ ├── 1FAE3.svg │ │ ├── BurkinaFaso.svg │ │ └── E0C5.svg │ ├── font │ │ └── pnounsNFT_font_question.svg │ ├── shinban_kedamonodukusi_a1.svg │ └── zou.svg ├── utils │ ├── MetaMask.ts │ ├── addresses.ts │ ├── addresses │ │ ├── addresses_flag_goerli.ts │ │ ├── addresses_flag_mainnet.ts │ │ ├── addresses_goerli.ts │ │ ├── addresses_kamon_goerli.ts │ │ ├── addresses_kamon_mainnet.ts │ │ ├── addresses_localhost.ts │ │ ├── addresses_mainnet.ts │ │ ├── alphabet_goerli.ts │ │ ├── alphabet_localhost.ts │ │ ├── alphabet_mainnet.ts │ │ ├── alphabet_mumbai.ts │ │ ├── alphatoken_goerli.ts │ │ ├── alphatoken_localhost.ts │ │ ├── alphatoken_mainnet.ts │ │ ├── alphatoken_mumbai.ts │ │ ├── bitcoin_goerli.ts │ │ ├── bitcoin_localhost.ts │ │ ├── bitcoin_mainnet.ts │ │ ├── circles_localhost.ts │ │ ├── colors_localhost.ts │ │ ├── colors_mumbai.ts │ │ ├── dotNounsToken_goerli.ts │ │ ├── dotNounsToken_localhost.ts │ │ ├── dotNounsToken_mainnet.ts │ │ ├── dotNouns_goerli.ts │ │ ├── dotNouns_localhost.ts │ │ ├── dotNouns_mainnet.ts │ │ ├── dynamic_goerli.ts │ │ ├── dynamic_localhost.ts │ │ ├── dynamic_mainnet.ts │ │ ├── dynamic_mumbai.ts │ │ ├── lilnouns_goerli.ts │ │ ├── localNounsDescriptor_localhost.ts │ │ ├── localNounsDescriptor_mumbai.ts │ │ ├── localNounsMinter_localhost.ts │ │ ├── localNounsMinter_mumbai.ts │ │ ├── localNounsProvider_localhost.ts │ │ ├── localNounsProvider_mumbai.ts │ │ ├── localNounsToken_localhost.ts │ │ ├── localNounsToken_mumbai.ts │ │ ├── localseeder_localhost.ts │ │ ├── localseeder_mumbai.ts │ │ ├── londrina_solid_goerli.ts │ │ ├── londrina_solid_localhost.ts │ │ ├── londrina_solid_mainnet.ts │ │ ├── londrina_solid_mumbai.ts │ │ ├── londrina_solid_polygon.ts │ │ ├── matrix_goerli.ts │ │ ├── matrix_localhost.ts │ │ ├── matrix_mainnet.ts │ │ ├── matrix_mumbai.ts │ │ ├── message_pnouns_goerli.ts │ │ ├── message_splatter_goerli.ts │ │ ├── messageprovider_goerli.ts │ │ ├── messageprovider_localhost.ts │ │ ├── messageprovider_mumbai.ts │ │ ├── messagestore2_goerli.ts │ │ ├── messagestore2_localhost.ts │ │ ├── messagestore2_mumbai.ts │ │ ├── messagestore_londrinasolid_goerli.ts │ │ ├── messagestore_notosans_goerli.ts │ │ ├── messagetoken_goerli.ts │ │ ├── messagetoken_localhost.ts │ │ ├── messagetoken_mumbai.ts │ │ ├── nftDescriptor_localhost.ts │ │ ├── nftDescriptor_mumbai.ts │ │ ├── noto_sans_goerli.ts │ │ ├── noto_sans_localhost.ts │ │ ├── noto_sans_mainnet.ts │ │ ├── noto_sans_mumbai.ts │ │ ├── nounsDescriptor_localhost.ts │ │ ├── nounsDescriptor_mumbai.ts │ │ ├── nounsSeeder_localhost.ts │ │ ├── nounsSeeder_mumbai.ts │ │ ├── nounsV2_goerli.ts │ │ ├── nounsV2_localhost.ts │ │ ├── nounsV2_mainnet.ts │ │ ├── nouns_goerli.ts │ │ ├── nouns_localhost.ts │ │ ├── nouns_mainnet.ts │ │ ├── paperNounsToken_goerli.ts │ │ ├── paperNounsToken_localhost.ts │ │ ├── paperNounsToken_mainnet.ts │ │ ├── paperNouns_goerli.ts │ │ ├── paperNouns_localhost.ts │ │ ├── paperNouns_mainnet.ts │ │ ├── pnouns2_goerli.ts │ │ ├── pnouns2_mainnet.ts │ │ ├── pnouns_goerli.ts │ │ ├── pnouns_localhost.ts │ │ ├── pnouns_mainnet.ts │ │ ├── reddit_goerli.ts │ │ ├── sample_goerli.ts │ │ ├── sample_localhost.ts │ │ ├── snow_goerli.ts │ │ ├── snow_localhost.ts │ │ ├── splatter_goerli.ts │ │ ├── splatter_hardhat.ts │ │ ├── splatter_localhost.ts │ │ ├── splatter_mainnet.ts │ │ ├── splatter_mumbai.ts │ │ ├── splatter_rinkeby.ts │ │ ├── star_goerli.ts │ │ ├── star_localhost.ts │ │ ├── star_mumbai.ts │ │ ├── svgimage_mumbai.ts │ │ ├── tokenGate_goerli.ts │ │ ├── tokenGate_localhost.ts │ │ ├── tokenGate_mainnet.ts │ │ └── tokenGate_mumbai.ts │ ├── assetTokens.ts │ ├── const.ts │ ├── currency.ts │ ├── pathUtils.ts │ ├── svgtool.ts │ ├── transformer.ts │ └── types.ts └── views │ ├── Alphabet.vue │ ├── Bitcoin.vue │ ├── Experiment.vue │ ├── Font.vue │ ├── Home.vue │ ├── Message.vue │ ├── MessagePNouns.vue │ ├── Nouns.vue │ ├── Paper.vue │ ├── Reddit.vue │ ├── SVG.vue │ ├── SVGTest.vue │ ├── Sample.vue │ ├── Snow.vue │ ├── Splatter.vue │ └── Star.vue ├── storage.rules ├── tailwind.config.js ├── tsconfig.json ├── vue.config.js └── yarn.lock /.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | node: true 5 | }, 6 | 'extends': [ 7 | 'plugin:vue/vue3-essential', 8 | 'eslint:recommended', 9 | 'prettier', 10 | '@vue/typescript/recommended' 11 | ], 12 | parserOptions: { 13 | ecmaVersion: 2020 14 | }, 15 | rules: { 16 | 'vue/multi-word-component-names': 'off', 17 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 18 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "fully-onchain" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.github/workflows/firebase-hosting-merge.yml: -------------------------------------------------------------------------------- 1 | # This file was auto-generated by the Firebase CLI 2 | # https://github.com/firebase/firebase-tools 3 | 4 | name: Deploy to Firebase Hosting on merge 5 | 'on': 6 | push: 7 | branches: 8 | - master 9 | jobs: 10 | build_and_deploy: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | - uses: actions/cache@v2 15 | with: 16 | path: '**/node_modules' 17 | key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} 18 | - name: Yarn 19 | run: yarn install 20 | - run: yarn run build 21 | - uses: FirebaseExtended/action-hosting-deploy@v0 22 | with: 23 | repoToken: '${{ secrets.GITHUB_TOKEN }}' 24 | firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_FIR_VUE_STARTUP_KIT }}' 25 | channelId: live 26 | projectId: '${{ secrets.FIREBASE_PROJECT }}' 27 | env: 28 | FIREBASE_CLI_PREVIEWS: hostingchannels 29 | -------------------------------------------------------------------------------- /.github/workflows/firebase-hosting-pull-request.yml: -------------------------------------------------------------------------------- 1 | # This file was auto-generated by the Firebase CLI 2 | # https://github.com/firebase/firebase-tools 3 | 4 | name: Deploy to Firebase Hosting on PR 5 | 'on': pull_request 6 | jobs: 7 | build_and_preview: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - uses: actions/cache@v2 12 | with: 13 | path: '**/node_modules' 14 | key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} 15 | - name: Yarn 16 | run: yarn install 17 | - run: yarn run build 18 | - uses: FirebaseExtended/action-hosting-deploy@v0 19 | with: 20 | repoToken: '${{ secrets.GITHUB_TOKEN }}' 21 | firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_FIR_VUE_STARTUP_KIT }}' 22 | projectId: '${{ secrets.FIREBASE_PROJECT }}' 23 | env: 24 | FIREBASE_CLI_PREVIEWS: hostingchannels 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | /src/generated 5 | /.firebase 6 | 7 | # local env files 8 | .env.local 9 | .env.*.local 10 | 11 | # Log files 12 | npm-debug.log* 13 | yarn-debug.log* 14 | yarn-error.log* 15 | pnpm-debug.log* 16 | 17 | # Editor directories and files 18 | .idea 19 | .vscode 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | 26 | *~ 27 | 28 | contract/contracts/fonts/font.sol 29 | src/utils/addresses/*_localhost.ts -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | shims-vue.d.ts -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /contract/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | coverage 4 | coverage.json 5 | typechain 6 | typechain-types 7 | 8 | #Hardhat files 9 | cache 10 | artifacts 11 | 12 | -------------------------------------------------------------------------------- /contract/.prettierignore: -------------------------------------------------------------------------------- 1 | contracts/external -------------------------------------------------------------------------------- /contract/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "trailingComma": "all", 4 | "arrowParens": "avoid", 5 | "printWidth": 120, 6 | "tabWidth": 2, 7 | "overrides": [ 8 | { 9 | "files": "*.sol", 10 | "options": { 11 | "printWidth": 120, 12 | "bracketSpacing": true 13 | } 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /contract/README.md: -------------------------------------------------------------------------------- 1 | # Sample Hardhat Project 2 | 3 | This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, and a script that deploys that contract. 4 | 5 | Try running some of the following tasks: 6 | 7 | ```shell 8 | npx hardhat help 9 | npx hardhat test 10 | REPORT_GAS=true npx hardhat test 11 | npx hardhat node 12 | npx hardhat run scripts/deploy.ts 13 | ``` 14 | -------------------------------------------------------------------------------- /contract/contracts/LogoToken.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | /* 4 | * Created by Isamu Arimoto (@isamua) 5 | */ 6 | 7 | pragma solidity ^0.8.6; 8 | 9 | import '@openzeppelin/contracts/utils/Strings.sol'; 10 | import './libs/ProviderTokenA1.sol'; 11 | 12 | contract LogoToken is ProviderTokenA1 { 13 | using Strings for uint256; 14 | 15 | constructor(IAssetProvider _assetProvider) ProviderTokenA1(_assetProvider, 'Singularity Society Logo', 'SS Logo') { 16 | description = 'Singularity Society Logo'; 17 | // mintPrice = 1e16; 18 | mintPrice = 0; 19 | mintLimit = 5000; 20 | } 21 | 22 | function tokenName(uint256 _tokenId) internal pure override returns (string memory) { 23 | return string(abi.encodePacked('Singularity Society ', _tokenId.toString())); 24 | } 25 | 26 | function mint() public payable virtual override returns (uint256 tokenId) { 27 | tokenId = super.mint(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /contract/contracts/SampleToken.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | /* 4 | * Created by Satoshi Nakajima (@snakajima) 5 | */ 6 | 7 | pragma solidity ^0.8.6; 8 | 9 | import '@openzeppelin/contracts/utils/Strings.sol'; 10 | import './libs/ProviderToken.sol'; 11 | 12 | contract SampleToken is ProviderToken { 13 | using Strings for uint256; 14 | 15 | constructor( 16 | IAssetProvider _assetProvider, 17 | IProxyRegistry _proxyRegistry 18 | ) ProviderToken(_assetProvider, _proxyRegistry, 'Sample', 'SAMPLE') { 19 | description = 'This is a part of Fully On-chain Generative Art project (https://fullyonchain.xyz/).'; 20 | mintPrice = 0; 21 | mintLimit = 250; 22 | } 23 | 24 | function tokenName(uint256 _tokenId) internal pure override returns (string memory) { 25 | return string(abi.encodePacked('Sample ', _tokenId.toString())); 26 | } 27 | 28 | function mint() public payable virtual override returns (uint256 tokenId) { 29 | tokenId = super.mint(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /contract/contracts/external/nouns/external/opensea/IProxyRegistry.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.6; 4 | 5 | interface IProxyRegistry { 6 | function proxies(address) external view returns (address); 7 | } 8 | -------------------------------------------------------------------------------- /contract/contracts/external/nouns/interfaces/IInflator.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0 2 | 3 | /// @title Interface for Inflator 4 | 5 | /********************************* 6 | * ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ * 7 | * ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ * 8 | * ░░░░░░█████████░░█████████░░░ * 9 | * ░░░░░░██░░░████░░██░░░████░░░ * 10 | * ░░██████░░░████████░░░████░░░ * 11 | * ░░██░░██░░░████░░██░░░████░░░ * 12 | * ░░██░░██░░░████░░██░░░████░░░ * 13 | * ░░░░░░█████████░░█████████░░░ * 14 | * ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ * 15 | * ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ * 16 | *********************************/ 17 | 18 | pragma solidity ^0.8.6; 19 | 20 | import { Inflate } from '../libs/Inflate.sol'; 21 | 22 | interface IInflator { 23 | function puff(bytes memory source, uint256 destlen) external pure returns (Inflate.ErrorCode, bytes memory); 24 | } 25 | -------------------------------------------------------------------------------- /contract/contracts/external/nouns/interfaces/IWETH.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0 2 | 3 | pragma solidity ^0.8.6; 4 | 5 | interface IWETH { 6 | function deposit() external payable; 7 | 8 | function withdraw(uint256 wad) external; 9 | 10 | function transfer(address to, uint256 value) external returns (bool); 11 | } 12 | -------------------------------------------------------------------------------- /contract/contracts/external/opensea/IProxyRegistry.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.6; 4 | 5 | interface IProxyRegistry { 6 | function proxies(address) external view returns (address); 7 | } 8 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/a.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/b.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/c.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/d.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/e.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/f.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/g.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/h.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/i.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/j.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/k.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/l.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/m.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/n.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/o.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/p.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/q.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/r.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/s.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/t.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/u.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/v.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/w.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/x.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/y.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_lower_case_letters/z.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_numbers/0.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_numbers/1.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_numbers/2.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_numbers/3.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_numbers/4.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_numbers/5.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_numbers/6.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_numbers/7.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_numbers/8.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_numbers/9.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/LT.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/and.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/apostrophe.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/asterisk.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/back_slash.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/big.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/brackets_left.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/brackets_right.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/caret.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/colon.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/comma.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/dallar.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/double_quote.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/double_quote_2.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/equal.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/ex.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/grave.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/hyphen.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/left_bracket.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/left_middle_bracket.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/percent.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/period.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/plus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/question.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/right_bracket.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/right_middle_bracket.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/semi_colon.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/sharp.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/slash.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/tilde.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/underline.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_symbols/yen.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/A.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/B.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/C.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/D.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/E.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/F.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/G.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/H.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/I.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/J.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/K.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/L.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/M.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/N.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/O.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/P.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/Q.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/R.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/S.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/T.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/U.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/V.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/W.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/X.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/Y.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_NotoSans/font_upper_case_letters/Z.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/a.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/b.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/c.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/d.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/e.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/f.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/g.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/h.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/i.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/j.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/k.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/l.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/m.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/n.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/o.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/p.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/q.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/r.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/s.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/t.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/u.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/v.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/w.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/x.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/y.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_lower_case_letters/z.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_numbers/0.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_numbers/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_numbers/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_numbers/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_numbers/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_numbers/5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_numbers/6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_numbers/7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_numbers/8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_numbers/9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/LT.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/and.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/apostrophe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/asterisk.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/back_slash.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/big.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/brackets_left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/brackets_right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/caret.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/colon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/comma.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/dallar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/double_quote.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/double_quote_2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/equal.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/ex.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/grave.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/hyphen.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/left_bracket.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/left_middle_bracket.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/period.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/plus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/question.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/right_bracket.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/right_middle_bracket.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/semi_colon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/slash.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/tilde.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/underline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_symbols/vertical.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/A.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/B.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/C.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/D.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/E.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/F.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/G.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/H.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/I.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/J.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/K.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/L.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/M.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/N.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/O.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/P.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/Q.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/R.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/S.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/T.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/U.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/V.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/W.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/X.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/Y.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/font_upper_case_letters/Z.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /contract/contracts/fonts/logo.ts: -------------------------------------------------------------------------------- 1 | import { compressPath, solidityString } from '../graphics/pathUtils'; 2 | 3 | const twitter = 4 | 'M221.95 51.29c.15 2.17.15 4.34.15 6.53 0 66.73-50.8 143.69-143.69 143.69v-.04c-27.44.04-54.31-7.82-77.41-22.64 3.99.48 8 .72 12.02.73 22.74.02 44.83-7.61 62.72-21.66-21.61-.41-40.56-14.5-47.18-35.07 7.57 1.46 15.37 1.16 22.8-.87-23.56-4.76-40.51-25.46-40.51-49.5v-.64c7.02 3.91 14.88 6.08 22.92 6.32C11.58 63.31 4.74 33.79 18.14 10.71c25.64 31.55 63.47 50.73 104.08 52.76-4.07-17.54 1.49-35.92 14.61-48.25 20.34-19.12 52.33-18.14 71.45 2.19 11.31-2.23 22.15-6.38 32.07-12.26-3.77 11.69-11.66 21.62-22.2 27.93 10.01-1.18 19.79-3.86 29-7.95-6.78 10.16-15.32 19.01-25.2 26.16z'; 5 | const bytes = solidityString(compressPath(twitter, 248)); 6 | console.log(`const twitter = "${bytes}";`); 7 | -------------------------------------------------------------------------------- /contract/contracts/imageParts/interfaces/IMessageStoreV1.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.6; 4 | 5 | interface IMessageStoreV1 { 6 | struct Asset { 7 | string message; 8 | string color; 9 | } 10 | struct Box { 11 | uint256 w; 12 | uint256 h; 13 | } 14 | 15 | function register(Asset memory asset) external returns (uint256); 16 | 17 | function getSVGBody(uint256 index) external view returns (bytes memory output); 18 | 19 | function getSVG(uint256 index) external view returns (string memory output); 20 | 21 | function getSVGMessage( 22 | string memory message, 23 | string memory color, 24 | Box memory box 25 | ) external view returns (string memory output); 26 | 27 | function getMessage(uint256 index) external view returns (string memory output); 28 | } 29 | -------------------------------------------------------------------------------- /contract/contracts/imageParts/interfaces/IParts.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.6; 4 | 5 | interface IParts { 6 | function svgData( 7 | uint8 index 8 | ) external pure returns (uint16 sizes, bytes[] memory paths, string[] memory fill, uint8[] memory stroke); 9 | } 10 | -------------------------------------------------------------------------------- /contract/contracts/imageParts/interfaces/ISVGArt.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.6; 4 | 5 | interface ISVGArt { 6 | function getSVGBody(uint16 index) external view returns (bytes memory output); 7 | 8 | function getSVG(uint16 index) external view returns (string memory output); 9 | 10 | function generateTraits(uint256 _assetId) external view returns (string memory traits); 11 | } 12 | -------------------------------------------------------------------------------- /contract/contracts/imageParts/interfaces/ISVGStoreV1.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.6; 4 | 5 | interface ISVGStoreV1 { 6 | struct Asset { 7 | bytes[] paths; 8 | string[] fills; 9 | uint8[] strokes; 10 | string[] matrixes; 11 | } 12 | 13 | function register(Asset memory asset) external returns (uint256); 14 | 15 | function getSVGBody(uint256 index) external view returns (bytes memory output); 16 | 17 | function getSVG(uint256 index) external view returns (string memory output); 18 | } 19 | -------------------------------------------------------------------------------- /contract/contracts/interfaces/IColorSchemes.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | /* 4 | * Created by Satoshi Nakajima (@snakajima) 5 | */ 6 | 7 | pragma solidity ^0.8.6; 8 | 9 | import 'randomizer.sol/Randomizer.sol'; 10 | 11 | interface IColorSchemes { 12 | function getColorScheme(uint256 _assetId) external view returns (Randomizer.Seed memory seed, string[] memory scheme); 13 | 14 | function generateTraits(uint256 _assetId) external view returns (string memory); 15 | } 16 | -------------------------------------------------------------------------------- /contract/contracts/interfaces/ILayoutGenerator.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | /* 4 | * NounsAssetProvider is a wrapper around NounsDescriptor so that it offers 5 | * various characters as assets to compose (not individual parts). 6 | * 7 | * Created by Satoshi Nakajima (@snakajima) 8 | */ 9 | 10 | pragma solidity ^0.8.6; 11 | 12 | import 'randomizer.sol/Randomizer.sol'; 13 | 14 | interface ILayoutGenerator { 15 | struct Node { 16 | uint x; 17 | uint y; 18 | uint size; 19 | string scale; 20 | } 21 | 22 | function generate( 23 | Randomizer.Seed memory _seed, 24 | uint _props 25 | ) external view returns (Randomizer.Seed memory seed, Node[] memory nodes); 26 | } 27 | -------------------------------------------------------------------------------- /contract/contracts/interfaces/IMessageToken.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.6; 4 | 5 | interface IMessageToken { 6 | function getMessage(uint256 index) external view returns (string memory output); 7 | function getLatestMessage() external view returns (string memory output); 8 | } 9 | -------------------------------------------------------------------------------- /contract/contracts/interfaces/IOnChainWallet.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | /* 4 | * Super simple on-line wallet interface 5 | * 6 | * Created by Satoshi Nakajima (@snakajima) 7 | */ 8 | 9 | pragma solidity ^0.8.6; 10 | 11 | interface IOnChainWallet { 12 | function deposite() external payable; 13 | 14 | function withdraw(uint _amount) external; 15 | 16 | function withdrawAll() external; 17 | 18 | function transfer(address payable _payableTo, uint amount) external; 19 | 20 | function transferAll(address payable _payableTo) external; 21 | } 22 | -------------------------------------------------------------------------------- /contract/contracts/interfaces/ISVGImage1Parts.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cryptocoders-wtf/generative/b5233b5f34e8bd34f54f10f11fc05f932a92441e/contract/contracts/interfaces/ISVGImage1Parts.sol -------------------------------------------------------------------------------- /contract/contracts/interfaces/ITokenGate.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | /* 4 | * Created by Satoshi Nakajima (@snakajima) 5 | */ 6 | 7 | pragma solidity ^0.8.6; 8 | 9 | interface ITokenGate { 10 | // Intentially same as ERC721's balanceOf 11 | function balanceOf(address _wallet) external view returns (uint256 balance); 12 | } 13 | -------------------------------------------------------------------------------- /contract/contracts/libs/AssetTokenGate.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | /* 4 | * Created by Satoshi Nakajima (@snakajima) 5 | */ 6 | 7 | pragma solidity ^0.8.6; 8 | 9 | import '@openzeppelin/contracts/access/Ownable.sol'; 10 | import '@openzeppelin/contracts/token/ERC721/IERC721.sol'; 11 | import '../interfaces/ITokenGate.sol'; 12 | 13 | contract AssetTokenGate is Ownable, ITokenGate { 14 | IERC721[] public whitelist; 15 | 16 | function setWhitelist(IERC721[] memory _whitelist) external onlyOwner { 17 | whitelist = _whitelist; 18 | } 19 | 20 | function balanceOf(address _wallet) external view override returns (uint balance) { 21 | for (uint i = 0; i < whitelist.length; i++) { 22 | balance += whitelist[i].balanceOf(_wallet); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /contract/contracts/libs/DynamicTokenGate.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | /* 4 | * Created by Satoshi Nakajima (@snakajima) 5 | */ 6 | 7 | pragma solidity ^0.8.6; 8 | 9 | import '@openzeppelin/contracts/access/Ownable.sol'; 10 | import '@openzeppelin/contracts/token/ERC721/IERC721.sol'; 11 | import '../interfaces/ITokenGate.sol'; 12 | 13 | contract DynamicTokenGate is Ownable, ITokenGate { 14 | IERC721[] whitelist; 15 | 16 | function append(IERC721 _contract) external onlyOwner returns (uint balance) { 17 | balance = _contract.balanceOf(msg.sender); 18 | whitelist.push(_contract); 19 | } 20 | 21 | function balanceOf(address _wallet) external view override returns (uint balance) { 22 | for (uint i = 0; i < whitelist.length; i++) { 23 | balance += whitelist[i].balanceOf(_wallet); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /contract/contracts/localNouns/README.md: -------------------------------------------------------------------------------- 1 | # Local nouns 2 | 3 | - [localNouns](https://github.com/Cryptocoders-wtf/local-nouns-assets/)にあるご当地nounsのheadとaccessoryを使ってNounish NFTを構成する 4 | 5 | - bodyとglassはNounsTokenのデータを参照してそのまま使う 6 | - headとaccessoryはstorageへ書き込む 7 | -- headとaccessoryは、都道府県ごとのパーツを組み合わせる 8 | 9 | ## Contractの構成 10 | - LocalNounsToken -> LocalNounsProvider -> LocalNounsDescriptor(NounsDescriptorを中で参照) 11 | - NounsのパーツはNounsSeeder, LocalNounsのパーツはLocalNounsSeederで採番する 12 | 13 | ## deploy & test 14 | - scripts/deploy_localNouns.ts → デプロイ 15 | - scripts/populate_localNouns.ts → パーツ画像の登録、テストミント 16 | 17 | - nouns daoのcontracのデータを参照するので、mainnet forkingで動かす必要がある 18 | -- パーツはNounsDescriptorV1で作成されたものを使用している 19 | -- scripts/deploy_nounsDescriptorV1.ts → デプロイ 20 | -- scripts/populate_nounsV1.ts → パーツ画像の登録 -------------------------------------------------------------------------------- /contract/contracts/localNouns/interfaces/IAssetProviderExMint.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.6; 4 | 5 | import 'assetprovider.sol/IAssetProvider.sol'; 6 | 7 | interface IAssetProviderExMint is IAssetProvider { 8 | function mint(uint256 prefectureId, uint256 _assetId) external returns (uint256); 9 | function getPrefectureId(uint256 prefectureId) external returns (uint256); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /contract/contracts/packages/ERC721P2P/erc721a/extensions/ERC721ABurnable.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // ERC721A Contracts v4.2.3 3 | // Creator: Chiru Labs 4 | 5 | pragma solidity ^0.8.4; 6 | 7 | import './IERC721ABurnable.sol'; 8 | import '../ERC721A.sol'; 9 | 10 | /** 11 | * @title ERC721ABurnable. 12 | * 13 | * @dev ERC721A token that can be irreversibly burned (destroyed). 14 | */ 15 | abstract contract ERC721ABurnable is ERC721A, IERC721ABurnable { 16 | /** 17 | * @dev Burns `tokenId`. See {ERC721A-_burn}. 18 | * 19 | * Requirements: 20 | * 21 | * - The caller must own `tokenId` or be an approved operator. 22 | */ 23 | function burn(uint256 tokenId) public virtual override { 24 | _burn(tokenId, true); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /contract/contracts/packages/ERC721P2P/erc721a/extensions/IERC721ABurnable.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // ERC721A Contracts v4.2.3 3 | // Creator: Chiru Labs 4 | 5 | pragma solidity ^0.8.4; 6 | 7 | import '../IERC721A.sol'; 8 | 9 | /** 10 | * @dev Interface of ERC721ABurnable. 11 | */ 12 | interface IERC721ABurnable is IERC721A { 13 | /** 14 | * @dev Burns `tokenId`. See {ERC721A-_burn}. 15 | * 16 | * Requirements: 17 | * 18 | * - The caller must own `tokenId` or be an approved operator. 19 | */ 20 | function burn(uint256 tokenId) external; 21 | } 22 | -------------------------------------------------------------------------------- /contract/contracts/packages/ERC721P2P/erc721a/interfaces/IERC4907A.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // ERC721A Contracts v4.2.3 3 | // Creator: Chiru Labs 4 | 5 | pragma solidity ^0.8.4; 6 | 7 | import '../extensions/IERC4907A.sol'; 8 | -------------------------------------------------------------------------------- /contract/contracts/packages/ERC721P2P/erc721a/interfaces/IERC721A.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // ERC721A Contracts v4.2.3 3 | // Creator: Chiru Labs 4 | 5 | pragma solidity ^0.8.4; 6 | 7 | import '../IERC721A.sol'; 8 | -------------------------------------------------------------------------------- /contract/contracts/packages/ERC721P2P/erc721a/interfaces/IERC721ABurnable.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // ERC721A Contracts v4.2.3 3 | // Creator: Chiru Labs 4 | 5 | pragma solidity ^0.8.4; 6 | 7 | import '../extensions/IERC721ABurnable.sol'; 8 | -------------------------------------------------------------------------------- /contract/contracts/packages/ERC721P2P/erc721a/interfaces/IERC721AQueryable.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // ERC721A Contracts v4.2.3 3 | // Creator: Chiru Labs 4 | 5 | pragma solidity ^0.8.4; 6 | 7 | import '../extensions/IERC721AQueryable.sol'; 8 | -------------------------------------------------------------------------------- /contract/contracts/packages/ERC721P2P/opensea/DefaultOperatorFilterer.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.13; 3 | 4 | import { OperatorFilterer } from './OperatorFilterer.sol'; 5 | 6 | /** 7 | * @title DefaultOperatorFilterer 8 | * @notice Inherits from OperatorFilterer and automatically subscribes to the default OpenSea subscription. 9 | */ 10 | abstract contract DefaultOperatorFilterer is OperatorFilterer { 11 | address constant DEFAULT_SUBSCRIPTION = address(0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6); 12 | 13 | constructor() OperatorFilterer(DEFAULT_SUBSCRIPTION, true) {} 14 | } 15 | -------------------------------------------------------------------------------- /contract/contracts/packages/ERC721P2P/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "erc721p2p", 3 | "version": "1.2.1", 4 | "description": "ERC721 with decentralized trading and enforced creator royalties", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/Cryptocoders-wtf/generative.git" 12 | }, 13 | "keywords": [ 14 | "Solidity", 15 | "ERC721", 16 | "NFT" 17 | ], 18 | "author": "snakajima", 19 | "license": "MIT", 20 | "bugs": { 21 | "url": "https://github.com/Cryptocoders-wtf/generative/issues" 22 | }, 23 | "homepage": "https://github.com/Cryptocoders-wtf/generative/tree/main/contract/contracts/packages/ERC721P2P#readme", 24 | "devDependencies": { 25 | "@openzeppelin/contracts": "^4.8.3", 26 | "erc721a": "^4.2.3" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /contract/contracts/packages/assetProvider/ISVGHelper.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | /* 4 | * Interface to helper contract(s) for SVG generative. 5 | * 6 | * Created by Satoshi Nakajima (@snakajima) 7 | */ 8 | 9 | pragma solidity ^0.8.6; 10 | 11 | import 'assetprovider.sol/IAssetProvider.sol'; 12 | 13 | interface ISVGHelper { 14 | // point 15 | // 0-15: int x 16 | // 16-31: int y 17 | // 32-47: uint r 18 | // 48: bool c 19 | function pathFromPoints(uint[] memory points) external pure returns (bytes memory); 20 | 21 | function generateSVGPart( 22 | IAssetProvider provider, 23 | uint256 _assetId 24 | ) external view returns (string memory svgPart, string memory tag, uint256 gas); 25 | } 26 | -------------------------------------------------------------------------------- /contract/contracts/packages/assetProvider/README.md: -------------------------------------------------------------------------------- 1 | # assetprovider.sol 2 | 3 | ## IAssetProvider 4 | 5 | IAssetProvider is the interface which allows smart contracts to provide image assets for other smart contracts to use. 6 | 7 | We assume there are three types of asset providers. 8 | 1. Static asset provider, which has a collection of assets (either in the storage or the code) and returns them. 9 | 2. Generative provider, which dynamically (but deterministically from the seed) generates assets. 10 | 3. Data visualizer, which generates assets based on various data on the blockchain. 11 | 12 | Note: Asset providers MUST implements IERC165 (supportsInterface method) as well. 13 | -------------------------------------------------------------------------------- /contract/contracts/packages/assetProvider/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "assetprovider.sol", 3 | "version": "1.2.1", 4 | "description": "interface for image composability", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/Cryptocoders-wtf/generative.git" 12 | }, 13 | "keywords": [ 14 | "svg", 15 | "image", 16 | "composability" 17 | ], 18 | "author": "snakajima", 19 | "license": "MIT", 20 | "bugs": { 21 | "url": "https://github.com/Cryptocoders-wtf/generative/issues" 22 | }, 23 | "homepage": "https://github.com/Cryptocoders-wtf/generative/tree/main/contract/contracts/packages/assetProvider#readme" 24 | } 25 | -------------------------------------------------------------------------------- /contract/contracts/packages/bytesarray/README.md: -------------------------------------------------------------------------------- 1 | # BytesArray 2 | 3 | ## Usage 4 | 5 | ### Before 6 | 7 | ``` 8 | contract YourContract { 9 | // This is O(N^2) because of reallocations 10 | function yourFunction() returns (bytes memory result) { 11 | ... 12 | for (uint i = 0; i < N; i++) { 13 | ... 14 | // Reallocation 15 | result = abi.encodePacked(result, ...); 16 | } 17 | } 18 | } 19 | ``` 20 | ### After 21 | 22 | ``` 23 | import "bytes-array.sol/BytesArray.sol"; 24 | 25 | contract YourContract { 26 | // This is O(N) 27 | using BytesArray for bytes[]; 28 | 29 | function yourFunction() returns (bytes memory result) { 30 | ... 31 | bytes[] memory parts = new bytes[](N); 32 | for (uint i = 0; i < N; i++) { 33 | ... 34 | parts[i] = abi.encodePacked(...); 35 | } 36 | result = parts.packed(); 37 | } 38 | } 39 | ``` -------------------------------------------------------------------------------- /contract/contracts/packages/bytesarray/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bytes-array.sol", 3 | "version": "1.0.3", 4 | "description": "Efficient way to combine an array of bytes", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/Cryptocoders-wtf/generative.git" 12 | }, 13 | "keywords": [ 14 | "Solidity", 15 | "Bytes", 16 | "Assembly" 17 | ], 18 | "author": "snakajima", 19 | "license": "MIT", 20 | "bugs": { 21 | "url": "https://github.com/Cryptocoders-wtf/generative/issues" 22 | }, 23 | "homepage": "https://github.com/Cryptocoders-wtf/generative/tree/main/contract/contracts/packages/bytesarray#readme" 24 | } 25 | -------------------------------------------------------------------------------- /contract/contracts/packages/graphics/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist/ 3 | -------------------------------------------------------------------------------- /contract/contracts/packages/graphics/.npmignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cryptocoders-wtf/generative/b5233b5f34e8bd34f54f10f11fc05f932a92441e/contract/contracts/packages/graphics/.npmignore -------------------------------------------------------------------------------- /contract/contracts/packages/graphics/IFontProvider.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | /* 4 | * This is a part of fully-on-chain.sol, a npm package that allows developers 5 | * to create fully on-chain generative art. 6 | * 7 | * Created by Satoshi Nakajima (@snakajima) 8 | */ 9 | 10 | pragma solidity ^0.8.6; 11 | 12 | interface IFontProvider { 13 | function height() external view returns (uint); 14 | 15 | function baseline() external view returns (uint); 16 | 17 | function widthOf(string memory _char) external view returns (uint); 18 | 19 | function pathOf(string memory _char) external view returns (bytes memory); 20 | 21 | /** 22 | * This function processes the royalty payment from the decentralized autonomous marketplace. 23 | */ 24 | function processPayout() external payable; 25 | 26 | event Payout(string providerKey, address payable to, uint256 amount); 27 | } 28 | -------------------------------------------------------------------------------- /contract/contracts/packages/graphics/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fully-on-chain.sol", 3 | "version": "1.4.0", 4 | "description": "Graphics library for fully on-chain generative art in Solidity", 5 | "main": "dist/index.js", 6 | "types": "dist/index.d.ts", 7 | "prepublish": "tsc", 8 | "scripts": { 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/Cryptocoders-wtf/generative.git" 14 | }, 15 | "keywords": [ 16 | "Solidity", 17 | "Graphics", 18 | "SVG" 19 | ], 20 | "author": "snakajima", 21 | "license": "MIT", 22 | "bugs": { 23 | "url": "https://github.com/Cryptocoders-wtf/generative/issues" 24 | }, 25 | "homepage": "https://github.com/Cryptocoders-wtf/generative/tree/main/contract/contracts/packages/graphics#readme", 26 | "dependencies": { 27 | "@openzeppelin/contracts": "^4.8.3", 28 | "bytes-array.sol": "^1.0.2", 29 | "trigonometry.sol": "^1.0.1" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /contract/contracts/packages/randomizer/README.md: -------------------------------------------------------------------------------- 1 | # Randomizer.sol 2 | 3 | This library was created to generate a sequence of pseudo random numbers deterministically. 4 | 5 | ## Usage 6 | ``` 7 | import "randomizer.sol/Randomizer.sol"; 8 | 9 | contract YourContract { 10 | using Randomizer for Randomizer.Seed; 11 | 12 | function YourMethod(uint seedId) { 13 | // Initialize the seed with a particular number, which determines the sequence. 14 | Randomizer.Seed memory seed = Randomizer.Seed(assetId, 0); 15 | 16 | // Generate a pseudo random number between 0 and 99 17 | uint numberA; 18 | (seed, numberA) = seed.random(100); 19 | 20 | // Randomize the number by +-33% 21 | uint numberB = 100; 22 | (seed, numberB) = seed.randomize(numberB, 33); 23 | 24 | ... 25 | } 26 | ``` 27 | -------------------------------------------------------------------------------- /contract/contracts/packages/randomizer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "randomizer.sol", 3 | "version": "1.0.4", 4 | "description": "Deterministic pseudo random generator", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/Cryptocoders-wtf/generative.git" 12 | }, 13 | "keywords": [ 14 | "solidity", 15 | "random" 16 | ], 17 | "author": "snakajima", 18 | "license": "MIT", 19 | "bugs": { 20 | "url": "https://github.com/Cryptocoders-wtf/generative/issues" 21 | }, 22 | "homepage": "https://github.com/Cryptocoders-wtf/generative/tree/main/contract/contracts/packages/randomizer#readme" 23 | } 24 | -------------------------------------------------------------------------------- /contract/contracts/packages/trigonometry/README.md: -------------------------------------------------------------------------------- 1 | # Trigonometry 2 | 3 | Basic Trigonometric functions for smart contracts 4 | 5 | ## Usage 6 | 7 | ``` 8 | import "trigonometry.sol/Trigonometry.sol"; 9 | 10 | contract YourContract { 11 | using Trigonometry for uint; 12 | 13 | function YourMethod() { 14 | uint angle = 60; // degree 15 | int radias = 800; // pixel 16 | uint x = (angle * 0x4000 / 360).cos() * radias / 0x7fff; 17 | uint y = (angle * 0x4000 / 360).sin() * radias / 0x7fff; 18 | ... 19 | } 20 | } 21 | 22 | ``` -------------------------------------------------------------------------------- /contract/contracts/packages/trigonometry/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "trigonometry.sol", 3 | "version": "1.0.2", 4 | "description": "Basic trigonometric cuntions, sine and cosine", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/Cryptocoders-wtf/generative.git" 12 | }, 13 | "keywords": [ 14 | "trigonometry", 15 | "sin", 16 | "cos", 17 | "sine", 18 | "cosine", 19 | "solidity" 20 | ], 21 | "author": "snakajima", 22 | "license": "MIT", 23 | "bugs": { 24 | "url": "https://github.com/Cryptocoders-wtf/generative/issues" 25 | }, 26 | "homepage": "https://github.com/Cryptocoders-wtf/generative/tree/main/contract/contracts/packages/trigonometry#readme" 27 | } 28 | -------------------------------------------------------------------------------- /contract/contracts/sushi/README.md: -------------------------------------------------------------------------------- 1 | # Sushi nouns 2 | 3 | - [sushi_dao](https://github.com/Cryptocoders-wtf/sushi-nouns-dao-assets/)にある寿司nounsのheadとaccessoryを使ってNounish NFTを構成する 4 | 5 | - bodyとglassはNounsTokenのデータを参照してそのまま使う 6 | - headとaccessoryはstorageへ書き込む 7 | 8 | ## Contractの構成 9 | - SushiNounsToken -> SushiNounsProvider -> SushiNounsDescriptor(NounsDescriptorを中で参照) 10 | - MixedSeeder(NounsSeeder, SushiNounsSeederをmixしたseeder) 11 | 12 | - データ等を重複しない構成をしている 13 | - paletteが型問題で参照できないのでSushiNounsDescriptorにデータとして入れる 14 | - backgroundsの画像化は試したがデータ量が多いのでgas代問題でng 15 | - SushiNounsDescriptorのpartsを5個にし、NFTDescriptorを改良すればできる 16 | - mint時にseedはproviderで管理する 17 | - seederの受け渡しに問題でtokenで管理していない 18 | 19 | ## deploy & test 20 | - test/sushi.ts にテストがある 21 | - これを参照すればdeployもつくれる。 22 | - nouns daoのcontracのデータを参照するので、mainnet forkingで動かす必要がある 23 | -------------------------------------------------------------------------------- /contract/contracts/sushi/interfaces/IAssetProviderExMint.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.6; 4 | 5 | import 'assetprovider.sol/IAssetProvider.sol'; 6 | 7 | interface IAssetProviderExMint is IAssetProvider { 8 | function mint(uint256 _assetId) external returns (uint256); 9 | } 10 | -------------------------------------------------------------------------------- /contract/contracts/test/DummyProxy.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | /* 4 | * Created by Satoshi Nakajima (@snakajima) 5 | */ 6 | 7 | pragma solidity ^0.8.6; 8 | 9 | import '../external/opensea/IProxyRegistry.sol'; 10 | 11 | contract DummyProxy is IProxyRegistry { 12 | function proxies(address _address) external pure override returns (address) { 13 | return _address; // any address is fine 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /contract/contracts/test/MessageTest.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | /* 4 | * Text package test 5 | * 6 | * Created by Isamu Arimoto (@isamua) 7 | */ 8 | 9 | pragma solidity ^0.8.6; 10 | 11 | import '@openzeppelin/contracts/utils/Strings.sol'; 12 | import '../packages/graphics/Text.sol'; 13 | import 'hardhat/console.sol'; 14 | 15 | contract TextSplitTest { 16 | using Strings for uint256; 17 | 18 | function splitOnNewline(string memory message) external pure returns (string[] memory output) { 19 | output = Text.split(message, 0x0a); 20 | } 21 | 22 | function extractLineOnNewline( 23 | string memory message, 24 | uint index 25 | ) external pure returns (string memory output, uint i) { 26 | (output, i) = Text.extractLine(message, index, 0x0a); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /contract/contracts/test/SVGMin.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | /* 4 | * NounsAssetProvider is a wrapper around NounsDescriptor so that it offers 5 | * various characters as assets to compose (not individual parts). 6 | * 7 | * Created by Satoshi Nakajima (@snakajima) 8 | */ 9 | 10 | pragma solidity ^0.8.6; 11 | 12 | import 'randomizer.sol/Randomizer.sol'; 13 | import '@openzeppelin/contracts/utils/Strings.sol'; 14 | import 'fully-on-chain.sol/Path.sol'; 15 | import 'fully-on-chain.sol/SVG.sol'; 16 | import 'hardhat/console.sol'; 17 | 18 | contract SVGMin { 19 | using Strings for uint256; 20 | using Randomizer for Randomizer.Seed; 21 | using Vector for Vector.Struct; 22 | using Path for uint[]; 23 | using SVG for SVG.Element; 24 | 25 | function main() external pure returns (bytes memory output) { 26 | return SVG.rect(256, 256, 512, 512).svg(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /contract/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hardhat-project", 3 | "scripts": { 4 | "format": "npx prettier --write '{scripts,contracts,test}/**/{*.sol,*.ts}'" 5 | }, 6 | "devDependencies": { 7 | "@nomicfoundation/hardhat-toolbox": "^2.0.0", 8 | "@nomiclabs/hardhat-etherscan": "^3.1.7", 9 | "@nouns/sdk": "^0.3.2", 10 | "@openzeppelin/contracts": "^4.9.3", 11 | "assetprovider.sol": "^1.2.0", 12 | "assetstore.sol": "^1.0.1", 13 | "bytes-array.sol": "^1.0.0", 14 | "dotenv": "^16.0.3", 15 | "fast-xml-parser": "^4.2.5", 16 | "fully-on-chain.sol": "^1.1.0", 17 | "hardhat": "^2.15.0", 18 | "prettier-plugin-solidity": "^1.0.0", 19 | "randomizer.sol": "^1.0.0", 20 | "trigonometry.sol": "^1.0.0", 21 | "ts-node": "^10.9.1", 22 | "typescript": "^5.1.3" 23 | }, 24 | "dependencies": { 25 | "base64-sol": "^1.1.0" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /contract/scripts/deploy_dotnouns.ts: -------------------------------------------------------------------------------- 1 | import { ethers, network } from 'hardhat'; 2 | import { writeFile } from 'fs'; 3 | import { addresses } from '../../src/utils/addresses'; 4 | 5 | const nounsProvider = addresses.nouns[network.name]; 6 | console.log('nounsProvider', nounsProvider); 7 | 8 | async function main() { 9 | const factoryArt = await ethers.getContractFactory('DotNounsProvider'); 10 | const contractArt = await factoryArt.deploy(nounsProvider); 11 | await contractArt.deployed(); 12 | console.log(` contractArt="${contractArt.address}"`); 13 | 14 | const output = `export const addresses = {\n` + ` dotNounsArt:"${contractArt.address}",\n` + `}\n`; 15 | await writeFile(`../src/utils/addresses/dotNouns_${network.name}.ts`, output, () => {}); 16 | 17 | console.log(`npx hardhat verify ${contractArt.address} ${nounsProvider} --network ${network.name}`); 18 | } 19 | 20 | main().catch(error => { 21 | console.error(error); 22 | process.exitCode = 1; 23 | }); 24 | -------------------------------------------------------------------------------- /contract/scripts/deploy_dotnounsV2.ts: -------------------------------------------------------------------------------- 1 | import { ethers, network } from 'hardhat'; 2 | import { writeFile } from 'fs'; 3 | import { addresses } from '../../src/utils/addresses'; 4 | 5 | const nounsProvider = addresses.nouns[network.name]; 6 | console.log('nounsProvider', nounsProvider); 7 | 8 | async function main() { 9 | const factoryArt = await ethers.getContractFactory('DotNounsProviderV2'); 10 | const contractArt = await factoryArt.deploy(nounsProvider); 11 | await contractArt.deployed(); 12 | console.log(` contractArt="${contractArt.address}"`); 13 | 14 | const output = `export const addresses = {\n` + ` dotNounsArt:"${contractArt.address}",\n` + `}\n`; 15 | await writeFile(`../src/utils/addresses/dotNouns_${network.name}.ts`, output, () => {}); 16 | 17 | console.log(`npx hardhat verify ${contractArt.address} ${nounsProvider} --network ${network.name}`); 18 | } 19 | 20 | main().catch(error => { 21 | console.error(error); 22 | process.exitCode = 1; 23 | }); 24 | -------------------------------------------------------------------------------- /contract/scripts/deploy_font.ts: -------------------------------------------------------------------------------- 1 | import { ethers, network } from 'hardhat'; 2 | import { writeFile } from 'fs'; 3 | 4 | const designer = '0x14aea32f6e6dcaecfa1bc62776b2e279db09255d'; 5 | async function main() { 6 | const factory = await ethers.getContractFactory('LondrinaSolid'); 7 | const font = await factory.deploy(designer); 8 | await font.deployed(); 9 | console.log(` font="${font.address}"`); 10 | 11 | /* 12 | const result = await font.widthOf("a"); 13 | console.log(result); 14 | */ 15 | 16 | const addresses = `export const addresses = {\n` + ` font:"${font.address}",\n` + `}\n`; 17 | await writeFile(`../src/utils/addresses/londrina_solid_${network.name}.ts`, addresses, () => {}); 18 | } 19 | 20 | main().catch(error => { 21 | console.error(error); 22 | process.exitCode = 1; 23 | }); 24 | -------------------------------------------------------------------------------- /contract/scripts/deploy_font_NotoSans.ts: -------------------------------------------------------------------------------- 1 | import { ethers, network } from 'hardhat'; 2 | import { writeFile } from 'fs'; 3 | 4 | const designer = '0x778577c329947F9CA65b15a26096F474F9A4e674'; 5 | async function main() { 6 | const factory = await ethers.getContractFactory('NotoSans'); 7 | const font = await factory.deploy(designer); 8 | await font.deployed(); 9 | console.log(` font="${font.address}"`); 10 | 11 | /* 12 | const result = await font.widthOf("a"); 13 | console.log(result); 14 | */ 15 | 16 | const addresses = `export const addresses = {\n` + ` font:"${font.address}",\n` + `}\n`; 17 | await writeFile(`../src/utils/addresses/noto_sans_${network.name}.ts`, addresses, () => {}); 18 | } 19 | 20 | main().catch(error => { 21 | console.error(error); 22 | process.exitCode = 1; 23 | }); 24 | -------------------------------------------------------------------------------- /contract/scripts/deploy_matrix.ts: -------------------------------------------------------------------------------- 1 | import { ethers, network } from 'hardhat'; 2 | import { writeFile } from 'fs'; 3 | 4 | async function main() { 5 | const factory = await ethers.getContractFactory('MatrixGenerator'); 6 | const matrix = await factory.deploy(); 7 | await matrix.deployed(); 8 | console.log(` matrix="${matrix.address}"`); 9 | 10 | const addresses = `export const addresses = {\n` + ` matrix:"${matrix.address}",\n` + `}\n`; 11 | await writeFile(`../src/utils/addresses/matrix_${network.name}.ts`, addresses, () => {}); 12 | } 13 | 14 | main().catch(error => { 15 | console.error(error); 16 | process.exitCode = 1; 17 | }); 18 | -------------------------------------------------------------------------------- /contract/scripts/deploy_paperNouns.ts: -------------------------------------------------------------------------------- 1 | import { ethers, network } from 'hardhat'; 2 | import { writeFile } from 'fs'; 3 | import { addresses } from '../../src/utils/addresses'; 4 | 5 | const nounsProvider = addresses.nounsV2[network.name]; 6 | console.log('nounsProvider', nounsProvider); 7 | 8 | async function main() { 9 | const factoryArt = await ethers.getContractFactory('PaperNounsProvider'); 10 | const contractArt = await factoryArt.deploy(nounsProvider); 11 | await contractArt.deployed(); 12 | console.log(` contractArt="${contractArt.address}"`); 13 | 14 | const output = `export const addresses = {\n` + ` dotNounsArt:"${contractArt.address}",\n` + `}\n`; 15 | await writeFile(`../src/utils/addresses/paperNouns_${network.name}.ts`, output, () => {}); 16 | 17 | console.log(`npx hardhat verify ${contractArt.address} ${nounsProvider} --network ${network.name}`); 18 | } 19 | 20 | main().catch(error => { 21 | console.error(error); 22 | process.exitCode = 1; 23 | }); 24 | -------------------------------------------------------------------------------- /contract/scripts/deploy_payload.ts: -------------------------------------------------------------------------------- 1 | import { ethers, network } from 'hardhat'; 2 | import { writeFile } from 'fs'; 3 | 4 | async function main() { 5 | const factory = await ethers.getContractFactory('Payload'); 6 | const payload = await factory.deploy(); 7 | console.log(`payload="${payload.address}"`); 8 | 9 | await payload.destroy(); 10 | console.log('complete'); 11 | } 12 | 13 | main().catch(error => { 14 | console.error(error); 15 | process.exitCode = 1; 16 | }); 17 | -------------------------------------------------------------------------------- /contract/scripts/deploy_proxy.ts: -------------------------------------------------------------------------------- 1 | import { ethers } from 'hardhat'; 2 | 3 | async function main() { 4 | const factory = await ethers.getContractFactory('DummyProxy'); 5 | const contract = await factory.deploy(); 6 | await contract.deployed(); 7 | console.log(` proxy="${contract.address}"`); 8 | } 9 | 10 | main().catch(error => { 11 | console.error(error); 12 | process.exitCode = 1; 13 | }); 14 | -------------------------------------------------------------------------------- /contract/scripts/deploy_simpleSVG.ts: -------------------------------------------------------------------------------- 1 | import { ethers } from 'hardhat'; 2 | 3 | async function main() { 4 | const factory = await ethers.getContractFactory('SimpleSVGToken'); 5 | const contract = await factory.deploy("SimpleSVGToken", "SVG"); 6 | await contract.deployed(); 7 | console.log(` simple="${contract.address}"`); 8 | 9 | await contract.mint(); 10 | await contract.mint(); 11 | await contract.mint(); 12 | await contract.mint(); 13 | 14 | const res = await contract.tokenURI(1); 15 | console.log(res); 16 | const res2 = await contract.debugGenerateSVG(1); 17 | console.log(res2); 18 | } 19 | 20 | main().catch(error => { 21 | console.error(error); 22 | process.exitCode = 1; 23 | }); 24 | -------------------------------------------------------------------------------- /contract/scripts/deploy_simplefont.ts: -------------------------------------------------------------------------------- 1 | import { ethers, network } from 'hardhat'; 2 | import { addresses } from '../../src/utils/addresses'; 3 | 4 | // for mainnet forkng 5 | console.log("you need run mainnet forking node: run npx hardhat node --fork https://eth-mainnet.alchemyapi.io/v2/xxxxxx"); 6 | 7 | const lonrinaFont = addresses.londrina_solid["mainnet"]; 8 | 9 | async function main() { 10 | const factory = await ethers.getContractFactory('SimpleFontToken'); 11 | const contract = await factory.deploy("SimpleFontToken", "Font", lonrinaFont); 12 | await contract.deployed(); 13 | console.log(` simple="${contract.address}"`); 14 | 15 | await contract.mint(); 16 | await contract.mint(); 17 | await contract.mint(); 18 | await contract.mint(); 19 | 20 | const res = await contract.tokenURI(1); 21 | console.log(res); 22 | const res2 = await contract.debugGenerateSVG(1); 23 | console.log(res2); 24 | } 25 | 26 | main().catch(error => { 27 | console.error(error); 28 | process.exitCode = 1; 29 | }); 30 | -------------------------------------------------------------------------------- /contract/scripts/deploy_simplepath.ts: -------------------------------------------------------------------------------- 1 | import { ethers } from 'hardhat'; 2 | 3 | async function main() { 4 | const factory = await ethers.getContractFactory('SimplePathToken'); 5 | const contract = await factory.deploy("SimplePathToken", "Path"); 6 | await contract.deployed(); 7 | console.log(` simple="${contract.address}"`); 8 | 9 | await contract.mint(); 10 | await contract.mint(); 11 | await contract.mint(); 12 | await contract.mint(); 13 | 14 | const res = await contract.tokenURI(1); 15 | console.log(res); 16 | const res2 = await contract.debugGenerateSVG(1); 17 | console.log(res2); 18 | } 19 | 20 | main().catch(error => { 21 | console.error(error); 22 | process.exitCode = 1; 23 | }); 24 | -------------------------------------------------------------------------------- /contract/scripts/deploy_simplevector.ts: -------------------------------------------------------------------------------- 1 | import { ethers } from 'hardhat'; 2 | 3 | async function main() { 4 | const factory = await ethers.getContractFactory('SimpleVectorToken'); 5 | const contract = await factory.deploy("SimpleVectorToken", "Vector"); 6 | await contract.deployed(); 7 | console.log(` simple="${contract.address}"`); 8 | 9 | await contract.mint(); 10 | await contract.mint(); 11 | await contract.mint(); 12 | await contract.mint(); 13 | 14 | const res = await contract.tokenURI(1); 15 | console.log(res); 16 | const res2 = await contract.debugGenerateSVG(1); 17 | console.log(res2); 18 | } 19 | 20 | main().catch(error => { 21 | console.error(error); 22 | process.exitCode = 1; 23 | }); 24 | -------------------------------------------------------------------------------- /contract/scripts/deploy_test.ts: -------------------------------------------------------------------------------- 1 | import { ethers, network } from 'hardhat'; 2 | import { writeFile } from 'fs'; 3 | 4 | async function main() { 5 | const factory = await ethers.getContractFactory('SVGTest'); 6 | const contract = await factory.deploy(); 7 | await contract.deployed(); 8 | console.log(` test="${contract.address}"`); 9 | 10 | const result = await contract.main(); 11 | await writeFile(`./cache/test.svg`, result, () => {}); 12 | } 13 | 14 | main().catch(error => { 15 | console.error(error); 16 | process.exitCode = 1; 17 | }); 18 | -------------------------------------------------------------------------------- /contract/scripts/deploy_test2.ts: -------------------------------------------------------------------------------- 1 | import { ethers, network } from 'hardhat'; 2 | import { writeFile } from 'fs'; 3 | 4 | async function main() { 5 | const factory2 = await ethers.getContractFactory('SVGTest2'); 6 | const contract2 = await factory2.deploy(); 7 | await contract2.deployed(); 8 | console.log(` test2="${contract2.address}"`); 9 | 10 | const fontAddress = await contract2.font(); 11 | console.log('font', fontAddress); 12 | 13 | const result2 = await contract2.main(); 14 | await writeFile(`./cache/test2.svg`, result2, () => {}); 15 | } 16 | 17 | main().catch(error => { 18 | console.error(error); 19 | process.exitCode = 1; 20 | }); 21 | -------------------------------------------------------------------------------- /contract/scripts/deploy_test4.ts: -------------------------------------------------------------------------------- 1 | import { ethers, network } from 'hardhat'; 2 | import { writeFile } from 'fs'; 3 | 4 | async function main() { 5 | const factory = await ethers.getContractFactory('SVGTest4'); 6 | const contract = await factory.deploy(); 7 | await contract.deployed(); 8 | console.log(` test3="${contract.address}"`); 9 | 10 | const result = await contract.main(); 11 | await writeFile(`./cache/test4.svg`, result, () => {}); 12 | } 13 | 14 | main().catch(error => { 15 | console.error(error); 16 | process.exitCode = 1; 17 | }); 18 | -------------------------------------------------------------------------------- /contract/scripts/deploy_test6.ts: -------------------------------------------------------------------------------- 1 | import { ethers, network } from 'hardhat'; 2 | import { writeFile } from 'fs'; 3 | 4 | async function main() { 5 | const factory = await ethers.getContractFactory('SVGTest6Dot'); 6 | const contract = await factory.deploy(); 7 | await contract.deployed(); 8 | console.log(` test="${contract.address}"`); 9 | 10 | const result = await contract.main(); 11 | await writeFile(`./cache/test6.svg`, result, () => {}); 12 | } 13 | 14 | main().catch(error => { 15 | console.error(error); 16 | process.exitCode = 1; 17 | }); 18 | -------------------------------------------------------------------------------- /contract/scripts/deploy_test7.ts: -------------------------------------------------------------------------------- 1 | import { ethers, network } from 'hardhat'; 2 | import { writeFile } from 'fs'; 3 | 4 | async function main() { 5 | const factory = await ethers.getContractFactory('SVGTest7Filter'); 6 | const contract = await factory.deploy(); 7 | await contract.deployed(); 8 | console.log(` test3="${contract.address}"`); 9 | 10 | const result = await contract.main(); 11 | await writeFile(`./cache/test7.svg`, result, () => {}); 12 | } 13 | 14 | main().catch(error => { 15 | console.error(error); 16 | process.exitCode = 1; 17 | }); 18 | -------------------------------------------------------------------------------- /contract/test/svg/.empty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cryptocoders-wtf/generative/b5233b5f34e8bd34f54f10f11fc05f932a92441e/contract/test/svg/.empty -------------------------------------------------------------------------------- /contract/test/utils/utils.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Split an array into smaller chunks 3 | * @param array The array 4 | * @param size The chunk size 5 | */ 6 | export const chunkArray = (array: T[], size: number): T[][] => { 7 | const chunk: T[][] = []; 8 | for (let i = 0; i < array.length; i += size) { 9 | chunk.push(array.slice(i, i + size)); 10 | } 11 | return chunk; 12 | }; 13 | 14 | -------------------------------------------------------------------------------- /contract/tools/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "generative-tools", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "directories": { 7 | "test": "tests" 8 | }, 9 | "scripts": { 10 | "format": "prettier --write 'src/**/*.{js,ts,vue}'", 11 | "convert": "npx ts-node ./src/gen.ts", 12 | "path2path": "npx ts-node ./src/svg2path.ts", 13 | "path2solidity": "npx ts-node ./src/gen.ts" 14 | }, 15 | "devDependencies": { 16 | "@types/svg-parser": "^2.0.3", 17 | "prettier": "^2.7.1" 18 | }, 19 | "dependencies": { 20 | "svg-parser": "^2.0.4" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /contract/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2020", 4 | "module": "commonjs", 5 | "esModuleInterop": true, 6 | "forceConsistentCasingInFileNames": true, 7 | "strict": true, 8 | "skipLibCheck": true, 9 | "lib": [ 10 | "ES2021.String" 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /firestore.indexes.json: -------------------------------------------------------------------------------- 1 | { 2 | "indexes": [], 3 | "fieldOverrides": [] 4 | } 5 | -------------------------------------------------------------------------------- /firestore.rules: -------------------------------------------------------------------------------- 1 | rules_version = '2'; 2 | 3 | service cloud.firestore { 4 | match /databases/{database}/documents { 5 | match /message/{messageId} { 6 | allow read, create; 7 | allow delete, update: if false; 8 | } 9 | match /test/{testId} { 10 | allow read; 11 | allow create, delete, update: if false; 12 | } 13 | match /{document=**} { 14 | allow read, write: if false; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /functions/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | es6: true, 5 | node: true, 6 | }, 7 | extends: [ 8 | "eslint:recommended", 9 | "plugin:import/errors", 10 | "plugin:import/warnings", 11 | "plugin:import/typescript" 12 | ], 13 | parser: "@typescript-eslint/parser", 14 | parserOptions: { 15 | project: ["tsconfig.json", "tsconfig.dev.json"], 16 | sourceType: "module", 17 | }, 18 | ignorePatterns: [ 19 | "/lib/**/*", // Ignore built files. 20 | ], 21 | plugins: [ 22 | "@typescript-eslint", 23 | "import", 24 | ], 25 | rules: { 26 | quotes: ["error", "double"], 27 | }, 28 | }; 29 | -------------------------------------------------------------------------------- /functions/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled JavaScript files 2 | lib/**/*.js 3 | lib/**/*.js.map 4 | 5 | # TypeScript v1 declaration files 6 | typings/ 7 | 8 | # Node.js dependency directory 9 | node_modules/ 10 | -------------------------------------------------------------------------------- /functions/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "functions", 3 | "scripts": { 4 | "lint": "eslint --ext .js,.ts .", 5 | "format": "prettier --write 'src/**/*.{js,ts}'", 6 | "build": "tsc", 7 | "serve": "npm run build && firebase emulators:start --only functions", 8 | "shell": "npm run build && firebase functions:shell", 9 | "start": "npm run shell", 10 | "deploy": "firebase deploy --only functions", 11 | "logs": "firebase functions:log" 12 | }, 13 | "engines": { 14 | "node": "16" 15 | }, 16 | "main": "lib/index.js", 17 | "dependencies": { 18 | "firebase-admin": "^10.1.0", 19 | "firebase-functions": "^3.20.1", 20 | "prettier": "^2.6.2" 21 | }, 22 | "devDependencies": { 23 | "@typescript-eslint/eslint-plugin": "^5.21.0", 24 | "@typescript-eslint/parser": "^5.21.0", 25 | "eslint": "^8.14.0", 26 | "eslint-plugin-import": "^2.26.0", 27 | "firebase-functions-test": "^0.3.3", 28 | "typescript": "^4.6.3" 29 | }, 30 | "private": true 31 | } 32 | -------------------------------------------------------------------------------- /functions/src/common/exportifneeded.ts: -------------------------------------------------------------------------------- 1 | function isFunctionCalled(functionName: string): boolean { 2 | return ( 3 | !process.env.FUNCTION_NAME || process.env.FUNCTION_NAME === functionName 4 | ); 5 | } 6 | 7 | export default function exportIfNeeded( 8 | functionName: string, 9 | fileName: string, 10 | exports: any 11 | ): void { 12 | if (isFunctionCalled(functionName)) { 13 | // eslint-disable-next-line @typescript-eslint/no-var-requires 14 | exports[functionName] = require(`../wrappers/${fileName}`).default; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /functions/src/functions/test.ts: -------------------------------------------------------------------------------- 1 | import * as functions from "firebase-functions"; 2 | 3 | export const test = async ( 4 | data: {}, 5 | context: functions.https.CallableContext 6 | ) => { 7 | const uid = context?.auth?.uid; 8 | console.log(uid, data); 9 | return {}; 10 | }; 11 | -------------------------------------------------------------------------------- /functions/src/index.ts: -------------------------------------------------------------------------------- 1 | // import * as functions from "firebase-functions"; 2 | 3 | import exportIfNeeded from "./common/exportifneeded"; 4 | 5 | // // Start writing Firebase Functions 6 | // // https://firebase.google.com/docs/functions/typescript 7 | // 8 | // export const helloWorld = functions.https.onRequest((request, response) => { 9 | // functions.logger.info("Hello logs!", {structuredData: true}); 10 | // response.send("Hello from Firebase!"); 11 | // }); 12 | 13 | exportIfNeeded("test", "tests/test", exports); 14 | -------------------------------------------------------------------------------- /functions/src/wrappers/tests/test.ts: -------------------------------------------------------------------------------- 1 | import * as functions from "firebase-functions"; 2 | 3 | import { test } from "../../functions/test"; 4 | 5 | export default functions 6 | .region("asia-northeast1") 7 | .runWith({ 8 | memory: "1GB", 9 | }) 10 | .https.onCall(async (data, context) => { 11 | return await test(data, context); 12 | }); 13 | -------------------------------------------------------------------------------- /functions/tsconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": [ 3 | ".eslintrc.js" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /functions/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "noImplicitReturns": true, 5 | "noUnusedLocals": true, 6 | "outDir": "lib", 7 | "skipLibCheck": true, 8 | "sourceMap": true, 9 | "strict": true, 10 | "target": "es2017" 11 | }, 12 | "compileOnSave": true, 13 | "include": [ 14 | "src" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/FullyOnChainLogo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cryptocoders-wtf/generative/b5233b5f34e8bd34f54f10f11fc05f932a92441e/public/FullyOnChainLogo.ico -------------------------------------------------------------------------------- /public/FullyOnChainLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cryptocoders-wtf/generative/b5233b5f34e8bd34f54f10f11fc05f932a92441e/public/FullyOnChainLogo.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cryptocoders-wtf/generative/b5233b5f34e8bd34f54f10f11fc05f932a92441e/public/favicon.ico -------------------------------------------------------------------------------- /public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cryptocoders-wtf/generative/b5233b5f34e8bd34f54f10f11fc05f932a92441e/public/logo.png -------------------------------------------------------------------------------- /src/abis/ITokenGate.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "ITokenGate", 4 | "sourceName": "contracts/interfaces/ITokenGate.sol", 5 | "abi": [ 6 | { 7 | "inputs": [ 8 | { 9 | "internalType": "address", 10 | "name": "_wallet", 11 | "type": "address" 12 | } 13 | ], 14 | "name": "balanceOf", 15 | "outputs": [ 16 | { 17 | "internalType": "uint256", 18 | "name": "balance", 19 | "type": "uint256" 20 | } 21 | ], 22 | "stateMutability": "view", 23 | "type": "function" 24 | } 25 | ], 26 | "bytecode": "0x", 27 | "deployedBytecode": "0x", 28 | "linkReferences": {}, 29 | "deployedLinkReferences": {} 30 | } 31 | -------------------------------------------------------------------------------- /src/assets/architecture_gen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cryptocoders-wtf/generative/b5233b5f34e8bd34f54f10f11fc05f932a92441e/src/assets/architecture_gen.png -------------------------------------------------------------------------------- /src/assets/red160px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cryptocoders-wtf/generative/b5233b5f34e8bd34f54f10f11fc05f932a92441e/src/assets/red160px.png -------------------------------------------------------------------------------- /src/components/Blank.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | -------------------------------------------------------------------------------- /src/components/Layout.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 33 | -------------------------------------------------------------------------------- /src/components/NetworkError.vue: -------------------------------------------------------------------------------- 1 | 2 | Network Error 3 | 4 | -------------------------------------------------------------------------------- /src/components/NotFound.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ $t("message.notFoundMessage") }} 6 | 7 | 8 | 9 | 10 | 14 | -------------------------------------------------------------------------------- /src/config/project.ts: -------------------------------------------------------------------------------- 1 | export const firebaseConfig = { 2 | apiKey: "AIzaSyBfsK-o2--b2vZsHrCD1Wv4isal1d-cKQQ", 3 | authDomain: "fully-onchain.firebaseapp.com", 4 | projectId: "fully-onchain", 5 | storageBucket: "fully-onchain.appspot.com", 6 | messagingSenderId: "492217753866", 7 | appId: "1:492217753866:web:6aaa361786650123929af3", 8 | measurementId: "G-K5Z5CZVSBG", 9 | }; 10 | -------------------------------------------------------------------------------- /src/i18n/en.ts: -------------------------------------------------------------------------------- 1 | import languages from "./languages"; 2 | 3 | const lang = { 4 | header: { 5 | home: "Home", 6 | }, 7 | menu: { 8 | connect: "Connect", 9 | nometamask: "No Metamask", 10 | }, 11 | message: { 12 | notFoundMessage: "Page not found.", 13 | touchToUpdate: "Click images to regenerate.", 14 | processing: "Processing...", 15 | resources: "Resources", 16 | }, 17 | mint: { 18 | switchNetwork: "Please switch the network.", 19 | switchNetworkButton: "Switch Network.", 20 | connectMetamask: "Please connect with Metamask.", 21 | mint: "Mint", 22 | }, 23 | languages, 24 | }; 25 | 26 | export default lang; 27 | -------------------------------------------------------------------------------- /src/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import en from "./en"; 2 | import ja from "./ja"; 3 | 4 | const messages = { 5 | en, 6 | ja, 7 | }; 8 | 9 | const config = { 10 | legacy: false, 11 | globalInjection: true, 12 | locale: "en", 13 | messages, 14 | }; 15 | 16 | export const languages = Object.keys(messages); 17 | 18 | export default config; 19 | -------------------------------------------------------------------------------- /src/i18n/ja.ts: -------------------------------------------------------------------------------- 1 | import languages from "./languages"; 2 | 3 | const lang = { 4 | header: { 5 | home: "ホーム", 6 | }, 7 | message: { 8 | notFoundMessage: "ページがありません", 9 | touchToUpdate: "イメージをクリックすると再度生成します。", 10 | resources: "Resources", 11 | }, 12 | mint: { 13 | switchNetwork: "ネットワークを切り替えて下さい。", 14 | switchNetworkButton: "ネットワーク切り替え", 15 | connectMetamask: "Metamaskと接続してください。", 16 | }, 17 | languages, 18 | }; 19 | 20 | export default lang; 21 | -------------------------------------------------------------------------------- /src/i18n/languages.ts: -------------------------------------------------------------------------------- 1 | const lang = { 2 | ja: "日本語", 3 | en: "English", 4 | }; 5 | 6 | export default lang; 7 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | /* ./src/index.css */ 2 | @tailwind base; 3 | @tailwind components; 4 | @tailwind utilities; 5 | -------------------------------------------------------------------------------- /src/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.svg?raw" {} 2 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue"; 2 | import { createI18n } from "vue-i18n"; 3 | import App from "./App.vue"; 4 | import "./index.css"; 5 | import router from "./router"; 6 | import store from "./store"; 7 | 8 | import i18nConf from "./i18n/index"; 9 | import { i18nUtils } from "./i18n/utils"; 10 | 11 | const i18n = createI18n(i18nConf); 12 | 13 | const app = createApp(App); 14 | app.use(store); 15 | app.use(router); 16 | app.use(i18n); 17 | app.use(i18nUtils); 18 | 19 | app.mount("#app"); 20 | -------------------------------------------------------------------------------- /src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | declare module '*.vue' { 3 | import type { DefineComponent } from 'vue' 4 | const component: DefineComponent<{}, {}, any> 5 | export default component 6 | } 7 | -------------------------------------------------------------------------------- /src/svgs/font/pnounsNFT_font_question.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/utils/addresses/addresses_flag_goerli.ts: -------------------------------------------------------------------------------- 1 | export const token_addresses = { 2 | emojiFlagAddress: "0x4B71cC6c98182b803a15f2bdCf4c3cBF4C3035A3", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/addresses_flag_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const token_addresses = { 2 | emojiFlagAddress: "0xafe4126da89c03c4fB63A82A863083A7b675a936", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/addresses_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | storeAddress: "0x449EBbdd48e598EeD989461515ace9A5887131D8", 3 | tokenAddress: "0x2A5edcf675AE15861F4af2aBCac20aB1296800fc", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/addresses_kamon_goerli.ts: -------------------------------------------------------------------------------- 1 | export const kamon_addresses = { 2 | decoderAddress: "0xAa37fA6cEb855500E269513cA9e6E5F13B4D0D95", 3 | kamonAddress: "0x0259F141Af3FE5Fd7632D927291060e1B841e8BD", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/addresses_kamon_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const kamon_addresses = { 2 | decoderAddress: "0xAa37fA6cEb855500E269513cA9e6E5F13B4D0D95", 3 | kamonAddress: "0x8a7376bb3BaEa9d697E078E3168189D49b9cCEeB", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/addresses_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | storeAddress: "0x74Df809b1dfC099E8cdBc98f6a8D1F5c2C3f66f8", 3 | tokenAddress: "0x3f9A1B67F3a3548e0ea5c9eaf43A402d12b6a273", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/addresses_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | storeAddress: "0x847A044aF5225f994C60f43e8cF74d20F756187C", 3 | tokenAddress: "0xd724c63ADaC76Bf7632609dFc808b606c5811b35", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/alphabet_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | wallet: "0x0825F964e96c6ac72a14cD74B70f3682B48fC40e", 3 | alphabetProvider: "0x5Cad7e6dFdC0a4Fbd6664aEA2CC100Bb8c915D77", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/alphabet_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | alphabetProvider: "0xd703362287D6B578612AC0Ef01f2121eB69671e6", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/alphabet_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | wallet: "0xc1e0D3158f6bA2D6Aab5f4565C902922188beE10", 3 | alphabetProvider: "0xeAaf6D73fb5C63478D09e523a5Fd8b28f9E5Be9a", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/alphabet_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | wallet: "0x1e3516211Fe0CB030802237B4C4CE8277733a3B9", 3 | alphabetProvider: "0x673c5bA6f6C612a2Ed2e810eD91f168F7910bE9a", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/alphatoken_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | alphatoken: "0x1A774ba5673de03139e672F762F67EFf29fa1CA0", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/alphatoken_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | alphatoken: "0xE2b34D2B8Cba586aC4e3052233A460E39fF212E8", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/alphatoken_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | alphatoken: "0xd5EF5438928E81A43a49c95c1b875aAe832C980F", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/alphatoken_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | alphatoken: "0x932e948E0435D412696fc7D7c95645Fb09Ff03d1", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/bitcoin_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | assetStoreProvider: "0x69f801F34B4e9B7aDF2245FA2B686e0188e505f4", 3 | coinProvider: "0xA084b3a45044366A6af2C0521f51Ad7948e6C7E2", 4 | colorSchemes: "0xB602f54f4bFbD45d1452b0fB970726C04090b97E", 5 | bitcoinArtProvider: "0xEC361A1dbAa28fC36162c65E6b65D9a60138b994", 6 | bitcoinToken: "0x53611175752d088839c94572498D4A9783a63e02", 7 | }; 8 | -------------------------------------------------------------------------------- /src/utils/addresses/bitcoin_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | assetStoreProvider: "0x666432Ccb747B2220875cE185f487Ed53677faC9", 3 | coinProvider: "0xeC1BB74f5799811c0c1Bff94Ef76Fb40abccbE4a", 4 | colorSchemes: "0xF6a8aD553b265405526030c2102fda2bDcdDC177", 5 | bitcoinArtProvider: "0x09120eAED8e4cD86D85a616680151DAA653880F2", 6 | bitcoinToken: "0x3E661784267F128e5f706De17Fac1Fc1c9d56f30", 7 | }; 8 | -------------------------------------------------------------------------------- /src/utils/addresses/bitcoin_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | assetStoreProvider: "0xFe278A24bB517A2d2A113FA350173a6C134EECab", 3 | coinProvider: "0x0c76f60Fef1E0189161C59cE15682ABF3d38cbAe", 4 | colorSchemes: "0x8f1b45f7c56bA3db00f27Ce113fa8d8335677336", 5 | bitcoinArtProvider: "0xdfbf32A5d04aa5CD148415477591109B63b2bfB5", 6 | bitcoinToken: "0x5743cF32FfD4C1F2093AE2C94E1d036B6472E7B9", 7 | }; 8 | -------------------------------------------------------------------------------- /src/utils/addresses/circles_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | matrixGenerator: "0x9bDD64340D3CE0607f51bBC7508CA40D45849ab8", 3 | contractArt: "0xB354ECF032e9e14442bE590D9Eaee37d2924B67A", 4 | contractCircleStencil: "0xC54051689e0931FdCF3e708b665f521f7ab42Fb0", 5 | contractStencil: "0x00436c9F57dfFd96cECd129c04D9E488c57266cF", 6 | contractGlassesStencil: "0xe4a4B3Bc2787aA913e5b4bbce907e8b213250BDe", 7 | }; 8 | -------------------------------------------------------------------------------- /src/utils/addresses/colors_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | colorSchemes: "0xEAf918cc3aba362aDFBf6Ce1D95039bF4EbDB259", 3 | svgHelper: "0xEC6B0295fDb988952652ed75e1EECC3e94237A46", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/colors_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | colorSchemes: "0x6ef6ca41e5EAe230bf481fFe99Fa231CD8E1d3d8", 3 | svgHelper: "0xE46199b2B205C3eb31d6e41C2c161137BEf26d06", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/dotNounsToken_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | dotNounsToken: "0x3b14c6858883a232F72cA0c3BA140C393cB63525", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/dotNounsToken_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | dotNounsToken: "0xd038A2EE73b64F30d65802Ad188F27921656f28F", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/dotNounsToken_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | dotNounsToken: "0x1e3516211Fe0CB030802237B4C4CE8277733a3B9", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/dotNouns_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | dotNounsArt: "0x63BD0a939bDA16868Dfc976231F6a5943A3Fd6A0", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/dotNouns_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | dotNounsArt: "0xFC4EE541377F3b6641c23CBE82F6f04388290421", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/dotNouns_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | dotNounsArt: "0x932e948E0435D412696fc7D7c95645Fb09Ff03d1", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/dynamic_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | tokenGate: "0x025B85c8071E4ab4A91c1D541Ed1fE99D6cAd04F", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/dynamic_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | tokenGate: "0xbf2ad38fd09F37f50f723E35dd84EEa1C282c5C9", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/dynamic_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | tokenGate: "0x5C8d7748bF07709D3adC3f74fa0255F9f358C8b1", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/dynamic_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | tokenGate: "0x534eB18Cb9C2D4035602f52bCCDD82edDbfcC838", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/lilnouns_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | providerAddress: "0x6a646f6F31A5b5c40e0E2F12c05eE68eD62b43c0", 3 | dotNounsArt: "0x79707C917079B771E7aCEb96c95B737e7655a3cd", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/localNounsDescriptor_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | localNounsDescriptor:"0xDC11f7E700A4c898AE5CAddB1082cFfa76512aDD", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/localNounsDescriptor_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | localNounsDescriptor:"0x7351860b203bDDAC7e987F7d3B4e809960d05cf1", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/localNounsMinter_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | localNounsMinter:"0x8198f5d8F8CfFE8f9C413d98a0A55aEB8ab9FbB7", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/localNounsMinter_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | localNounsMinter:"0x0d602965065c64e6d5d69834C246863472aac4A5", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/localNounsProvider_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | localNounsProvider:"0x51A1ceB83B83F1985a81C295d1fF28Afef186E02", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/localNounsProvider_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | localNounsProvider:"0xfB4Fa72bcA36e02E24D2081EcBcf8D6d071CCE03", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/localNounsToken_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | localNounsToken:"0x36b58F5C1969B7b6591D752ea6F5486D069010AB", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/localNounsToken_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | localNounsToken:"0x4d21F695453D2d206D72A08086f0440A97A82125", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/localseeder_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | localseeder:"0xD8a5a9b31c3C0232E196d518E89Fd8bF83AcAd43", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/localseeder_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | localseeder:"0x14E6BC05997989d6B5a1F2910Fe9eD4eC25F1294", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/londrina_solid_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | font: "0xbFde916e6315365567F3504E20166F92474dc4ea", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/londrina_solid_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | font:"0x15cAbd0536f9707d1c03b21dDdC556726D7FF136", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/londrina_solid_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | font: "0x980aAc123617e2B2ea407081Ceb72d5854BAa3D1", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/londrina_solid_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | font:"0xD0A75dF37c7E40361789886740287FbFB8cF6cd3", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/londrina_solid_polygon.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | font:"0x1183F445E209051ecB8f0c062153F2b2110F806A", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/matrix_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | matrix: "0xf1a0508d990023e2EbC2D4C957Dd48E48C5bb7CB", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/matrix_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | matrix: "0x10224eff6B1Caaf5daC49B2e7104b7161484B128", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/matrix_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | matrix: "0x2EA9EB0Fb894b560B3CA0e2F623ef9746eb98F0b", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/matrix_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | matrix: "0xEB2D0d8e287d66303b9CBc7De7C9e9E743448c8f", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/message_pnouns_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | messagePnounsToken: "0xF277D0d606E8749CC6bf102871fED902F843Fdb0", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/message_splatter_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | messageSplatterToken: "0x29ef4ee08c5bc5e158b96665c49adf6a26392153", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/messageprovider_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | messageProvider: "0xaf5902C67Ff32b6Bc971Fb732888A8fdB9CECf48", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/messageprovider_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | messageProvider: "0xd4416aE65D7Ad86405D2D97e9DE5Bf6675A5ACaC", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/messageprovider_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | messageProvider: "0x0a55020dB260079B5853C3817ba60Fd1CB3528f2", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/messagestore2_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | messageStore: "0xEfdE86a24ac55D9AcCEDdAc5f0357949a2c1BD3a", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/messagestore2_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | messageStore: "0x7De52d6d12044AcfD720D2C7f3BC679c68673BEE", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/messagestore2_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | messageStore: "0x923747177065d5c267a57DB6b64AD89ee099F672", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/messagestore_londrinasolid_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | messagestore: "0x7c56D603Eb7976ee6592F7DDa8118576a9FDfeA3", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/messagestore_notosans_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | messagestore: "0x9bF2831b806CEbD0B09d490c90C88bcb47515C62", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/messagetoken_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | messageToken: "0x8C4aa1A2887bD3abC110CB91aC198569b6f92E76", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/messagetoken_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | messageToken: "0x1025d7bCcE981D9808C05d51151DCeFD747Edc02", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/messagetoken_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | messageToken: "0x4718CfA8DbC4A5C57490f47d6877750bBab3B22B", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/nftDescriptor_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | nftDescriptor:"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/nftDescriptor_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | nftDescriptor:"0x77dD7d8d4a7091a64c25Eb0127839ff1f467edCa", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/noto_sans_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | font: "0xf4fd7f7e9fC89B2F539BE378214EbB768ECBf91B", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/noto_sans_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | font: "0x6212cb549De37c25071cF506aB7E115D140D9e42", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/noto_sans_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | font: "0xAeFA677f6C94B5db823fd837857D79B9d5AFba4e", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/noto_sans_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | font: "0xCBbC30D7d8b9DCF720f4FfB98Ef42E5A2633B791", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/nounsDescriptor_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | nounsDescriptor:"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/nounsDescriptor_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | nounsDescriptor:"0xE61d3572FDc4Bd1A49fa8bc691E3A0650FF0DdfC", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/nounsSeeder_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | nounsSeeder:"0x5FbDB2315678afecb367f032d93F642f64180aa3", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/nounsSeeder_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | nounsSeeder:"0x86c95EC4fA955505E0B904CFCF232E93e17a1c75", 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/addresses/nounsV2_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | providerAddress: "0xe4820087f63f1CA2f487451c76ae8cA8C87Ba6bB", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/nounsV2_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | providerAddress: "0x6B9C4119796C80Ced5a3884027985Fd31830555b", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/nounsV2_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | providerAddress: "0x1E93414cf36659084963E66c7cD24bDd00a55917", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/nouns_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | providerAddress: "0x95D17E39e79b07bE36865831816B0Fac2c234708", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/nouns_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | providerAddress: "0xB7ca895F81F20e05A5eb11B05Cbaab3DAe5e23cd", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/nouns_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | providerAddress: "0x9385bA0ac58A29720Ff1a746f1CE60C6c7FfFA93", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/paperNounsToken_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | token: "0xf2b75BE22fd865f7dE4C30f8654CE041Bd1e2FF2", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/paperNounsToken_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | token: "0x2ce1F0e20C1f69E9d9AEA83b25F0cEB69e2AA2b5", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/paperNounsToken_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | token: "0xC7FA5764f936bEB859869a96d336D29D9cFe7D25", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/paperNouns_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | dotNounsArt: "0x4EA1b6958765447B9A6Be1E9AEF42Ad756c3cf36", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/paperNouns_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | dotNounsArt: "0x6c383Ef7C9Bf496b5c847530eb9c49a3ED6E4C56", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/paperNouns_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | dotNounsArt: "0x4b5794e4Fd9B927EE76d74B2411fCA9ACedF0375", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/pnouns2_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | pnouns: "0xd904727798B7E9DC4877DA328192Bf4fCB3B23A3", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/pnouns2_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | pnouns: "0xEcC1ec365c0bf39983a87197Afa9e8392871D4F0", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/pnouns_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | pnouns: "0x0bC4A7b89FbdDB6623401Bb4fB12b358861E3B86", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/pnouns_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | pnouns: "0x0d6e43d4d7944408d9a5A10BC57B4348d61cD764", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/pnouns_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | pnouns: "0x2e5C0BD35995ea7e8903C55ba66f28270310498f", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/reddit_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | coinHoleProvider: "0x062659a1BeCAf767626bb34c3D1427bd1b9246c4", 3 | redditArtProvider: "0x403a4A6C9B94929Ff6369BC5C9E6Af04714b6f7c", 4 | redditToken: "0x7F9FC35f0a656B1a355bda27De5AB25f9Abd9eFb", 5 | }; 6 | -------------------------------------------------------------------------------- /src/utils/addresses/sample_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | providerAddress: "0x0AFd3ed6D9446352Cfe7A85ABc0dA94dc6f8C50a", 3 | sampleToken: "0xbD73226235E35CC70eFaC05eEb05B3DFa069Fb72", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/sample_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | providerAddress:"0x7Cf4be31f546c04787886358b9486ca3d62B9acf", 3 | sampleToken:"0x33E45b187da34826aBCEDA1039231Be46f1b05Af" 4 | } 5 | -------------------------------------------------------------------------------- /src/utils/addresses/snow_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | snowAddress: "0xa92675Feb3a316d73ec9D8f2A0De7b90b25b1351", 3 | snowArtAddress: "0x43D045Fea77f674b1AFbfC47d018953Ab02c748a", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/snow_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | snowAddress: "0x6345e50859b0Ce82D8A495ba9894C6C81de385F3", 3 | snowArtAddress: "0x88D1aF96098a928eE278f162c1a84f339652f95b", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/splatter_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | svgHelperAddress: "0xb1CB3D09C4C3878FD8440414C07C3dB085EcBADd", 3 | splatterAddress: "0x15C40F258B1fc68c109FE3E3CFF191a80f24E4C1", 4 | splatterArtAddress: "0x9E9e016785b50983Bb2773cE468c479a5D5f64A3", 5 | splatterToken: "0xfB75Dce8960C4F38b2550c6Eeb0CE40049D242cb", 6 | }; 7 | -------------------------------------------------------------------------------- /src/utils/addresses/splatter_hardhat.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | splatterAddress: "0x5FbDB2315678afecb367f032d93F642f64180aa3", 3 | splatterArtAddress: "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", 4 | }; 5 | -------------------------------------------------------------------------------- /src/utils/addresses/splatter_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | svgHelperAddress: "0x707531c9999AaeF9232C8FEfBA31FBa4cB78d84a", 3 | splatterAddress: "0x2538a10b7fFb1B78c890c870FC152b10be121f04", 4 | splatterArtAddress: "0x24432a08869578aAf4d1eadA12e1e78f171b1a2b", 5 | splatterToken: "0xdB05A386810c809aD5a77422eb189D36c7f24402", 6 | }; 7 | -------------------------------------------------------------------------------- /src/utils/addresses/splatter_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | svgHelperAddress: "0x9F2dC3f778c07987Fcf5a225c3EFD29400930D50", 3 | splatterAddress: "0xFf2738683Eb630cf6322aBf47c449bDc963EA062", 4 | splatterArtAddress: "0xB6260e3b97668DCa728d50f4F25C9f824D7BF406", 5 | splatterToken: "0x6ef6ca41e5EAe230bf481fFe99Fa231CD8E1d3d8", 6 | }; 7 | -------------------------------------------------------------------------------- /src/utils/addresses/splatter_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | svgHelperAddress: "0x7aca88Dc990fF22592D24310c04538b725e94Ffc", 3 | splatterAddress: "0x256Ba9c4DD146f3EBf0f7D0a3Ddea3F400CE806D", 4 | splatterArtAddress: "0xdfbf32A5d04aa5CD148415477591109B63b2bfB5", 5 | splatterToken: "0x5743cF32FfD4C1F2093AE2C94E1d036B6472E7B9", 6 | }; 7 | -------------------------------------------------------------------------------- /src/utils/addresses/splatter_rinkeby.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | splatterAddress: "0xbFa44cbFFd136Df38B7E5f427Ee730Bb27456291", 3 | splatterArtAddress: "0xB7d7135b06b0B707c4b8b3d855dFC27460bb9B5a", 4 | splatterToken: "0xe050F46104af81e4a1948dE20cd221b5846f5970", 5 | }; 6 | -------------------------------------------------------------------------------- /src/utils/addresses/star_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | starAddress: "0xeb52De49a1C1Fc402577b772f0ea6442d263C2DC", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/star_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | starAddress: "0x232A4710D1A21AfEfB021654C5B48092e5faB67F", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/star_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | starAddress: "0x2782193f6aA2Dd03656585AB30e18451534392e6", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/svgimage_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | store: "0x278b4103044cb8E7c999D2abe4192435f5B4D2Be", 3 | provider: "0x76EE1a7940E2297C72973f6AE50745ff24e31086", 4 | token: "0x67b8571A13410a2687b8ceA1C416b88d75165Fc6", 5 | }; 6 | -------------------------------------------------------------------------------- /src/utils/addresses/tokenGate_goerli.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | tokenGate: "0x0C8a3962a997E03BCd3648E3dEd068712D288c33", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/tokenGate_localhost.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | tokenGate: "0xb007167714e2940013EC3bb551584130B7497E22", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/tokenGate_mainnet.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | tokenGate: "0xEDE1a69DB77c4CBa8d15F9170568959a56Ce9c05", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/addresses/tokenGate_mumbai.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | tokenGate: "0xD601E7E7138EDAfdC4FE9D2e3c7E8827D648DcEb", 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/currency.ts: -------------------------------------------------------------------------------- 1 | import { BigNumber } from "ethers"; 2 | 3 | export const aBillion = 1000000000; 4 | 5 | export const weiToGwei = (amount: BigNumber) => { 6 | return amount.div(BigNumber.from(aBillion)); 7 | }; 8 | 9 | export const weiToEther = (amount: BigNumber) => { 10 | const amountInGwei = weiToGwei(amount); 11 | return amountInGwei.toNumber() / aBillion; 12 | }; 13 | -------------------------------------------------------------------------------- /src/utils/types.ts: -------------------------------------------------------------------------------- 1 | import { ElementNode } from "svg-parser"; 2 | 3 | export interface Properties { 4 | transform: string[]; 5 | id: string; 6 | } 7 | export interface PathElement { 8 | ele: ElementNode; 9 | properties: Properties; 10 | } 11 | export interface PathData { 12 | path: string; 13 | fill: string; 14 | stroke: number; 15 | strokeW: number; 16 | matrix?: any; 17 | } 18 | export interface DefsObj { 19 | [key: string]: ElementNode[]; 20 | } 21 | export interface TransFormData { 22 | scaleX?: number; 23 | skewY?: number; 24 | skewX?: number; 25 | scaleY?: number; 26 | translateX?: number; 27 | translateY?: number; 28 | } 29 | -------------------------------------------------------------------------------- /src/views/Experiment.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 23 | -------------------------------------------------------------------------------- /src/views/Font.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | nota sans 4 | 5 | londrina solid 6 | 7 | 8 | 9 | 10 | 11 | 36 | -------------------------------------------------------------------------------- /src/views/Star.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 16 | 17 | 18 | 19 | 32 | -------------------------------------------------------------------------------- /storage.rules: -------------------------------------------------------------------------------- 1 | rules_version = '2'; 2 | service firebase.storage { 3 | match /b/{bucket}/o { 4 | match /{allPaths=**} { 5 | allow read, write: if request.auth!=null; 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: [ 3 | './public/**/*.html', 4 | './src/**/*.{js,jsx,ts,tsx,vue}', 5 | ], 6 | theme: { 7 | extend: {}, 8 | }, 9 | plugins: [], 10 | } 11 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "esnext", 5 | "strict": true, 6 | "jsx": "preserve", 7 | "importHelpers": true, 8 | "moduleResolution": "node", 9 | "skipLibCheck": true, 10 | "esModuleInterop": true, 11 | "allowSyntheticDefaultImports": true, 12 | "sourceMap": true, 13 | "baseUrl": ".", 14 | "types": [ 15 | "webpack-env" 16 | ], 17 | "paths": { 18 | "@/*": [ 19 | "src/*" 20 | ] 21 | }, 22 | "lib": [ 23 | "esnext", 24 | "dom", 25 | "dom.iterable", 26 | "scripthost" 27 | ] 28 | }, 29 | "include": [ 30 | "src/**/*.ts", 31 | "src/**/*.tsx", 32 | "src/**/*.vue", 33 | "tests/**/*.ts", 34 | "tests/**/*.tsx" 35 | ], 36 | "exclude": [ 37 | "node_modules" 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | const webpack = require('webpack'); 2 | 3 | module.exports = { 4 | configureWebpack: { 5 | module: { 6 | rules: [ 7 | { 8 | resourceQuery: /raw/, 9 | type: 'asset/source', 10 | } 11 | ], 12 | }, 13 | plugins: [ 14 | new webpack.ProvidePlugin({ 15 | Buffer: ['buffer', 'Buffer'], 16 | }), 17 | /* 18 | new webpack.ProvidePlugin({ 19 | process: 'process/browser', 20 | }), 21 | */ 22 | ], 23 | resolve: { 24 | fallback: { 25 | "buffer": require.resolve('buffer/'), 26 | "http": 'agent-base', 27 | "https": 'agent-base', 28 | "fs": false, 29 | "path": false, 30 | "stream": false, 31 | "crypto": false, 32 | "os": false, 33 | "url": false, 34 | "assert": false, 35 | } 36 | } 37 | } 38 | }; 39 | --------------------------------------------------------------------------------