// Copyright 2017-2026 @pezkuwi/app-nis authors & contributors // SPDX-License-Identifier: Apache-2.0 import type { BN } from '@pezkuwi/util'; import React, { useMemo, useState } from 'react'; import { Button, InputAddress, InputBalance, InputNumber, Modal, TxButton } from '@pezkuwi/react-components'; import { useApi, useToggle } from '@pezkuwi/react-hooks'; import { Available } from '@pezkuwi/react-query'; import { BN_ONE } from '@pezkuwi/util'; import { useTranslation } from '../translate.js'; interface Props { className?: string; isDisabled?: boolean; proxies: Record; } function Bid ({ className, isDisabled, proxies }: Props): React.ReactElement { const { t } = useTranslation(); const { api } = useApi(); const [isOpen, toggleOpen] = useToggle(); const [accountId, setAccountId] = useState(null); const [proxyId, setProxyId] = useState(null); const [amount, setAmount] = useState(); const [duration, setDuration] = useState(); const tx = useMemo( () => accountId && amount && duration ? api.tx.proxy.proxy(accountId, null, api.tx.nis.placeBid(amount, duration)) : null, [api, accountId, amount, duration] ); const proxiedAccounts = Object.keys(proxies); const isAmountError = !amount || amount.isZero() || amount.lt(api.consts.nis.minBid); const isDurationError = !duration || !duration.gte(BN_ONE) || duration.gt(api.consts.nis.queueCount); return ( <>