Repository: opynfinance/squeeth-monorepo Branch: main Commit: 10e70837705a Files: 886 Total size: 25.4 MB Directory structure: gitextract_ry7xy3jk/ ├── .circleci/ │ └── config.yml ├── .editorconfig ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ └── pull_request_template.md ├── .gitignore ├── .gitmodules ├── .gitpod.yml ├── .husky/ │ └── pre-commit ├── .huskyrc ├── .lintstagedrc ├── README.md ├── package.json └── packages/ ├── crab-netting/ │ ├── LICENSE_BUSL │ ├── foundry.toml │ ├── remappings.txt │ ├── script/ │ │ └── Counter.s.sol │ ├── src/ │ │ ├── CrabNetting.sol │ │ └── interfaces/ │ │ ├── IController.sol │ │ ├── ICrabStrategyV2.sol │ │ ├── IOracle.sol │ │ └── IWETH.sol │ └── test/ │ ├── BaseForkSetup.t.sol │ ├── BaseSetup.t.sol │ ├── Deposit.t.sol │ ├── DepositAuction.t.sol │ ├── ForkTestNetAtPrice.sol │ ├── Netting.t.sol │ ├── PriceChecks.sol │ ├── QueuedBalances.t.sol │ ├── SkipDeposits.t.sol │ ├── WithdrawAuction.t.sol │ └── utils/ │ ├── SigUtils.sol │ └── UniswapQuote.sol ├── frontend/ │ ├── .babelrc │ ├── .eslintrc │ ├── .gitignore │ ├── .nvmrc │ ├── .prettierrc │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── README.md │ ├── custom.d.ts │ ├── cypress/ │ │ ├── TEST.md │ │ ├── fixtures/ │ │ │ └── example.json │ │ ├── integration/ │ │ │ ├── pages/ │ │ │ │ ├── header.js │ │ │ │ ├── notifications.js │ │ │ │ ├── onboard.js │ │ │ │ ├── page.js │ │ │ │ └── trade.js │ │ │ └── specs/ │ │ │ ├── 01-trade-long.spec.js │ │ │ ├── 02-trade-short.spec.js │ │ │ └── 06-manual-short.spec.js │ │ ├── plugins/ │ │ │ └── index.js │ │ └── support/ │ │ ├── commands.js │ │ └── index.js │ ├── cypress.json │ ├── env.example │ ├── jest.config.js │ ├── jest.setup.ts │ ├── middleware.ts │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── pages/ │ │ ├── _app.tsx │ │ ├── _document.tsx │ │ ├── api/ │ │ │ ├── __tests__/ │ │ │ │ └── isValidAddress.test.ts │ │ │ ├── auction/ │ │ │ │ └── lastHedgeAuction.ts │ │ │ ├── charts/ │ │ │ │ └── longchart.ts │ │ │ ├── currentsqueethvol.ts │ │ │ ├── historicalprice.ts │ │ │ ├── isValidAddress.ts │ │ │ ├── pnl.tsx │ │ │ ├── strikes.ts │ │ │ ├── tvl.ts │ │ │ ├── twelvedata.ts │ │ │ └── updateBlockedAddress.ts │ │ ├── blocked.tsx │ │ ├── index.tsx │ │ ├── lp.tsx │ │ ├── mint.tsx │ │ ├── opt-out.tsx │ │ ├── pos-merge.tsx │ │ ├── positions.tsx │ │ ├── privacy-policy.tsx │ │ ├── share-pnl/ │ │ │ └── [...slug].tsx │ │ ├── squeeth.tsx │ │ ├── strategies/ │ │ │ ├── bull.tsx │ │ │ ├── crab.tsx │ │ │ └── index.tsx │ │ ├── terms-of-service-faq.tsx │ │ ├── terms-of-service.tsx │ │ └── vault/ │ │ └── [vid].tsx │ ├── sentry.client.config.ts │ ├── sentry.server.config.ts │ ├── src/ │ │ ├── abis/ │ │ │ ├── NFTpositionmanager.json │ │ │ ├── auctionBull.json │ │ │ ├── bullEmergencyWithdraw.json │ │ │ ├── bullShutdownEmergencyWithdraw.json │ │ │ ├── bullStrategy.json │ │ │ ├── controller.json │ │ │ ├── controllerHelper.json │ │ │ ├── crabHelper.json │ │ │ ├── crabMigration.json │ │ │ ├── crabNetting.json │ │ │ ├── crabStrategy.json │ │ │ ├── crabStrategyV2.json │ │ │ ├── erc20.json │ │ │ ├── erc721.json │ │ │ ├── eulerEToken.json │ │ │ ├── eulerSimpleLens.json │ │ │ ├── flashBullStrategy.json │ │ │ ├── oracle.json │ │ │ ├── quoter.json │ │ │ ├── shortHelper.json │ │ │ ├── squeeth.json │ │ │ ├── swapRouter.json │ │ │ ├── swapRouter2.json │ │ │ ├── uniswapPool.json │ │ │ ├── vaultManager.json │ │ │ └── weth.json │ │ ├── components/ │ │ │ ├── Alert.tsx │ │ │ ├── Alerts/ │ │ │ │ ├── ShutdownAlert.tsx │ │ │ │ └── ZenBullAlert.tsx │ │ │ ├── Announcement.tsx │ │ │ ├── Button/ │ │ │ │ ├── WalletButton.tsx │ │ │ │ └── index.tsx │ │ │ ├── Charts/ │ │ │ │ ├── BullStrategyPerformanceChart.tsx │ │ │ │ ├── CrabStrategyChart.tsx │ │ │ │ ├── CrabStrategyV2PnLChart.tsx │ │ │ │ ├── FundingChart.tsx │ │ │ │ ├── LPBuyChart.tsx │ │ │ │ ├── LPMintChart.tsx │ │ │ │ ├── LongChart.tsx │ │ │ │ ├── LongChartPayoff.tsx │ │ │ │ ├── LongSqueethPayoff.tsx │ │ │ │ ├── ShortChart.tsx │ │ │ │ ├── ShortFundingChart.tsx │ │ │ │ ├── ShortSqueethPayoff.tsx │ │ │ │ └── VaultChart.tsx │ │ │ ├── Checkbox.tsx │ │ │ ├── CollatRange.tsx │ │ │ ├── CollatRatioSlider.tsx │ │ │ ├── CustomProgress.tsx │ │ │ ├── CustomSlider.tsx │ │ │ ├── CustomSwitch.tsx │ │ │ ├── DefaultSiteSeo/ │ │ │ │ └── DefaultSiteSeo.tsx │ │ │ ├── Emoji.tsx │ │ │ ├── HidePnLText.tsx │ │ │ ├── IV.tsx │ │ │ ├── Input/ │ │ │ │ ├── NumberInput.tsx │ │ │ │ └── PrimaryInput.tsx │ │ │ ├── InputNew/ │ │ │ │ ├── InputBase.tsx │ │ │ │ ├── InputNumber.tsx │ │ │ │ ├── InputToken.tsx │ │ │ │ └── index.tsx │ │ │ ├── LabelWithTooltip.test.tsx │ │ │ ├── LabelWithTooltip.tsx │ │ │ ├── LandingPage/ │ │ │ │ ├── DesktopLandingPage.tsx │ │ │ │ └── MobileLandingPage.tsx │ │ │ ├── LegendBox.tsx │ │ │ ├── LinkWrapper.tsx │ │ │ ├── Lp/ │ │ │ │ ├── GetSqueeth.tsx │ │ │ │ ├── LPPosition.tsx │ │ │ │ ├── LPTable.tsx │ │ │ │ ├── ObtainSqueeth.tsx │ │ │ │ ├── ProvideLiquidity.tsx │ │ │ │ ├── SelectMethod.tsx │ │ │ │ ├── SqueethInfo.tsx │ │ │ │ └── Stepper.tsx │ │ │ ├── MarkdownPage.tsx │ │ │ ├── Metric.tsx │ │ │ ├── Modal/ │ │ │ │ ├── MobileModal.tsx │ │ │ │ ├── Modal.tsx │ │ │ │ └── UniswapIframe.tsx │ │ │ ├── Nav.tsx │ │ │ ├── PnLTooltip.tsx │ │ │ ├── Popup.tsx │ │ │ ├── PositionCard.tsx │ │ │ ├── RestrictionInfo.tsx │ │ │ ├── SettingsMenu.tsx │ │ │ ├── SharePnl/ │ │ │ │ └── PnlChart.tsx │ │ │ ├── SqueethCard.tsx │ │ │ ├── StepperBox.tsx │ │ │ ├── Strategies/ │ │ │ │ ├── Bull/ │ │ │ │ │ ├── About/ │ │ │ │ │ │ ├── AdvancedMetrics.tsx │ │ │ │ │ │ ├── NextRebalanceTimer.tsx │ │ │ │ │ │ ├── ProfitabilityChart.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── BullTrade/ │ │ │ │ │ │ ├── Deposit.tsx │ │ │ │ │ │ ├── EmergencyWithdraw.tsx │ │ │ │ │ │ ├── ShutdownEmergencyWithdraw.tsx │ │ │ │ │ │ ├── Withdraw.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── styles.ts │ │ │ │ │ ├── MyPosition/ │ │ │ │ │ │ ├── PnL.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── StrategyPerformance.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Crab/ │ │ │ │ │ ├── About/ │ │ │ │ │ │ ├── AdvancedMetrics.tsx │ │ │ │ │ │ ├── NextRebalanceTimer.tsx │ │ │ │ │ │ ├── ProfitabilityChart.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CapDetails.tsx │ │ │ │ │ ├── CapDetailsV2.tsx │ │ │ │ │ ├── CrabMetricsV2.tsx │ │ │ │ │ ├── CrabMigrate.tsx │ │ │ │ │ ├── CrabPosition.tsx │ │ │ │ │ ├── CrabPositionV2.tsx │ │ │ │ │ ├── CrabTrade.tsx │ │ │ │ │ ├── CrabTradeV2/ │ │ │ │ │ │ ├── Deposit.tsx │ │ │ │ │ │ ├── Withdraw.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── styles.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── MigrationNotice.tsx │ │ │ │ │ ├── MyPosition/ │ │ │ │ │ │ ├── CrabPosition.tsx │ │ │ │ │ │ ├── PnL.tsx │ │ │ │ │ │ ├── QueuedPosition.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── StrategyChartsV2.tsx │ │ │ │ │ ├── StrategyHistory.tsx │ │ │ │ │ ├── StrategyHistoryV2.tsx │ │ │ │ │ ├── StrategyInfoV1.tsx │ │ │ │ │ ├── StrategyInfoV2.tsx │ │ │ │ │ ├── StrategyPerformance.tsx │ │ │ │ │ └── util.ts │ │ │ │ ├── SharePnl.tsx │ │ │ │ ├── StrategyInfoItem.tsx │ │ │ │ └── styles.ts │ │ │ ├── StrategyLayout/ │ │ │ │ └── StrategyLayout.tsx │ │ │ ├── StrikeWarning.tsx │ │ │ ├── Tabs.tsx │ │ │ ├── Trade/ │ │ │ │ ├── Cancelled.tsx │ │ │ │ ├── Confirmed.tsx │ │ │ │ ├── Long/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Mint.tsx │ │ │ │ ├── Short/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SqueethMetrics.tsx │ │ │ │ ├── WelcomeModal.tsx │ │ │ │ └── index.tsx │ │ │ ├── TradeOld/ │ │ │ │ ├── Cancelled.tsx │ │ │ │ ├── Confirmed.tsx │ │ │ │ ├── Long/ │ │ │ │ │ ├── BreakEven.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── TradeDetails.tsx │ │ │ │ ├── TradeInfoItem.tsx │ │ │ │ └── UniswapData.tsx │ │ │ ├── TradeSettings.tsx │ │ │ └── WalletFailModal.tsx │ │ ├── constants/ │ │ │ ├── address.ts │ │ │ ├── diagram.ts │ │ │ ├── enums.ts │ │ │ └── index.ts │ │ ├── context/ │ │ │ ├── lp.tsx │ │ │ └── restrict-user.tsx │ │ ├── hooks/ │ │ │ ├── __tests__/ │ │ │ │ ├── useAppCallback.test.ts │ │ │ │ ├── useAppEffect.test.ts │ │ │ │ └── useAppMemo.test.ts │ │ │ ├── contracts/ │ │ │ │ ├── useAllowance.ts │ │ │ │ ├── useERC721.ts │ │ │ │ ├── useLiquidations.ts │ │ │ │ ├── useLongHelper.ts │ │ │ │ ├── useOracle.ts │ │ │ │ ├── useShortHelper.ts │ │ │ │ ├── useTokenBalance.ts │ │ │ │ ├── useVaultManager.ts │ │ │ │ └── useWeth.ts │ │ │ ├── payOffGraph/ │ │ │ │ ├── useCrabVaultPayoff.ts │ │ │ │ ├── useShortParams.ts │ │ │ │ └── useSqueethShortPayOffGraph.ts │ │ │ ├── useAmplitude.ts │ │ │ ├── useAppCallback.tsx │ │ │ ├── useAppEffect.tsx │ │ │ ├── useAppMemo.tsx │ │ │ ├── useAsyncMemo.tsx │ │ │ ├── useBullHedgeHistory.ts │ │ │ ├── useBullPosition/ │ │ │ │ ├── index.ts │ │ │ │ ├── mocks.ts │ │ │ │ └── useBullPosition.ts │ │ │ ├── useCopyClipboard.ts │ │ │ ├── useCrabAuctionHistory.ts │ │ │ ├── useCrabPosition/ │ │ │ │ ├── index.ts │ │ │ │ ├── mocks.ts │ │ │ │ ├── useCrabPosition.test.tsx │ │ │ │ └── useCrabPosition.ts │ │ │ ├── useCrabV2AuctionHistory.ts │ │ │ ├── useENS.ts │ │ │ ├── useETHPrice.ts │ │ │ ├── useExecuteOnce.ts │ │ │ ├── useInterval.ts │ │ │ ├── useIntervalAsync.ts │ │ │ ├── useNormHistory.ts │ │ │ ├── useNormHistoryFromTime.ts │ │ │ ├── useOSQTHPrice.ts │ │ │ ├── usePopup.tsx │ │ │ ├── useRenderCounter.js │ │ │ ├── useStateWithReset.ts │ │ │ ├── useTVL.ts │ │ │ ├── useTrackSiteReload.ts │ │ │ ├── useTrackTransactionFlow.ts │ │ │ ├── useTransactionHistory.ts │ │ │ ├── useUniswapQuoter.tsx │ │ │ ├── useUniswapTicks.ts │ │ │ ├── useUsdAmount.ts │ │ │ ├── useUserBullTxHistory.ts │ │ │ ├── useUserCrabTxHistory.ts │ │ │ ├── useUserCrabV2TxHistory.ts │ │ │ ├── useVault.ts │ │ │ ├── useVaultData.ts │ │ │ ├── useVaultHistory.ts │ │ │ └── useYourVaults.ts │ │ ├── lib/ │ │ │ └── pnl.ts │ │ ├── markdown/ │ │ │ ├── pos-merge.md │ │ │ ├── privacy-policy.md │ │ │ ├── terms-of-service-faq.md │ │ │ └── terms-of-service.md │ │ ├── pages/ │ │ │ └── positions/ │ │ │ ├── BullPosition.tsx │ │ │ ├── ConnectWallet.tsx │ │ │ ├── CrabPosition.tsx │ │ │ ├── CrabPositionV2.tsx │ │ │ ├── History.tsx │ │ │ ├── LPedSqueeth.tsx │ │ │ ├── LongSqueeth.tsx │ │ │ ├── MintedSqueeth.tsx │ │ │ ├── Positions.tsx │ │ │ ├── ShortSqueeth.tsx │ │ │ ├── ShortSqueethLiquidated.tsx │ │ │ ├── YourVaults.test.tsx │ │ │ ├── YourVaults.tsx │ │ │ └── useStyles.ts │ │ ├── queries/ │ │ │ ├── squeeth/ │ │ │ │ ├── __generated__/ │ │ │ │ │ ├── Vault.ts │ │ │ │ │ ├── VaultHistory.ts │ │ │ │ │ ├── Vaults.ts │ │ │ │ │ ├── YourVaults.ts │ │ │ │ │ ├── bullHedges.ts │ │ │ │ │ ├── crabAuctions.ts │ │ │ │ │ ├── crabV2Auctions.ts │ │ │ │ │ ├── liquidations.ts │ │ │ │ │ ├── normalizationFactorUpdates.ts │ │ │ │ │ ├── normalizationFactorUpdatesTime.ts │ │ │ │ │ ├── strategyQuery.ts │ │ │ │ │ ├── subscriptionVaultHistory.ts │ │ │ │ │ ├── subscriptionVaults.ts │ │ │ │ │ ├── userBullTxes.ts │ │ │ │ │ ├── userCrabTxes.ts │ │ │ │ │ └── userCrabV2Txes.ts │ │ │ │ ├── bullHedgeQuery.ts │ │ │ │ ├── crabAuctionQuery.ts │ │ │ │ ├── crabV2AuctionQuery.ts │ │ │ │ ├── liquidationsQuery.ts │ │ │ │ ├── normHistoryQuery.ts │ │ │ │ ├── strategyQuery.ts │ │ │ │ ├── userBullQuery.ts │ │ │ │ ├── userCrabTxQuery.ts │ │ │ │ ├── userCrabV2TxQuery.ts │ │ │ │ ├── vaultHistoryQuery.ts │ │ │ │ └── vaultsQuery.ts │ │ │ └── uniswap/ │ │ │ ├── __generated__/ │ │ │ │ ├── activePositions.ts │ │ │ │ ├── positions.ts │ │ │ │ ├── subscriptionSwaps.ts │ │ │ │ ├── subscriptionSwapsRopsten.ts │ │ │ │ ├── subscriptionpositions.ts │ │ │ │ ├── swaps.ts │ │ │ │ ├── swapsRopsten.ts │ │ │ │ ├── ticks.ts │ │ │ │ └── transactions.ts │ │ │ ├── positionsQuery.ts │ │ │ ├── swapsQuery.ts │ │ │ ├── swapsRopstenQuery.ts │ │ │ ├── ticksQuery.ts │ │ │ └── transactionsQuery.ts │ │ ├── server/ │ │ │ ├── firebase-admin.ts │ │ │ └── ipqs.ts │ │ ├── state/ │ │ │ ├── bull/ │ │ │ │ ├── atoms.ts │ │ │ │ ├── hooks.ts │ │ │ │ └── utils.ts │ │ │ ├── contracts/ │ │ │ │ └── atoms.ts │ │ │ ├── controller/ │ │ │ │ ├── atoms.ts │ │ │ │ ├── hooks.ts │ │ │ │ └── utils.ts │ │ │ ├── crab/ │ │ │ │ ├── atoms.ts │ │ │ │ ├── hooks.ts │ │ │ │ └── utils.ts │ │ │ ├── crabMigration/ │ │ │ │ ├── atom.ts │ │ │ │ └── hooks.ts │ │ │ ├── ethPriceCharts/ │ │ │ │ └── atoms.ts │ │ │ ├── lp/ │ │ │ │ └── hooks.ts │ │ │ ├── nftmanager/ │ │ │ │ └── hooks.ts │ │ │ ├── pnl/ │ │ │ │ ├── atoms.ts │ │ │ │ └── hooks.ts │ │ │ ├── positions/ │ │ │ │ ├── atoms.ts │ │ │ │ ├── hooks.ts │ │ │ │ └── providers.tsx │ │ │ ├── squeethPool/ │ │ │ │ ├── atoms.ts │ │ │ │ ├── hooks.ts │ │ │ │ └── price.ts │ │ │ ├── trade/ │ │ │ │ └── atoms.ts │ │ │ └── wallet/ │ │ │ ├── apis.ts │ │ │ ├── atoms.ts │ │ │ └── hooks.ts │ │ ├── styles/ │ │ │ ├── index.ts │ │ │ └── useTextStyles.ts │ │ ├── theme.ts │ │ ├── types/ │ │ │ └── index.ts │ │ └── utils/ │ │ ├── __tests__/ │ │ │ └── stringifyDeps.test.ts │ │ ├── amplitude.ts │ │ ├── apollo-client.ts │ │ ├── atomTester.tsx │ │ ├── calculations.ts │ │ ├── cookies.ts │ │ ├── crisp-chat.ts │ │ ├── csvToJson.ts │ │ ├── error.ts │ │ ├── ethPriceCharts.ts │ │ ├── firestore.ts │ │ ├── floatifyBigNums.ts │ │ ├── formatter.ts │ │ ├── gasProvider.ts │ │ ├── getContract.ts │ │ ├── index.tsx │ │ ├── markdown.ts │ │ ├── pricer.ts │ │ ├── quoter.ts │ │ └── stringifyDeps.ts │ ├── styles/ │ │ ├── Home.module.css │ │ └── globals.css │ ├── synpress.json │ ├── tsconfig.json │ └── types/ │ └── global_apollo.ts ├── hardhat/ │ ├── .eslintrc.js │ ├── .gitbook.yaml │ ├── .prettierignore │ ├── .prettierrc │ ├── .solcover.js │ ├── CHANGE_DATE │ ├── LICENSE_BUSL │ ├── README.md │ ├── SUMMARY.md │ ├── USE_GRANT │ ├── arguments/ │ │ ├── Controller-goerli.js │ │ ├── ControllerHelper-goerli.js │ │ ├── CrabHelper-goerli.js │ │ ├── CrabHelper-mainnet.js │ │ ├── CrabMigration-goerli.js │ │ ├── CrabMigration-mainnet.js │ │ ├── CrabMigration-ropsten.js │ │ ├── CrabStrategy-goerli.js │ │ ├── CrabStrategyV2-goerli.js │ │ ├── CrabStrategyV2-mainnet.js │ │ ├── CrabStrategyV2-ropsten.js │ │ ├── OpynUsdc-goerli.js │ │ ├── OpynWeth-goerli.js │ │ ├── Quoter-goerli.js │ │ ├── ShortHelper-goerli.js │ │ ├── ShortPowerPerp-goerli.js │ │ ├── Timelock-goerli.js │ │ ├── Timelock-mainnet.js │ │ ├── Timelock-ropsten.js │ │ └── WPowerPerp-goerli.js │ ├── arguments.js │ ├── ci/ │ │ └── e2e.sh │ ├── contracts/ │ │ ├── core/ │ │ │ ├── Controller.sol │ │ │ ├── LICENSE_GPL_3 │ │ │ ├── Oracle.sol │ │ │ ├── ShortPowerPerp.sol │ │ │ └── WPowerPerp.sol │ │ ├── external/ │ │ │ ├── LICENSE_GPL_3 │ │ │ └── WETH9.sol │ │ ├── import/ │ │ │ ├── LICENSE_GPL_3 │ │ │ └── Uni.sol │ │ ├── interfaces/ │ │ │ ├── IController.sol │ │ │ ├── ICrabStrategyV2.sol │ │ │ ├── IERC20Detailed.sol │ │ │ ├── IEuler.sol │ │ │ ├── IOracle.sol │ │ │ ├── IShortPowerPerp.sol │ │ │ ├── IWETH9.sol │ │ │ ├── IWPowerPerp.sol │ │ │ └── LICENSE_MIT │ │ ├── libs/ │ │ │ ├── ABDKMath64x64.sol │ │ │ ├── LICENSE_BSD_4_Clause │ │ │ ├── LICENSE_GPL_3 │ │ │ ├── LICENSE_MIT │ │ │ ├── OracleLibrary.sol │ │ │ ├── Power2Base.sol │ │ │ ├── SqrtPriceMathPartial.sol │ │ │ ├── TickMathExternal.sol │ │ │ ├── Uint256Casting.sol │ │ │ └── VaultLib.sol │ │ ├── mocks/ │ │ │ ├── LICENSE_GPL_3 │ │ │ ├── LICENSE_MIT │ │ │ ├── MockController.sol │ │ │ ├── MockCrab.sol │ │ │ ├── MockErc20.sol │ │ │ ├── MockEuler.sol │ │ │ ├── MockEulerDToken.sol │ │ │ ├── MockOracle.sol │ │ │ ├── MockShortPowerPerp.sol │ │ │ ├── MockTimelock.sol │ │ │ ├── MockUniPositionManager.sol │ │ │ ├── MockUniswapV3Pool.sol │ │ │ ├── MockWSqueeth.sol │ │ │ └── OpynWETH9.sol │ │ ├── periphery/ │ │ │ ├── ControllerHelper.sol │ │ │ ├── EulerControllerHelper.sol │ │ │ ├── LICENSE_GPL_3 │ │ │ ├── ShortHelper.sol │ │ │ ├── UniswapControllerHelper.sol │ │ │ └── lib/ │ │ │ ├── ControllerHelperDataType.sol │ │ │ ├── ControllerHelperUtil.sol │ │ │ └── LiquidityAmounts.sol │ │ ├── strategy/ │ │ │ ├── AGPL_3 │ │ │ ├── CrabHelper.sol │ │ │ ├── CrabMigration.sol │ │ │ ├── CrabStrategy.sol │ │ │ ├── CrabStrategyV2.sol │ │ │ ├── LICENSE_GPL_3 │ │ │ ├── base/ │ │ │ │ ├── StrategyBase.sol │ │ │ │ ├── StrategyFlashSwap.sol │ │ │ │ └── StrategyMath.sol │ │ │ ├── helper/ │ │ │ │ └── StrategySwap.sol │ │ │ └── timelock/ │ │ │ ├── SafeMath.sol │ │ │ └── Timelock.sol │ │ └── test/ │ │ ├── ABDKTester.sol │ │ ├── CastingTester.sol │ │ ├── ControllerAccessTester.sol │ │ ├── ControllerTester.sol │ │ ├── LICENSE_BSD_4_Clause │ │ ├── LICENSE_BUSL │ │ ├── LICENSE_GPL_3 │ │ ├── LiquidationHelper.sol │ │ ├── OracleTester.sol │ │ └── VaultTester.sol │ ├── crab-migration.js │ ├── crabmigration-arguments.js │ ├── crabv2-arguments.js │ ├── deploy/ │ │ ├── 00_deploy_basic_coins.ts │ │ ├── 01_deploy_uniswapv3.ts │ │ ├── 02_deploy_core.ts │ │ ├── 03_deploy_pools.ts │ │ ├── 04_deploy_controller.ts │ │ ├── 05_deploy_periphery.ts │ │ ├── 06_deploy_crab_strategy.ts │ │ ├── 07_deploy_controller_helper.ts │ │ ├── 08_deploy_crab_v2.ts │ │ └── 09_deploy_crab_helper.ts │ ├── deployments/ │ │ ├── goerli/ │ │ │ ├── .chainId │ │ │ ├── ABDKMath64x64.json │ │ │ ├── Controller.json │ │ │ ├── ControllerHelper.json │ │ │ ├── ControllerHelperUtil.json │ │ │ ├── CrabHelper.json │ │ │ ├── CrabStrategyDeployment.json │ │ │ ├── CrabStrategyV2.json │ │ │ ├── MockErc20.json │ │ │ ├── NonfungiblePositionManager.json │ │ │ ├── OpynWETH9.json │ │ │ ├── Oracle.json │ │ │ ├── Quoter.json │ │ │ ├── ShortHelper.json │ │ │ ├── ShortPowerPerp.json │ │ │ ├── SqrtPriceMathPartial.json │ │ │ ├── SwapRouter.json │ │ │ ├── TickMathExternal.json │ │ │ ├── UniswapV3Factory.json │ │ │ ├── WPowerPerp.json │ │ │ └── solcInputs/ │ │ │ ├── 0233939f192df1cbf8f7a345e29af693.json │ │ │ ├── 05b9c7d057ff8b2bf36168b053759720.json │ │ │ ├── 31d85619debc3954507258d16df1741b.json │ │ │ ├── 59fefefa6d402a64e50de797130b653c.json │ │ │ ├── 5f1800dd06bba4733ee96eb427b535c3.json │ │ │ └── c53867cdbf46138ab42de1c7a1689875.json │ │ ├── mainnet/ │ │ │ ├── .chainId │ │ │ ├── ABDKMath64x64.json │ │ │ ├── Controller.json │ │ │ ├── ControllerHelper.json │ │ │ ├── ControllerHelperUtil.json │ │ │ ├── CrabHelper.json │ │ │ ├── CrabMigration.json │ │ │ ├── CrabStrategyV2.json │ │ │ ├── Oracle.json │ │ │ ├── Quoter.json │ │ │ ├── ShortHelper.json │ │ │ ├── ShortPowerPerp.json │ │ │ ├── SqrtPriceMathPartial.json │ │ │ ├── TickMathExternal.json │ │ │ ├── Timelock.json │ │ │ ├── WPowerPerp.json │ │ │ └── solcInputs/ │ │ │ ├── 30afee76cfee2d4cc1c12451e0258499.json │ │ │ ├── 56b4ec4ab07157f3d2fb7e1de805d93e.json │ │ │ ├── c53867cdbf46138ab42de1c7a1689875.json │ │ │ ├── d97d3d4b09e0d70518330d405a7dd9ff.json │ │ │ ├── e85d9fda89ae8c3780a8ae01da3f423c.json │ │ │ └── fc32ed9e00a9017e491333926bef5473.json │ │ ├── rinkebyArbitrum/ │ │ │ ├── .chainId │ │ │ ├── Controller.json │ │ │ ├── MockErc20.json │ │ │ ├── Oracle.json │ │ │ ├── Quoter.json │ │ │ ├── ShortHelper.json │ │ │ ├── VaultNFTManager.json │ │ │ ├── WSqueeth.json │ │ │ └── solcInputs/ │ │ │ ├── 1eb2d8df0d50660ef74af8c7c5cd526b.json │ │ │ ├── 49c79f88c6e4ede6ca1f2ffd46fef4fe.json │ │ │ ├── 4ad189f955354b6f5c4f3b0e4a7b5326.json │ │ │ ├── 63325f69769d83fcd46161b0222ee3cc.json │ │ │ ├── 65b5636a064484e3748f101fc0e531a8.json │ │ │ └── 7ff94f89a93cd7aa904196251e75bdb3.json │ │ └── ropsten/ │ │ ├── .chainId │ │ ├── ABDKMath64x64.json │ │ ├── Controller.json │ │ ├── ControllerHelper.json │ │ ├── ControllerHelperUtil.json │ │ ├── CrabMigration.json │ │ ├── CrabStrategyDeployment.json │ │ ├── CrabStrategyV2.json │ │ ├── NonfungiblePositionManager.json │ │ ├── Oracle.json │ │ ├── Quoter.json │ │ ├── ShortHelper.json │ │ ├── ShortPowerPerp.json │ │ ├── SqrtPriceMathPartial.json │ │ ├── SwapRouter.json │ │ ├── TickMathExternal.json │ │ ├── Timelock.json │ │ ├── UniswapV3Factory.json │ │ ├── WPowerPerp.json │ │ └── solcInputs/ │ │ ├── 30afee76cfee2d4cc1c12451e0258499.json │ │ ├── 5f450d03d2b8109eaf06de68c57d8c2b.json │ │ ├── 6176622d73f0107e1e6916638dbba9b9.json │ │ ├── ab83bcba860cd7677bf7e9d807e32da5.json │ │ ├── cd8e568ab17078249f8bced32d618ecf.json │ │ ├── d91027c30078be5bfba0223abd5c6e60.json │ │ ├── dfd7860ebd97501ecbdb5935c168e58b.json │ │ ├── e2a303b98172c2b7a0e4fda5f2d8e859.json │ │ ├── e85d9fda89ae8c3780a8ae01da3f423c.json │ │ └── fc32ed9e00a9017e491333926bef5473.json │ ├── docs/ │ │ ├── contract.hbs │ │ └── contracts-documentation/ │ │ ├── core/ │ │ │ ├── Controller.md │ │ │ ├── Oracle.md │ │ │ ├── ShortPowerPerp.md │ │ │ ├── WPowerPerp.md │ │ │ └── WSqueeth.md │ │ ├── external/ │ │ │ └── WETH9.md │ │ ├── import/ │ │ │ └── Uni.md │ │ ├── interfaces/ │ │ │ ├── IController.md │ │ │ ├── IERC20Detailed.md │ │ │ ├── IOracle.md │ │ │ ├── IShortPowerPerp.md │ │ │ ├── IVaultManagerNFT.md │ │ │ ├── IWETH9.md │ │ │ └── IWPowerPerp.md │ │ ├── libs/ │ │ │ ├── OracleLibrary.md │ │ │ ├── Power2Base.md │ │ │ └── VaultLib.md │ │ ├── mocks/ │ │ │ ├── IUniswapV3FlashCallback.md │ │ │ ├── MockController.md │ │ │ ├── MockErc20.md │ │ │ ├── MockOracle.md │ │ │ ├── MockShortPowerPerp.md │ │ │ ├── MockUniPositionManager.md │ │ │ ├── MockUniswapV3Pool.md │ │ │ ├── MockVaultNFTManager.md │ │ │ ├── MockWPowerPerp.md │ │ │ └── MockWSqueeth.md │ │ ├── periphery/ │ │ │ └── ShortHelper.md │ │ ├── strategy/ │ │ │ ├── CrabStrategy.md │ │ │ └── base/ │ │ │ ├── StrategyBase.md │ │ │ ├── StrategyFlashSwap.md │ │ │ └── StrategyMath.md │ │ └── test/ │ │ ├── ControllerTester.md │ │ ├── OracleTester.md │ │ └── VaultLibTester.md │ ├── env.example │ ├── hardhat.config.ts │ ├── package.json │ ├── scripts/ │ │ ├── deploy.js │ │ ├── docs/ │ │ │ └── docify.js │ │ ├── etherscan_verify.sh │ │ ├── publish.js │ │ ├── start_hardhat_fork.sh │ │ ├── stop_hardhat_fork.sh │ │ └── watch.js │ ├── tasks/ │ │ ├── addSqueethLiquidity.ts │ │ ├── addWethLiquidity.ts │ │ ├── buySqueeth.ts │ │ ├── buyWeth.ts │ │ ├── default.ts │ │ ├── increaseSlot.ts │ │ ├── sellSqueeth.ts │ │ ├── sellWeth.ts │ │ └── utils.ts │ ├── test/ │ │ ├── calculator.ts │ │ ├── e2e/ │ │ │ ├── crab-Migration.ts │ │ │ └── periphery/ │ │ │ └── controller-helper.ts │ │ ├── integration-tests/ │ │ │ ├── crabv2/ │ │ │ │ ├── crab-hedging-otc.ts │ │ │ │ ├── crab-helper.ts │ │ │ │ ├── crab-liquidation-dust.ts │ │ │ │ ├── crab-liquidation-flashswap.ts │ │ │ │ ├── crab-liquidation-full.ts │ │ │ │ ├── crab-shutdown.ts │ │ │ │ ├── crab-timelock.ts │ │ │ │ └── strategy-flow.ts │ │ │ ├── liquidation.ts │ │ │ ├── oracle-attack.ts │ │ │ ├── oracle_integration.ts │ │ │ ├── periphery/ │ │ │ │ └── controller-helper.ts │ │ │ ├── short_helper_integration.ts │ │ │ ├── strategy/ │ │ │ │ ├── crab-flashswap-liquidation.ts │ │ │ │ ├── crab-hedge-uniswap-price-based.ts │ │ │ │ ├── crab-hedge-uniswap-time-based.ts │ │ │ │ ├── crab-hedging-price-based.ts │ │ │ │ ├── crab-hedging-time-based.ts │ │ │ │ ├── crab-liquidation-dust.ts │ │ │ │ ├── crab-liquidation-full.ts │ │ │ │ ├── crab-shutdown.ts │ │ │ │ └── strategy-flow.ts │ │ │ └── uni-position-collateral.ts │ │ ├── setup.ts │ │ ├── unit-tests/ │ │ │ ├── abdk-math.ts │ │ │ ├── casting.ts │ │ │ ├── controller-funding.ts │ │ │ ├── controller-lptoken-collateral.ts │ │ │ ├── controller-pause-time.ts │ │ │ ├── controller-shutdown.ts │ │ │ ├── controller-vaults.ts │ │ │ ├── controller.ts │ │ │ ├── liquidation.ts │ │ │ ├── oracle-token-decimals.ts │ │ │ ├── oracle.ts │ │ │ ├── short-power-perp.ts │ │ │ ├── squeeth.ts │ │ │ ├── strategy/ │ │ │ │ ├── crab-migration.ts │ │ │ │ ├── crab-strategy-v2.ts │ │ │ │ ├── crab-strategy.ts │ │ │ │ └── timelock.ts │ │ │ └── vault-lib.ts │ │ ├── utils.ts │ │ └── vault-utils.ts │ └── tsconfig.json ├── services/ │ ├── graph-node/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── bin/ │ │ │ ├── create │ │ │ ├── debug │ │ │ ├── deploy │ │ │ ├── reassign │ │ │ └── remove │ │ ├── build.sh │ │ ├── cloudbuild.yaml │ │ ├── docker-compose.yml │ │ ├── hooks/ │ │ │ └── post_checkout │ │ ├── setup.sh │ │ ├── start │ │ ├── tag.sh │ │ └── wait_for │ └── package.json ├── subgraph/ │ ├── .gitignore │ ├── README.md │ ├── config/ │ │ ├── goerli-config.json │ │ ├── localhost-config.json │ │ ├── mainnet-config.json │ │ ├── rinkebyArbitrum-config.json │ │ └── ropsten-config.json │ ├── package.json │ ├── schema.graphql │ ├── src/ │ │ ├── bullStrategy.ts │ │ ├── constants.ts │ │ ├── controller.ts │ │ ├── crabV2.ts │ │ ├── crabstrategy.ts │ │ └── util.ts │ └── subgraph.template.yaml ├── zen-bull-netting/ │ ├── .gitignore │ ├── README.md │ ├── docs/ │ │ ├── .gitignore │ │ ├── book.css │ │ ├── book.toml │ │ └── src/ │ │ ├── README.md │ │ ├── SUMMARY.md │ │ └── src/ │ │ ├── FlashSwap.sol/ │ │ │ ├── contract.CallbackValidation.md │ │ │ ├── contract.FlashSwap.md │ │ │ └── contract.PoolAddress.md │ │ ├── NettingLib.sol/ │ │ │ └── contract.NettingLib.md │ │ ├── README.md │ │ ├── ZenBullNetting.sol/ │ │ │ └── contract.ZenBullNetting.md │ │ └── interface/ │ │ ├── IController.sol/ │ │ │ └── contract.IController.md │ │ ├── ICrabStrategyV2.sol/ │ │ │ └── contract.ICrabStrategyV2.md │ │ ├── IEulerSimpleLens.sol/ │ │ │ └── contract.IEulerSimpleLens.md │ │ ├── IFlashZen.sol/ │ │ │ └── contract.IFlashZen.md │ │ ├── IOracle.sol/ │ │ │ └── contract.IOracle.md │ │ ├── IWETH.sol/ │ │ │ └── contract.IWETH.md │ │ ├── IZenBullStrategy.sol/ │ │ │ └── contract.IZenBullStrategy.md │ │ └── README.md │ ├── foundry.toml │ ├── remappings.txt │ ├── script/ │ │ ├── DeployScript.s.sol │ │ ├── GoerliDeployScript.s.sol │ │ └── MainnetDeployScript.s.sol │ ├── src/ │ │ ├── FlashSwap.sol │ │ ├── NettingLib.sol │ │ ├── ZenBullNetting.sol │ │ └── interface/ │ │ ├── IController.sol │ │ ├── ICrabStrategyV2.sol │ │ ├── IEulerSimpleLens.sol │ │ ├── IFlashZen.sol │ │ ├── IOracle.sol │ │ ├── IWETH.sol │ │ └── IZenBullStrategy.sol │ └── test/ │ ├── ZenBullNettingBaseSetup.t.sol │ ├── fuzzing/ │ │ └── ZenBullNetting/ │ │ └── DepositAuctionFuzzing.t.sol │ ├── integration-test/ │ │ └── ZenBullNetting/ │ │ ├── DepositAuction.t.sol │ │ ├── DequeueEth.t.sol │ │ ├── DequeueZenBull.t.sol │ │ ├── NetAtPrice.t.sol │ │ └── WithdrawAuction.t.sol │ ├── unit-test/ │ │ ├── CancelNonce.t.sol │ │ ├── QueueEth.t.sol │ │ ├── QueueZenBull.t.sol │ │ ├── SetAuctionTwapPeriod.t.sol │ │ ├── SetDepositsIndex.t.sol │ │ ├── SetMinEthAmount.sol │ │ ├── SetMinZenBullAmount.t.sol │ │ ├── SetOTCPriceTolerance.t.sol │ │ ├── SetWithdrawsIndex.t.sol │ │ └── ToggleAuctionLive.t.sol │ └── util/ │ └── SigUtil.sol └── zen-bull-vault/ ├── .gitignore ├── LICENSE_BUSL ├── README.md ├── doc/ │ └── report/ │ ├── report_auction_bull │ ├── report_auction_bull.md │ ├── report_bull_strategy │ ├── report_bull_strategy.md │ ├── report_emergency_shutdown │ ├── report_emergency_shutdown.md │ ├── report_flash_bull │ └── report_flash_bull.md ├── foundry.toml ├── remappings.txt ├── script/ │ ├── AddLiquidityEuler.s.sol │ ├── Deploy.s.sol │ ├── GoerliAddUsdcLiquidityEuler.s.sol │ ├── GoerliAddWethLiquidityEuler.s.sol │ ├── GoerliDeploy.s.sol │ ├── GoerliDeployEmergencyWithdraw.s.sol │ ├── MainnetDeploy.s.sol │ ├── MainnetDeployEmergencyWithdraw.s.sol │ └── MainnetDeployShutdownEmergencyWithdraw.s.sol ├── src/ │ ├── EmergencyWithdraw.sol │ ├── FlashZen.sol │ ├── LeverageZen.sol │ ├── ShutdownEmergencyWithdraw.sol │ ├── UniFlash.sol │ ├── UniOracle.sol │ ├── ZenAuction.sol │ ├── ZenBullStrategy.sol │ ├── ZenEmergencyShutdown.sol │ └── interface/ │ ├── ICrabStrategyV2.sol │ ├── IEulerDToken.sol │ ├── IEulerEToken.sol │ ├── IEulerMarkets.sol │ ├── ILeverageZen.sol │ ├── IZenBullStrategy.sol │ └── IZenEmergencyWithdraw.sol └── test/ ├── e2e/ │ ├── EmergencyWithdrawScenarios.t.sol │ └── ShutdownEmergencyWithdrawTest.t.sol ├── fuzz-test/ │ ├── FlashZenFuzzTest.t.sol │ ├── LeverageZenFuzzTest.t.sol │ ├── ZenAuctionFuzzTest.t.sol │ └── ZenBullStrategyFuzzTest.t.sol ├── integration-test/ │ ├── EmergencyWithdraw/ │ │ ├── EmergencyRepayEulerDebtTest.t.sol │ │ ├── EmergencyWithdrawEthFromCrabTest.t.sol │ │ └── WithdrawEthTest.t.sol │ ├── FlashZenTestFork.t.sol │ ├── ZenAuctionTestFork.t.sol │ ├── ZenBullStrategyTestFork.t.sol │ └── ZenEmergencyShutdownTestFork.t.sol ├── unit-test/ │ ├── ZenBullStrategyTest.t.sol │ ├── mock/ │ │ ├── EulerDtokenMock.t.sol │ │ ├── EulerEtokenMock.t.sol │ │ ├── EulerMarketsMock.t.sol │ │ ├── EulerMock.t.sol │ │ └── Weth9Mock.t.sol │ └── util/ │ └── UnitSetupUtil.t.sol └── util/ ├── SigUtil.sol └── TestUtil.t.sol ================================================ FILE CONTENTS ================================================ ================================================ FILE: .circleci/config.yml ================================================ version: 2.1 orbs: coveralls: coveralls/coveralls@1.0.6 node: circleci/node@1.1.6 workflows: hardhat: jobs: - checkout-and-install-hardhat - compile-hardhat: requires: - checkout-and-install-hardhat - lint-hardhat: requires: - compile-hardhat - unit-test-hardhat: requires: - compile-hardhat - integration-test-hardhat: requires: - compile-hardhat - contract-size-hardhat: requires: - compile-hardhat - e2e-test-hardhat: requires: - compile-hardhat frontend: jobs: - checkout-and-install-frontend - unit-test-frontend: requires: - checkout-and-install-frontend crab-netting: jobs: - lint-crab-netting - compile-crab-netting: requires: - lint-crab-netting - test-crab-netting: requires: - compile-crab-netting zen-bull-vault: jobs: - compile-zen-bull-vault - test-zen-bull-vault: requires: - compile-zen-bull-vault jobs: ################ hardhat jobs checkout-and-install-hardhat: working_directory: ~/squeeth/packages/hardhat docker: - image: cimg/node:18.15.0 steps: - checkout: path: ~/squeeth - restore_cache: key: dependency-cache-{{ checksum "package.json" }} - run: name: Install packages command: yarn install - save_cache: key: dependency-cache-{{ checksum "package.json" }} paths: - node_modules - save_cache: key: squeeth-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/squeeth compile-hardhat: working_directory: ~/squeeth/packages/hardhat docker: - image: cimg/node:18.15.0 steps: - checkout: path: ~/squeeth - restore_cache: key: squeeth-{{ .Environment.CIRCLE_SHA1 }} - run: name: Compile Contracts command: npx hardhat compile - save_cache: key: typechain-cache-{{ .Environment.CIRCLE_SHA1 }} paths: - typechain - save_cache: key: artifacts-cache-{{ .Environment.CIRCLE_SHA1 }} paths: - artifacts lint-hardhat: working_directory: ~/squeeth/packages/hardhat docker: - image: cimg/node:18.15.0 steps: - checkout: path: ~/squeeth - restore_cache: key: squeeth-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: key: typechain-cache-{{ .Environment.CIRCLE_SHA1 }} - run: name: Lint command: yarn lint:check unit-test-hardhat: working_directory: ~/squeeth/packages/hardhat docker: - image: cimg/node:18.15.0 steps: - checkout: path: ~/squeeth - restore_cache: key: squeeth-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: key: typechain-cache-{{ .Environment.CIRCLE_SHA1 }} - run: name: Unit tests command: yarn test:crab-unit integration-test-hardhat: working_directory: ~/squeeth/packages/hardhat docker: - image: cimg/node:18.15.0 steps: - checkout: path: ~/squeeth - restore_cache: key: squeeth-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: key: typechain-cache-{{ .Environment.CIRCLE_SHA1 }} - run: name: Integration tests command: yarn test:crab-integration contract-size-hardhat: working_directory: ~/squeeth/packages/hardhat docker: - image: cimg/node:18.15.0 steps: - checkout: path: ~/squeeth - restore_cache: key: squeeth-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: key: artifacts-cache-{{ .Environment.CIRCLE_SHA1 }} - run: name: Check Contracts Size command: npx hardhat size-contracts e2e-test-hardhat: working_directory: ~/squeeth/packages/hardhat docker: - image: cimg/node:18.15.0 steps: - restore_cache: key: squeeth-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: key: typechain-cache-{{ .Environment.CIRCLE_SHA1 }} - run: name: Set Env Variables command: echo "export ALCHEMY_KEY=${ALCHEMY_KEY}" >> $BASH_ENV - run: name: Mainnet E2E Test command: yarn test:e2e ################ frontend jobs checkout-and-install-frontend: working_directory: ~/squeeth/packages/frontend docker: - image: cimg/node:18.15.0 steps: - checkout: path: ~/squeeth - restore_cache: key: dependency-frontend-cache-{{ checksum "package.json" }} - run: name: Install packages command: yarn install - save_cache: key: dependency-frontend-cache-{{ checksum "package.json" }} paths: - node_modules - save_cache: key: squeeth-frontend-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/squeeth unit-test-frontend: working_directory: ~/squeeth/packages/frontend docker: - image: cimg/node:18.15.0 steps: - checkout: path: ~/squeeth - restore_cache: key: squeeth-frontend-{{ .Environment.CIRCLE_SHA1 }} - run: name: Unit tests command: yarn test:ci ################ crab-netting jobs lint-crab-netting: working_directory: ~/squeeth/packages/crab-netting docker: - image: ghcr.io/foundry-rs/foundry:latest steps: - checkout - run: name: Lint crab-netting command: cd packages/crab-netting && FOUNDRY_PROFILE=fmt forge fmt --check compile-crab-netting: working_directory: ~/squeeth/packages/crab-netting docker: - image: ghcr.io/foundry-rs/foundry:latest steps: - checkout - run: name: Build crab-netting command: cd packages/crab-netting && forge build --force test-crab-netting: working_directory: ~/squeeth/packages/crab-netting docker: - image: ghcr.io/foundry-rs/foundry:latest steps: - checkout - run: cd packages/crab-netting && forge test -vv --gas-report ################ zen-bull-vault jobs compile-zen-bull-vault: working_directory: ~/squeeth/packages/zen-bull-vault docker: - image: ghcr.io/foundry-rs/foundry:latest steps: - checkout - run: name: Build zen-bull-vault command: cd packages/zen-bull-vault && forge build --force test-zen-bull-vault: working_directory: ~/squeeth/packages/zen-bull-vault docker: - image: ghcr.io/foundry-rs/foundry:latest steps: - checkout - run: cd packages/zen-bull-vault && forge test -vv --gas-report ================================================ FILE: .editorconfig ================================================ root = true [packages/**.js{,x}] indent_style = space indent_size = 2 [*.{sol,yul}] indent_style = space indent_size = 4 ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.md ================================================ --- name: Bug report about: Create a report to help us improve title: "" labels: "" assignees: "" --- **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Additional context** Add any other context about the problem here. ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.md ================================================ --- name: Feature request about: Suggest an idea for this project title: "" labels: "" assignees: "" --- **Please describe the problem you're having.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Screenshots** If applicable, add screenshots to help explain your problem. **Additional context** Add any other context or screenshots about the feature request here. ================================================ FILE: .github/pull_request_template.md ================================================ # Task: ## Description Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. Fixes (linear-task) ## Type of change - [ ] New feature - [ ] Bug fix - [ ] Testing code - [ ] Document update or config files ================================================ FILE: .gitignore ================================================ packages/subgraph/subgraph.yaml packages/subgraph/generated packages/subgraph/abis/* packages/hardhat/*.txt **/aws.json # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. **/node_modules packages/hardhat/artifacts* packages/hardhat/typechain* # ignore localhost, but keep other deployment record on git packages/hardhat/deployments/localhost packages/react-app/src/contracts/* !packages/react-app/src/contracts/external_contracts.js packages/hardhat/cache* packages/hardhat/coverage.json packages/hardhat/coverage/ packages/**/data packages/subgraph/config/config.json tenderly.yaml # dependencies /node_modules /.pnp .pnp.js # testing coverage # production build # misc .DS_Store .env packages/hardhat/.env* # debug npm-debug.log* yarn-debug.log* yarn-error.log* .idea #Local vscode folder .vscode # Local Netlify folder .netlify # asdf config **/.tool-versions packages/bull-vault/out packages/bull-vault/cache packages/crab-netting/out packages/crab-netting/cache soljson* lcov.info ================================================ FILE: .gitmodules ================================================ [submodule "packages/services/arbitrum"] path = packages/services/arbitrum url = https://github.com/OffchainLabs/arbitrum branch = master [submodule "packages/services/optimism"] path = packages/services/optimism url = https://github.com/ethereum-optimism/optimism branch = regenesis/0.4.0 [submodule "packages/zen-bull-vault/lib/squeeth-monorepo"] path = packages/zen-bull-vault/lib/squeeth-monorepo url = https://github.com/opynfinance/squeeth-monorepo [submodule "packages/zen-bull-vault/lib/openzeppelin-contracts"] path = packages/zen-bull-vault/lib/openzeppelin-contracts url = https://github.com/openzeppelin/openzeppelin-contracts [submodule "packages/zen-bull-vault/lib/v3-core"] path = packages/zen-bull-vault/lib/v3-core url = https://github.com/Uniswap/v3-core [submodule "packages/zen-bull-vault/lib/v3-periphery"] path = packages/zen-bull-vault/lib/v3-periphery url = https://github.com/Uniswap/v3-periphery [submodule "packages/crab-netting/lib/forge-std"] path = packages/crab-netting/lib/forge-std url = https://github.com/foundry-rs/forge-std [submodule "packages/crab-netting/lib/squeeth-monorepo"] path = packages/crab-netting/lib/squeeth-monorepo url = https://github.com/opynfinance/squeeth-monorepo/ [submodule "packages/crab-netting/lib/openzeppelin-contracts"] path = packages/crab-netting/lib/openzeppelin-contracts url = https://github.com/OpenZeppelin/openzeppelin-contracts [submodule "packages/crab-netting/lib/v3-periphery"] path = packages/crab-netting/lib/v3-periphery url = https://github.com/uniswap/v3-periphery [submodule "packages/crab-netting/lib/v3-core"] path = packages/crab-netting/lib/v3-core url = https://github.com/uniswap/v3-core [submodule "packages/zen-bull-vault/lib/forge-std"] path = packages/zen-bull-vault/lib/forge-std url = https://github.com/foundry-rs/forge-std [submodule "packages/zen-bull-netting/lib/forge-std"] path = packages/zen-bull-netting/lib/forge-std url = https://github.com/foundry-rs/forge-std [submodule "packages/zen-bull-netting/lib/v3-core"] path = packages/zen-bull-netting/lib/v3-core url = https://github.com/Uniswap/v3-core branch = 0.8 [submodule "packages/zen-bull-netting/lib/v3-periphery"] path = packages/zen-bull-netting/lib/v3-periphery url = https://github.com/Uniswap/v3-periphery branch = 0.8 [submodule "packages/zen-bull-netting/lib/openzeppelin-contracts"] path = packages/zen-bull-netting/lib/openzeppelin-contracts url = https://github.com/OpenZeppelin/openzeppelin-contracts ================================================ FILE: .gitpod.yml ================================================ tasks: - name: App init: > yarn && gp sync-done install command: REACT_APP_PROVIDER=$(gp url 8545) yarn start - name: Chain init: gp sync-await install command: yarn chain openMode: split-right - name: Deployment init: gp sync-await install command: yarn deploy openMode: split-right ports: - port: 3000 onOpen: open-preview - port: 8545 onOpen: ignore github: prebuilds: pullRequestsFromForks: true addComment: true vscode: extensions: - dbaeumer.vscode-eslint - esbenp.prettier-vscode - juanblanco.solidity ================================================ FILE: .husky/pre-commit ================================================ #!/bin/sh . "$(dirname "$0")/_/husky.sh" npx lint-staged ================================================ FILE: .huskyrc ================================================ { "hooks": { "pre-commit": "lint-staged", "pre-push": "yarn pre-push" } } ================================================ FILE: .lintstagedrc ================================================ { "packages/hardhat/**/*.+(js|ts|json|sol)": [ "yarn lint-contracts" ] } ================================================ FILE: README.md ================================================ # Squeeth Monorepo
The Squeethiest 🐱
## 🤔 What is Squeeth The squeeth contract is designed for users to long or short a special index: Eth², as an implementation of a Power Perpetual.
)}
{strategy === 'zenbull' && (
)}
{text ?? ''}
By connecting a wallet, you agree to the Opyn user Terms of Service and acknowledge that you have read and understand the Opyn Privacy Policy. Our Terms of Service and Opyn Privacy Policy were last updated on April 20, 2023.