From 2ef0d4057ae795caacb1e7e43e6324e68117dc1a Mon Sep 17 00:00:00 2001 From: Tikhon Date: Sun, 3 Dec 2023 12:48:31 +0100 Subject: [PATCH 1/3] wip --- demo/app/src/components/trade-dialog.tsx | 26 ++++++++++++++++-------- demo/app/src/config/contracts.ts | 7 ++++++- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/demo/app/src/components/trade-dialog.tsx b/demo/app/src/components/trade-dialog.tsx index 2f07a29..f2e2cd7 100644 --- a/demo/app/src/components/trade-dialog.tsx +++ b/demo/app/src/components/trade-dialog.tsx @@ -7,7 +7,7 @@ import Image from "next/image"; import { Address, parseEther, parseUnits } from "viem"; import { useAccount, - useBalance, + useBalance, useContractRead, useContractWrite, useSendTransaction, } from "wagmi"; @@ -24,9 +24,9 @@ import { Pair, chainlinkPairToFeedId } from "@/_types"; import { useState } from "react"; import { wethConfig, - proxyConfig, + swapAppConfig, usdcConfig, - avaxConfig, + avaxConfig, oracleConfig, } from "@/config/contracts"; import { Check } from "lucide-react"; @@ -122,7 +122,7 @@ const TradeDialog = ({ pair }: { pair: Pair }) => { }); const { writeAsync: trade } = useContractWrite({ - ...proxyConfig, + ...swapAppConfig, functionName: "trade", onError(error) { toast({ @@ -164,27 +164,37 @@ const TradeDialog = ({ pair }: { pair: Pair }) => { value: fromAmount ? parseEther(`${fromAmount}`) : undefined, }); await approveWeth({ - args: [proxyConfig.address, parseEther(`${fromAmount}`)], + args: [swapAppConfig.address, parseEther(`${fromAmount}`)], }); } if (tokenA == avaxConfig.address) { await approveAvax({ - args: [proxyConfig.address, parseEther(`${fromAmount}`)], + args: [swapAppConfig.address, parseEther(`${fromAmount}`)], }); } if (tokenA == usdcConfig.address) { await approveUsdc({ - args: [proxyConfig.address, parseEther(`${fromAmount}`)], + args: [swapAppConfig.address, parseEther(`${fromAmount}`)], }); } const nonce = BigInt(new Date().getTime()); + const tradeArgs = [tokenA!, tokenB!, amountA, feedId] as const; const result = await trade({ - args: [tokenA!, tokenB!, parseEther(`${fromAmount}`), feedId, nonce], + args: [...tradeArgs, nonce], }); + const { refetch} = useContractRead({ + ...oracleConfig, + functionName: "previewFallbackCall", + args: [swapAppConfig.address, tradeArgs, nonce, address], + }); + setInterval(async() => { + const result = await refetch(); + console.log(result); + }, 1000); toast({ title: "Swap completed:", description: `${values.from} ${tokenABalance?.symbol} for ${values.to} ${tokenBBalance?.symbol}`, diff --git a/demo/app/src/config/contracts.ts b/demo/app/src/config/contracts.ts index 2d9e507..7f7660f 100644 --- a/demo/app/src/config/contracts.ts +++ b/demo/app/src/config/contracts.ts @@ -477,7 +477,12 @@ export const avaxConfig = { ], } as const; -export const proxyConfig = { +export const oracleConfig = { + address: '0x9EADa48404913bE9b222310Cc006CE2656427779', + abi: [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"string","name":"feedParamKey","type":"string"},{"internalType":"string[]","name":"feeds","type":"string[]"},{"internalType":"string","name":"timeParamKey","type":"string"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"StreamsLookup","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"callbackContract","type":"address"},{"internalType":"bytes","name":"callbackArgs","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"addFakeRequest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"callbackContract","type":"address"},{"internalType":"bytes","name":"callbackArgs","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"addRequest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"values","type":"bytes[]"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"checkCallback","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"address","name":"source","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct Log","name":"log","type":"tuple"},{"internalType":"bytes","name":"checkData","type":"bytes"}],"name":"checkLog","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"callbackContract","type":"address"},{"internalType":"bytes","name":"callbackArgs","type":"bytes"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"fallbackCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"performData","type":"bytes"}],"name":"performUpkeep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}] +} + +export const swapAppConfig = { address: "0xcB2c15CEe8309A2442a1b0B35c475e1531C4CFE4", abi: [ { From eee344808ef5621757ec70c2e20ee5586e2115af Mon Sep 17 00:00:00 2001 From: Tikhon Date: Sun, 3 Dec 2023 22:14:21 +0100 Subject: [PATCH 2/3] replaced tokens with fortis coins --- demo/app/src/components/trade-button.tsx | 2 +- demo/app/src/components/trade-dialog.tsx | 71 +-- demo/app/src/config/contracts.ts | 710 +---------------------- 3 files changed, 25 insertions(+), 758 deletions(-) diff --git a/demo/app/src/components/trade-button.tsx b/demo/app/src/components/trade-button.tsx index 6bcff2c..09c856a 100644 --- a/demo/app/src/components/trade-button.tsx +++ b/demo/app/src/components/trade-button.tsx @@ -24,7 +24,7 @@ export const TradeButton = ({ pair }: { pair: Pair }) => { {isConnected ? (