import React from "react"; import { Account, useFetchAccountInfo } from "providers/accounts"; import { TableCardBody } from "components/common/TableCardBody"; import { ConfigAccount, StakeConfigInfoAccount, ValidatorInfoAccount, } from "validators/accounts/config"; import { AccountAddressRow, AccountBalanceRow, AccountHeader, } from "components/common/Account"; import { PublicKey } from "@solana/web3.js"; import { Address } from "components/common/Address"; const MAX_SLASH_PENALTY = Math.pow(2, 8); export function ConfigAccountSection({ account, configAccount, }: { account: Account; configAccount: ConfigAccount; }) { switch (configAccount.type) { case "stakeConfig": return ( ); case "validatorInfo": return ( ); } } function StakeConfigCard({ account, configAccount, }: { account: Account; configAccount: StakeConfigInfoAccount; }) { const refresh = useFetchAccountInfo(); const warmupCooldownFormatted = new Intl.NumberFormat("en-US", { style: "percent", maximumFractionDigits: 2, }).format(configAccount.info.warmupCooldownRate); const slashPenaltyFormatted = new Intl.NumberFormat("en-US", { style: "percent", maximumFractionDigits: 2, }).format(configAccount.info.slashPenalty / MAX_SLASH_PENALTY); return (
refresh(account.pubkey, "parsed")} /> Warmup / Cooldown Rate {warmupCooldownFormatted} Slash Penalty {slashPenaltyFormatted}
); } function ValidatorInfoCard({ account, configAccount, }: { account: Account; configAccount: ValidatorInfoAccount; }) { const refresh = useFetchAccountInfo(); return (
refresh(account.pubkey, "parsed")} /> {configAccount.info.configData.name && ( Name {configAccount.info.configData.name} )} {configAccount.info.configData.keybaseUsername && ( Keybase Username {configAccount.info.configData.keybaseUsername} )} {configAccount.info.configData.website && ( Website {configAccount.info.configData.website} )} {configAccount.info.configData.details && ( Details {configAccount.info.configData.details} )} {configAccount.info.keys && configAccount.info.keys.length > 1 && ( Signer
)}
); }