diff --git a/trade.renegade.fi/app/(desktop)/[base]/[quote]/deposit.tsx b/trade.renegade.fi/app/(desktop)/[base]/[quote]/deposit.tsx index 8f98847c..d4c351e1 100644 --- a/trade.renegade.fi/app/(desktop)/[base]/[quote]/deposit.tsx +++ b/trade.renegade.fi/app/(desktop)/[base]/[quote]/deposit.tsx @@ -72,7 +72,7 @@ function DepositInner() { }} _placeholder={{ color: "whiteAlpha.400" }} outline="none !important" - onChange={(e) => setBaseTokenAmount(e.target.value)} + onChange={setBaseTokenAmount} onFocus={(e) => e.target.addEventListener("wheel", (e) => e.preventDefault(), { passive: false, @@ -80,7 +80,7 @@ function DepositInner() { } placeholder="0.00" type="number" - value={baseTokenAmount || ""} + value={baseTokenAmount} /> {baseTicker} @@ -109,4 +109,4 @@ export function DepositBody() { ) -} +} \ No newline at end of file diff --git a/trade.renegade.fi/app/(desktop)/[base]/[quote]/trading.tsx b/trade.renegade.fi/app/(desktop)/[base]/[quote]/trading.tsx index d8cdb33b..bc64b092 100644 --- a/trade.renegade.fi/app/(desktop)/[base]/[quote]/trading.tsx +++ b/trade.renegade.fi/app/(desktop)/[base]/[quote]/trading.tsx @@ -1,16 +1,15 @@ "use client" -import React, { createRef, useEffect, useRef, useState } from "react" import { OrderProvider, useOrder } from "@/contexts/Order/order-context" import { Direction } from "@/contexts/Order/types" import { ChevronDownIcon } from "@chakra-ui/icons" import { Flex, HStack, Input, Text, useDisclosure } from "@chakra-ui/react" +import React, { createRef, useEffect, useRef, useState } from "react" -import { useUSDPrice } from "@/hooks/use-usd-price" import { BlurredOverlay } from "@/components/modals/blurred-overlay" import { TokenSelectModal } from "@/components/modals/token-select-modal" import { PlaceOrderButton } from "@/components/place-order-button" -import { toast } from "sonner" +import { useUSDPrice } from "@/hooks/use-usd-price" interface SelectableProps { text: string @@ -128,22 +127,12 @@ function TradingInner() { }} _placeholder={{ color: "whiteAlpha.400" }} outline="none !important" - onChange={(e) => setBaseTokenAmount(parseFloat(e.target.value))} + onChange={setBaseTokenAmount} onFocus={(e) => e.target.addEventListener("wheel", (e) => e.preventDefault(), { passive: false, }) } - onKeyPress={(e) => { - if (e.key === ".") { - toast.error("Please try again using an integer value", { - description: "Decimal values are not allowed.", - }); - e.preventDefault(); - } else if (e.key === "-") { - e.preventDefault(); - } - }} placeholder="0.00" type="number" value={baseTokenAmount || ""} @@ -208,4 +197,4 @@ function HelperText({ baseTicker }: { baseTicker: string }) { ) -} +} \ No newline at end of file diff --git a/trade.renegade.fi/app/api/fund/route.ts b/trade.renegade.fi/app/api/fund/route.ts index 1eeb3ecf..d2e2f76f 100644 --- a/trade.renegade.fi/app/api/fund/route.ts +++ b/trade.renegade.fi/app/api/fund/route.ts @@ -13,9 +13,9 @@ import { privateKeyToAccount } from "viem/accounts" import { stylusDevnetEc2 } from "@/lib/chain" +// TODO: Make sure mint works const abi = parseAbi([ - "function transfer(address to, uint256 amount) returns (bool)", - "event Transfer(address indexed from, address indexed to, uint256 amount)", + "function mint(address _address, uint256 value) external" ]) export async function GET(request: Request) { @@ -52,7 +52,7 @@ export async function GET(request: Request) { const ethAmount = parseEther("0.1") const wethAmount = parseEther("10") - const usdcAmount = parseUnits("10000", 18) + const usdcAmount = parseUnits("100000", 18) const transactionCount = await publicClient.getTransactionCount({ address: account.address, @@ -79,7 +79,7 @@ export async function GET(request: Request) { account, address: Token.findAddressByTicker("WETH") as `0x${string}`, abi, - functionName: "transfer", + functionName: "mint", args: [recipient, wethAmount], nonce: transactionCount + 1, }) @@ -100,7 +100,7 @@ export async function GET(request: Request) { account, address: Token.findAddressByTicker("USDC") as `0x${string}`, abi, - functionName: "transfer", + functionName: "mint", args: [recipient, usdcAmount], nonce: transactionCount + 2, }) diff --git a/trade.renegade.fi/components/panels/orders-panel.tsx b/trade.renegade.fi/components/panels/orders-panel.tsx index c9509998..0e2752a3 100644 --- a/trade.renegade.fi/components/panels/orders-panel.tsx +++ b/trade.renegade.fi/components/panels/orders-panel.tsx @@ -1,6 +1,5 @@ "use client" -import React, { useMemo } from "react" import { useApp } from "@/contexts/App/app-context" import { useRenegade } from "@/contexts/Renegade/renegade-context" import { LockIcon, SmallCloseIcon, UnlockIcon } from "@chakra-ui/icons" @@ -9,15 +8,16 @@ import { Order, OrderId, Token } from "@renegade-fi/renegade-js" import { useModal as useModalConnectKit } from "connectkit" import dayjs from "dayjs" import relativeTime from "dayjs/plugin/relativeTime" +import React, { useMemo } from "react" import SimpleBar from "simplebar-react" import { toast } from "sonner" -import { safeLocalStorageGetItem } from "@/lib/utils" -import { GlobalOrder, useGlobalOrders } from "@/hooks/use-global-orders" -import { useOrders } from "@/hooks/use-order" +import { renegade } from "@/app/providers" import { Panel, expandedPanelWidth } from "@/components/panels/panels" import { LocalOrder } from "@/components/steppers/order-stepper/steps/confirm-step" -import { renegade } from "@/app/providers" +import { GlobalOrder, useGlobalOrders } from "@/hooks/use-global-orders" +import { useOrders } from "@/hooks/use-order" +import { formatAmount, safeLocalStorageGetItem } from "@/lib/utils" import "simplebar-react/dist/simplebar.min.css" @@ -200,7 +200,7 @@ function OrdersPanel(props: OrdersPanelProps) { ({ amount, baseToken, orderId, quoteToken, side }) => ( {Object.values(globalOrders).map((counterpartyOrder) => { const title = formatTitle(orders, counterpartyOrder) - // const status = formatStatus(orders, counterpartyOrder, savedOrders) const status = counterpartyOrder.id in orders ? "ACTIVE" @@ -432,7 +431,11 @@ const formatTitle = (orders: Record, order: GlobalOrder) => { `0x${orders[order.id].quoteToken.address}` ) const side = orders[order.id].side === "buy" ? "Buy" : "Sell" - return `${side} ${orders[order.id].amount} ${baseTicker} for ${quoteTicker}` + const formattedAmount = formatAmount( + orders[order.id].amount, + new Token({ address: orders[order.id].baseToken.address }) + ) + return `${side} ${formattedAmount} ${baseTicker} for ${quoteTicker}` } return `Unknown order hash: ${order.id.split("-")[0].toString()}` } @@ -459,4 +462,4 @@ const formatTitle = (orders: Record, order: GlobalOrder) => { // // Default case for other states // return counterpartyOrder.state.toUpperCase() -// } +// } \ No newline at end of file diff --git a/trade.renegade.fi/components/panels/wallets-panel.tsx b/trade.renegade.fi/components/panels/wallets-panel.tsx index e62aae35..a6912e6c 100644 --- a/trade.renegade.fi/components/panels/wallets-panel.tsx +++ b/trade.renegade.fi/components/panels/wallets-panel.tsx @@ -19,7 +19,7 @@ import { useModal as useModalConnectKit } from "connectkit" import SimpleBar from "simplebar-react" import { useAccount, useAccount as useAccountWagmi } from "wagmi" -import { formatAmount } from "@/lib/utils" +import { formatAmount, parseAmount } from "@/lib/utils" import { useBalance } from "@/hooks/use-balance" import { useTasks } from "@/hooks/use-tasks" import { useUSDPrice } from "@/hooks/use-usd-price" @@ -33,7 +33,7 @@ import { toast } from "sonner" interface TokenBalanceProps { tokenAddr: string userAddr?: string - amount: string + amount: bigint } function TokenBalance(props: TokenBalanceProps) { const { tokenIcons } = useApp() @@ -42,10 +42,19 @@ function TokenBalance(props: TokenBalanceProps) { const { accountId } = useRenegade() const { address } = useAccount() + const formattedAmount = formatAmount( + props.amount, + new Token({ address: props.tokenAddr }) + ) const ticker = Token.findTickerByAddress(`${props.tokenAddr}`) - const usdPrice = useUSDPrice(ticker, Number(props.amount)) + const usdPrice = useUSDPrice( + ticker, + parseFloat( + formatAmount(props.amount, new Token({ address: props.tokenAddr })) + ) + ) - const isZero = props.amount === "0" + const isZero = props.amount === BigInt(0) return ( - {props.amount.toString()} {ticker} + {formattedAmount} {ticker} { if (accountId && address) { + const token = new Token({ address: props.tokenAddr }) renegade.task - .withdraw( - accountId, - new Token({ address: props.tokenAddr }), - BigInt(1), - address - ) + .withdraw(accountId, token, parseAmount("1", token), address) .then(() => toast.message( `Started to withdraw 1 ${Token.findTickerByAddress( @@ -186,20 +191,19 @@ function RenegadeWalletPanel(props: RenegadeWalletPanelProps) { const balances = useBalance() const { accountId } = useRenegade() - const formattedBalances = useMemo(() => { - const nonzero = Object.entries(balances).map(([_, b]) => [ - b.mint.address, - formatAmount(b.amount, new Token({ address: b.mint.address })), - ]) - const placeholders = tokenMappings.tokens + const formattedBalances = useMemo>(() => { + const wethAddress = Token.findAddressByTicker("WETH").replace("0x", "") + const usdcAddress = Token.findAddressByTicker("USDC").replace("0x", "") + + const nonzero: Array<[string, bigint]> = Object.entries(balances).map( + ([_, b]) => [b.mint.address, b.amount] + ) + const placeholders: Array<[string, bigint]> = tokenMappings.tokens .filter((t) => !nonzero.some(([a]) => `0x${a}` === t.address)) - .map((t) => [t.address.replace("0x", ""), "0"]) + .map((t) => [t.address.replace("0x", ""), BigInt(0)]) const combined = [...nonzero, ...placeholders] - const wethAddress = Token.findAddressByTicker("WETH").replace("0x", "") - const usdcAddress = Token.findAddressByTicker("USDC").replace("0x", "") - combined.sort((a, b) => { if (a[0] === wethAddress) return -1 if (b[0] === wethAddress) return 1 diff --git a/trade.renegade.fi/components/place-order-button.tsx b/trade.renegade.fi/components/place-order-button.tsx index 62908cf9..fc401727 100644 --- a/trade.renegade.fi/components/place-order-button.tsx +++ b/trade.renegade.fi/components/place-order-button.tsx @@ -1,6 +1,5 @@ "use client" -import { useMemo } from "react" import { useExchange } from "@/contexts/Exchange/exchange-context" import { useOrder } from "@/contexts/Order/order-context" import { Direction } from "@/contexts/Order/types" @@ -8,17 +7,18 @@ import { useRenegade } from "@/contexts/Renegade/renegade-context" import { ArrowForwardIcon } from "@chakra-ui/icons" import { Button, useDisclosure } from "@chakra-ui/react" import { Exchange, Order, OrderId } from "@renegade-fi/renegade-js" +import { useMemo } from "react" import { toast } from "sonner" import { v4 as uuidv4 } from "uuid" import { useAccount as useAccountWagmi } from "wagmi" -import { findBalanceByTicker, safeLocalStorageGetItem, safeLocalStorageSetItem } from "@/lib/utils" -import { useBalance } from "@/hooks/use-balance" -import { useButton } from "@/hooks/use-button" +import { renegade } from "@/app/providers" import { CreateStepper } from "@/components/steppers/create-stepper/create-stepper" import { OrderStepper } from "@/components/steppers/order-stepper/order-stepper" -import { renegade } from "@/app/providers" import { LocalOrder } from "@/components/steppers/order-stepper/steps/confirm-step" +import { useBalance } from "@/hooks/use-balance" +import { useButton } from "@/hooks/use-button" +import { findBalanceByTicker, formatAmount, parseAmount, safeLocalStorageGetItem, safeLocalStorageSetItem } from "@/lib/utils" export function PlaceOrderButton() { const { address } = useAccountWagmi() @@ -42,22 +42,18 @@ export function PlaceOrderButton() { onOpenSignIn, signInText: "Sign in to Place Orders", }) - const timestampMap = useMemo(() => { - const o = safeLocalStorageGetItem("timestampMap") - const parsed = o ? JSON.parse(o) : {} - return parsed - }, []) const handlePlaceOrder = async () => { if (!accountId) return const id = uuidv4() as OrderId + const parsedAmount = parseAmount(baseTokenAmount, base) const order = new Order({ id, baseToken: base, quoteToken: quote, side: direction, type: "midpoint", - amount: BigInt(baseTokenAmount), + amount: parsedAmount, }) renegade.task .placeOrder(accountId, order) @@ -78,8 +74,6 @@ export function PlaceOrderButton() { `order-details-${accountId}`, JSON.stringify(newO) ) - timestampMap[id] = order.timestamp - safeLocalStorageSetItem("timestampMap", JSON.stringify(timestampMap)) }) .then(() => toast.message( @@ -94,21 +88,15 @@ export function PlaceOrderButton() { } const hasInsufficientBalance = useMemo(() => { - const baseBalance = findBalanceByTicker(balances, baseTicker) - const quoteBalance = findBalanceByTicker(balances, quoteTicker) + const baseBalance = findBalanceByTicker(balances, baseTicker).amount + const quoteBalance = findBalanceByTicker(balances, quoteTicker).amount + const price = priceReport?.midpointPrice ? priceReport.midpointPrice * parseFloat(baseTokenAmount) : 0 if (direction === Direction.SELL) { - return baseBalance.amount < baseTokenAmount + return baseBalance < parseAmount(baseTokenAmount, base) } - if (!priceReport?.midpointPrice) return false - return quoteBalance.amount < priceReport?.midpointPrice - }, [ - balances, - baseTicker, - baseTokenAmount, - direction, - priceReport?.midpointPrice, - quoteTicker, - ]) + // TODO: Check this + return parseFloat(formatAmount(quoteBalance, quote)) < price + }, [balances, base, baseTicker, baseTokenAmount, direction, priceReport?.midpointPrice, quote, quoteTicker]) const isSignedIn = accountId !== undefined let placeOrderButtonContent: string @@ -156,9 +144,7 @@ export function PlaceOrderButton() { } else if (isDisabled) { return } else { - // TODO: Make sure task gets added to history section handlePlaceOrder() - // onOpenPlaceOrder() } }} rightIcon={} @@ -169,4 +155,4 @@ export function PlaceOrderButton() { {placeOrderIsOpen && } ) -} +} \ No newline at end of file diff --git a/trade.renegade.fi/components/steppers/deposit-stepper/steps/default-step.tsx b/trade.renegade.fi/components/steppers/deposit-stepper/steps/default-step.tsx index 466dd851..a96e3ce3 100644 --- a/trade.renegade.fi/components/steppers/deposit-stepper/steps/default-step.tsx +++ b/trade.renegade.fi/components/steppers/deposit-stepper/steps/default-step.tsx @@ -19,7 +19,7 @@ import { renegade } from "@/app/providers" import { ErrorType, useStepper } from "../deposit-stepper" export function DefaultStep() { - const { baseTicker, baseTokenAmount, setBaseTokenAmount } = useDeposit() + const { baseTicker, baseTokenAmount } = useDeposit() const { setTask, accountId } = useRenegade() const { onClose, setError } = useStepper() const { address } = useAccount() @@ -31,10 +31,12 @@ export function DefaultStep() { accountId, getToken({ ticker: baseTicker }), BigInt(baseTokenAmount), - address + address, + BigInt(0), + BigInt(0), + "" ) .then(([taskId]) => setTask(taskId, TaskType.Deposit)) - .then(() => setBaseTokenAmount("")) .then(() => onClose()) .catch((e) => { if ( @@ -105,4 +107,4 @@ export function DefaultStep() { ) -} +} \ No newline at end of file diff --git a/trade.renegade.fi/components/steppers/order-stepper/steps/confirm-step.tsx b/trade.renegade.fi/components/steppers/order-stepper/steps/confirm-step.tsx index 1767edf5..1387d52b 100644 --- a/trade.renegade.fi/components/steppers/order-stepper/steps/confirm-step.tsx +++ b/trade.renegade.fi/components/steppers/order-stepper/steps/confirm-step.tsx @@ -41,7 +41,6 @@ export function ConfirmStep() { direction, quote, quoteTicker, - setBaseTokenAmount, } = useOrder() const { setTask, accountId } = useRenegade() const [currentPriceReport, setCurrentPriceReport] = useState() @@ -53,12 +52,6 @@ export function ConfirmStep() { setCurrentPriceReport(priceReport) }, [currentPriceReport?.midpointPrice, priceReport]) - const timestampMap = useMemo(() => { - const o = safeLocalStorageGetItem("timestampMap") - const parsed = o ? JSON.parse(o) : {} - return parsed - }, []) - const handlePlaceOrder = async () => { if (!accountId) return const id = uuidv4() as OrderId @@ -90,10 +83,7 @@ export function ConfirmStep() { `order-details-${accountId}`, JSON.stringify(newO) ) - timestampMap[id] = order.timestamp - safeLocalStorageSetItem("timestampMap", JSON.stringify(timestampMap)) }) - .then(() => setBaseTokenAmount(0)) .then(() => onClose()) .catch((e) => { if ( @@ -117,7 +107,7 @@ export function ConfirmStep() { direction === "buy" ? currentPriceReport.midpointPrice * 1.2 : currentPriceReport.midpointPrice * 0.8 - return unit * baseTokenAmount + return unit * parseFloat(baseTokenAmount) }, [baseTokenAmount, currentPriceReport, direction]) return ( @@ -195,13 +185,12 @@ export function ConfirmStep() { }} > - {`${ - direction === "buy" ? "Buy" : "Sell" - } ${baseTicker}`} + {`${direction === "buy" ? "Buy" : "Sell" + } ${baseTicker}`} ) -} +} \ No newline at end of file diff --git a/trade.renegade.fi/contexts/Deposit/deposit-context.tsx b/trade.renegade.fi/contexts/Deposit/deposit-context.tsx index 3113f56e..033fa8e2 100644 --- a/trade.renegade.fi/contexts/Deposit/deposit-context.tsx +++ b/trade.renegade.fi/contexts/Deposit/deposit-context.tsx @@ -11,7 +11,7 @@ export interface DepositContextValue { baseTicker: string baseTokenAmount: string setBaseTicker: (ticker: string) => void - setBaseTokenAmount: (amount: string) => void + setBaseTokenAmount: (e: React.ChangeEvent) => void } const DepositStateContext = createContext( @@ -28,6 +28,13 @@ function DepositProvider({ children }: PropsWithChildren) { } const [baseTokenAmount, setBaseTokenAmount] = useState("") + const handleSetBaseTokenAmount = (e: React.ChangeEvent) => { + const value = e.target.value; + if (value === '' || (!isNaN(parseFloat(value)) && isFinite(parseFloat(value)) && parseFloat(value) >= 0)) { + setBaseTokenAmount(value); + } + }; + return ( {children} @@ -51,4 +58,4 @@ function useDeposit() { return context } -export { DepositProvider, useDeposit } +export { DepositProvider, useDeposit } \ No newline at end of file diff --git a/trade.renegade.fi/contexts/Order/order-context.tsx b/trade.renegade.fi/contexts/Order/order-context.tsx index 89e8a004..684b1c31 100644 --- a/trade.renegade.fi/contexts/Order/order-context.tsx +++ b/trade.renegade.fi/contexts/Order/order-context.tsx @@ -26,11 +26,6 @@ const OrderStateContext = createContext( function OrderProvider({ children }: PropsWithChildren) { const params = useParams() const router = useRouter() - // const [direction, setDirection] = useState( - // safeLocalStorageGetItem("direction") === "buy" - // ? Direction.BUY - // : Direction.SELL - // ) const [direction, setDirection] = useLocalStorage("direction", Direction.BUY) const handleSetDirection = (direction: Direction) => { setDirection(direction) @@ -48,7 +43,7 @@ function OrderProvider({ children }: PropsWithChildren) { } const quoteToken = getToken({ input: quote }) const quoteTicker = Token.findTickerByAddress(`0x${quoteToken.address}`) - const [baseTokenAmount, setBaseTokenAmount] = useState(0) + const [baseTokenAmount, setBaseTokenAmount] = useState("") const [orderBook, setOrderBook] = useState< Record @@ -118,12 +113,10 @@ function OrderProvider({ children }: PropsWithChildren) { if (!toast.isActive(toastId)) { toast({ id: toastId, - title: `MPC ${ - mpcEvent.type === "HandshakeCompleted" ? "Finished" : "Started" - }`, - description: `A handshake with a counterparty has ${ - mpcEvent.type === "HandshakeCompleted" ? "completed" : "begun" - }.`, + title: `MPC ${mpcEvent.type === "HandshakeCompleted" ? "Finished" : "Started" + }`, + description: `A handshake with a counterparty has ${mpcEvent.type === "HandshakeCompleted" ? "completed" : "begun" + }.`, status: "info", duration: 5000, isClosable: true, @@ -151,10 +144,12 @@ function OrderProvider({ children }: PropsWithChildren) { } }, [orderBook, toast]) - // const handleSetDirection = useCallback((direction: Direction) => { - // setDirection(direction) - // safeLocalStorageSetItem("direction", direction) - // }, []) + const handleSetBaseTokenAmount = (e: React.ChangeEvent) => { + const value = e.target.value; + if (value === '' || (!isNaN(parseFloat(value)) && isFinite(parseFloat(value)) && parseFloat(value) >= 0)) { + setBaseTokenAmount(value); + } + }; return ( void - setBaseTokenAmount: (amount: number) => void + setBaseTokenAmount: (e: React.ChangeEvent) => void setDirection: (direction: Direction) => void setQuoteToken: (token: string) => void -} +} \ No newline at end of file diff --git a/trade.renegade.fi/contexts/Renegade/renegade-context.tsx b/trade.renegade.fi/contexts/Renegade/renegade-context.tsx index 7e23f8f2..9e4217d6 100644 --- a/trade.renegade.fi/contexts/Renegade/renegade-context.tsx +++ b/trade.renegade.fi/contexts/Renegade/renegade-context.tsx @@ -6,8 +6,6 @@ import { Balance, BalanceId, CallbackId, - Fee, - FeeId, Keychain, Order, OrderId, @@ -37,7 +35,6 @@ function RenegadeProvider({ children }: React.PropsWithChildren) { // Create balance, order, fee, an account states. const [accountId, setAccountId] = React.useState() const [balances, setBalances] = React.useState>({}) - const [fees] = React.useState>({}) const [orders, setOrders] = React.useState>({}) // Create task states. @@ -250,7 +247,6 @@ function RenegadeProvider({ children }: React.PropsWithChildren) { accountId, balances, counterparties, - fees, orderBook, orders, refreshAccount, diff --git a/trade.renegade.fi/contexts/Renegade/types.ts b/trade.renegade.fi/contexts/Renegade/types.ts index 5db0310e..2e2d10e8 100644 --- a/trade.renegade.fi/contexts/Renegade/types.ts +++ b/trade.renegade.fi/contexts/Renegade/types.ts @@ -2,8 +2,6 @@ import { AccountId, Balance, BalanceId, - Fee, - FeeId, Keychain, Order, OrderId, @@ -32,7 +30,6 @@ export interface RenegadeContextType { accountId: AccountId | undefined balances: Record counterparties: Record - fees: Record orderBook: Record orders: Record refreshAccount: (accountId?: AccountId) => void diff --git a/trade.renegade.fi/generated.ts b/trade.renegade.fi/generated.ts index e5bf9b8d..e1f822a2 100644 --- a/trade.renegade.fi/generated.ts +++ b/trade.renegade.fi/generated.ts @@ -1,9 +1,9 @@ import { createUseReadContract, - createUseWriteContract, createUseSimulateContract, createUseWatchContractEvent, -} from 'wagmi/codegen' + createUseWriteContract, +} from "wagmi/codegen" ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // erc20 @@ -11,40 +11,40 @@ import { export const erc20Abi = [ { - type: 'function', - inputs: [{ name: 'owner', type: 'address' }], - name: 'balanceOf', - outputs: [{ type: 'uint256' }], - stateMutability: 'view', + type: "function", + inputs: [{ name: "owner", type: "address" }], + name: "balanceOf", + outputs: [{ type: "uint256" }], + stateMutability: "view", }, { - type: 'function', + type: "function", inputs: [ - { name: 'spender', type: 'address' }, - { name: 'amount', type: 'uint256' }, + { name: "spender", type: "address" }, + { name: "amount", type: "uint256" }, ], - name: 'approve', - outputs: [{ type: 'bool' }], - stateMutability: 'nonpayable', + name: "approve", + outputs: [{ type: "bool" }], + stateMutability: "nonpayable", }, { - type: 'function', + type: "function", inputs: [ - { name: 'owner', type: 'address' }, - { name: 'spender', type: 'address' }, + { name: "owner", type: "address" }, + { name: "spender", type: "address" }, ], - name: 'allowance', - outputs: [{ type: 'uint256' }], - stateMutability: 'view', + name: "allowance", + outputs: [{ type: "uint256" }], + stateMutability: "view", }, { - type: 'event', + type: "event", inputs: [ - { name: 'owner', type: 'address', indexed: true }, - { name: 'spender', type: 'address', indexed: true }, - { name: 'amount', type: 'uint256' }, + { name: "owner", type: "address", indexed: true }, + { name: "spender", type: "address", indexed: true }, + { name: "amount", type: "uint256" }, ], - name: 'Approval', + name: "Approval", }, ] as const @@ -64,7 +64,7 @@ export const useReadErc20 = /*#__PURE__*/ createUseReadContract({ */ export const useReadErc20BalanceOf = /*#__PURE__*/ createUseReadContract({ abi: erc20Abi, - functionName: 'balanceOf', + functionName: "balanceOf", }) /** @@ -72,7 +72,7 @@ export const useReadErc20BalanceOf = /*#__PURE__*/ createUseReadContract({ */ export const useReadErc20Allowance = /*#__PURE__*/ createUseReadContract({ abi: erc20Abi, - functionName: 'allowance', + functionName: "allowance", }) /** @@ -87,7 +87,7 @@ export const useWriteErc20 = /*#__PURE__*/ createUseWriteContract({ */ export const useWriteErc20Approve = /*#__PURE__*/ createUseWriteContract({ abi: erc20Abi, - functionName: 'approve', + functionName: "approve", }) /** @@ -102,7 +102,7 @@ export const useSimulateErc20 = /*#__PURE__*/ createUseSimulateContract({ */ export const useSimulateErc20Approve = /*#__PURE__*/ createUseSimulateContract({ abi: erc20Abi, - functionName: 'approve', + functionName: "approve", }) /** @@ -118,5 +118,5 @@ export const useWatchErc20Event = /*#__PURE__*/ createUseWatchContractEvent({ export const useWatchErc20ApprovalEvent = /*#__PURE__*/ createUseWatchContractEvent({ abi: erc20Abi, - eventName: 'Approval', + eventName: "Approval", }) diff --git a/trade.renegade.fi/package.json b/trade.renegade.fi/package.json index 7e437d54..77d6c4da 100644 --- a/trade.renegade.fi/package.json +++ b/trade.renegade.fi/package.json @@ -21,7 +21,7 @@ "@chakra-ui/react": "^2.8.0", "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", - "@renegade-fi/renegade-js": "^0.4.17", + "@renegade-fi/renegade-js": "^0.4.22", "@t3-oss/env-nextjs": "^0.6.0", "@tanstack/react-query": "^5.24.1", "connectkit": "^1.7.2", diff --git a/trade.renegade.fi/yarn.lock b/trade.renegade.fi/yarn.lock index 713e80ca..c0a22056 100644 --- a/trade.renegade.fi/yarn.lock +++ b/trade.renegade.fi/yarn.lock @@ -1927,15 +1927,16 @@ dependencies: merge-options "^3.0.4" -"@renegade-fi/renegade-js@^0.4.17": - version "0.4.18" - resolved "https://registry.yarnpkg.com/@renegade-fi/renegade-js/-/renegade-js-0.4.18.tgz#b1c2696350cdfded58cc0b8daca06813c05161bc" - integrity sha512-duybbs++qCzQy0+URK5/n+E2QOwYYKUqvJ16agUxp42kJUt+Zx65o2RMDYeSI5z/7Ze8q1YsWbXwQrkEDVj9hQ== +"@renegade-fi/renegade-js@^0.4.22": + version "0.4.22" + resolved "https://registry.yarnpkg.com/@renegade-fi/renegade-js/-/renegade-js-0.4.22.tgz#4e895b38b7970ac282a871ad9c753a1230889107" + integrity sha512-jC3wx2UgQbL2NaRVvP+TmwJt/AVhxEAkyKLdSTNhP8egCIrKYS1GErRua2uAp1lh/W968K4h1KLcGDH1v3bPpg== dependencies: "@noble/hashes" "^1.3.0" axios "^1.3.5" isomorphic-fetch "^3.0.0" isomorphic-ws "^5.0.0" + json-bigint "^1.0.0" uuid "^9.0.0" ws "^8.13.0" zod "^3.22.2" @@ -3014,6 +3015,11 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +bignumber.js@^9.0.0: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -5126,6 +5132,13 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +json-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" + integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== + dependencies: + bignumber.js "^9.0.0" + json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"