diff --git a/src/App.vue b/src/App.vue
index 13fd20d..a96cc24 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -13,7 +13,7 @@ import { useRoundsStore } from "@/stores/rounds";
import SlideoutPanel from "./components/SlideoutPanel.vue";
import ConnectWallet from "./components/ConnectWallet.vue";
-import StakeComponent from "@/components/StakeComponent.vue";
+import CardComponent from "@/components/CardComponent.vue";
import {
watchAccount,
@@ -145,7 +145,7 @@ onMounted(async () => {
diff --git a/src/assets/contracts/Quoter.json b/src/assets/contracts/Quoter.json
new file mode 100644
index 0000000..8b835a9
--- /dev/null
+++ b/src/assets/contracts/Quoter.json
@@ -0,0 +1,197 @@
+{
+ "contractName": "Quoter",
+ "contractAddress": "0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6",
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_factory",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_WETH9",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "inputs": [],
+ "name": "WETH9",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "factory",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "path",
+ "type": "bytes"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ }
+ ],
+ "name": "quoteExactInput",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "tokenIn",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "tokenOut",
+ "type": "address"
+ },
+ {
+ "internalType": "uint24",
+ "name": "fee",
+ "type": "uint24"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint160",
+ "name": "sqrtPriceLimitX96",
+ "type": "uint160"
+ }
+ ],
+ "name": "quoteExactInputSingle",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "path",
+ "type": "bytes"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ }
+ ],
+ "name": "quoteExactOutput",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "tokenIn",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "tokenOut",
+ "type": "address"
+ },
+ {
+ "internalType": "uint24",
+ "name": "fee",
+ "type": "uint24"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amountOut",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint160",
+ "name": "sqrtPriceLimitX96",
+ "type": "uint160"
+ }
+ ],
+ "name": "quoteExactOutputSingle",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amountIn",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "int256",
+ "name": "amount0Delta",
+ "type": "int256"
+ },
+ {
+ "internalType": "int256",
+ "name": "amount1Delta",
+ "type": "int256"
+ },
+ {
+ "internalType": "bytes",
+ "name": "path",
+ "type": "bytes"
+ }
+ ],
+ "name": "uniswapV3SwapCallback",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/assets/contracts/UniswapPool.json b/src/assets/contracts/UniswapPool.json
index 12d3416..3359ecf 100644
--- a/src/assets/contracts/UniswapPool.json
+++ b/src/assets/contracts/UniswapPool.json
@@ -1,5 +1,992 @@
{
- "contractName": "OurUniV3Pool",
- "contractAddress": "0xAbcc96a2cA1642B52AeCa81F3BCb25A92D7b9dDB",
- "abi": [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"CollectProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paid1","type":"uint256"}],"name":"Flash","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextOld","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"observationCardinalityNextNew","type":"uint16"}],"name":"IncreaseObservationCardinalityNext","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Initialize","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"int24","name":"tickLower","type":"int24"},{"indexed":true,"internalType":"int24","name":"tickUpper","type":"int24"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"feeProtocol0Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1Old","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol0New","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"feeProtocol1New","type":"uint8"}],"name":"SetFeeProtocol","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"int256","name":"amount0","type":"int256"},{"indexed":false,"internalType":"int256","name":"amount1","type":"int256"},{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Swap","type":"event"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collect","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint128","name":"amount0Requested","type":"uint128"},{"internalType":"uint128","name":"amount1Requested","type":"uint128"}],"name":"collectProtocol","outputs":[{"internalType":"uint128","name":"amount0","type":"uint128"},{"internalType":"uint128","name":"amount1","type":"uint128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal0X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeGrowthGlobal1X128","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"}],"name":"increaseObservationCardinalityNext","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLiquidityPerTick","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"observations","outputs":[{"internalType":"uint32","name":"blockTimestamp","type":"uint32"},{"internalType":"int56","name":"tickCumulative","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityCumulativeX128","type":"uint160"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"secondsAgos","type":"uint32[]"}],"name":"observe","outputs":[{"internalType":"int56[]","name":"tickCumulatives","type":"int56[]"},{"internalType":"uint160[]","name":"secondsPerLiquidityCumulativeX128s","type":"uint160[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"positions","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFees","outputs":[{"internalType":"uint128","name":"token0","type":"uint128"},{"internalType":"uint128","name":"token1","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"feeProtocol0","type":"uint8"},{"internalType":"uint8","name":"feeProtocol1","type":"uint8"}],"name":"setFeeProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"slot0","outputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"uint16","name":"observationIndex","type":"uint16"},{"internalType":"uint16","name":"observationCardinality","type":"uint16"},{"internalType":"uint16","name":"observationCardinalityNext","type":"uint16"},{"internalType":"uint8","name":"feeProtocol","type":"uint8"},{"internalType":"bool","name":"unlocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"name":"snapshotCumulativesInside","outputs":[{"internalType":"int56","name":"tickCumulativeInside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityInsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsInside","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[{"internalType":"int256","name":"amount0","type":"int256"},{"internalType":"int256","name":"amount1","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int16","name":"","type":"int16"}],"name":"tickBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int24","name":"","type":"int24"}],"name":"ticks","outputs":[{"internalType":"uint128","name":"liquidityGross","type":"uint128"},{"internalType":"int128","name":"liquidityNet","type":"int128"},{"internalType":"uint256","name":"feeGrowthOutside0X128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthOutside1X128","type":"uint256"},{"internalType":"int56","name":"tickCumulativeOutside","type":"int56"},{"internalType":"uint160","name":"secondsPerLiquidityOutsideX128","type":"uint160"},{"internalType":"uint32","name":"secondsOutside","type":"uint32"},{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
-}
+ "contractName": "OurUniV3Pool",
+ "contractAddress": "0xAbcc96a2cA1642B52AeCa81F3BCb25A92D7b9dDB",
+ "abi": [
+ {
+ "inputs": [],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "int24",
+ "name": "tickLower",
+ "type": "int24"
+ },
+ {
+ "indexed": true,
+ "internalType": "int24",
+ "name": "tickUpper",
+ "type": "int24"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint128",
+ "name": "amount",
+ "type": "uint128"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount0",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount1",
+ "type": "uint256"
+ }
+ ],
+ "name": "Burn",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "int24",
+ "name": "tickLower",
+ "type": "int24"
+ },
+ {
+ "indexed": true,
+ "internalType": "int24",
+ "name": "tickUpper",
+ "type": "int24"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint128",
+ "name": "amount0",
+ "type": "uint128"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint128",
+ "name": "amount1",
+ "type": "uint128"
+ }
+ ],
+ "name": "Collect",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint128",
+ "name": "amount0",
+ "type": "uint128"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint128",
+ "name": "amount1",
+ "type": "uint128"
+ }
+ ],
+ "name": "CollectProtocol",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount0",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount1",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "paid0",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "paid1",
+ "type": "uint256"
+ }
+ ],
+ "name": "Flash",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint16",
+ "name": "observationCardinalityNextOld",
+ "type": "uint16"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint16",
+ "name": "observationCardinalityNextNew",
+ "type": "uint16"
+ }
+ ],
+ "name": "IncreaseObservationCardinalityNext",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint160",
+ "name": "sqrtPriceX96",
+ "type": "uint160"
+ },
+ {
+ "indexed": false,
+ "internalType": "int24",
+ "name": "tick",
+ "type": "int24"
+ }
+ ],
+ "name": "Initialize",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "int24",
+ "name": "tickLower",
+ "type": "int24"
+ },
+ {
+ "indexed": true,
+ "internalType": "int24",
+ "name": "tickUpper",
+ "type": "int24"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint128",
+ "name": "amount",
+ "type": "uint128"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount0",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount1",
+ "type": "uint256"
+ }
+ ],
+ "name": "Mint",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint8",
+ "name": "feeProtocol0Old",
+ "type": "uint8"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint8",
+ "name": "feeProtocol1Old",
+ "type": "uint8"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint8",
+ "name": "feeProtocol0New",
+ "type": "uint8"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint8",
+ "name": "feeProtocol1New",
+ "type": "uint8"
+ }
+ ],
+ "name": "SetFeeProtocol",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "int256",
+ "name": "amount0",
+ "type": "int256"
+ },
+ {
+ "indexed": false,
+ "internalType": "int256",
+ "name": "amount1",
+ "type": "int256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint160",
+ "name": "sqrtPriceX96",
+ "type": "uint160"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint128",
+ "name": "liquidity",
+ "type": "uint128"
+ },
+ {
+ "indexed": false,
+ "internalType": "int24",
+ "name": "tick",
+ "type": "int24"
+ }
+ ],
+ "name": "Swap",
+ "type": "event"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "int24",
+ "name": "tickLower",
+ "type": "int24"
+ },
+ {
+ "internalType": "int24",
+ "name": "tickUpper",
+ "type": "int24"
+ },
+ {
+ "internalType": "uint128",
+ "name": "amount",
+ "type": "uint128"
+ }
+ ],
+ "name": "burn",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount1",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "int24",
+ "name": "tickLower",
+ "type": "int24"
+ },
+ {
+ "internalType": "int24",
+ "name": "tickUpper",
+ "type": "int24"
+ },
+ {
+ "internalType": "uint128",
+ "name": "amount0Requested",
+ "type": "uint128"
+ },
+ {
+ "internalType": "uint128",
+ "name": "amount1Requested",
+ "type": "uint128"
+ }
+ ],
+ "name": "collect",
+ "outputs": [
+ {
+ "internalType": "uint128",
+ "name": "amount0",
+ "type": "uint128"
+ },
+ {
+ "internalType": "uint128",
+ "name": "amount1",
+ "type": "uint128"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint128",
+ "name": "amount0Requested",
+ "type": "uint128"
+ },
+ {
+ "internalType": "uint128",
+ "name": "amount1Requested",
+ "type": "uint128"
+ }
+ ],
+ "name": "collectProtocol",
+ "outputs": [
+ {
+ "internalType": "uint128",
+ "name": "amount0",
+ "type": "uint128"
+ },
+ {
+ "internalType": "uint128",
+ "name": "amount1",
+ "type": "uint128"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "factory",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "fee",
+ "outputs": [
+ {
+ "internalType": "uint24",
+ "name": "",
+ "type": "uint24"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "feeGrowthGlobal0X128",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "feeGrowthGlobal1X128",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ }
+ ],
+ "name": "flash",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint16",
+ "name": "observationCardinalityNext",
+ "type": "uint16"
+ }
+ ],
+ "name": "increaseObservationCardinalityNext",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint160",
+ "name": "sqrtPriceX96",
+ "type": "uint160"
+ }
+ ],
+ "name": "initialize",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "liquidity",
+ "outputs": [
+ {
+ "internalType": "uint128",
+ "name": "",
+ "type": "uint128"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "maxLiquidityPerTick",
+ "outputs": [
+ {
+ "internalType": "uint128",
+ "name": "",
+ "type": "uint128"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "int24",
+ "name": "tickLower",
+ "type": "int24"
+ },
+ {
+ "internalType": "int24",
+ "name": "tickUpper",
+ "type": "int24"
+ },
+ {
+ "internalType": "uint128",
+ "name": "amount",
+ "type": "uint128"
+ },
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ }
+ ],
+ "name": "mint",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount1",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "observations",
+ "outputs": [
+ {
+ "internalType": "uint32",
+ "name": "blockTimestamp",
+ "type": "uint32"
+ },
+ {
+ "internalType": "int56",
+ "name": "tickCumulative",
+ "type": "int56"
+ },
+ {
+ "internalType": "uint160",
+ "name": "secondsPerLiquidityCumulativeX128",
+ "type": "uint160"
+ },
+ {
+ "internalType": "bool",
+ "name": "initialized",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint32[]",
+ "name": "secondsAgos",
+ "type": "uint32[]"
+ }
+ ],
+ "name": "observe",
+ "outputs": [
+ {
+ "internalType": "int56[]",
+ "name": "tickCumulatives",
+ "type": "int56[]"
+ },
+ {
+ "internalType": "uint160[]",
+ "name": "secondsPerLiquidityCumulativeX128s",
+ "type": "uint160[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "name": "positions",
+ "outputs": [
+ {
+ "internalType": "uint128",
+ "name": "liquidity",
+ "type": "uint128"
+ },
+ {
+ "internalType": "uint256",
+ "name": "feeGrowthInside0LastX128",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "feeGrowthInside1LastX128",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint128",
+ "name": "tokensOwed0",
+ "type": "uint128"
+ },
+ {
+ "internalType": "uint128",
+ "name": "tokensOwed1",
+ "type": "uint128"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "protocolFees",
+ "outputs": [
+ {
+ "internalType": "uint128",
+ "name": "token0",
+ "type": "uint128"
+ },
+ {
+ "internalType": "uint128",
+ "name": "token1",
+ "type": "uint128"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint8",
+ "name": "feeProtocol0",
+ "type": "uint8"
+ },
+ {
+ "internalType": "uint8",
+ "name": "feeProtocol1",
+ "type": "uint8"
+ }
+ ],
+ "name": "setFeeProtocol",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "slot0",
+ "outputs": [
+ {
+ "internalType": "uint160",
+ "name": "sqrtPriceX96",
+ "type": "uint160"
+ },
+ {
+ "internalType": "int24",
+ "name": "tick",
+ "type": "int24"
+ },
+ {
+ "internalType": "uint16",
+ "name": "observationIndex",
+ "type": "uint16"
+ },
+ {
+ "internalType": "uint16",
+ "name": "observationCardinality",
+ "type": "uint16"
+ },
+ {
+ "internalType": "uint16",
+ "name": "observationCardinalityNext",
+ "type": "uint16"
+ },
+ {
+ "internalType": "uint8",
+ "name": "feeProtocol",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bool",
+ "name": "unlocked",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "int24",
+ "name": "tickLower",
+ "type": "int24"
+ },
+ {
+ "internalType": "int24",
+ "name": "tickUpper",
+ "type": "int24"
+ }
+ ],
+ "name": "snapshotCumulativesInside",
+ "outputs": [
+ {
+ "internalType": "int56",
+ "name": "tickCumulativeInside",
+ "type": "int56"
+ },
+ {
+ "internalType": "uint160",
+ "name": "secondsPerLiquidityInsideX128",
+ "type": "uint160"
+ },
+ {
+ "internalType": "uint32",
+ "name": "secondsInside",
+ "type": "uint32"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "zeroForOne",
+ "type": "bool"
+ },
+ {
+ "internalType": "int256",
+ "name": "amountSpecified",
+ "type": "int256"
+ },
+ {
+ "internalType": "uint160",
+ "name": "sqrtPriceLimitX96",
+ "type": "uint160"
+ },
+ {
+ "internalType": "bytes",
+ "name": "data",
+ "type": "bytes"
+ }
+ ],
+ "name": "swap",
+ "outputs": [
+ {
+ "internalType": "int256",
+ "name": "amount0",
+ "type": "int256"
+ },
+ {
+ "internalType": "int256",
+ "name": "amount1",
+ "type": "int256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "int16",
+ "name": "",
+ "type": "int16"
+ }
+ ],
+ "name": "tickBitmap",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "tickSpacing",
+ "outputs": [
+ {
+ "internalType": "int24",
+ "name": "",
+ "type": "int24"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "int24",
+ "name": "",
+ "type": "int24"
+ }
+ ],
+ "name": "ticks",
+ "outputs": [
+ {
+ "internalType": "uint128",
+ "name": "liquidityGross",
+ "type": "uint128"
+ },
+ {
+ "internalType": "int128",
+ "name": "liquidityNet",
+ "type": "int128"
+ },
+ {
+ "internalType": "uint256",
+ "name": "feeGrowthOutside0X128",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "feeGrowthOutside1X128",
+ "type": "uint256"
+ },
+ {
+ "internalType": "int56",
+ "name": "tickCumulativeOutside",
+ "type": "int56"
+ },
+ {
+ "internalType": "uint160",
+ "name": "secondsPerLiquidityOutsideX128",
+ "type": "uint160"
+ },
+ {
+ "internalType": "uint32",
+ "name": "secondsOutside",
+ "type": "uint32"
+ },
+ {
+ "internalType": "bool",
+ "name": "initialized",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "token0",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "token1",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/components/StakeComponent.vue b/src/components/CardComponent.vue
similarity index 100%
rename from src/components/StakeComponent.vue
rename to src/components/CardComponent.vue
diff --git a/src/components/ClaimComponent.vue b/src/components/ClaimComponent.vue
index d72f9a9..5b89351 100644
--- a/src/components/ClaimComponent.vue
+++ b/src/components/ClaimComponent.vue
@@ -1,5 +1,5 @@
-
+
Unclaimed
Sacrifice to earn $BLOOD
-
+
diff --git a/src/components/StakeComponentV1.vue b/src/components/StakeComponentV1.vue
index ec2d507..1cb9ec3 100644
--- a/src/components/StakeComponentV1.vue
+++ b/src/components/StakeComponentV1.vue
@@ -108,7 +108,7 @@
diff --git a/src/main.js b/src/main.js
index 21a7470..977616a 100644
--- a/src/main.js
+++ b/src/main.js
@@ -3,6 +3,7 @@ import { useWalletStoreV2 } from "@/stores/walletV2";
import { useTokenStore } from "@/stores/tokens";
import { useMemeburnerStore } from "@/stores/memeburner";
import { useRewardLockerStore } from "@/stores/rewardlocker";
+import { useUniswapStore } from "@/stores/uniswap";
import { useRoundsStore } from "@/stores/rounds";
import { createApp } from 'vue'
@@ -85,6 +86,7 @@ const tokenStore = useTokenStore();
const memeBurnerStore = useMemeburnerStore();
const rewardLockerStore = useRewardLockerStore();
const roundsStore = useRoundsStore();
+const uniswapStore = useUniswapStore();
const goerliKey = import.meta.env.VITE_GOERLI_KEY;
@@ -150,7 +152,7 @@ watchContractEvent(
abi: memeBurnerStore.config.abi,
eventName: "MemeSacrificed",
},
- async (log) => {
+ async (log) => {
console.log("memeSacrificedEvent", log);
const token = log[0].args.sacrificedToken;
await roundsStore.updateCurrentRound(token);
@@ -179,7 +181,8 @@ watchAccount(async (account) => {
await memeBurnerStore.init();
await tokenStore.initV2();
await rewardLockerStore.init();
- await walletStore.loadWalletData();
+ await walletStore.loadWalletData();
+ await uniswapStore.init();
} else {
walletStore.address = null;
walletStore.connected = false;
@@ -193,18 +196,20 @@ watchNetwork((network) => {
}
});
-watchContractEvent(
- {
- address: memeBurnerStore.config.contractAddress,
- abi: memeBurnerStore.config.abi,
- eventName: "MemeSacrificed",
- },
- async (log) => {
- console.log("memeSacrificedEvent", log);
- const token = log[0].args.sacrificedToken;
- await roundsStore.updateCurrentRound(token);
- }
- );
+
+
+// watchContractEvent(
+// {
+// address: memeBurnerStore.config.contractAddress,
+// abi: memeBurnerStore.config.abi,
+// eventName: "MemeSacrificed",
+// },
+// async (log) => {
+// console.log("memeSacrificedEvent", log);
+// const token = log[0].args.sacrificedToken;
+// await roundsStore.updateCurrentRound(token);
+// }
+// );
await walletStore.init();
await tokenStore.initV2();
diff --git a/src/stores/memeburner.js b/src/stores/memeburner.js
index 286b3ed..09bf889 100644
--- a/src/stores/memeburner.js
+++ b/src/stores/memeburner.js
@@ -32,7 +32,9 @@ export const useMemeburnerStore = defineStore("memeburner", {
const rewards = await this.contract.read.getRewardForSacrifice([
tokenStore.activeToken.contractAddress,
amount,
- ]);
+ ]);
+ console.log("tokenStore.activeToken.contractAddress", tokenStore.activeToken.contractAddress);
+ console.log("amount", amount);
console.log("rewards", rewards);
return rewards;
},
@@ -97,9 +99,27 @@ export const useMemeburnerStore = defineStore("memeburner", {
} finally {
this.loading = false;
}
- },
+ },
+ async sacrificeMemeAndBuyBLOOD(amount) {
+ const tokenStore = useTokenStore();
+
+ const amountDecimal = BigInt(amount * Math.pow(10, tokenStore.activeToken.decimals));
+ var hash = await this.contract.write.sacrificeMemeAndBuyBLOOD([
+ tokenStore.activeToken.contractAddress,
+ amountDecimal.toString(),
+ 0,
+ ]);
+ return hash;
+ },
async getGoalInBLOOD(roundNumber) {
return await this.contract.read.getGoalInBLOOD([roundNumber]);
- },
+ },
+ async getAmountETHBase(amount) {
+ console.log("getAmountETHBase");
+ const tokenStore = useTokenStore();
+ return await this.contract.read.getAmountETHBase([tokenStore.activeToken.contract.address, amount, true]);
+
+
+ }
},
});
diff --git a/src/stores/tokens.js b/src/stores/tokens.js
index 6d62890..30cdfc8 100644
--- a/src/stores/tokens.js
+++ b/src/stores/tokens.js
@@ -158,7 +158,7 @@ export const useTokenStore = defineStore("token", {
if (walletStore.connected) {
//TODO, wenn connected, dann all diese Daten laden?
this.activeToken.balance = await walletStore.getTokenBalance(token);
- this.activeToken.allowance = await this.allowance();
+ this.activeToken.allowance = Number(await this.allowance());
}
},
async allowance() {
diff --git a/src/stores/uniswap.js b/src/stores/uniswap.js
new file mode 100644
index 0000000..b7375c9
--- /dev/null
+++ b/src/stores/uniswap.js
@@ -0,0 +1,86 @@
+import { defineStore } from "pinia";
+import { useWalletStoreV2 } from "@/stores/walletV2";
+import QuoterJson from "@/assets/contracts/Quoter.json";
+import UniswapPoolJson from "@/assets/contracts/UniswapPool.json";
+import { useMemeburnerStore } from "@/stores/memeburner";
+
+import { getContract, multicall } from "@wagmi/core";
+
+export const useUniswapStore = defineStore("uniswap", {
+ state: () => ({
+ quoateV3Contract: {},
+ quoateV2Contract: {},
+ uniswapPoolContract: {},
+ poolData: {
+ token0: null,
+ token1: null,
+ fee: null,
+ },
+ }),
+ getters: {},
+ actions: {
+ init() {
+ console.log("init uniswap");
+ const walletStore = useWalletStoreV2();
+
+ this.quoateV3Contract = getContract({
+ address: QuoterJson.contractAddress,
+ abi: QuoterJson.abi,
+ walletClient: walletStore.walletClient || walletStore.publicClient,
+ });
+
+ this.uniswapPoolContract = getContract({
+ address: UniswapPoolJson.contractAddress,
+ abi: UniswapPoolJson.abi,
+ walletClient: walletStore.walletClient || walletStore.publicClient,
+ });
+
+ this.getPoolData();
+ },
+
+ async quoteExactInputSingle(amount) {
+ console.log("quoteExactInputSingle");
+ const memeBurnerStore = useMemeburnerStore();
+ var amountEthBase = await memeBurnerStore.getAmountETHBase(amount);
+ console.log("123", {
+ token1: this.poolData.token1,
+ token0: this.poolData.token0,
+ fee: this.poolData.fee,
+ amountEthBase,
+ pricelimit: 0, //sqrtPriceLimitX96
+ });
+ const quotedAmountOut = await this.quoateV3Contract.read.quoteExactInputSingle([
+ this.poolData.token1,
+ this.poolData.token0,
+ this.poolData.fee,
+ amountEthBase,
+ 0, //sqrtPriceLimitX96
+ ]);
+ return quotedAmountOut;
+ },
+ async getPoolData() {
+ console.log("getPoolData");
+ const contracts = [];
+ contracts.push(
+ {
+ ...this.uniswapPoolContract,
+ functionName: "token0",
+ },
+ {
+ ...this.uniswapPoolContract,
+ functionName: "token1",
+ },
+ {
+ ...this.uniswapPoolContract,
+ functionName: "fee",
+ }
+ );
+ const data = await multicall({
+ contracts,
+ });
+ this.poolData.token0 = data[0].result;
+ this.poolData.token1 = data[1].result;
+ this.poolData.fee = data[2].result;
+ },
+ },
+});
diff --git a/src/views/ProfileView.vue b/src/views/ProfileView.vue
index 869f0ea..5640b2a 100644
--- a/src/views/ProfileView.vue
+++ b/src/views/ProfileView.vue
@@ -7,67 +7,67 @@
{{ getAddressShortName(walletStore.address) }}
-
-
-
+
+
+ Connect your wallet to see your profile.
+
Connect
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

-
-
$PEPE
-
+
-
-
-
-
-
-
-
1,2b
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
139m
-
-

-
-
$SHIB
-
-
-
0
-
-

-
-
$ELON
+
$PEPE
-
+
+
+
+
+
+
1,2b
+
+

+
+
$PEPE
+
+
+
139m
+
+

+
+
$SHIB
+
+
+
0
+
+

+
+
$ELON
+
+
+
+
+
usesacrificememe
+
+ //on sacrificememe calculate minEthAmount )
+ //on bloodbuy calculate minBloodamount (quoatedAmount * 0,995) - 100
+ //0,995 Schlupf (siehe app.uniswap (0,5%))
+ //if the price move more like this Schlupf (0,5%), dann revert
+ //uniswapv2 quoater for sacrificememe
+ console.log("quotedAmountOut", quotedAmountOut);
+}
+
async function claimView() {
var resultStake = await rewardLockerStore.contract.read.claim([[0, 1, 2]]);
console.log("resultStake", resultStake);