From 7239dac5c0f3e230ee2e67229b919ba316550feb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sehyun=20Chung=20=E2=9C=8C=EF=B8=8E?=
<41171808+sehyunc@users.noreply.github.com>
Date: Fri, 8 Mar 2024 19:26:11 -0800
Subject: [PATCH] trade: use ERC20 decimals
---
.../app/(desktop)/[base]/[quote]/deposit.tsx | 6 +-
.../app/(desktop)/[base]/[quote]/trading.tsx | 19 ++----
trade.renegade.fi/app/api/fund/route.ts | 10 ++--
.../components/panels/orders-panel.tsx | 21 ++++---
.../components/panels/wallets-panel.tsx | 46 ++++++++-------
.../components/place-order-button.tsx | 44 +++++---------
.../deposit-stepper/steps/default-step.tsx | 10 ++--
.../order-stepper/steps/confirm-step.tsx | 19 ++----
.../contexts/Deposit/deposit-context.tsx | 13 ++++-
.../contexts/Order/order-context.tsx | 31 +++++-----
trade.renegade.fi/contexts/Order/types.ts | 6 +-
.../contexts/Renegade/renegade-context.tsx | 4 --
trade.renegade.fi/contexts/Renegade/types.ts | 3 -
trade.renegade.fi/generated.ts | 58 +++++++++----------
trade.renegade.fi/package.json | 2 +-
trade.renegade.fi/yarn.lock | 21 +++++--
16 files changed, 147 insertions(+), 166 deletions(-)
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"