├── .github ├── actions │ ├── anchor-publish │ │ └── action.yaml │ ├── create-proposal │ │ └── action.yaml │ ├── deploy-with-gov-proposal │ │ └── action.yaml │ ├── setup-anchor │ │ └── action.yaml │ ├── setup-solana │ │ └── action.yaml │ ├── setup-ts │ │ └── action.yaml │ ├── setup │ │ └── action.yaml │ └── upload-bpf │ │ └── action.yaml └── workflows │ ├── canary-release.yaml │ ├── create-release-pr.yaml │ ├── devnet-proposal.yaml │ ├── mainnet-proposal.yaml │ ├── publish.yaml │ └── tests.yaml ├── .gitignore ├── .gitmodules ├── .husky └── pre-commit ├── .rustfmt.toml ├── .vscode └── launch.json ├── .yarn └── releases │ └── yarn-1.22.4.js ├── .yarnrc ├── Anchor.toml ├── CHANGELOG.md ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── README.md ├── bootstrap-localnet.sh ├── default.profraw ├── lerna-debug.log ├── lerna.json ├── localnet.pid ├── migrations └── deploy.ts ├── package.json ├── packages ├── LICENSE ├── accelerator │ ├── .gitignore │ ├── CHANGELOG.md │ ├── package.json │ ├── rollup.config.ts │ ├── src │ │ ├── index.ts │ │ └── subscribeTransactions.ts │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ └── tsconfig.json ├── chat-ui │ ├── .env.development │ ├── .env.production │ ├── .eslintrc.json │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── next-env.d.ts │ ├── next-seo.config.js │ ├── next.config.js │ ├── package.json │ ├── pages │ │ ├── _app.tsx │ │ ├── _document.tsx │ │ ├── app.css │ │ ├── c │ │ │ ├── [id].tsx │ │ │ └── index.tsx │ │ └── index.tsx │ ├── public │ │ ├── 68755117-woodblock-notification-license.txt │ │ ├── OC.jpg │ │ ├── Taiyo.jpg │ │ ├── cardinal-logo.png │ │ ├── favicon.ico │ │ ├── genesysgo-logo.png │ │ ├── jupiter-logo.png │ │ ├── lit-logo.png │ │ ├── logo-white.svg │ │ ├── logo.svg │ │ ├── metaplex-logo.png │ │ ├── notification.mp3 │ │ ├── orca-logo.png │ │ ├── privacy-policy.pdf │ │ ├── seoDefaultCardImage.jpg │ │ ├── splash.png │ │ └── terms-of-service.pdf │ ├── rollup.config.ts │ ├── src │ │ ├── components │ │ │ ├── BuyMoreButton.tsx │ │ │ ├── ChatMessages.tsx │ │ │ ├── ChatProviders.tsx │ │ │ ├── Chatroom.tsx │ │ │ ├── Container.tsx │ │ │ ├── CopyBlackBox.tsx │ │ │ ├── CreateChat │ │ │ │ ├── BasicInfo.tsx │ │ │ │ ├── CreateChatButton.tsx │ │ │ │ ├── CreateChatModal.tsx │ │ │ │ ├── NFTForm.tsx │ │ │ │ ├── Permission.tsx │ │ │ │ ├── PermissionType.tsx │ │ │ │ ├── ProgressStep.tsx │ │ │ │ ├── Summary.tsx │ │ │ │ ├── TokenForm.tsx │ │ │ │ └── wizardSubmit.ts │ │ │ ├── CreateProfileModal.tsx │ │ │ ├── DarkModeSwitch.tsx │ │ │ ├── EmojiPicker.tsx │ │ │ ├── EmojiSearch.tsx │ │ │ ├── FileUploadMask.tsx │ │ │ ├── Files.tsx │ │ │ ├── GifSearch.tsx │ │ │ ├── Header.tsx │ │ │ ├── Layout.tsx │ │ │ ├── LegacyWalletMigrationModal.tsx │ │ │ ├── LitProtocolWarning.tsx │ │ │ ├── LoadWalletModal.tsx │ │ │ ├── LongPromiseNotification.tsx │ │ │ ├── ProfileButton.tsx │ │ │ ├── Sidebar.tsx │ │ │ ├── TokenFlare.tsx │ │ │ ├── Wallet.tsx │ │ │ ├── chatbox │ │ │ │ ├── ChatInput.tsx │ │ │ │ ├── Chatbox.tsx │ │ │ │ ├── ChatboxWithGuards.tsx │ │ │ │ └── ReplyBar.tsx │ │ │ ├── form │ │ │ │ ├── FileAttachment.tsx │ │ │ │ ├── FormControlWithError.tsx │ │ │ │ ├── MintSelect.tsx │ │ │ │ └── RadioCard.tsx │ │ │ ├── landing │ │ │ │ ├── ActiveUsers.tsx │ │ │ │ ├── FeaturedCommunities.tsx │ │ │ │ ├── Footer.tsx │ │ │ │ ├── Header.tsx │ │ │ │ └── NewCommunities.tsx │ │ │ ├── message │ │ │ │ ├── DisplayReply.tsx │ │ │ │ ├── Message.tsx │ │ │ │ ├── MessageBody.tsx │ │ │ │ ├── MessageHeader.tsx │ │ │ │ ├── MessageStatus.tsx │ │ │ │ ├── MessageToolbar.tsx │ │ │ │ └── Reacts.tsx │ │ │ └── rooms │ │ │ │ ├── ChatSidebarPreview.tsx │ │ │ │ └── RoomsHeader.tsx │ │ ├── constants │ │ │ ├── emojiList.json │ │ │ ├── filterEmoji.ts │ │ │ └── globals.ts │ │ ├── contexts │ │ │ ├── chatSdk.tsx │ │ │ ├── emojis.tsx │ │ │ ├── reply.tsx │ │ │ └── sendMessage.tsx │ │ ├── hooks │ │ │ ├── useAnalyticsEventTracker.tsx │ │ │ ├── useCaseInsensitiveMarker.ts │ │ │ ├── useChat.tsx │ │ │ ├── useChatIdFromIdentifierCertificate.ts │ │ │ ├── useChatKey.ts │ │ │ ├── useChatKeyFromIdentifier.ts │ │ │ ├── useChatOwnedAmounts.ts │ │ │ ├── useChatPermissions.ts │ │ │ ├── useChatPermissionsFromChat.ts │ │ │ ├── useChatPermissionsKey.ts │ │ │ ├── useChatStorageAccountKey.ts │ │ │ ├── useChats.ts │ │ │ ├── useDelegateWallet.ts │ │ │ ├── useDelegateWalletStruct.ts │ │ │ ├── useDelegateWalletStructKey.ts │ │ │ ├── useEmojiSearch.ts │ │ │ ├── useInflatedReacts.ts │ │ │ ├── useLoadDelegate.tsx │ │ │ ├── useMessages.ts │ │ │ ├── useProfile.tsx │ │ │ ├── useProfileKey.tsx │ │ │ ├── useSettings.tsx │ │ │ ├── useSettingsKey.ts │ │ │ ├── useUsernameFromIdentifierCertificate.ts │ │ │ ├── useWalletFromChatIdentifier.ts │ │ │ ├── useWalletFromUsernameIdentifier.ts │ │ │ ├── useWalletProfile.tsx │ │ │ ├── useWalletSettings.tsx │ │ │ └── useWindowSize.ts │ │ ├── index.ts │ │ ├── routes.ts │ │ ├── script │ │ │ ├── analytics.ts │ │ │ ├── claimName.ts │ │ │ └── createChat.ts │ │ ├── svg │ │ │ ├── Strata.tsx │ │ │ └── Wallet.tsx │ │ └── utils │ │ │ └── gtag.ts │ ├── styles │ │ └── globals.css │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ └── tsconfig.json ├── chat │ ├── .gitignore │ ├── CHANGELOG.md │ ├── package.json │ ├── rollup.config.ts │ ├── src │ │ ├── generated │ │ │ └── chat.ts │ │ ├── index.ts │ │ ├── lit.ts │ │ └── shdw.ts │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ ├── tsconfig.json │ └── yarn-error.log ├── cli │ ├── .gitignore │ ├── CHANGELOG.md │ ├── package.json │ ├── src │ │ ├── bootstrap.ts │ │ ├── bounty-dist.ts │ │ ├── createGovernanceToken.ts │ │ ├── flatten-curves.ts │ │ ├── get-holders.ts │ │ ├── idlToTs.js │ │ └── raffle-winner.ts │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ └── tsconfig.json ├── docs │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── babel.config.js │ ├── blog │ │ ├── 2021-11-16-wumbo-beta-dist.mdx │ │ ├── 2021-11-17-welcome │ │ │ └── index.mdx │ │ ├── 2021-12-01-open-collective │ │ │ ├── 0.5x.png │ │ │ ├── OpenSplash.png │ │ │ ├── day_2.png │ │ │ ├── final.png │ │ │ ├── index.mdx │ │ │ └── launch.png │ │ ├── 2021-12-21-governance │ │ │ ├── actions.png │ │ │ ├── add-asset.png │ │ │ ├── bespoke.png │ │ │ ├── create-program.png │ │ │ ├── create-realm.png │ │ │ ├── create-secret.png │ │ │ ├── end-result.png │ │ │ ├── execute.png │ │ │ ├── governance-id.png │ │ │ ├── index.md │ │ │ ├── realm-form.png │ │ │ ├── splash.png │ │ │ ├── upgrade-form.png │ │ │ ├── upgrade.png │ │ │ ├── vote-in-progress.png │ │ │ ├── vote.png │ │ │ └── wallet.png │ │ ├── 2022-03-31-blockasset-tokens │ │ │ ├── banner.jpg │ │ │ ├── blockasset.png │ │ │ ├── index.md │ │ │ └── sqrt-plot-sm.png │ │ ├── 2022-04-05-funding │ │ │ ├── index.mdx │ │ │ ├── logo.png │ │ │ └── splash.jpg │ │ ├── 2022-04-12-create-a-token │ │ │ ├── create-a-token.png │ │ │ ├── disburse.png │ │ │ ├── fully-managed-done.png │ │ │ ├── fully-managed-info.png │ │ │ ├── fully-managed.png │ │ │ ├── index.mdx │ │ │ ├── logo.png │ │ │ ├── price-sensitivity.png │ │ │ ├── self-managed-done.png │ │ │ ├── self-managed.png │ │ │ └── social-token-info.png │ │ ├── 2022-04-25-solana-composability │ │ │ ├── eth-accounts.png │ │ │ ├── hero.png │ │ │ ├── index.md │ │ │ └── token-system.png │ │ ├── 2022-06-24-genopets-launch │ │ │ ├── hero.png │ │ │ ├── index.mdx │ │ │ ├── ki-price.jpeg │ │ │ └── ki.jpeg │ │ ├── 2022-06-8-metaplex-partnership │ │ │ ├── dynamic-mint-history.jpeg │ │ │ ├── hero.jpg │ │ │ └── index.mdx │ │ ├── 2022-08-25-sunsetting-wumbo │ │ │ ├── hero.jpg │ │ │ ├── index.mdx │ │ │ ├── wumboExtensionCard.jpg │ │ │ └── wumboExtensionCardRemove.jpg │ │ ├── 2022-1-10-us-legal │ │ │ └── index.md │ │ ├── 2022-1-19-buy-open │ │ │ ├── OpenSplash.png │ │ │ └── index.mdx │ │ ├── 2022-1-19-wumbo-beta-open-dist │ │ │ ├── index.mdx │ │ │ └── wumopen.png │ │ ├── 2022-11-2-helium-acquisition │ │ │ └── index.md │ │ └── authors.yml │ ├── docs │ │ ├── curve_configurator.md │ │ ├── getting_started.md │ │ ├── im │ │ │ ├── composability.mdx │ │ │ └── getting_started.mdx │ │ ├── launchpad │ │ │ ├── admin │ │ │ │ ├── dynamic-pricing-mint.mdx │ │ │ │ ├── fixed-price.mdx │ │ │ │ ├── fully-managed.mdx │ │ │ │ └── lbc.mdx │ │ │ ├── bounties.mdx │ │ │ ├── dynamic-mint-history.jpeg │ │ │ ├── dynamic-pricing-mint.mdx │ │ │ ├── fungible-entangler.mdx │ │ │ ├── lbc.mdx │ │ │ ├── lbp.png │ │ │ └── token-offerings.mdx │ │ ├── learn │ │ │ ├── 1_hour.png │ │ │ ├── 2_hours.png │ │ │ ├── 30_seconds.png │ │ │ ├── _category_.json │ │ │ ├── advanced_bonding_curves.md │ │ │ ├── bonding_curves.md │ │ │ ├── collectives.md │ │ │ ├── day_2.png │ │ │ ├── fair_launch.md │ │ │ ├── fetching_data.md │ │ │ ├── final.png │ │ │ ├── injection.png │ │ │ ├── launch.png │ │ │ ├── social_tokens.md │ │ │ └── visualization.png │ │ ├── playground.md │ │ └── react.md │ ├── docusaurus.config.js │ ├── package.json │ ├── sidebars.js │ ├── src │ │ ├── components │ │ │ ├── BuyOpen │ │ │ │ ├── index.tsx │ │ │ │ └── styles.module.css │ │ │ ├── CandyMachineConfig │ │ │ │ └── index.tsx │ │ │ ├── ClaimBwum │ │ │ │ ├── index.tsx │ │ │ │ └── styles.module.css │ │ │ ├── ClaimOpen │ │ │ │ ├── index.tsx │ │ │ │ └── styles.module.css │ │ │ ├── CloseOutWumbo │ │ │ │ ├── closeOutWumboSubmit.ts │ │ │ │ ├── index.tsx │ │ │ │ └── styles.module.css │ │ │ ├── ConvertCMIfNeeded │ │ │ │ └── index.tsx │ │ │ ├── CurveConfigurator │ │ │ │ └── index.tsx │ │ │ ├── CurveConfiguratorFromBonding │ │ │ │ └── index.tsx │ │ │ ├── HomepageFeatures.module.css │ │ │ ├── HomepageFeatures.tsx │ │ │ ├── NetworkSelect │ │ │ │ └── index.tsx │ │ │ ├── QueryStringSetter │ │ │ │ └── index.tsx │ │ │ ├── UpdateRoyalties │ │ │ │ └── index.tsx │ │ │ ├── UrlDisplay │ │ │ │ └── index.tsx │ │ │ └── VariableDisburseFunds │ │ │ │ └── index.tsx │ │ ├── contexts │ │ │ └── Wallet.tsx │ │ ├── css │ │ │ └── custom.css │ │ ├── pages │ │ │ ├── index.module.css │ │ │ └── markdown-page.md │ │ ├── plugins │ │ │ └── webpack-loader │ │ │ │ └── index.js │ │ └── theme │ │ │ ├── CodeBlock │ │ │ └── index.js │ │ │ ├── Playground │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ │ ├── ReactLiveScope │ │ │ ├── AsyncButton.tsx │ │ │ ├── index.js │ │ │ └── styles.module.css │ │ │ └── Root │ │ │ ├── bufferFill.ts │ │ │ ├── index.tsx │ │ │ ├── variables.tsx │ │ │ └── wdyr.ts │ ├── static │ │ ├── .nojekyll │ │ ├── img │ │ │ ├── BuildwithReact.png │ │ │ ├── EasytoUse.png │ │ │ ├── FreeandOpen.png │ │ │ ├── favicon.ico │ │ │ ├── logo.png │ │ │ └── tutorial │ │ │ │ ├── docsVersionDropdown.png │ │ │ │ └── localeDropdown.png │ │ ├── learnSTRAT.json │ │ ├── luvSTRAT.json │ │ └── tCOLL.json │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ └── tsconfig.json ├── fungible-entangler │ ├── .gitignore │ ├── CHANGELOG.md │ ├── package.json │ ├── rollup.config.ts │ ├── src │ │ ├── generated │ │ │ └── fungible-entangler.ts │ │ ├── index.ts │ │ └── utils.ts │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ └── tsconfig.json ├── governance-cli │ ├── .env.dev │ ├── .env.prod │ ├── .gitignore │ ├── CHANGELOG.md │ ├── package.json │ ├── src │ │ ├── borshFill.ts │ │ ├── closeBuffersProposal.ts │ │ ├── createCloseInstruction.ts │ │ ├── createIdlUpgradeInstruction.ts │ │ ├── createProposal.ts │ │ └── createUpgradeInstruction.ts │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ └── tsconfig.json ├── marketplace-sdk │ ├── .gitignore │ ├── CHANGELOG.md │ ├── package.json │ ├── rollup.config.ts │ ├── src │ │ ├── bootstrap.ts │ │ └── index.ts │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ ├── tsconfig.json │ └── vite.config.ts ├── marketplace-ui │ ├── .env.development │ ├── .env.production │ ├── .eslintrc.json │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── next-env.d.ts │ ├── next-seo.config.js │ ├── next.config.js │ ├── package.json │ ├── pages │ │ ├── _app.tsx │ │ ├── _document.tsx │ │ ├── api │ │ │ ├── get-token.ts │ │ │ └── validate-token.ts │ │ ├── bounties │ │ │ ├── [mintKey] │ │ │ │ ├── edit.tsx │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── edit-metadata │ │ │ └── index.tsx │ │ ├── index.tsx │ │ ├── launchpad │ │ │ ├── admin │ │ │ │ └── [mintKey] │ │ │ │ │ └── index.tsx │ │ │ ├── bounties │ │ │ │ └── new.tsx │ │ │ ├── create.tsx │ │ │ ├── fixed-price │ │ │ │ └── new.tsx │ │ │ ├── fully-managed │ │ │ │ └── new.tsx │ │ │ ├── index.tsx │ │ │ ├── lbcs │ │ │ │ └── new.tsx │ │ │ ├── manual │ │ │ │ └── new.tsx │ │ │ ├── metadata.tsx │ │ │ ├── mytokens.tsx │ │ │ └── sell.tsx │ │ ├── lbcs │ │ │ ├── mint │ │ │ │ └── [candyMachineId] │ │ │ │ │ └── index.tsx │ │ │ └── token-offering │ │ │ │ └── [id] │ │ │ │ └── index.tsx │ │ ├── raffle-winner │ │ │ └── [mintKey] │ │ │ │ └── index.tsx │ │ ├── sales │ │ │ └── [mintKey] │ │ │ │ └── index.tsx │ │ ├── swap │ │ │ └── [id] │ │ │ │ └── index.tsx │ │ └── token-offering │ │ │ └── [id] │ │ │ └── index.tsx │ ├── public │ │ ├── aggressive.svg │ │ ├── arweave.png │ │ ├── create-a-token.svg │ │ ├── dynamic-pricing-mint.svg │ │ ├── favicon.ico │ │ ├── fixed-price.svg │ │ ├── fully-managed.svg │ │ ├── fundraise.svg │ │ ├── logo-launchpad.svg │ │ ├── logo-marketplace.svg │ │ ├── logo-white.svg │ │ ├── metaplex-logo.svg │ │ ├── nft-storage.png │ │ ├── price-discovery.svg │ │ ├── self-managed.svg │ │ ├── sell-a-token.svg │ │ ├── sell-token-later.svg │ │ ├── sell-token-now.svg │ │ ├── seoDefaultCardImage.jpg │ │ ├── stable.svg │ │ ├── swap.png │ │ ├── update-metadata.svg │ │ └── utility.svg │ ├── rollup.config.ts │ ├── src │ │ ├── components │ │ │ ├── AsyncButton.tsx │ │ │ ├── BurnButton.tsx │ │ │ ├── Countdown.tsx │ │ │ ├── DisburseFunds.tsx │ │ │ ├── Disclaimer.tsx │ │ │ ├── Footer.tsx │ │ │ ├── FormContainer.tsx │ │ │ ├── Header.tsx │ │ │ ├── MarketplaceProviders.tsx │ │ │ ├── MetadataMeta.tsx │ │ │ ├── MyTokens.tsx │ │ │ ├── Providers.tsx │ │ │ ├── SiteDisclaimer.tsx │ │ │ ├── ThemeProvider.tsx │ │ │ ├── TokenItem.tsx │ │ │ ├── TokenOffering.tsx │ │ │ ├── TwitterLink.tsx │ │ │ ├── Wallet.tsx │ │ │ ├── WalletModalButton.tsx │ │ │ ├── admin │ │ │ │ ├── LaunchPreview.tsx │ │ │ │ ├── MintTokensWidget.tsx │ │ │ │ ├── SellTokensButton.tsx │ │ │ │ ├── TokenAdmin.tsx │ │ │ │ ├── TokenLaunches.tsx │ │ │ │ └── TokenPreview.tsx │ │ │ ├── bounties │ │ │ │ ├── AuthorityAndTokenInfo.tsx │ │ │ │ ├── BountyCard.tsx │ │ │ │ ├── BountyCardContribution.tsx │ │ │ │ ├── BountyContribute.tsx │ │ │ │ ├── BountyDetail.tsx │ │ │ │ ├── BountyList.tsx │ │ │ │ ├── MintSelectModal.tsx │ │ │ │ ├── TopHolders.tsx │ │ │ │ └── index.ts │ │ │ ├── bufferFill.ts │ │ │ ├── form │ │ │ │ ├── BountyForm.tsx │ │ │ │ ├── Disclosures.tsx │ │ │ │ ├── EditBountyForm.tsx │ │ │ │ ├── EditMetadataForm.tsx │ │ │ │ ├── FixedPriceForm.tsx │ │ │ │ ├── FormControlWithError.tsx │ │ │ │ ├── FullyManagedForm.tsx │ │ │ │ ├── LbcForm.tsx │ │ │ │ ├── ManualForm.tsx │ │ │ │ ├── MintSelect.tsx │ │ │ │ ├── RadioCard.tsx │ │ │ │ ├── Recipient.tsx │ │ │ │ ├── RoyaltiesInputs.tsx │ │ │ │ ├── TokenAuthorityForm.tsx │ │ │ │ ├── TokenIntervalnputs.tsx │ │ │ │ ├── TokenMetadataInputs.tsx │ │ │ │ ├── TokenMintDecimalsInputs.tsx │ │ │ │ ├── UseExistingMintInputs.tsx │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── launchpad │ │ │ │ ├── LaunchpadLayout.tsx │ │ │ │ └── index.tsx │ │ │ ├── lbc │ │ │ │ ├── BondingPlot.tsx │ │ │ │ ├── Branding.tsx │ │ │ │ ├── Lbc.tsx │ │ │ │ ├── LbcInfo.tsx │ │ │ │ ├── LbcStatus.tsx │ │ │ │ ├── MintButton.tsx │ │ │ │ ├── TransactionHistory.tsx │ │ │ │ ├── index.ts │ │ │ │ └── mint │ │ │ │ │ ├── CandyMachineInfo.tsx │ │ │ │ │ ├── DynamicPricingCandyMachine.tsx │ │ │ │ │ ├── MintedNftNotification.tsx │ │ │ │ │ ├── candy-machine.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── utils.ts │ │ │ ├── sales │ │ │ │ ├── QuantityPicker.tsx │ │ │ │ ├── SaleItem.tsx │ │ │ │ ├── SaleItemAdmin.tsx │ │ │ │ └── index.ts │ │ │ └── svgs │ │ │ │ ├── index.tsx │ │ │ │ ├── metaplex.tsx │ │ │ │ └── strata.tsx │ │ ├── constants │ │ │ └── index.ts │ │ ├── contexts │ │ │ ├── index.ts │ │ │ └── marketplaceSdkContext.tsx │ │ ├── hooks │ │ │ ├── index.ts │ │ │ ├── useBounties.tsx │ │ │ ├── useBountyInfo.tsx │ │ │ ├── useCandyMachine.tsx │ │ │ ├── useCandyMachineInfo.tsx │ │ │ ├── useIsBountyAdmin.tsx │ │ │ ├── useLinkTwitter.ts │ │ │ ├── useLivePrice.ts │ │ │ └── useTransactions.tsx │ │ ├── index.ts │ │ └── utils │ │ │ ├── gtag.ts │ │ │ ├── index.ts │ │ │ ├── initMiddleware.ts │ │ │ ├── numberWithCommas.tsx │ │ │ ├── routes.ts │ │ │ └── tokenMetadataServerProps.ts │ ├── styles │ │ └── globals.css │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ └── tsconfig.json ├── react │ ├── .gitignore │ ├── CHANGELOG.md │ ├── package.json │ ├── src │ │ ├── bufferFill.ts │ │ ├── components │ │ │ ├── Creator.tsx │ │ │ ├── Notification.tsx │ │ │ ├── Spinner.tsx │ │ │ ├── StrataProviders.tsx │ │ │ ├── Swap │ │ │ │ ├── ManyToOneSwap.tsx │ │ │ │ ├── Royalties.tsx │ │ │ │ ├── Swap.tsx │ │ │ │ ├── SwapForm.tsx │ │ │ │ └── TransactionInfo.tsx │ │ │ └── Wallet │ │ │ │ ├── TokenInfo.tsx │ │ │ │ ├── TokenSearch.tsx │ │ │ │ └── Wallet.tsx │ │ ├── constants │ │ │ └── globals.ts │ │ ├── contexts │ │ │ ├── GraphqlProvider.tsx │ │ │ ├── HolaplexGraphqlProvider.tsx │ │ │ ├── acceleratorContext.tsx │ │ │ ├── accountContext.tsx │ │ │ ├── errorHandlerContext.tsx │ │ │ ├── providerContext.tsx │ │ │ ├── solPrice.tsx │ │ │ ├── strataSdkContext.tsx │ │ │ ├── theme.tsx │ │ │ └── tokenList.tsx │ │ ├── hooks │ │ │ ├── bondingPricing.ts │ │ │ ├── nameService.ts │ │ │ ├── tokenRef.ts │ │ │ ├── useAccount.ts │ │ │ ├── useAccountFetchCache.ts │ │ │ ├── useAssociatedAccount.ts │ │ │ ├── useAssociatedTokenAddress.ts │ │ │ ├── useBondedTokenPrice.ts │ │ │ ├── useCapInfo.ts │ │ │ ├── useCoinGeckoPrice.ts │ │ │ ├── useCollectionOwnedAmount.tsx │ │ │ ├── useCollective.ts │ │ │ ├── useCurve.ts │ │ │ ├── useEndpoint.ts │ │ │ ├── useErrorHandler.ts │ │ │ ├── useEstimatedFees.ts │ │ │ ├── useFees.ts │ │ │ ├── useFtxPayLink.ts │ │ │ ├── useFungibleChildEntangler.ts │ │ │ ├── useFungibleParentEntangler.ts │ │ │ ├── useGovernance.ts │ │ │ ├── useInterval.ts │ │ │ ├── useJupiterPrice.ts │ │ │ ├── useLargestTokenAccounts.ts │ │ │ ├── useLocalStorage.ts │ │ │ ├── useManyToOneSwapDriver.ts │ │ │ ├── useMarketPrice.ts │ │ │ ├── useMetaplexMetadata.ts │ │ │ ├── useMint.ts │ │ │ ├── useOwnedAmountOfNameForOwner.tsx │ │ │ ├── usePriceInSol.ts │ │ │ ├── usePriceInUsd.ts │ │ │ ├── useProvider.ts │ │ │ ├── usePublicKey.ts │ │ │ ├── useQueryString.ts │ │ │ ├── useRentExemptAmount.ts │ │ │ ├── useReserveAmount.ts │ │ │ ├── useSocialTokenMetadata.ts │ │ │ ├── useSolPrice.ts │ │ │ ├── useSolanaUnixTime.ts │ │ │ ├── useStrataSdks.ts │ │ │ ├── useSwap.ts │ │ │ ├── useSwapDriver.ts │ │ │ ├── useSwapPricing.tsx │ │ │ ├── useTokenAccount.ts │ │ │ ├── useTokenAuthorities.ts │ │ │ ├── useTokenBonding.ts │ │ │ ├── useTokenBondingFromMint.ts │ │ │ ├── useTokenBondingKey.ts │ │ │ ├── useTokenList.ts │ │ │ ├── useTokenMetadata.ts │ │ │ ├── useTokenRef.ts │ │ │ ├── useTokenSwapFromFungibleEntangler.ts │ │ │ ├── useTokenSwapFromId.ts │ │ │ ├── useTransactions.ts │ │ │ ├── useTwWrappedSolMint.ts │ │ │ ├── useUsdLocked.ts │ │ │ ├── useUserTokensWithMeta.ts │ │ │ ├── useWalletTokenAccounts.ts │ │ │ └── useWalletTokensWithMeta.ts │ │ ├── index.ts │ │ └── utils │ │ │ ├── getWalletTokenAccounts.ts │ │ │ ├── nameServiceTwitter.ts │ │ │ ├── roundToDecimals.ts │ │ │ └── truthy.ts │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ └── tsconfig.json ├── site │ ├── .env.development │ ├── .env.production │ ├── .eslintrc.json │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── components │ │ ├── Footer.tsx │ │ ├── Header.tsx │ │ ├── Providers.tsx │ │ └── Splash │ │ │ ├── Bounties.tsx │ │ │ ├── GetStarted.tsx │ │ │ ├── Hero.tsx │ │ │ ├── Investors.tsx │ │ │ └── Lbc.tsx │ ├── constants │ │ └── index.ts │ ├── next-env.d.ts │ ├── next-seo.config.js │ ├── next.config.js │ ├── package.json │ ├── pages │ │ ├── _app.tsx │ │ ├── _document.tsx │ │ └── index.tsx │ ├── public │ │ ├── buildWithReact.png │ │ ├── dtpBounty.png │ │ ├── easyToUse.png │ │ ├── favicon.ico │ │ ├── freeAndOpen.png │ │ ├── hero.png │ │ ├── investorAlameda.png │ │ ├── investorAsymmetric.png │ │ ├── investorMulticoin.png │ │ ├── investorSolana.png │ │ ├── investorStartingLine.png │ │ ├── lbcChart.png │ │ ├── logo.svg │ │ ├── riptideAppBarBanner.png │ │ ├── riptideBanner.png │ │ ├── seoDefaultCardImage.jpg │ │ └── wumbo.png │ ├── styles │ │ ├── Home.module.css │ │ └── globals.css │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ ├── tsconfig.json │ └── utils │ │ ├── bufferFill.ts │ │ └── gtag.ts ├── spl-token-bonding │ ├── .gitignore │ ├── CHANGELOG.md │ ├── package.json │ ├── rollup.config.ts │ ├── src │ │ ├── bondingHierarchy.ts │ │ ├── curves.ts │ │ ├── generated │ │ │ └── spl-token-bonding.ts │ │ ├── index.ts │ │ ├── pricing.ts │ │ └── utils.ts │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ └── tsconfig.json ├── spl-token-collective │ ├── .gitignore │ ├── CHANGELOG.md │ ├── package.json │ ├── rollup.config.ts │ ├── src │ │ ├── generated │ │ │ └── spl-token-collective.ts │ │ └── index.ts │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ ├── tsconfig.json │ └── yarn-error.log └── spl-utils │ ├── .gitignore │ ├── CHANGELOG.md │ ├── package.json │ ├── rollup.config.ts │ ├── src │ ├── accountFetchCache │ │ ├── accountFetchCache.ts │ │ ├── eventEmitter.ts │ │ ├── getMultipleAccounts.ts │ │ └── index.ts │ ├── anchorError.ts │ ├── anchorSdk.ts │ ├── arweave.ts │ ├── executeRemoteTxn.ts │ ├── extendBorsh.ts │ ├── fees.ts │ ├── index.ts │ ├── percent.ts │ ├── shdw.ts │ ├── splToken.ts │ ├── splTokenMetadata.ts │ ├── token.ts │ ├── transaction.ts │ └── utils.ts │ ├── tsconfig.cjs.json │ ├── tsconfig.esm.json │ ├── tsconfig.json │ └── yarn-error.log ├── programs ├── LICENSE ├── chat │ ├── Cargo.toml │ ├── Xargo.toml │ └── src │ │ ├── error.rs │ │ ├── instructions │ │ ├── approve_chat_identifier_v0.rs │ │ ├── approve_user_identifier_v0.rs │ │ ├── claim_admin_v0.rs │ │ ├── close_chat_permissions_v0.rs │ │ ├── close_chat_v0.rs │ │ ├── initialize_chat │ │ │ ├── arg.rs │ │ │ ├── initialize_chat_v0.rs │ │ │ ├── initialize_unidentified_chat_v0.rs │ │ │ └── mod.rs │ │ ├── initialize_chat_permissions_v0.rs │ │ ├── initialize_delegate_wallet_v0.rs │ │ ├── initialize_namespaces_v0.rs │ │ ├── initialize_profile_v0.rs │ │ ├── initialize_settings_v0.rs │ │ ├── mod.rs │ │ └── send_message │ │ │ ├── message.rs │ │ │ ├── mod.rs │ │ │ ├── send_native_message_v0.rs │ │ │ └── send_token_message_v0.rs │ │ ├── lib.rs │ │ ├── metadata.rs │ │ ├── state.rs │ │ └── utils.rs ├── fungible-entangler │ ├── Cargo.toml │ ├── Xargo.toml │ └── src │ │ ├── error.rs │ │ ├── instructions │ │ ├── close_fungible_child_entangler_v0.rs │ │ ├── close_fungible_parent_entangler_v0.rs │ │ ├── initialize_fungible_child_entangler_v0.rs │ │ ├── initialize_fungible_parent_entangler_v0.rs │ │ ├── mod.rs │ │ ├── swap │ │ │ ├── account.rs │ │ │ ├── arg.rs │ │ │ ├── common.rs │ │ │ ├── mod.rs │ │ │ ├── swap_child_for_parent_v0.rs │ │ │ └── swap_parent_for_child_v0.rs │ │ ├── transfer_child_storage_v0.rs │ │ └── transfer_parent_storage_v0.rs │ │ ├── lib.rs │ │ ├── state.rs │ │ └── util.rs ├── spl-token-bonding │ ├── Cargo.lock │ ├── Cargo.toml │ ├── Xargo.toml │ ├── proptest-regressions │ │ └── precise_number.txt │ └── src │ │ ├── curve.rs │ │ ├── error.rs │ │ ├── instructions │ │ ├── buy │ │ │ ├── buy_account_common.rs │ │ │ ├── buy_arg_common.rs │ │ │ ├── buy_native_v0.rs │ │ │ ├── buy_v1.rs │ │ │ ├── buy_wrapped_sol_v0.rs │ │ │ ├── common.rs │ │ │ └── mod.rs │ │ ├── close_token_bonding_v0.rs │ │ ├── create_curve_v0.rs │ │ ├── initialize_sol_storage_v0.rs │ │ ├── initialize_token_bonding_v0.rs │ │ ├── mod.rs │ │ ├── sell │ │ │ ├── common.rs │ │ │ ├── mod.rs │ │ │ ├── sell_account_common.rs │ │ │ ├── sell_arg_common.rs │ │ │ ├── sell_native_v0.rs │ │ │ ├── sell_v1.rs │ │ │ └── sell_wrapped_sol_v0.rs │ │ ├── transfer_reserves │ │ │ ├── mod.rs │ │ │ ├── transfer_reserves_account_common.rs │ │ │ ├── transfer_reserves_arg_common.rs │ │ │ ├── transfer_reserves_native_v0.rs │ │ │ └── transfer_reserves_v0.rs │ │ ├── update_curve_v0.rs │ │ ├── update_reserve_authority_v0.rs │ │ └── update_token_bonding_v0.rs │ │ ├── lib.rs │ │ ├── precise_number.rs │ │ ├── signed_precise_number.rs │ │ ├── state.rs │ │ ├── uint.rs │ │ └── util.rs └── spl-token-collective │ ├── Cargo.toml │ ├── Xargo.toml │ └── src │ ├── account.rs │ ├── arg.rs │ ├── error.rs │ ├── lib.rs │ ├── name.rs │ ├── state.rs │ ├── token_metadata.rs │ └── util.rs ├── tests ├── chat.ts ├── fungible-entangler.ts ├── marketplace-sdk.ts ├── spl-token-bonding.ts ├── spl-token-collective.ts └── utils │ ├── chat.ts │ ├── clock.ts │ └── token.ts ├── tsconfig.base.json ├── tsconfig.cjs.json ├── tsconfig.esm.json ├── tsconfig.json ├── tsconfig.root.json ├── tsconfig.test.json └── yarn.lock /.github/actions/anchor-publish/action.yaml: -------------------------------------------------------------------------------- 1 | name: "Anchor Publish" 2 | description: "Publishes a verifiable build to anchor" 3 | inputs: 4 | program: 5 | description: 'The program to build and upload' 6 | required: true 7 | anchor-token: 8 | description: 'Token to log in with anchor' 9 | required: true 10 | 11 | runs: 12 | using: "composite" 13 | steps: 14 | - uses: actions/checkout@v2 15 | - uses: ./.github/actions/setup/ 16 | - uses: ./.github/actions/setup-anchor/ 17 | with: 18 | node-version: ${{ env.NODE_VERSION }} 19 | - run: ~/.cargo/bin/anchor login $ANCHOR_TOKEN 20 | shell: bash 21 | env: 22 | ANCHOR_TOKEN: ${{ inputs.anchor-token }} 23 | - run: echo "yes" | ~/.cargo/bin/anchor publish $PROGRAM 24 | shell: bash 25 | env: 26 | PROGRAM: ${{ inputs.program }} 27 | -------------------------------------------------------------------------------- /.github/actions/setup-anchor/action.yaml: -------------------------------------------------------------------------------- 1 | name: "Setup Anchor" 2 | description: "Setup Anchor" 3 | runs: 4 | using: "composite" 5 | steps: 6 | - uses: actions/checkout@v2 7 | - uses: ./.github/actions/setup/ 8 | - uses: ./.github/actions/setup-solana/ 9 | - uses: actions/cache@v2 10 | name: Cache Anchor Cli 11 | id: cache-anchor-cli 12 | with: 13 | path: | 14 | ~/.cargo/bin/ 15 | ~/.cargo/registry/index/ 16 | ~/.cargo/registry/cache/ 17 | ~/.cargo/git/db/ 18 | ./target/ 19 | key: anchor-cli-${{ runner.os }}-v0000-${{ env.ANCHOR_VERSION }} 20 | - run: cargo install --git https://github.com/project-serum/anchor --tag "v$ANCHOR_VERSION" anchor-cli --locked 21 | shell: bash 22 | if: steps.cache-anchor-cli.outputs.cache-hit != 'true' 23 | 24 | -------------------------------------------------------------------------------- /.github/actions/setup-solana/action.yaml: -------------------------------------------------------------------------------- 1 | name: "Setup Solana" 2 | description: "Setup Solana" 3 | runs: 4 | using: "composite" 5 | steps: 6 | - uses: actions/cache@v2 7 | name: Cache Solana Tool Suite 8 | id: cache-solana 9 | with: 10 | path: | 11 | ~/.cache/solana/ 12 | ~/.local/share/solana/ 13 | key: solana-${{ runner.os }}-v0000-${{ env.SOLANA_CLI_VERSION }} 14 | - run: sh -c "$(curl -sSfL https://release.solana.com/v${{ env.SOLANA_CLI_VERSION }}/install)" 15 | shell: bash 16 | if: steps.cache-solana.outputs.cache-hit != 'true' 17 | - run: echo "/home/runner/.local/share/solana/install/active_release/bin" >> $GITHUB_PATH 18 | shell: bash 19 | - run: solana-keygen new --no-bip39-passphrase --force 20 | shell: bash 21 | - run: solana config set --url localhost 22 | shell: bash 23 | -------------------------------------------------------------------------------- /.github/actions/setup-ts/action.yaml: -------------------------------------------------------------------------------- 1 | name: "Setup ts" 2 | description: "Setup ts" 3 | runs: 4 | using: "composite" 5 | steps: 6 | - uses: actions/setup-node@v2 7 | with: 8 | node-version: ${{ env.NODE_VERSION }} 9 | - uses: actions/cache@v2 10 | name: Cache Typescript node_modules 11 | id: cache-typescript-node-modules 12 | with: 13 | path: | 14 | ./node_modules/ 15 | key: solana-${{ runner.os }}-v0000-${{ env.NODE_VERSION }}-${{ hashFiles('./yarn.lock') }} 16 | - uses: actions/cache@v2 17 | name: Cache Typescript Dist 18 | id: cache-typescript-dist 19 | with: 20 | path: | 21 | ./packages/cli/lib/ 22 | ./packages/docs/build/ 23 | ./packages/react/lib/ 24 | ./packages/**/lib/ 25 | key: solana-${{ runner.os }}-v0000-${{ env.NODE_VERSION }}-${{ hashFiles('./packages/**/*.ts') }} 26 | - run: yarn && ./node_modules/.bin/lerna bootstrap 27 | shell: bash 28 | if: steps.cache-typescript-node-modules.outputs.cache-hit != 'true' 29 | - run: yarn run build-sdks 30 | shell: bash 31 | if: steps.cache-typescript-dist.outputs.cache-hit != 'true' 32 | -------------------------------------------------------------------------------- /.github/actions/setup/action.yaml: -------------------------------------------------------------------------------- 1 | name: "Setup" 2 | description: "Setup" 3 | runs: 4 | using: "composite" 5 | steps: 6 | - run: sudo apt-get update 7 | shell: bash 8 | - run: sudo apt-get install -y pkg-config build-essential libudev-dev 9 | shell: bash 10 | - run: echo "ANCHOR_VERSION=0.24.2" >> $GITHUB_ENV 11 | shell: bash 12 | - run: git submodule update --init --recursive --depth 1 13 | shell: bash 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/settings.json 2 | .anchor 3 | .DS_Store 4 | target 5 | **/*.rs.bk 6 | ./node_modules 7 | node_modules 8 | test-ledger 9 | .parcel-cache 10 | .env 11 | oyster-common 12 | .idea/.gitignore 13 | .idea/modules.xml 14 | .idea/runConfigurations.xml 15 | .idea/vcs.xml 16 | .idea/wumbo-programs.iml 17 | .idea/codeStyles/codeStyleConfig.xml 18 | .idea/inspectionProfiles/Project_Default.xml 19 | docker-target 20 | scratch* 21 | coverage 22 | **/*.profraw 23 | programs/spl-token-staking/proptest-regressions/precise_number.txt 24 | **/*.coderrect 25 | lib 26 | *.tsbuildinfo -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "deps/metaplex-program-library"] 2 | path = deps/metaplex-program-library 3 | url = https://github.com/metaplex-foundation/metaplex-program-library.git 4 | [submodule "deps/solana-program-library"] 5 | path = deps/solana-program-library 6 | url = https://github.com/solana-labs/solana-program-library.git 7 | [submodule "deps/cardinal-namespaces"] 8 | path = deps/cardinal-namespaces 9 | url = https://github.com/cardinal-labs/cardinal-namespaces.git 10 | [submodule "deps/cardinal-token-manager"] 11 | path = deps/cardinal-token-manager 12 | url = https://github.com/cardinal-labs/cardinal-token-manager.git 13 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | npx lerna run --parallel precommit 3 | -------------------------------------------------------------------------------- /.rustfmt.toml: -------------------------------------------------------------------------------- 1 | tab_spaces = 2 2 | 3 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@SCOPE_NAME:registry" "https://registry.npmjs.org/" 6 | lastUpdateCheck 1654368311588 7 | yarn-path ".yarn/releases/yarn-1.22.4.js" 8 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = [ 3 | "programs/*" 4 | ] 5 | exclude = [ 6 | "deps/solana-program-library", 7 | "deps/metaplex-program-library" 8 | ] 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | You will notice there are two licenses in this repository, one under `packages` and one under `programs`. 2 | 3 | The program and rust code for Strata is licensed under AGPL v3. 4 | 5 | The Typescript SDK and all typescript libraries are licensed under Apache 2.0 license. 6 | 7 | The intention is that the sdks allow wider use than the programs. In particular, you may call out to the Strata programs publicly deployed on-chain using closed source code. 8 | 9 | You may not, however, fork and close source the program code. Any deployments of Strata program code and derivative code to the blockchain should be open source. -------------------------------------------------------------------------------- /bootstrap-localnet.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | anchor idl init TBondmkCYxaPCKG4CHYfVTcwQ8on31xnJrPzk8F8WsS --filepath target/idl/spl_token_bonding.json --provider.cluster localnet 4 | anchor idl init TCo1sfSr2nCudbeJPykbif64rG9K1JNMGzrtzvPmp3y --filepath target/idl/spl_token_collective.json --provider.cluster localnet 5 | anchor idl init fent99TYZcj9PGbeooaZXEMQzMd7rz8vYFiudd8HevB --filepath target/idl/fungible_entangler.json --provider.cluster localnet 6 | anchor idl init chatGL6yNgZT2Z3BeMYGcgdMpcBKdmxko4C5UhEX4To --filepath target/idl/chat.json --provider.cluster localnet 7 | env WRAPPED_SOL_MINT_PATH=$HOME/.config/solana/twsol.json env OPEN_MINT_PATH=$HOME/.config/solana/open-mint-id.json env ANCHOR_WALLET=$HOME/.config/solana/id.json ANCHOR_PROVIDER_URL=http://127.0.0.1:8899 yarn run bootstrap 8 | -------------------------------------------------------------------------------- /default.profraw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/default.profraw -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "npmClient": "yarn", 3 | "packages": [ 4 | "packages/*" 5 | ], 6 | "useWorkspaces": true, 7 | "version": "3.11.2" 8 | } 9 | -------------------------------------------------------------------------------- /localnet.pid: -------------------------------------------------------------------------------- 1 | 5853 2 | -------------------------------------------------------------------------------- /migrations/deploy.ts: -------------------------------------------------------------------------------- 1 | 2 | // Migrations are an early feature. Currently, they're nothing more than this 3 | // single deploy script that's invoked from the CLI, injecting a provider 4 | // configured from the workspace's Anchor.toml. 5 | 6 | const anchor = require("@project-serum/anchor"); 7 | 8 | module.exports = async function (provider) { 9 | // Configure client to use the provider. 10 | anchor.setProvider(provider); 11 | 12 | // Add your deploy script here. 13 | } 14 | -------------------------------------------------------------------------------- /packages/accelerator/.gitignore: -------------------------------------------------------------------------------- 1 | npm-debug.log 2 | dist/ 3 | tmp/ 4 | ./node_modules -------------------------------------------------------------------------------- /packages/accelerator/tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.cjs.json", 3 | "include": ["src"], 4 | "compilerOptions": { 5 | "outDir": "lib/cjs" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/accelerator/tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.esm.json", 3 | "include": ["src"], 4 | "compilerOptions": { 5 | "outDir": "lib/esm", 6 | "declarationDir": "lib/types" 7 | } 8 | } -------------------------------------------------------------------------------- /packages/accelerator/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.root.json", 3 | "references": [ 4 | { 5 | "path": "./tsconfig.cjs.json" 6 | }, 7 | { 8 | "path": "./tsconfig.esm.json" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /packages/chat-ui/.env.development: -------------------------------------------------------------------------------- 1 | NEXT_PUBLIC_SOLANA_URL="https://api.devnet.solana.com" 2 | NEXT_PUBLIC_SITE_URL="https://localhost:3000" 3 | NEXT_PUBLIC_WUMBO_IDENTITY_SERVICE_URL="http://localhost:8082" 4 | NEXT_PUBLIC_GOOGLE_ANALYTICS="G-L4QLBX3394" 5 | NEXT_PUBLIC_ISSUER=https://auth.genesysgo.net/auth/realms/RPCs/protocol/openid-connect 6 | NEXT_PUBLIC_CLIENT_ID= 7 | NEXT_PUBLIC_CLIENT_SECRET= 8 | NEXT_PUBLIC_DOCS_URL=http://localhost:3001/docs 9 | -------------------------------------------------------------------------------- /packages/chat-ui/.env.production: -------------------------------------------------------------------------------- 1 | NEXT_PUBLIC_SITE_URL=https://app.strataprotocol.com 2 | NEXT_PUBLIC_WUMBO_IDENTITY_SERVICE_URL=https://prod-identity.teamwumbo.com 3 | NEXT_PUBLIC_GOOGLE_ANALYTICS=G-L4QLBX3394 4 | NEXT_PUBLIC_ISSUER=https://auth.genesysgo.net/auth/realms/RPCs/protocol/openid-connect 5 | NEXT_PUBLIC_CLIENT_ID= 6 | NEXT_PUBLIC_CLIENT_SECRET= 7 | NEXT_PUBLIC_DOCS_URL=https://docs.strataprotocol.com 8 | NEXT_PUBLIC_CHAT_URL=https://strata.im -------------------------------------------------------------------------------- /packages/chat-ui/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /packages/chat-ui/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | dist 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env.local 29 | .env.development.local 30 | .env.test.local 31 | .env.production.local 32 | 33 | # vercel 34 | .vercel 35 | 36 | # typescript 37 | *.tsbuildinfo 38 | -------------------------------------------------------------------------------- /packages/chat-ui/README.md: -------------------------------------------------------------------------------- 1 | # `@strata-foundation/chat-ui` 2 | 3 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). 4 | 5 | Basic chat application built with Strata using our chat protocol 6 | -------------------------------------------------------------------------------- /packages/chat-ui/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /packages/chat-ui/next-seo.config.js: -------------------------------------------------------------------------------- 1 | import { CHAT_URL } from "./src/constants/globals"; 2 | 3 | const defaultSeo = { 4 | title: "strata.im", 5 | description: "strata.im enables fully decentralized, token gated chatrooms", 6 | openGraph: { 7 | url: CHAT_URL, 8 | title: "strata.im", 9 | description: "Token gated decentralized chatrooms on Solana", 10 | images: [ 11 | { 12 | url: `${CHAT_URL}/seoDefaultCardImage.jpg`, 13 | width: 800, 14 | height: 600, 15 | alt: "Og Image Alt", 16 | type: "image/jpeg", 17 | }, 18 | ], 19 | site_name: "Stratachat", 20 | }, 21 | twitter: { 22 | handle: "@StrataProtocol", 23 | site: CHAT_URL, 24 | cardType: "summary_large_image", 25 | }, 26 | }; 27 | 28 | export default defaultSeo; 29 | -------------------------------------------------------------------------------- /packages/chat-ui/pages/app.css: -------------------------------------------------------------------------------- 1 | .featured-communities .carousel-root { 2 | max-width: 100%; 3 | } 4 | 5 | .featured-communities .carousel-status { 6 | top: 16px!important; 7 | right: 16px!important; 8 | } 9 | 10 | @media only screen and (max-width: 600px) { 11 | .featured-communities .control-arrow { 12 | display: none!important; 13 | } 14 | } -------------------------------------------------------------------------------- /packages/chat-ui/public/68755117-woodblock-notification-license.txt: -------------------------------------------------------------------------------- 1 | LICENSE CERTIFICATE : Envato Market Item 2 | ============================================== 3 | 4 | This document certifies the purchase of: 5 | ONE SFX (MULTI-USE) LICENSE 6 | as defined in the standard terms and conditions on Envato Market. 7 | 8 | Licensor's Author Username: 9 | jabameister 10 | 11 | Licensee: 12 | Strata 13 | 14 | Item Title: 15 | Woodblock Notification 16 | 17 | Item URL: 18 | https://audiojungle.net/item/woodblock-notification/13702827 19 | 20 | Item ID: 21 | 13702827 22 | 23 | Item Purchase Code: 24 | 08d5314d-0fa6-4c64-9055-393648920014 25 | 26 | Purchase Date: 27 | 2022-06-16 17:15:02 UTC 28 | 29 | For any queries related to this document or license please contact Help Team via https://help.market.envato.com 30 | 31 | Envato Pty. Ltd. (ABN 11 119 159 741) 32 | PO Box 16122, Collins Street West, VIC 8007, Australia 33 | 34 | ==== THIS IS NOT A TAX RECEIPT OR INVOICE ==== 35 | 36 | -------------------------------------------------------------------------------- /packages/chat-ui/public/OC.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/OC.jpg -------------------------------------------------------------------------------- /packages/chat-ui/public/Taiyo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/Taiyo.jpg -------------------------------------------------------------------------------- /packages/chat-ui/public/cardinal-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/cardinal-logo.png -------------------------------------------------------------------------------- /packages/chat-ui/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/favicon.ico -------------------------------------------------------------------------------- /packages/chat-ui/public/genesysgo-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/genesysgo-logo.png -------------------------------------------------------------------------------- /packages/chat-ui/public/jupiter-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/jupiter-logo.png -------------------------------------------------------------------------------- /packages/chat-ui/public/lit-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/lit-logo.png -------------------------------------------------------------------------------- /packages/chat-ui/public/metaplex-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/metaplex-logo.png -------------------------------------------------------------------------------- /packages/chat-ui/public/notification.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/notification.mp3 -------------------------------------------------------------------------------- /packages/chat-ui/public/orca-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/orca-logo.png -------------------------------------------------------------------------------- /packages/chat-ui/public/privacy-policy.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/privacy-policy.pdf -------------------------------------------------------------------------------- /packages/chat-ui/public/seoDefaultCardImage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/seoDefaultCardImage.jpg -------------------------------------------------------------------------------- /packages/chat-ui/public/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/splash.png -------------------------------------------------------------------------------- /packages/chat-ui/public/terms-of-service.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StrataFoundation/strata/d7f5dc684659d5be8bfda48fffba60403c57e114/packages/chat-ui/public/terms-of-service.pdf -------------------------------------------------------------------------------- /packages/chat-ui/src/components/ChatProviders.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | AcceleratorProvider, 3 | GraphqlProvider, 4 | StrataProviders, 5 | } from "@strata-foundation/react"; 6 | import React, { FC } from "react"; 7 | import { ReplyProvider } from "../contexts/reply"; 8 | import { ChatSdkProvider } from "../contexts/chatSdk"; 9 | import { EmojisProvider } from "../contexts/emojis"; 10 | 11 | const defaultOnError = (error: Error) => console.log(error); 12 | export const ChatProviders: FC<{ 13 | onError?: (error: Error) => void; 14 | resetCSS?: boolean; 15 | //@ts-ignore 16 | }> = ({ children, onError = defaultOnError, resetCSS = false }) => ( 17 | 18 | 19 | {/* @ts-ignore */} 20 | 21 | 22 | 23 | {children} 24 | 25 | 26 | 27 | 28 | 29 | ); 30 | -------------------------------------------------------------------------------- /packages/chat-ui/src/components/Container.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Flex, useColorMode, FlexProps } from "@chakra-ui/react"; 3 | 4 | export const Container = (props: FlexProps) => { 5 | const { colorMode } = useColorMode(); 6 | const bgColor = { light: "gray.50", dark: "gray.900" }; 7 | 8 | const color = { light: "black", dark: "white" }; 9 | return ( 10 | 19 | ); 20 | }; 21 | -------------------------------------------------------------------------------- /packages/chat-ui/src/components/DarkModeSwitch.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { useColorMode, Switch, Icon } from "@chakra-ui/react"; 3 | import { IoMoon, IoSunny } from "react-icons/io5"; 4 | 5 | export const DarkModeSwitch = () => { 6 | const { colorMode, toggleColorMode } = useColorMode(); 7 | const isDark = colorMode === "dark"; 8 | return ( 9 | 16 | 17 | 18 | ); 19 | }; 20 | -------------------------------------------------------------------------------- /packages/chat-ui/src/components/FileUploadMask.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | Text, Box, 3 | Center, 4 | Flex, 5 | HStack, 6 | Icon, 7 | useColorModeValue, 8 | } from "@chakra-ui/react"; 9 | import React from "react"; 10 | import { AiOutlineCloudUpload } from "react-icons/ai"; 11 | 12 | export function FileUploadMask() { 13 | return ( 14 | 15 | 22 | 23 | 24 | 25 | Upload File 26 | 27 | 28 | 29 | 30 | 36 | 37 | ); 38 | } -------------------------------------------------------------------------------- /packages/chat-ui/src/components/Header.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { IconButton, Flex } from "@chakra-ui/react"; 3 | import { FiMenu } from "react-icons/fi"; 4 | 5 | interface IHeaderProps { 6 | onSidebarOpen(): void; 7 | } 8 | //@ts-ignore 9 | export const Header: React.FC = ({ children, onSidebarOpen }) => ( 10 | 25 | } 33 | size="md" 34 | /> 35 | 36 | {children} 37 | 38 | 39 | ); 40 | -------------------------------------------------------------------------------- /packages/chat-ui/src/components/LitProtocolWarning.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Alert, AlertIcon, Link, Text } from "@chakra-ui/react"; 3 | 4 | export const LitProtocolWarning = () => { 5 | return ( 6 | 7 | 8 | 9 | Do not approve any{" "} 10 | 11 | Lit Protocol 12 | {" "} 13 | transactions on websites you do not trust. Your chat wallet is 14 | encrypted and could be decrypted if you give permission. Your chat wallet 15 | does not give access to your primary wallet, but can be used to impersonate you. 16 | 17 | 18 | ); 19 | }; 20 | -------------------------------------------------------------------------------- /packages/chat-ui/src/components/chatbox/ChatInput.tsx: -------------------------------------------------------------------------------- 1 | import { Textarea, TextareaProps } from "@chakra-ui/react"; 2 | import React from "react"; 3 | 4 | interface IChatInputProps extends TextareaProps { 5 | inputRef: React.RefObject; 6 | } 7 | 8 | export const ChatInput: React.FC = ({ 9 | onChange, 10 | inputRef, 11 | ...rest 12 | }) => ( 13 |