@ecency/wallets 1.4.32 → 1.4.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.js +37 -12
- package/dist/browser/index.js.map +1 -1
- package/dist/node/index.cjs +37 -12
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.mjs +37 -12
- package/dist/node/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/node/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/internal/scrypt-guard.ts","../../src/modules/wallets/enums/ecency-wallet-currency.ts","../../src/modules/wallets/enums/ecency-wallet-basic-tokens.ts","../../src/modules/wallets/queries/use-get-external-wallet-query.ts","../../src/modules/wallets/queries/use-seed-phrase.ts","../../src/modules/wallets/queries/get-token-price-query-options.ts","../../src/modules/wallets/utils/delay.ts","../../src/modules/wallets/utils/get-wallet.ts","../../src/modules/wallets/utils/mnemonic-to-seed-bip-39.ts","../../src/modules/wallets/utils/derive-hive-bip44-keys.ts","../../src/modules/wallets/utils/derive-hive-master-password-keys.ts","../../src/modules/wallets/utils/detect-hive-key-derivation.ts","../../src/modules/wallets/utils/sign-digest.ts","../../src/modules/wallets/utils/sign-transaction.ts","../../src/modules/wallets/utils/encrypt-memo.ts","../../src/modules/wallets/utils/decrypt-memo.ts","../../src/modules/wallets/utils/sign-external-transaction.ts","../../src/modules/wallets/utils/build-external-transaction.ts","../../src/modules/wallets/utils/get-bound-fetch.ts","../../src/modules/wallets/queries/use-hive-keys-query.ts","../../src/modules/assets/utils/parse-asset.ts","../../src/modules/assets/utils/is-empty-date.ts","../../src/modules/assets/utils/vests-to-hp.ts","../../src/modules/assets/utils/reward-spk.ts","../../src/internal/hive-auth.ts","../../src/modules/assets/utils/hive-auth.ts","../../src/modules/assets/hive/queries/get-hive-asset-general-info-query-options.ts","../../src/modules/assets/hive/queries/get-hive-power-asset-general-info-query-options.ts","../../src/modules/assets/hive/queries/get-hbd-asset-general-info-query-options.ts","../../src/modules/assets/hive/consts/hive-account-operation-groups.ts","../../src/modules/assets/hive/consts/hive-operation-list.ts","../../src/modules/assets/hive/consts/hive-operation-orders.ts","../../src/modules/assets/hive/queries/get-hive-asset-transactions-query-options.ts","../../src/modules/assets/hive/queries/get-hive-power-asset-transactions-query-options.ts","../../src/modules/assets/hive/queries/get-hbd-asset-transactions-query-options.ts","../../src/modules/assets/hive/queries/get-hive-asset-metric-query-options.ts","../../src/modules/assets/hive/queries/get-hive-asset-withdrawal-routes-query-options.ts","../../src/modules/assets/hive/queries/get-hive-power-delegates-query-options.ts","../../src/modules/assets/hive/queries/get-hive-power-delegatings-query-options.ts","../../src/modules/assets/hive/mutations/transfer.ts","../../src/modules/assets/hive/mutations/transfer-to-savings.ts","../../src/modules/assets/hive/mutations/transfer-from-savings.ts","../../src/modules/assets/hive/mutations/power-up.ts","../../src/modules/assets/hive/mutations/delegate.ts","../../src/modules/assets/hive/mutations/power-down.ts","../../src/modules/assets/hive/mutations/withdraw-route.ts","../../src/modules/assets/hive/mutations/claim-rewards.ts","../../src/modules/assets/hive/mutations/claim-interest.ts","../../src/modules/assets/types/asset-operation.ts","../../src/modules/assets/spk/mutations/transfer.ts","../../src/modules/assets/spk/mutations/lock.ts","../../src/modules/assets/spk/mutations/power-up.ts","../../src/modules/assets/spk/mutations/transfer-larynx.ts","../../src/modules/assets/spk/queries/get-spk-markets-query-options.ts","../../src/modules/assets/spk/queries/get-spk-wallet-query-options.ts","../../src/modules/assets/spk/queries/get-larynx-asset-general-info-query-options.ts","../../src/modules/assets/spk/queries/get-spk-asset-general-info-query-options.ts","../../src/modules/assets/spk/queries/get-larynx-power-asset-general-info-query-options.ts","../../src/modules/assets/hive-engine/queries/get-hive-engine-tokens-metadata-query-options.ts","../../src/modules/assets/hive-engine/queries/get-hive-engine-tokens-balances-query-options.ts","../../src/modules/assets/hive-engine/queries/get-hive-engine-tokens-market-query-options.ts","../../src/modules/assets/hive-engine/queries/get-hive-engine-token-general-info-query-options.ts","../../src/modules/assets/hive-engine/queries/get-hive-engine-token-transactions-query-options.ts","../../src/modules/assets/hive-engine/queries/get-hive-engine-token-metrics-query-options.ts","../../src/modules/assets/hive-engine/mutations/delegate.ts","../../src/modules/assets/hive-engine/mutations/undelegate.ts","../../src/modules/assets/hive-engine/mutations/stake.ts","../../src/modules/assets/hive-engine/mutations/unstake.ts","../../src/modules/assets/hive-engine/mutations/transfer.ts","../../src/modules/assets/points/queries/get-points-query-options.ts","../../src/modules/assets/points/queries/get-points-asset-general-info-query-options.ts","../../src/modules/assets/points/queries/get-points-asset-transactions-query-options.ts","../../src/modules/assets/points/mutations/claim-points.ts","../../src/modules/assets/points/mutations/gift.ts","../../src/modules/assets/points/types/point-transaction-type.ts","../../src/modules/wallets/queries/get-all-tokens-list-query-options.ts","../../src/modules/wallets/queries/get-vision-portfolio-query-options.ts","../../src/modules/wallets/queries/use-get-account-wallet-list-query.ts","../../src/modules/assets/external/common/parse-private-api-balance.ts","../../src/modules/assets/external/apt/get-apt-asset-balance-query-options.ts","../../src/modules/assets/external/common/index.ts","../../src/modules/assets/external/apt/get-apt-asset-general-info-query-options.ts","../../src/modules/assets/external/bnb/get-bnb-asset-balance-query-options.ts","../../src/modules/assets/external/bnb/get-bnb-asset-general-info-query-options.ts","../../src/modules/assets/external/btc/get-btc-asset-balance-query-options.ts","../../src/modules/assets/external/btc/get-btc-asset-general-info-query-options.ts","../../src/modules/assets/external/eth/get-eth-asset-balance-query-options.ts","../../src/modules/assets/external/eth/get-eth-asset-general-info-query-options.ts","../../src/modules/assets/external/sol/get-sol-asset-balance-query-options.ts","../../src/modules/assets/external/sol/get-sol-asset-general-info-query-options.ts","../../src/modules/assets/external/ton/get-ton-asset-balance-query-options.ts","../../src/modules/assets/external/ton/get-ton-asset-general-info-query-options.ts","../../src/modules/assets/external/tron/get-tron-asset-balance-query-options.ts","../../src/modules/assets/external/tron/get-tron-asset-general-info-query-options.ts","../../src/modules/wallets/queries/get-account-wallet-asset-info-query-options.ts","../../src/modules/wallets/queries/get-tokens-operations-query-options.ts","../../src/modules/wallets/queries/use-wallets-cache-query.ts","../../src/modules/wallets/mutations/use-wallet-create.ts","../../src/modules/wallets/mutations/private-api/index.ts","../../src/modules/wallets/mutations/private-api/create-account-with-wallets.ts","../../src/modules/wallets/mutations/private-api/check-wallet-existence.ts","../../src/modules/wallets/mutations/private-api/update-account-with-wallets.ts","../../src/modules/wallets/functions/get-keys-from-seed.ts","../../src/modules/wallets/mutations/use-import-wallet.ts","../../src/modules/wallets/mutations/save-wallet-information-to-metadata.ts","../../src/modules/wallets/mutations/wallet-operation.ts","../../src/index.ts"],"names":["EcencyWalletCurrency","EcencyWalletBasicTokens","useQuery","CONFIG","bip39","LRUCache","queryOptions","BtcWallet","EthWallet","TrxWallet","TonWallet","SolWallet","AptosWallet","mnemonicToSeedSync","bip32","PrivateKey","getAccountFullQueryOptions","cryptoUtils","memo","Memo","buildBtcPsbt","Symbol","NaiMap","t","getQueryClient","getDynamicPropsQueryOptions","utils","operationOrders","infiniteQueryOptions","dayjs","hs","Keychain","type","params","useQueryClient","useBroadcastMutation","AssetOperation","format","EcencyAnalytics","useMutation","getAccessToken","PointTransactionType","values","normalizeBalance","parsePrivateApiBalance","options","normalizePartKey","R","useAccountUpdate","username","operationFn"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * The scrypt bsv package writes the version string to a global symbol and\n * warns when that symbol is already populated. In environments that reload\n * modules (Next.js dev server, Storybook, etc.) the stale value triggers\n * repeated warnings. Clearing the cached handle before our modules touch bsv\n * keeps the console quiet without requiring downstream wrappers.\n */\nconst globalLike = globalThis as Record<string, unknown> & {\n _scrypt_bsv?: unknown;\n __scryptBsvPreviousVersion?: unknown;\n};\n\nif (typeof globalLike._scrypt_bsv !== \"undefined\") {\n if (typeof globalLike._scrypt_bsv === \"string\") {\n globalLike.__scryptBsvPreviousVersion = globalLike._scrypt_bsv;\n }\n\n try {\n delete globalLike._scrypt_bsv;\n } catch {\n globalLike._scrypt_bsv = undefined;\n }\n}\n\nexport function rememberScryptBsvVersion() {\n if (typeof globalLike._scrypt_bsv === \"string\") {\n globalLike.__scryptBsvPreviousVersion = globalLike._scrypt_bsv;\n }\n}\n","export enum EcencyWalletCurrency {\n BTC = \"BTC\",\n ETH = \"ETH\",\n BNB = \"BNB\",\n APT = \"APT\",\n TON = \"TON\",\n TRON = \"TRX\",\n SOL = \"SOL\",\n // DOGE = \"doge\",\n // LTC = \"litecoin\",\n // ADA = \"cardano\",\n // STX = \"stacks\",\n // NEAR = \"near\",\n // EOS = \"eos\",\n // SUI = \"sui\",\n}\n","export enum EcencyWalletBasicTokens {\n Points = \"POINTS\",\n HivePower = \"HP\",\n Hive = \"HIVE\",\n HiveDollar = \"HBD\"\n}\n","import { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { useQuery } from \"@tanstack/react-query\";\n\nconst currencyChainMap: Record<EcencyWalletCurrency, string> = {\n [EcencyWalletCurrency.BTC]: \"btc\",\n [EcencyWalletCurrency.ETH]: \"eth\",\n [EcencyWalletCurrency.BNB]: \"bnb\",\n [EcencyWalletCurrency.SOL]: \"sol\",\n [EcencyWalletCurrency.TRON]: \"tron\",\n [EcencyWalletCurrency.TON]: \"ton\",\n [EcencyWalletCurrency.APT]: \"apt\",\n};\n\ninterface PrivateApiBalanceResponse {\n chain: string;\n balance: number | string;\n unit: string;\n raw?: unknown;\n nodeId?: string;\n}\n\nexport interface ExternalWalletBalance {\n chain: string;\n unit: string;\n raw?: unknown;\n nodeId?: string;\n /**\n * Balance represented as a BigInt for convenience.\n */\n balanceBigInt: bigint;\n /**\n * Balance returned as a string to preserve precision for UIs that cannot\n * handle bigint values directly.\n */\n balanceString: string;\n}\n\nfunction normalizeBalance(balance: number | string): string {\n if (typeof balance === \"number\") {\n if (!Number.isFinite(balance)) {\n throw new Error(\"Private API returned a non-finite numeric balance\");\n }\n\n return Math.trunc(balance).toString();\n }\n\n if (typeof balance === \"string\") {\n const trimmed = balance.trim();\n\n if (trimmed === \"\") {\n throw new Error(\"Private API returned an empty balance string\");\n }\n\n return trimmed;\n }\n\n throw new Error(\"Private API returned balance in an unexpected format\");\n}\n\nfunction parsePrivateApiBalance(\n result: unknown,\n expectedChain: string\n): ExternalWalletBalance {\n if (!result || typeof result !== \"object\") {\n throw new Error(\"Private API returned an unexpected response\");\n }\n\n const { chain, balance, unit, raw, nodeId } =\n result as PrivateApiBalanceResponse;\n\n if (typeof chain !== \"string\" || chain !== expectedChain) {\n throw new Error(\"Private API response chain did not match request\");\n }\n\n if (typeof unit !== \"string\" || unit.length === 0) {\n throw new Error(\"Private API response is missing unit information\");\n }\n\n if (balance === undefined || balance === null) {\n throw new Error(\"Private API response is missing balance information\");\n }\n\n const balanceString = normalizeBalance(balance);\n\n let balanceBigInt: bigint;\n\n try {\n balanceBigInt = BigInt(balanceString);\n } catch (error) {\n throw new Error(\"Private API returned a balance that is not an integer\");\n }\n\n return {\n chain,\n unit,\n raw,\n nodeId:\n typeof nodeId === \"string\" && nodeId.length > 0 ? nodeId : undefined,\n balanceBigInt,\n balanceString,\n };\n}\n\nexport function useGetExternalWalletBalanceQuery(\n currency: EcencyWalletCurrency,\n address: string\n) {\n return useQuery<ExternalWalletBalance>({\n queryKey: [\"ecency-wallets\", \"external-wallet-balance\", currency, address],\n queryFn: async () => {\n const chain = currencyChainMap[currency];\n\n if (!chain) {\n throw new Error(`Unsupported currency ${currency}`);\n }\n\n if (!CONFIG.privateApiHost) {\n throw new Error(\"Private API host is not configured\");\n }\n\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/${chain}/${encodeURIComponent(\n address\n )}`;\n\n let primaryResponse: Response | undefined;\n let primaryError: unknown;\n\n try {\n primaryResponse = await fetch(baseUrl);\n } catch (error) {\n primaryError = error;\n }\n\n let response = primaryResponse;\n\n if (!response || !response.ok) {\n const fallbackUrl = `${baseUrl}?provider=chainz`;\n let fallbackError: unknown;\n\n try {\n const fallbackResponse = await fetch(fallbackUrl);\n\n if (fallbackResponse.ok) {\n response = fallbackResponse;\n } else {\n fallbackError = new Error(\n `Fallback provider responded with status ${fallbackResponse.status}`\n );\n }\n } catch (error) {\n fallbackError = error;\n }\n\n if (!response || !response.ok) {\n const failureReasons: string[] = [];\n\n if (primaryError) {\n const message =\n primaryError instanceof Error\n ? primaryError.message\n : String(primaryError);\n failureReasons.push(`primary provider failed: ${message}`);\n } else if (primaryResponse && !primaryResponse.ok) {\n failureReasons.push(\n `primary provider status ${primaryResponse.status}`\n );\n }\n\n if (fallbackError) {\n const message =\n fallbackError instanceof Error\n ? fallbackError.message\n : String(fallbackError);\n failureReasons.push(`fallback provider failed: ${message}`);\n }\n\n if (failureReasons.length === 0) {\n failureReasons.push(\"unknown error\");\n }\n\n throw new Error(\n `Private API request failed (${failureReasons.join(\", \")})`\n );\n }\n }\n\n const result = (await response.json()) as unknown;\n\n return parsePrivateApiBalance(result, chain);\n },\n });\n}\n","import { useQuery } from \"@tanstack/react-query\";\nimport bip39 from \"bip39\";\n\nexport function useSeedPhrase(username: string) {\n return useQuery({\n queryKey: [\"ecency-wallets\", \"seed\", username],\n queryFn: async () => bip39.generateMnemonic(128),\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { LRUCache } from \"lru-cache\";\n\nconst options = {\n max: 500,\n // how long to live in ms\n ttl: 1000 * 60 * 5,\n // return stale items before removing from cache?\n allowStale: false,\n updateAgeOnGet: false,\n updateAgeOnHas: false,\n};\n\nconst cache = new LRUCache(options);\nconst undefinedValue = Symbol(\"undefined\");\n\nconst cacheSet = (key: string, value: any) =>\n cache.set(key, value === undefined ? undefinedValue : value);\n\nconst cacheGet = (key: string) => {\n const v = cache.get(key);\n return v === undefinedValue ? undefined : v;\n};\n\ninterface MarketDataQuote {\n last_updated: string;\n percent_change: number;\n price: number;\n}\n\ninterface MarketDataLatestResponse {\n [token: string]: {\n quotes?: {\n usd?: MarketDataQuote;\n btc?: MarketDataQuote;\n [fiat: string]: MarketDataQuote | undefined;\n };\n };\n}\n\nconst CURRENCY_TO_TOKEN_MAP: Record<string, string> = {\n [EcencyWalletCurrency.BTC]: \"btc\",\n [EcencyWalletCurrency.ETH]: \"eth\",\n [EcencyWalletCurrency.SOL]: \"sol\",\n [EcencyWalletCurrency.TON]: \"ton\",\n [EcencyWalletCurrency.TRON]: \"trx\",\n [EcencyWalletCurrency.APT]: \"apt\",\n [EcencyWalletCurrency.BNB]: \"bnb\",\n HBD: \"hbd\",\n HIVE: \"hive\",\n};\n\nconst MARKET_DATA_CACHE_KEY = \"market-data/latest\";\n\nconst normalizeCurrencyToToken = (currency: string) => {\n const upperCased = currency.toUpperCase();\n return CURRENCY_TO_TOKEN_MAP[upperCased] ?? currency.toLowerCase();\n};\n\nexport function getTokenPriceQueryOptions(currency?: string) {\n return queryOptions({\n queryKey: [\"ecency-wallets\", \"market-data\", currency],\n queryFn: async () => {\n if (!currency) {\n throw new Error(\n \"[SDK][Wallets][MarketData] – currency wasn`t provided\"\n );\n }\n\n if (!CONFIG.privateApiHost) {\n throw new Error(\n \"[SDK][Wallets][MarketData] – privateApiHost isn`t configured\"\n );\n }\n\n const token = normalizeCurrencyToToken(currency);\n\n let marketData = cacheGet(MARKET_DATA_CACHE_KEY) as\n | MarketDataLatestResponse\n | undefined;\n\n if (!marketData) {\n const httpResponse = await fetch(\n `${CONFIG.privateApiHost}/private-api/market-data/latest`,\n {\n method: \"GET\",\n }\n );\n\n if (!httpResponse.ok) {\n throw new Error(\n `[SDK][Wallets][MarketData] – failed to fetch latest market data (${httpResponse.status})`\n );\n }\n\n const data = (await httpResponse.json()) as MarketDataLatestResponse;\n cacheSet(MARKET_DATA_CACHE_KEY, data);\n marketData = data;\n }\n\n const tokenData = marketData[token];\n\n if (!tokenData) {\n throw new Error(\n `[SDK][Wallets][MarketData] – missing market data for token: ${token}`\n );\n }\n\n const usdQuote = tokenData.quotes?.usd;\n\n if (!usdQuote) {\n throw new Error(\n `[SDK][Wallets][MarketData] – missing USD quote for token: ${token}`\n );\n }\n\n return Number(usdQuote.price);\n },\n enabled: !!currency,\n });\n}\n","export function delay(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import { BtcWallet } from \"@okxweb3/coin-bitcoin\";\nimport { EthWallet } from \"@okxweb3/coin-ethereum\";\nimport { TrxWallet } from \"@okxweb3/coin-tron\";\nimport { TonWallet } from \"@okxweb3/coin-ton\";\nimport { SolWallet } from \"@okxweb3/coin-solana\";\nimport { AptosWallet } from \"@okxweb3/coin-aptos\";\nimport { BaseWallet } from \"@okxweb3/coin-base\";\nimport { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\n\nexport function getWallet(\n currency: EcencyWalletCurrency\n): BaseWallet | undefined {\n switch (currency) {\n case EcencyWalletCurrency.BTC:\n return new BtcWallet();\n case EcencyWalletCurrency.ETH:\n case EcencyWalletCurrency.BNB:\n return new EthWallet();\n\n case EcencyWalletCurrency.TRON:\n return new TrxWallet();\n\n case EcencyWalletCurrency.TON:\n return new TonWallet();\n\n case EcencyWalletCurrency.SOL:\n return new SolWallet();\n\n case EcencyWalletCurrency.APT:\n return new AptosWallet();\n\n default:\n return undefined;\n }\n}\n","import { mnemonicToSeedSync } from \"bip39\";\n\nexport function mnemonicToSeedBip39(value: string) {\n return mnemonicToSeedSync(value).toString(\"hex\");\n}\n","import { mnemonicToSeedSync } from \"bip39\";\nimport { bip32 } from \"@okxweb3/crypto-lib\";\nimport { PrivateKey } from \"@hiveio/dhive\";\n\nexport type HiveRole = \"owner\" | \"active\" | \"posting\" | \"memo\";\n\nconst ROLE_INDEX: Record<HiveRole, number> = {\n owner: 0,\n active: 1,\n posting: 2,\n memo: 3,\n};\n\nexport function deriveHiveKey(\n mnemonic: string,\n role: HiveRole,\n accountIndex = 0\n) {\n const seed = mnemonicToSeedSync(mnemonic);\n const master = bip32.fromSeed(seed);\n const path = `m/44'/3054'/${accountIndex}'/0'/${ROLE_INDEX[role]}'`;\n const child = master.derivePath(path);\n if (!child.privateKey) {\n throw new Error(\"[Ecency][Wallets] - hive key derivation failed\");\n }\n const pk = PrivateKey.from(child.privateKey);\n return {\n privateKey: pk.toString(),\n publicKey: pk.createPublic().toString(),\n } as const;\n}\n\nexport function deriveHiveKeys(\n mnemonic: string,\n accountIndex = 0\n) {\n const owner = deriveHiveKey(mnemonic, \"owner\", accountIndex);\n const active = deriveHiveKey(mnemonic, \"active\", accountIndex);\n const posting = deriveHiveKey(mnemonic, \"posting\", accountIndex);\n const memo = deriveHiveKey(mnemonic, \"memo\", accountIndex);\n return {\n owner: owner.privateKey,\n active: active.privateKey,\n posting: posting.privateKey,\n memo: memo.privateKey,\n ownerPubkey: owner.publicKey,\n activePubkey: active.publicKey,\n postingPubkey: posting.publicKey,\n memoPubkey: memo.publicKey,\n } as const;\n}\n\n","import { PrivateKey } from \"@hiveio/dhive\";\nimport type { HiveRole } from \"./derive-hive-bip44-keys\";\n\nexport function deriveHiveMasterPasswordKey(\n username: string,\n masterPassword: string,\n role: HiveRole\n) {\n const pk = PrivateKey.fromLogin(username, masterPassword, role);\n return {\n privateKey: pk.toString(),\n publicKey: pk.createPublic().toString(),\n } as const;\n}\n\nexport function deriveHiveMasterPasswordKeys(\n username: string,\n masterPassword: string\n) {\n const owner = deriveHiveMasterPasswordKey(username, masterPassword, \"owner\");\n const active = deriveHiveMasterPasswordKey(username, masterPassword, \"active\");\n const posting = deriveHiveMasterPasswordKey(\n username,\n masterPassword,\n \"posting\"\n );\n const memo = deriveHiveMasterPasswordKey(username, masterPassword, \"memo\");\n return {\n owner: owner.privateKey,\n active: active.privateKey,\n posting: posting.privateKey,\n memo: memo.privateKey,\n ownerPubkey: owner.publicKey,\n activePubkey: active.publicKey,\n postingPubkey: posting.publicKey,\n memoPubkey: memo.publicKey,\n } as const;\n}\n","import { CONFIG, FullAccount, getAccountFullQueryOptions } from \"@ecency/sdk\";\nimport { PrivateKey } from \"@hiveio/dhive\";\nimport { deriveHiveKeys } from \"./derive-hive-bip44-keys\";\n\nexport type HiveKeyDerivation = \"bip44\" | \"master-password\" | \"unknown\";\n\nexport async function detectHiveKeyDerivation(\n username: string,\n seed: string,\n type: \"active\" | \"owner\" = \"active\"\n): Promise<HiveKeyDerivation> {\n const uname = username.trim().toLowerCase();\n\n // ensure we actually have data\n const account = (await CONFIG.queryClient.fetchQuery(\n getAccountFullQueryOptions(uname)\n )) as FullAccount;\n\n // pick the right authority based on `type`\n const auth = account[type];\n\n // --- BIP44 check (match selected authority) ---\n const bip44 = deriveHiveKeys(seed);\n const bip44Pub =\n type === \"owner\" ? bip44.ownerPubkey : bip44.activePubkey;\n\n const matchBip44 = auth.key_auths.some(([pub]) => String(pub) === bip44Pub);\n if (matchBip44) return \"bip44\";\n\n // --- Master password (legacy) check (match selected authority) ---\n const legacyPub = PrivateKey.fromLogin(uname, seed, type)\n .createPublic()\n .toString();\n\n const matchLegacy = auth.key_auths.some(([pub]) => String(pub) === legacyPub);\n if (matchLegacy) return \"master-password\";\n\n return \"unknown\";\n}\n","import { PrivateKey } from \"@hiveio/dhive\";\n\n/**\n * Sign a digest using the provided private key.\n * @param digest Digest as a Buffer or hex string.\n * @param privateKey Private key in WIF format.\n * @returns Hex encoded signature string.\n */\nexport function signDigest(digest: Buffer | string, privateKey: string): string {\n const key = PrivateKey.fromString(privateKey);\n const buf = typeof digest === \"string\" ? Buffer.from(digest, \"hex\") : digest;\n return key.sign(buf).toString();\n}\n\n","import { PrivateKey, Client } from \"@hiveio/dhive\";\nimport type {\n Transaction,\n SignedTransaction,\n TransactionConfirmation,\n} from \"@hiveio/dhive/lib/chain/transaction\";\nimport { cryptoUtils } from \"@hiveio/dhive/lib/crypto\";\n\n/**\n * Sign a transaction with the given private key.\n * Optionally a custom chain id can be provided.\n *\n * @param tx Transaction to sign.\n * @param privateKey Private key in WIF format.\n * @param chainId Optional chain id as a hex string.\n * @returns Signed transaction including the signature.\n */\nexport function signTx(\n tx: Transaction,\n privateKey: string,\n chainId?: string\n): SignedTransaction {\n const key = PrivateKey.fromString(privateKey);\n const chain = chainId ? Buffer.from(chainId, \"hex\") : undefined;\n return cryptoUtils.signTransaction(tx, key, chain);\n}\n\n/**\n * Sign a transaction and broadcast it to the network.\n * Optionally a custom chain id can be provided.\n *\n * @param client Hive client instance used for broadcasting.\n * @param tx Transaction to sign.\n * @param privateKey Private key in WIF format.\n * @param chainId Optional chain id as a hex string.\n * @returns Broadcast confirmation.\n */\nexport async function signTxAndBroadcast(\n client: Client,\n tx: Transaction,\n privateKey: string,\n chainId?: string\n): Promise<TransactionConfirmation> {\n const signed = signTx(tx, privateKey, chainId);\n return client.broadcast.send(signed);\n}\n\n","import { PrivateKey } from \"@hiveio/dhive\";\nimport type { Client } from \"@hiveio/dhive\";\nimport { Memo } from \"@hiveio/dhive/lib/memo\";\n\n/**\n * Encrypt a memo using explicit keys.\n * @param privateKey Sender's private memo key in WIF format.\n * @param publicKey Recipient's public memo key.\n * @param memo Memo text to encrypt.\n */\nexport function encryptMemoWithKeys(\n privateKey: string,\n publicKey: string,\n memo: string\n): string {\n return Memo.encode(PrivateKey.fromString(privateKey), publicKey, memo);\n}\n\n/**\n * Encrypt a memo by looking up the recipient's memo key from the blockchain.\n * @param client Hive client instance used to fetch account information.\n * @param fromPrivateKey Sender's private memo key.\n * @param toAccount Recipient account name.\n * @param memo Memo text to encrypt.\n */\nexport async function encryptMemoWithAccounts(\n client: Client,\n fromPrivateKey: string,\n toAccount: string,\n memo: string\n): Promise<string> {\n const [account] = await client.database.getAccounts([toAccount]);\n if (!account) {\n throw new Error(\"Account not found\");\n }\n return Memo.encode(PrivateKey.fromString(fromPrivateKey), account.memo_key, memo);\n}\n\n","import { PrivateKey } from \"@hiveio/dhive\";\nimport { Memo } from \"@hiveio/dhive/lib/memo\";\n\n/**\n * Decrypt an encrypted memo using the recipient's private key.\n * @param privateKey Private memo key in WIF format.\n * @param memo Encrypted memo string.\n */\nexport function decryptMemoWithKeys(privateKey: string, memo: string): string {\n return Memo.decode(PrivateKey.fromString(privateKey), memo);\n}\n\n/**\n * Decrypt a memo using account information.\n * This is an alias of {@link decryptMemoWithKeys} and provided for\n * API symmetry with {@link encryptMemoWithAccounts}.\n */\nexport const decryptMemoWithAccounts = decryptMemoWithKeys;\n\n","import { CONFIG } from \"@ecency/sdk\";\nimport { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { getWallet } from \"./get-wallet\";\nimport type { SignTxParams } from \"@okxweb3/coin-base\";\n\n/**\n * Sign a transaction for an external chain supported by okxweb3 wallets.\n *\n * @param currency Chain identifier.\n * @param params Signing parameters accepted by okxweb3 wallets.\n */\nexport async function signExternalTx(\n currency: EcencyWalletCurrency,\n params: SignTxParams\n) {\n const wallet = getWallet(currency);\n if (!wallet) throw new Error(\"Unsupported currency\");\n return wallet.signTransaction(params as any);\n}\n\n/**\n * Sign and broadcast a transaction for an external chain. The transaction is\n * signed locally and then sent to a public RPC endpoint for broadcasting.\n *\n * @param currency Chain identifier.\n * @param params Signing parameters accepted by okxweb3 wallets.\n * @returns RPC response or broadcasted transaction hash.\n */\nexport async function signExternalTxAndBroadcast(\n currency: EcencyWalletCurrency,\n params: SignTxParams\n) {\n const signed = await signExternalTx(currency, params);\n\n switch (currency) {\n case EcencyWalletCurrency.BTC: {\n const res = await fetch(\"https://mempool.space/api/tx\", {\n method: \"POST\",\n body: signed as any,\n });\n if (!res.ok) throw new Error(\"Broadcast failed\");\n return res.text();\n }\n case EcencyWalletCurrency.ETH:\n case EcencyWalletCurrency.BNB: {\n const rpcUrl =\n currency === EcencyWalletCurrency.ETH\n ? \"https://rpc.ankr.com/eth\"\n : \"https://bsc-dataseed.binance.org\";\n const res = await fetch(rpcUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: 1,\n method: \"eth_sendRawTransaction\",\n params: [signed],\n }),\n });\n const json = await res.json();\n if (json.error) throw new Error(json.error.message);\n return json.result;\n }\n case EcencyWalletCurrency.SOL: {\n const res = await fetch(\n `https://rpc.helius.xyz/?api-key=${CONFIG.heliusApiKey}`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: 1,\n method: \"sendTransaction\",\n params: [signed],\n }),\n }\n );\n const json = await res.json();\n if (json.error) throw new Error(json.error.message);\n return json.result;\n }\n case EcencyWalletCurrency.TRON: {\n const res = await fetch(\n \"https://api.trongrid.io/wallet/broadcasttransaction\",\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: typeof signed === \"string\" ? signed : JSON.stringify(signed),\n }\n );\n const json = await res.json();\n if (json.result === false) throw new Error(json.message);\n return json.txid || json.result;\n }\n case EcencyWalletCurrency.TON: {\n const res = await fetch(\"https://toncenter.com/api/v2/sendTransaction\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ boc: signed }),\n });\n const json = await res.json();\n if (json.error) throw new Error(json.error.message || json.result);\n return json.result;\n }\n case EcencyWalletCurrency.APT: {\n const res = await fetch(\n \"https://fullnode.mainnet.aptoslabs.com/v1/transactions\",\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: typeof signed === \"string\" ? signed : JSON.stringify(signed),\n }\n );\n if (!res.ok) throw new Error(\"Broadcast failed\");\n return res.json();\n }\n default:\n throw new Error(\"Unsupported currency\");\n }\n}\n\n","import { buildPsbt as buildBtcPsbt } from \"@okxweb3/coin-bitcoin\";\nimport type { utxoTx } from \"@okxweb3/coin-bitcoin/dist/type\";\nimport type { Network as BtcNetwork } from \"@okxweb3/coin-bitcoin/dist/bitcoinjs-lib\";\nimport type { EthTxParams } from \"@okxweb3/coin-ethereum/dist/EthWallet\";\nimport type { SolSignParam } from \"@okxweb3/coin-solana/dist/SolWallet\";\nimport type { TrxSignParam } from \"@okxweb3/coin-tron/dist/TrxWallet\";\nimport type { TxData as TonTxData } from \"@okxweb3/coin-ton/dist/api/types\";\nimport type { AptosParam } from \"@okxweb3/coin-aptos/dist/AptosWallet\";\nimport { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\n\n/**\n * Union type covering all chain-specific build parameters.\n */\nexport type ExternalTxParams =\n | utxoTx\n | EthTxParams\n | SolSignParam\n | TrxSignParam\n | TonTxData\n | AptosParam;\n\n/**\n * Build a Bitcoin PSBT from UTXO inputs and desired outputs.\n *\n * @param tx Transaction description accepted by @okxweb3/coin-bitcoin.\n * @returns Hex encoded PSBT ready for signing.\n */\nexport function buildPsbt(\n tx: utxoTx,\n network?: BtcNetwork,\n maximumFeeRate?: number\n) {\n return buildBtcPsbt(tx, network, maximumFeeRate);\n}\n\n/**\n * Helper returning raw Ethereum transaction data ready for signing.\n *\n * The returned object can be passed directly to signExternalTx.\n */\nexport function buildEthTx(data: EthTxParams): EthTxParams {\n return data;\n}\n\n/**\n * Helper returning Solana transaction params used by signExternalTx.\n */\nexport function buildSolTx(data: SolSignParam): SolSignParam {\n return data;\n}\n\n/**\n * Helper returning Tron transaction params used by signExternalTx.\n */\nexport function buildTronTx(data: TrxSignParam): TrxSignParam {\n return data;\n}\n\n/**\n * Helper returning TON transaction params used by signExternalTx.\n */\nexport function buildTonTx(data: TonTxData): TonTxData {\n return data;\n}\n\n/**\n * Helper returning Aptos transaction params used by signExternalTx.\n */\nexport function buildAptTx(data: AptosParam): AptosParam {\n return data;\n}\n\n/**\n * Build a transaction for an external chain supported by okxweb3 wallets.\n *\n * @param currency Chain identifier.\n * @param tx Chain specific transaction description.\n */\nexport function buildExternalTx(\n currency: EcencyWalletCurrency,\n tx: ExternalTxParams\n) {\n switch (currency) {\n case EcencyWalletCurrency.BTC:\n return buildPsbt(tx as utxoTx);\n case EcencyWalletCurrency.ETH:\n case EcencyWalletCurrency.BNB:\n return buildEthTx(tx as EthTxParams);\n case EcencyWalletCurrency.SOL:\n return buildSolTx(tx as SolSignParam);\n case EcencyWalletCurrency.TRON:\n return buildTronTx(tx as TrxSignParam);\n case EcencyWalletCurrency.TON:\n return buildTonTx(tx as TonTxData);\n case EcencyWalletCurrency.APT:\n return buildAptTx(tx as AptosParam);\n default:\n throw new Error(\"Unsupported currency\");\n }\n}\n","let cachedFetch: typeof globalThis.fetch | undefined;\n\nexport function getBoundFetch() {\n if (!cachedFetch) {\n if (typeof globalThis.fetch !== \"function\") {\n throw new Error(\"[Ecency][Wallets] - global fetch is not available\");\n }\n\n cachedFetch = globalThis.fetch.bind(globalThis);\n }\n\n return cachedFetch;\n}\n","import { useQuery } from \"@tanstack/react-query\";\nimport { useSeedPhrase } from \"./use-seed-phrase\";\nimport { EcencyHiveKeys } from \"@/modules/wallets/types\";\nimport {\n deriveHiveKeys,\n deriveHiveMasterPasswordKeys,\n detectHiveKeyDerivation,\n} from \"@/modules/wallets/utils\";\n\nexport function useHiveKeysQuery(username: string) {\n const { data: seed } = useSeedPhrase(username);\n\n return useQuery({\n queryKey: [\"ecencу-wallets\", \"hive-keys\", username, seed],\n staleTime: Infinity,\n queryFn: async () => {\n if (!seed) {\n throw new Error(\"[Ecency][Wallets] - no seed to create Hive account\");\n }\n\n const method = await detectHiveKeyDerivation(username, seed).catch(\n () => \"bip44\"\n );\n\n const keys =\n method === \"master-password\"\n ? deriveHiveMasterPasswordKeys(username, seed)\n : deriveHiveKeys(seed);\n\n return {\n username,\n ...keys,\n } as EcencyHiveKeys;\n },\n });\n}\n","import { SMTAsset } from \"@hiveio/dhive\";\n\nexport enum Symbol {\n HIVE = \"HIVE\",\n HBD = \"HBD\",\n VESTS = \"VESTS\",\n SPK = \"SPK\",\n}\n\nexport enum NaiMap {\n \"@@000000021\" = \"HIVE\",\n \"@@000000013\" = \"HBD\",\n \"@@000000037\" = \"VESTS\",\n}\n\nexport interface Asset {\n amount: number;\n symbol: Symbol;\n}\n\nexport function parseAsset(sval: string | SMTAsset): Asset {\n if (typeof sval === \"string\") {\n const sp = sval.split(\" \");\n return {\n amount: parseFloat(sp[0]),\n // @ts-ignore\n symbol: Symbol[sp[1]],\n };\n } else {\n return {\n amount: parseFloat(sval.amount.toString()) / Math.pow(10, sval.precision),\n // @ts-ignore\n symbol: NaiMap[sval.nai],\n };\n }\n}\n","export function isEmptyDate(s: string | undefined): boolean {\n if (s === undefined) {\n return true;\n }\n\n return parseInt(s.split(\"-\")[0], 10) < 1980;\n}\n","export function vestsToHp(vests: number, hivePerMVests: number): number {\n return (vests / 1e6) * hivePerMVests;\n}\n","import { SpkApiWallet } from \"../types\";\n\nexport function rewardSpk(data: SpkApiWallet, sstats: any) {\n let a = 0,\n b = 0,\n c = 0,\n t = 0,\n diff = data.head_block - data.spk_block;\n if (!data.spk_block) {\n return 0;\n } else if (diff < 28800) {\n return 0;\n } else {\n t = diff / 28800;\n a = data.gov ? simpleInterest(data.gov, t, sstats.spk_rate_lgov) : 0;\n b = data.pow ? simpleInterest(data.pow, t, sstats.spk_rate_lpow) : 0;\n c = simpleInterest(\n (data.granted.t > 0 ? data.granted.t : 0) +\n (data.granting.t && data.granting.t > 0 ? data.granting.t : 0),\n t,\n sstats.spk_rate_ldel\n );\n const i = a + b + c;\n if (i) {\n return i;\n } else {\n return 0;\n }\n }\n function simpleInterest(p: number, t: number, r: number) {\n const amount = p * (1 + r / 365);\n const interest = amount - p;\n return interest * t;\n }\n}\n","import type { Operation, TransactionConfirmation } from \"@hiveio/dhive\";\n\ntype HiveAuthKeyType = \"posting\" | \"active\";\n\nexport type HiveAuthBroadcastHandler = (\n username: string,\n operations: Operation[],\n keyType: HiveAuthKeyType\n) => Promise<TransactionConfirmation>;\n\nlet broadcastHandler: HiveAuthBroadcastHandler | null = null;\n\nexport function registerHiveAuthBroadcastHandler(handler: HiveAuthBroadcastHandler) {\n broadcastHandler = handler;\n}\n\nexport function getHiveAuthBroadcastHandler(): HiveAuthBroadcastHandler | null {\n return broadcastHandler;\n}\n","import type { Operation, TransactionConfirmation } from \"@hiveio/dhive\";\nimport {\n getHiveAuthBroadcastHandler,\n registerHiveAuthBroadcastHandler,\n type HiveAuthBroadcastHandler,\n} from \"../../../internal/hive-auth\";\n\nexport type { HiveAuthBroadcastHandler } from \"../../../internal/hive-auth\";\n\nexport type HiveAuthKeyType = \"posting\" | \"active\";\n\nexport function registerWalletHiveAuthBroadcast(handler: HiveAuthBroadcastHandler) {\n registerHiveAuthBroadcastHandler(handler);\n}\n\nexport function broadcastWithWalletHiveAuth(\n username: string,\n operations: Operation[],\n keyType: HiveAuthKeyType\n): Promise<TransactionConfirmation> {\n const handler = getHiveAuthBroadcastHandler();\n if (!handler) {\n throw new Error(\"HiveAuth broadcast handler is not registered\");\n }\n\n return handler(username, operations, keyType);\n}\n\nexport function hasWalletHiveAuthBroadcast(): boolean {\n return typeof getHiveAuthBroadcastHandler() === \"function\";\n}\n","import {\n CONFIG,\n DynamicProps,\n getAccountFullQueryOptions,\n getDynamicPropsQueryOptions,\n getQueryClient,\n} from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { type FullAccount } from \"@ecency/sdk\";\n\nexport function getHiveAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"hive\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getDynamicPropsQueryOptions());\n await getQueryClient().prefetchQuery(\n getAccountFullQueryOptions(username)\n );\n\n const dynamicProps = getQueryClient().getQueryData<DynamicProps>(\n getDynamicPropsQueryOptions().queryKey\n );\n const accountData = getQueryClient().getQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey\n );\n\n const marketTicker = await CONFIG.hiveClient\n .call(\"condenser_api\", \"get_ticker\", [])\n .catch(() => undefined) as { latest?: string } | undefined;\n\n const marketPrice = Number.parseFloat(marketTicker?.latest ?? \"\");\n\n if (!accountData) {\n return {\n name: \"HIVE\",\n title: \"Hive\",\n price: Number.isFinite(marketPrice)\n ? marketPrice\n : dynamicProps\n ? dynamicProps.base / dynamicProps.quote\n : 0,\n accountBalance: 0,\n } satisfies GeneralAssetInfo;\n }\n\n const liquidBalance = parseAsset(accountData.balance).amount;\n const savingsBalance = parseAsset(accountData.savings_balance).amount;\n\n return {\n name: \"HIVE\",\n title: \"Hive\",\n price: Number.isFinite(marketPrice)\n ? marketPrice\n : dynamicProps\n ? dynamicProps.base / dynamicProps.quote\n : 0,\n accountBalance: liquidBalance + savingsBalance,\n parts: [\n {\n name: \"current\",\n balance: liquidBalance,\n },\n {\n name: \"savings\",\n balance: savingsBalance,\n },\n ],\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import {\n CONFIG,\n DynamicProps,\n getAccountFullQueryOptions,\n getDynamicPropsQueryOptions,\n getQueryClient,\n} from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { isEmptyDate, parseAsset, vestsToHp } from \"../../utils\";\nimport { type FullAccount } from \"@ecency/sdk\";\n\nfunction getAPR(dynamicProps: DynamicProps) {\n // The inflation was set to 9.5% at block 7m\n const initialInflationRate = 9.5;\n const initialBlock = 7000000;\n\n // It decreases by 0.01% every 250k blocks\n const decreaseRate = 250000;\n const decreasePercentPerIncrement = 0.01;\n\n // How many increments have happened since block 7m?\n const headBlock = dynamicProps.headBlock;\n const deltaBlocks = headBlock - initialBlock;\n const decreaseIncrements = deltaBlocks / decreaseRate;\n\n // Current inflation rate\n let currentInflationRate =\n initialInflationRate - decreaseIncrements * decreasePercentPerIncrement;\n\n // Cannot go lower than 0.95%\n if (currentInflationRate < 0.95) {\n currentInflationRate = 0.95;\n }\n\n // Now lets calculate the \"APR\"\n const vestingRewardPercent = dynamicProps.vestingRewardPercent / 10000;\n const virtualSupply = dynamicProps.virtualSupply;\n const totalVestingFunds = dynamicProps.totalVestingFund;\n\n return (\n (virtualSupply * currentInflationRate * vestingRewardPercent) /\n totalVestingFunds\n ).toFixed(3);\n}\n\nexport function getHivePowerAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-power\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getDynamicPropsQueryOptions());\n await getQueryClient().prefetchQuery(\n getAccountFullQueryOptions(username)\n );\n\n const dynamicProps = getQueryClient().getQueryData<DynamicProps>(\n getDynamicPropsQueryOptions().queryKey\n );\n const accountData = getQueryClient().getQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey\n );\n\n if (!dynamicProps || !accountData) {\n return {\n name: \"HP\",\n title: \"Hive Power\",\n price: 0,\n accountBalance: 0,\n };\n }\n\n const marketTicker = await CONFIG.hiveClient\n .call(\"condenser_api\", \"get_ticker\", [])\n .catch(() => undefined) as { latest?: string } | undefined;\n\n const marketPrice = Number.parseFloat(marketTicker?.latest ?? \"\");\n const price = Number.isFinite(marketPrice)\n ? marketPrice\n : dynamicProps.base / dynamicProps.quote;\n\n // const nextVestingSharesWithdrawal = !isEmptyDate(\n // accountData.next_vesting_withdrawal\n // )\n // ? Math.min(\n // parseAsset(accountData.vesting_withdraw_rate).amount,\n // (Number(accountData.to_withdraw) - Number(accountData.withdrawn)) /\n // 1e6\n // )\n // : 0;\n\n const vestingShares = parseAsset(accountData.vesting_shares).amount;\n const delegatedVests = parseAsset(accountData.delegated_vesting_shares).amount;\n const receivedVests = parseAsset(accountData.received_vesting_shares).amount;\n const withdrawRateVests = parseAsset(accountData.vesting_withdraw_rate).amount;\n const remainingToWithdrawVests = Math.max(\n (Number(accountData.to_withdraw) - Number(accountData.withdrawn)) / 1e6,\n 0\n );\n const nextWithdrawalVests = !isEmptyDate(accountData.next_vesting_withdrawal)\n ? Math.min(withdrawRateVests, remainingToWithdrawVests)\n : 0;\n\n const hpBalance = +vestsToHp(\n vestingShares,\n dynamicProps.hivePerMVests\n ).toFixed(3);\n const outgoingDelegationsHp = +vestsToHp(\n delegatedVests,\n dynamicProps.hivePerMVests\n ).toFixed(3);\n const incomingDelegationsHp = +vestsToHp(\n receivedVests,\n dynamicProps.hivePerMVests\n ).toFixed(3);\n const pendingPowerDownHp = +vestsToHp(\n remainingToWithdrawVests,\n dynamicProps.hivePerMVests\n ).toFixed(3);\n const nextPowerDownHp = +vestsToHp(\n nextWithdrawalVests,\n dynamicProps.hivePerMVests\n ).toFixed(3);\n const totalBalance = Math.max(hpBalance - pendingPowerDownHp, 0);\n const availableHp = Math.max(\n // Owned HP minus the portions already delegated away.\n hpBalance - outgoingDelegationsHp,\n 0\n );\n\n return {\n name: \"HP\",\n title: \"Hive Power\",\n price,\n accountBalance: +totalBalance.toFixed(3),\n apr: getAPR(dynamicProps),\n parts: [\n {\n name: \"hp_balance\",\n balance: hpBalance,\n },\n {\n name: \"available\",\n balance: +availableHp.toFixed(3),\n },\n {\n name: \"outgoing_delegations\",\n balance: outgoingDelegationsHp,\n },\n {\n name: \"incoming_delegations\",\n balance: incomingDelegationsHp,\n },\n ...(pendingPowerDownHp > 0\n ? [\n {\n name: \"pending_power_down\",\n balance: +pendingPowerDownHp.toFixed(3),\n },\n ]\n : []),\n ...(nextPowerDownHp > 0 && nextPowerDownHp !== pendingPowerDownHp\n ? [\n {\n name: \"next_power_down\",\n balance: +nextPowerDownHp.toFixed(3),\n },\n ]\n : []),\n ],\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import {\n DynamicProps,\n getAccountFullQueryOptions,\n getDynamicPropsQueryOptions,\n getQueryClient,\n CONFIG,\n} from \"@ecency/sdk\";\nimport { type FullAccount } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\n\nexport function getHbdAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"hbd\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getDynamicPropsQueryOptions());\n await getQueryClient().prefetchQuery(\n getAccountFullQueryOptions(username)\n );\n\n const accountData = getQueryClient().getQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey\n );\n const dynamicProps = getQueryClient().getQueryData<DynamicProps>(\n getDynamicPropsQueryOptions().queryKey\n );\n\n let price = 1;\n try {\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"HBD\")\n );\n const marketPrice =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"HBD\").queryKey\n ) ?? 0;\n\n if (typeof marketPrice === \"number\" && Number.isFinite(marketPrice)) {\n price = marketPrice;\n }\n } catch {\n // Ignore private API failures and fall back to the peg value.\n }\n\n if (!accountData) {\n return {\n name: \"HBD\",\n title: \"Hive Dollar\",\n price,\n accountBalance: 0,\n };\n }\n\n return {\n name: \"HBD\",\n title: \"Hive Dollar\",\n price,\n accountBalance:\n parseAsset(accountData.hbd_balance).amount +\n parseAsset(accountData?.savings_hbd_balance).amount,\n apr: ((dynamicProps?.hbdInterestRate ?? 0) / 100).toFixed(3),\n parts: [\n {\n name: \"current\",\n balance: parseAsset(accountData.hbd_balance).amount,\n },\n {\n name: \"savings\",\n balance: parseAsset(accountData.savings_hbd_balance).amount,\n },\n ],\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { utils } from \"@hiveio/dhive\";\nimport { HiveOperationGroup } from \"../types\";\nconst ops = utils.operationOrders;\n\nexport const HIVE_ACCOUNT_OPERATION_GROUPS: Record<\n HiveOperationGroup,\n number[]\n> = {\n transfers: [\n ops.transfer,\n ops.transfer_to_savings,\n ops.transfer_from_savings,\n ops.cancel_transfer_from_savings,\n ops.recurrent_transfer,\n ops.fill_recurrent_transfer,\n ops.escrow_transfer,\n ops.fill_recurrent_transfer,\n ],\n \"market-orders\": [\n ops.fill_convert_request,\n ops.fill_order,\n ops.fill_collateralized_convert_request,\n ops.limit_order_create2,\n ops.limit_order_create,\n ops.limit_order_cancel,\n ],\n interests: [ops.interest],\n \"stake-operations\": [\n ops.return_vesting_delegation,\n ops.withdraw_vesting,\n ops.transfer_to_vesting,\n ops.set_withdraw_vesting_route,\n ops.update_proposal_votes,\n ops.fill_vesting_withdraw,\n ops.account_witness_proxy,\n ops.delegate_vesting_shares,\n ],\n rewards: [\n ops.author_reward,\n ops.curation_reward,\n ops.producer_reward,\n ops.claim_reward_balance,\n ops.comment_benefactor_reward,\n ops.liquidity_reward,\n ops.proposal_pay,\n ],\n \"\": [],\n};\n","import { utils } from \"@hiveio/dhive\";\nimport type { HiveOperationName } from \"../types\";\n\nexport const HIVE_OPERATION_LIST = Object.keys(\n utils.operationOrders\n) as HiveOperationName[];\n","import { utils } from \"@hiveio/dhive\";\nimport type { HiveOperationName } from \"../types\";\n\nconst operationOrders = utils.operationOrders as Record<\n HiveOperationName,\n number\n>;\n\nexport const HIVE_OPERATION_ORDERS = operationOrders;\n\nexport const HIVE_OPERATION_NAME_BY_ID: Record<number, HiveOperationName> =\n Object.entries(operationOrders).reduce((acc, [name, id]) => {\n acc[id] = name as HiveOperationName;\n return acc;\n }, {} as Record<number, HiveOperationName>);\n","import { CONFIG } from \"@ecency/sdk\";\nimport { utils } from \"@hiveio/dhive\";\nimport { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { HIVE_ACCOUNT_OPERATION_GROUPS } from \"../consts\";\nimport {\n AuthorReward,\n ClaimRewardBalance,\n HiveOperationFilter,\n HiveOperationFilterKey,\n HiveOperationFilterValue,\n HiveOperationGroup,\n HiveOperationName,\n HiveTransaction,\n} from \"../types\";\nimport { parseAsset } from \"../../utils\";\n\nconst operationOrders = utils.operationOrders;\n\nfunction isHiveOperationName(value: string): value is HiveOperationName {\n return Object.prototype.hasOwnProperty.call(operationOrders, value);\n}\n\nexport function resolveHiveOperationFilters(\n filters: HiveOperationFilter\n): {\n filterKey: HiveOperationFilterKey;\n filterArgs: any[];\n} {\n const rawValues: HiveOperationFilterValue[] = Array.isArray(filters)\n ? filters\n : [filters];\n\n const hasAll = rawValues.includes(\"\" as HiveOperationGroup);\n\n const uniqueValues = Array.from(\n new Set(\n rawValues.filter(\n (value): value is HiveOperationFilterValue =>\n value !== undefined && value !== null && value !== (\"\" as HiveOperationGroup)\n )\n )\n );\n\n const filterKey: HiveOperationFilterKey =\n hasAll || uniqueValues.length === 0\n ? \"all\"\n : uniqueValues\n .map((value) => value.toString())\n .sort()\n .join(\"|\");\n\n const operationIds = new Set<number>();\n\n if (!hasAll) {\n uniqueValues.forEach((value) => {\n if (value in HIVE_ACCOUNT_OPERATION_GROUPS) {\n HIVE_ACCOUNT_OPERATION_GROUPS[value as HiveOperationGroup].forEach((id) =>\n operationIds.add(id)\n );\n return;\n }\n\n if (isHiveOperationName(value)) {\n operationIds.add(operationOrders[value]);\n }\n });\n }\n\n const filterArgs = makeBitMaskFilter(Array.from(operationIds));\n\n return {\n filterKey,\n filterArgs,\n };\n}\n\nfunction makeBitMaskFilter(allowedOperations: number[]) {\n let low = 0n;\n let high = 0n;\n\n allowedOperations.forEach((operation) => {\n if (operation < 64) {\n low |= 1n << BigInt(operation);\n } else {\n high |= 1n << BigInt(operation - 64);\n }\n });\n\n return [low !== 0n ? low.toString() : null, high !== 0n ? high.toString() : null];\n}\n\nexport function getHiveAssetTransactionsQueryOptions(\n username: string | undefined,\n limit = 20,\n filters: HiveOperationFilter = []\n) {\n const { filterArgs, filterKey } = resolveHiveOperationFilters(filters);\n\n return infiniteQueryOptions<HiveTransaction[]>({\n queryKey: [\"assets\", \"hive\", \"transactions\", username, limit, filterKey],\n initialData: { pages: [], pageParams: [] },\n initialPageParam: -1,\n getNextPageParam: (lastPage, __) =>\n lastPage ? +(lastPage[lastPage.length - 1]?.num ?? 0) - 1 : -1,\n\n queryFn: async ({ pageParam }) => {\n const response = await CONFIG.hiveClient.call(\n \"condenser_api\",\n \"get_account_history\",\n [username, pageParam, limit, ...filterArgs]\n );\n\n return response.map(\n (x: any) =>\n ({\n num: x[0],\n type: x[1].op[0],\n timestamp: x[1].timestamp,\n trx_id: x[1].trx_id,\n ...x[1].op[1],\n }) satisfies HiveTransaction\n );\n },\n select: ({ pages, pageParams }) => ({\n pageParams,\n pages: pages.map((page) =>\n page.filter((item) => {\n switch (item.type) {\n case \"author_reward\":\n case \"comment_benefactor_reward\":\n const hivePayout = parseAsset((item as AuthorReward).hive_payout);\n return hivePayout.amount > 0;\n case \"transfer\":\n case \"transfer_to_savings\":\n case \"transfer_to_vesting\":\n case \"recurrent_transfer\":\n return parseAsset(item.amount).symbol === \"HIVE\";\n\n case \"fill_recurrent_transfer\":\n const asset = parseAsset(item.amount);\n return [\"HIVE\"].includes(asset.symbol);\n\n case \"claim_reward_balance\":\n const rewardHive = parseAsset(\n (item as ClaimRewardBalance).reward_hive\n );\n return rewardHive.amount > 0;\n\n case \"cancel_transfer_from_savings\":\n case \"fill_order\":\n case \"limit_order_create\":\n case \"limit_order_cancel\":\n case \"interest\":\n case \"fill_convert_request\":\n case \"fill_collateralized_convert_request\":\n case \"proposal_pay\":\n case \"update_proposal_votes\":\n case \"comment_payout_update\":\n case \"collateralized_convert\":\n case \"account_witness_proxy\":\n return true;\n default:\n return false;\n }\n })\n ),\n }),\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { parseAsset } from \"../../utils\";\nimport {\n AuthorReward,\n ClaimRewardBalance,\n HiveOperationFilter,\n HiveTransaction,\n} from \"../types\";\nimport {\n getHiveAssetTransactionsQueryOptions,\n resolveHiveOperationFilters,\n} from \"./get-hive-asset-transactions-query-options\";\n\nexport function getHivePowerAssetTransactionsQueryOptions(\n username: string | undefined,\n limit = 20,\n filters: HiveOperationFilter = []\n) {\n const { filterKey } = resolveHiveOperationFilters(filters);\n\n return infiniteQueryOptions<HiveTransaction[]>({\n ...getHiveAssetTransactionsQueryOptions(username, limit, filters),\n queryKey: [\n \"assets\",\n \"hive-power\",\n \"transactions\",\n username,\n limit,\n filterKey,\n ],\n select: ({ pages, pageParams }) => ({\n pageParams,\n pages: pages.map((page) =>\n page.filter((item) => {\n switch (item.type) {\n case \"author_reward\":\n case \"comment_benefactor_reward\":\n const vestingPayout = parseAsset(\n (item as AuthorReward).vesting_payout\n );\n return vestingPayout.amount > 0;\n\n case \"claim_reward_balance\":\n const rewardVests = parseAsset(\n (item as ClaimRewardBalance).reward_vests\n );\n return rewardVests.amount > 0;\n\n case \"transfer_to_vesting\":\n return true;\n case \"transfer\":\n case \"transfer_to_savings\":\n case \"recurrent_transfer\":\n return [\"VESTS\", \"HP\"].includes(\n parseAsset(item.amount).symbol\n );\n\n case \"fill_recurrent_transfer\":\n const asset = parseAsset(item.amount);\n return [\"VESTS\", \"HP\"].includes(asset.symbol);\n\n case \"curation_reward\":\n case \"withdraw_vesting\":\n case \"delegate_vesting_shares\":\n case \"fill_vesting_withdraw\":\n case \"return_vesting_delegation\":\n case \"producer_reward\":\n case \"set_withdraw_vesting_route\":\n return true;\n default:\n return false;\n }\n })\n ),\n }),\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { parseAsset } from \"../../utils\";\nimport {\n AuthorReward,\n ClaimRewardBalance,\n HiveOperationFilter,\n HiveTransaction,\n} from \"../types\";\nimport {\n getHiveAssetTransactionsQueryOptions,\n resolveHiveOperationFilters,\n} from \"./get-hive-asset-transactions-query-options\";\n\nexport function getHbdAssetTransactionsQueryOptions(\n username: string | undefined,\n limit = 20,\n filters: HiveOperationFilter = []\n) {\n const { filterKey } = resolveHiveOperationFilters(filters);\n\n return infiniteQueryOptions<HiveTransaction[]>({\n ...getHiveAssetTransactionsQueryOptions(username, limit, filters),\n queryKey: [\"assets\", \"hbd\", \"transactions\", username, limit, filterKey],\n select: ({ pages, pageParams }) => ({\n pageParams,\n pages: pages.map((page) =>\n page.filter((item) => {\n switch (item.type) {\n case \"author_reward\":\n case \"comment_benefactor_reward\":\n const hbdPayout = parseAsset((item as AuthorReward).hbd_payout);\n return hbdPayout.amount > 0;\n\n case \"claim_reward_balance\":\n const rewardHbd = parseAsset(\n (item as ClaimRewardBalance).reward_hbd\n );\n return rewardHbd.amount > 0;\n\n case \"transfer\":\n case \"transfer_to_savings\":\n case \"transfer_to_vesting\":\n case \"recurrent_transfer\":\n return parseAsset(item.amount).symbol === \"HBD\";\n\n case \"fill_recurrent_transfer\":\n const asset = parseAsset(item.amount);\n return [\"HBD\"].includes(asset.symbol);\n\n case \"comment_reward\":\n case \"effective_comment_vote\":\n return true;\n default:\n return false;\n }\n })\n ),\n }),\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { HiveMarketMetric } from \"../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport dayjs from \"dayjs\";\n\nexport function getHiveAssetMetricQueryOptions(bucketSeconds = 86_400) {\n return infiniteQueryOptions({\n queryKey: [\"assets\", \"hive\", \"metrics\", bucketSeconds],\n queryFn: async ({ pageParam: [startDate, endDate] }) => {\n const apiData: HiveMarketMetric[] = await CONFIG.hiveClient.call(\n \"condenser_api\",\n \"get_market_history\",\n [\n bucketSeconds,\n dayjs(startDate).format(\"YYYY-MM-DDTHH:mm:ss\"),\n dayjs(endDate).format(\"YYYY-MM-DDTHH:mm:ss\"),\n ],\n );\n\n return apiData.map(({ hive, non_hive, open }) => ({\n close: non_hive.close / hive.close,\n open: non_hive.open / hive.open,\n low: non_hive.low / hive.low,\n high: non_hive.high / hive.high,\n volume: hive.volume,\n time: new Date(open),\n }));\n },\n initialPageParam: [\n // Fetch at least 8 hours or given interval\n dayjs()\n .subtract(Math.max(100 * bucketSeconds, 28_800), \"second\")\n .toDate(),\n new Date(),\n ],\n getNextPageParam: (_, __, [prevStartDate]) => [\n dayjs(prevStartDate.getTime())\n .subtract(Math.max(100 * bucketSeconds, 28_800), \"second\")\n .toDate(),\n dayjs(prevStartDate.getTime()).subtract(bucketSeconds, \"second\").toDate(),\n ],\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { HiveWithdrawRoute } from \"@/modules/assets/hive/types\";\n\nexport function getHiveAssetWithdrawalRoutesQueryOptions(\n username: string | undefined,\n) {\n return queryOptions({\n queryKey: [\"assets\", \"hive\", \"withdrawal-routes\", username],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_withdraw_routes\", [\n username,\n \"outgoing\",\n ]) as Promise<HiveWithdrawRoute[]>,\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { DelegatedVestingShare } from \"../types\";\n\nexport function getHivePowerDelegatesInfiniteQueryOptions(\n username: string,\n limit = 50\n) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-power\", \"delegates\", username],\n enabled: !!username,\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_vesting_delegations\", [\n username,\n \"\",\n limit,\n ]) as Promise<DelegatedVestingShare[]>,\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { ReceivedVestingShare } from \"../types\";\nimport { parseAsset } from \"../../utils\";\n\nexport function getHivePowerDelegatingsQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-power\", \"delegatings\", username],\n queryFn: async () => {\n const response = await fetch(\n CONFIG.privateApiHost + `/private-api/received-vesting/${username}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return (await response.json()).list as ReceivedVestingShare[];\n },\n select: (data) =>\n data.sort(\n (a, b) =>\n parseAsset(b.vesting_shares).amount -\n parseAsset(a.vesting_shares).amount\n ),\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { Symbol as AssetSymbol, parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\nexport interface TransferPayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo: string;\n type: T;\n}\n\nexport async function transferHive<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? TransferPayload<T> & { key: PrivateKey }\n : TransferPayload<T>\n) {\n const parsedAsset = parseAsset(payload.amount);\n const token = parsedAsset.symbol;\n const precision = token === AssetSymbol.VESTS ? 6 : 3;\n const formattedAmount = parsedAsset.amount.toFixed(precision);\n const amountWithSymbol = `${formattedAmount} ${token}`;\n\n const operation: Operation = [\n \"transfer\",\n {\n from: payload.from,\n to: payload.to,\n amount: amountWithSymbol,\n memo: payload.memo,\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n // params contains from, to, amount, memo\n // broadcast.transfer expects amount string like \"1.000 HIVE\" or \"1.000 HBD\"\n return CONFIG.hiveClient.broadcast.transfer(\n {\n from: params.from,\n to: params.to,\n amount: amountWithSymbol,\n memo: params.memo,\n },\n key\n );\n } else if (payload.type === \"keychain\") {\n return new Promise((resolve, reject) =>\n (window as any).hive_keychain?.requestTransfer(\n payload.from,\n payload.to,\n formattedAmount,\n payload.memo,\n token,\n (resp: { success: boolean }) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n },\n true,\n null\n )\n );\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n // For hivesigner, include the same payload fields; amount already contains token denomination\n return hs.sendOperation(\n operation,\n { callback: `https://ecency.com/@${payload.from}/wallet` },\n () => {}\n );\n }\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface Payload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo: string;\n type: T;\n}\n\nexport async function transferToSavingsHive<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\" ? Payload<T> & { key: PrivateKey } : Payload<T>\n) {\n const operationPayload = {\n from: payload.from,\n to: payload.to,\n amount: payload.amount,\n memo: payload.memo,\n };\n const operation: Operation = [\"transfer_to_savings\", operationPayload];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(\n [[\"transfer_to_savings\", params]],\n key\n );\n } else if (payload.type === \"keychain\") {\n return Keychain.broadcast(payload.from, [operation], \"Active\") as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {});\n }\n}\n","import { CONFIG, Keychain } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface PayloadBase {\n from: string;\n to: string;\n amount: string;\n memo: string;\n request_id?: number;\n}\n\ninterface PayloadWithKey<T extends HiveBasedAssetSignType> extends PayloadBase {\n type: T;\n}\n\nexport async function transferFromSavingsHive<\n T extends HiveBasedAssetSignType\n>(\n payload: T extends \"key\"\n ? PayloadWithKey<T> & { key: PrivateKey }\n : PayloadWithKey<T>\n) {\n const requestId = payload.request_id ?? (Date.now() >>> 0);\n const operationPayload = {\n from: payload.from,\n to: payload.to,\n amount: payload.amount,\n memo: payload.memo,\n request_id: requestId,\n };\n\n const operation: Operation = [\"transfer_from_savings\", operationPayload];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(\n [operation],\n key\n );\n }\n\n if (payload.type === \"keychain\") {\n return Keychain.broadcast(payload.from, [operation], \"Active\") as Promise<unknown>;\n }\n\n if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n }\n\n return hs.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {});\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface Payload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo: string;\n type: T;\n}\nexport async function powerUpHive<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\" ? Payload<T> & { key: PrivateKey } : Payload<T>\n) {\n const operationPayload = {\n from: payload.from,\n to: payload.to,\n amount: payload.amount,\n memo: payload.memo,\n };\n const operation: Operation = [\"transfer_to_vesting\", operationPayload];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(\n [[\"transfer_to_vesting\", params]],\n key\n );\n } else if (payload.type === \"keychain\") {\n return Keychain.broadcast(payload.from, [operation], \"Active\") as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {});\n }\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface Payload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo: string;\n type: T;\n}\nexport async function delegateHive<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\" ? Payload<T> & { key: PrivateKey } : Payload<T>\n) {\n const operationPayload = {\n delegator: payload.from,\n delegatee: payload.to,\n vesting_shares: payload.amount,\n };\n const operation: Operation = [\"delegate_vesting_shares\", operationPayload];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(\n [operation],\n key\n );\n } else if (payload.type === \"keychain\") {\n return Keychain.broadcast(payload.from, [operation], \"Active\") as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {});\n }\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface Payload<T extends HiveBasedAssetSignType> {\n from: string;\n amount: string;\n type: T;\n}\nexport async function powerDownHive<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\" ? Payload<T> & { key: PrivateKey } : Payload<T>\n) {\n const operationPayload = {\n account: payload.from,\n vesting_shares: payload.amount,\n };\n\n const operation: Operation = [\"withdraw_vesting\", operationPayload];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(\n [operation],\n key\n );\n } else if (payload.type === \"keychain\") {\n return Keychain.broadcast(payload.from, [operation], \"Active\") as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {});\n }\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface Payload<T extends HiveBasedAssetSignType> {\n from_account: string;\n to_account: string;\n percent: number;\n auto_vest: boolean;\n type: T;\n}\n\nexport async function withdrawVestingRouteHive<\n T extends HiveBasedAssetSignType,\n>(payload: T extends \"key\" ? Payload<T> & { key: PrivateKey } : Payload<T>) {\n const baseParams = {\n from_account: payload.from_account,\n to_account: payload.to_account,\n percent: payload.percent,\n auto_vest: payload.auto_vest,\n };\n const operation: Operation = [\"set_withdraw_vesting_route\", baseParams];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(\n [[\"set_withdraw_vesting_route\", params]],\n key\n );\n }\n\n if (payload.type === \"keychain\") {\n const { type, ...params } = payload as Payload<\"keychain\">;\n return Keychain.broadcast(params.from_account, [operation], \"Active\") as Promise<unknown>;\n }\n\n if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from_account, [operation], \"active\");\n }\n\n const { type, ...params } = payload as Payload<\"hivesigner\">;\n return hs.sendOperation(operation, { callback: `https://ecency.com/@${params.from_account}/wallet` }, () => {});\n}\n","import { getAccountFullQueryOptions, useBroadcastMutation } from \"@ecency/sdk\";\nimport { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { getHivePowerAssetGeneralInfoQueryOptions } from \"../queries\";\nimport { delay } from \"@/modules/wallets/utils\";\n\nexport function useClaimRewards(\n username: string,\n onSuccess: () => void\n): ReturnType<typeof useBroadcastMutation<void>> {\n const { data } = useQuery(getAccountFullQueryOptions(username));\n\n const queryClient = useQueryClient();\n\n return useBroadcastMutation<void>(\n [\"assets\", \"hive\", \"claim-rewards\", data?.name],\n username,\n () => {\n if (!data) {\n throw new Error(\"Failed to fetch account while claiming balance\");\n }\n\n const {\n reward_hive_balance: hiveBalance,\n reward_hbd_balance: hbdBalance,\n reward_vesting_balance: vestingBalance,\n } = data;\n\n return [\n [\n \"claim_reward_balance\",\n {\n account: username,\n reward_hive: hiveBalance,\n reward_hbd: hbdBalance,\n reward_vests: vestingBalance,\n },\n ],\n ];\n },\n async () => {\n onSuccess();\n\n // Some time to think for blockchain\n await delay(1000);\n\n queryClient.invalidateQueries({\n queryKey: getAccountFullQueryOptions(username).queryKey,\n });\n queryClient.invalidateQueries({\n queryKey: getHivePowerAssetGeneralInfoQueryOptions(username).queryKey,\n });\n }\n );\n}\n","import { CONFIG, Keychain } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface PayloadBase {\n from: string;\n to: string;\n amount: string;\n memo: string;\n request_id?: number;\n}\n\ninterface PayloadWithKey<T extends HiveBasedAssetSignType> extends PayloadBase {\n type: T;\n}\n\nexport async function claimInterestHive<\n T extends HiveBasedAssetSignType\n>(\n payload: T extends \"key\"\n ? PayloadWithKey<T> & { key: PrivateKey }\n : PayloadWithKey<T>\n) {\n const requestId = payload.request_id ?? (Date.now() >>> 0);\n const baseOperation = {\n from: payload.from,\n to: payload.to,\n amount: payload.amount,\n memo: payload.memo,\n request_id: requestId,\n };\n\n const cancelOperation = {\n from: payload.from,\n request_id: requestId,\n };\n\n const operations: Operation[] = [\n [\"transfer_from_savings\", baseOperation],\n [\"cancel_transfer_from_savings\", cancelOperation],\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(operations, key);\n }\n\n if (payload.type === \"keychain\") {\n return Keychain.broadcast(payload.from, operations, \"Active\") as Promise<unknown>;\n }\n\n if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, operations, \"active\");\n }\n\n return hs.sendOperations(operations, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {});\n}\n","export enum AssetOperation {\n // Common\n Transfer = \"transfer\",\n\n // APR\n TransferToSavings = \"transfer-saving\",\n WithdrawFromSavings = \"withdraw-saving\",\n Delegate = \"delegate\",\n PowerUp = \"power-up\",\n PowerDown = \"power-down\",\n WithdrawRoutes = \"withdraw-routes\",\n ClaimInterest = \"claim-interest\",\n Swap = \"swap\",\n\n // Points\n Gift = \"gift\",\n Promote = \"promote\",\n Claim = \"claim\",\n Buy = \"buy\",\n\n // SPK\n LockLiquidity = \"lock\",\n\n // Layer 2\n Stake = \"stake\",\n Unstake = \"unstake\",\n Undelegate = \"undelegate\",\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface SpkTransferPayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo?: string;\n type: T;\n}\n\nexport async function transferSpk<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? SpkTransferPayload<T> & { key: PrivateKey }\n : SpkTransferPayload<T>\n) {\n const json = JSON.stringify({\n to: payload.to,\n amount: parseAsset(payload.amount).amount * 1000,\n ...(typeof payload.memo === \"string\" ? { memo: payload.memo } : {}),\n });\n\n const op = {\n id: \"spkcc_spk_send\",\n json,\n required_auths: [payload.from],\n required_posting_auths: [],\n };\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: op.id,\n required_auths: [payload.from],\n required_posting_auths: [],\n json,\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return Keychain.customJson(\n payload.from,\n \"spkcc_spk_send\",\n \"Active\",\n json,\n payload.to\n ) as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n const { amount } = parseAsset(payload.amount);\n return hs.sign(\n \"custom_json\",\n {\n authority: \"active\",\n required_auths: `[\"${payload.from}\"]`,\n required_posting_auths: \"[]\",\n id: \"spkcc_spk_send\",\n json: JSON.stringify({\n to: payload.to,\n amount: +amount * 1000,\n ...(typeof payload.memo === \"string\" ? { memo: payload.memo } : {}),\n }),\n },\n `https://ecency.com/@${payload.from}/wallet`\n );\n }\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface SpkLockPayload<T extends HiveBasedAssetSignType> {\n mode: \"lock\" | \"unlock\";\n from: string;\n amount: string;\n type: T;\n}\n\nexport const lockLarynx = async <T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? SpkLockPayload<T> & { key: PrivateKey }\n : SpkLockPayload<T>\n) => {\n const json = JSON.stringify({ amount: +payload.amount * 1000 });\n\n const op = {\n id: payload.mode === \"lock\" ? \"spkcc_gov_up\" : \"spkcc_gov_down\",\n json,\n required_auths: [payload.from],\n required_posting_auths: [],\n };\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: op.id,\n required_auths: [payload.from],\n required_posting_auths: [],\n json,\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return Keychain.customJson(\n payload.from,\n op.id,\n \"Active\",\n json,\n payload.from\n ) as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n const { amount } = parseAsset(payload.amount);\n return hs.sign(\n \"custom_json\",\n {\n authority: \"active\",\n required_auths: `[\"${payload.from}\"]`,\n required_posting_auths: \"[]\",\n id: op.id,\n json: JSON.stringify({ amount: +amount * 1000 }),\n },\n `https://ecency.com/@${payload.from}/wallet`\n );\n }\n};\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface SpkPowerPayload<T extends HiveBasedAssetSignType> {\n mode: \"up\" | \"down\";\n from: string;\n amount: string;\n type: T;\n}\n\nexport async function powerUpLarynx<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? SpkPowerPayload<T> & { key: PrivateKey }\n : SpkPowerPayload<T>\n) {\n const json = JSON.stringify({ amount: +payload.amount * 1000 });\n\n const op = {\n id: `spkcc_power_${payload.mode}`,\n json,\n required_auths: [payload.from],\n required_posting_auths: [],\n };\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: `spkcc_power_${payload.mode}`,\n required_auths: [payload.from],\n required_posting_auths: [],\n json,\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return Keychain.customJson(\n payload.from,\n `spkcc_power_${payload.mode}`,\n \"Active\",\n json,\n \"\"\n ) as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n const { amount } = parseAsset(payload.amount);\n return hs.sign(\n \"custom_json\",\n {\n authority: \"active\",\n required_auths: `[\"${payload.from}\"]`,\n required_posting_auths: \"[]\",\n id: `spkcc_power_${payload.mode}`,\n json: JSON.stringify({ amount: +amount * 1000 }),\n },\n `https://ecency.com/@${payload.from}/wallet`\n );\n }\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface LarynxTransferPayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo?: string;\n type: T;\n}\n\nexport async function transferLarynx<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? LarynxTransferPayload<T> & { key: PrivateKey }\n : LarynxTransferPayload<T>\n) {\n const json = JSON.stringify({\n to: payload.to,\n amount: parseAsset(payload.amount).amount * 1000,\n ...(typeof payload.memo === \"string\" ? { memo: payload.memo } : {}),\n });\n\n const op = {\n id: \"spkcc_send\",\n json,\n required_auths: [payload.from],\n required_posting_auths: [],\n };\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: \"spkcc_send\",\n required_auths: [payload.from],\n required_posting_auths: [],\n json,\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return Keychain.customJson(\n payload.from,\n \"spkcc_send\",\n \"Active\",\n json,\n payload.to\n ) as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n const { amount } = parseAsset(payload.amount);\n return hs.sign(\n \"custom_json\",\n {\n authority: \"active\",\n required_auths: `[\"${payload.from}\"]`,\n required_posting_auths: \"[]\",\n id: \"spkcc_send\",\n json: JSON.stringify({\n to: payload.to,\n amount: +amount * 1000,\n ...(typeof payload.memo === \"string\" ? { memo: payload.memo } : {}),\n }),\n },\n `https://ecency.com/@${payload.from}/wallet`\n );\n }\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { SpkMarkets, TransformedSpkMarkets } from \"../../types\";\n\nexport function getSpkMarketsQueryOptions() {\n return queryOptions({\n queryKey: [\"assets\", \"spk\", \"markets\"],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const response = await fetch(`${CONFIG.spkNode}/markets`);\n const data = (await response.json()) as SpkMarkets;\n\n return {\n list: Object.entries(data.markets.node).map(([name, node]) => ({\n name,\n status:\n node.lastGood >= data.head_block - 1200\n ? \"🟩\"\n : node.lastGood > data.head_block - 28800\n ? \"🟨\"\n : \"🟥\",\n })),\n raw: data,\n } satisfies TransformedSpkMarkets;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { SpkApiWallet } from \"../../types\";\n\nexport function getSpkWalletQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"spk\", \"wallet\", username],\n queryFn: async () => {\n const response = await fetch(CONFIG.spkNode + `/@${username}`);\n return response.json() as Promise<SpkApiWallet>;\n },\n enabled: !!username,\n staleTime: 60000,\n refetchInterval: 90000,\n });\n}\n","import { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { getHiveAssetGeneralInfoQueryOptions } from \"../../hive\";\nimport {\n GeneralAssetInfo,\n SpkApiWallet,\n TransformedSpkMarkets,\n} from \"../../types\";\nimport { getSpkMarketsQueryOptions } from \"./get-spk-markets-query-options\";\nimport { getSpkWalletQueryOptions } from \"./get-spk-wallet-query-options\";\n\nfunction format(value: number) {\n return value.toFixed(3);\n}\n\nexport function getLarynxAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"larynx\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getSpkWalletQueryOptions(username));\n await getQueryClient().prefetchQuery(getSpkMarketsQueryOptions());\n await getQueryClient().prefetchQuery(\n getHiveAssetGeneralInfoQueryOptions(username)\n );\n\n const wallet = getQueryClient().getQueryData<SpkApiWallet>(\n getSpkWalletQueryOptions(username).queryKey\n );\n const market = getQueryClient().getQueryData<TransformedSpkMarkets>(\n getSpkMarketsQueryOptions().queryKey\n );\n const hiveAsset = getQueryClient().getQueryData<GeneralAssetInfo>(\n getHiveAssetGeneralInfoQueryOptions(username).queryKey\n );\n\n if (!wallet || !market) {\n return {\n name: \"LARYNX\",\n title: \"SPK Network / LARYNX\",\n price: 1,\n accountBalance: 0,\n };\n }\n\n const price = +format(\n (wallet.balance / 1000) * +wallet.tick * (hiveAsset?.price ?? 0)\n );\n const accountBalance = +format(wallet.balance / 1000);\n\n return {\n name: \"LARYNX\",\n layer: \"SPK\",\n title: \"LARYNX\",\n price: price / accountBalance,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { getHiveAssetGeneralInfoQueryOptions } from \"../../hive\";\nimport {\n GeneralAssetInfo,\n SpkApiWallet,\n TransformedSpkMarkets,\n} from \"../../types\";\nimport { rewardSpk } from \"../../utils\";\nimport { getSpkMarketsQueryOptions } from \"./get-spk-markets-query-options\";\nimport { getSpkWalletQueryOptions } from \"./get-spk-wallet-query-options\";\n\nfunction format(value: number) {\n return value.toFixed(3);\n}\n\nexport function getSpkAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"spk\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getSpkWalletQueryOptions(username));\n await getQueryClient().prefetchQuery(getSpkMarketsQueryOptions());\n await getQueryClient().prefetchQuery(\n getHiveAssetGeneralInfoQueryOptions(username)\n );\n\n const wallet = getQueryClient().getQueryData<SpkApiWallet>(\n getSpkWalletQueryOptions(username).queryKey\n );\n const market = getQueryClient().getQueryData<TransformedSpkMarkets>(\n getSpkMarketsQueryOptions().queryKey\n );\n const hiveAsset = getQueryClient().getQueryData<GeneralAssetInfo>(\n getHiveAssetGeneralInfoQueryOptions(username).queryKey\n );\n\n if (!wallet || !market) {\n return {\n name: \"SPK\",\n layer: \"SPK\",\n title: \"SPK Network\",\n price: 1,\n accountBalance: 0,\n };\n }\n\n const price = +format(\n ((wallet.gov + wallet.spk) / 1000) *\n +wallet.tick *\n (hiveAsset?.price ?? 0)\n );\n const accountBalance = +format(\n (wallet.spk +\n rewardSpk(\n wallet,\n market.raw.stats || {\n spk_rate_lgov: \"0.001\",\n spk_rate_lpow: format(\n parseFloat(market.raw.stats.spk_rate_lpow) * 100\n ),\n spk_rate_ldel: format(\n parseFloat(market.raw.stats.spk_rate_ldel) * 100\n ),\n }\n )) /\n 1000\n );\n\n return {\n name: \"SPK\",\n layer: \"SPK\",\n title: \"SPK Network\",\n price: price / accountBalance,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { getHiveAssetGeneralInfoQueryOptions } from \"../../hive\";\nimport {\n GeneralAssetInfo,\n SpkApiWallet,\n TransformedSpkMarkets,\n} from \"../../types\";\nimport { getSpkMarketsQueryOptions } from \"./get-spk-markets-query-options\";\nimport { getSpkWalletQueryOptions } from \"./get-spk-wallet-query-options\";\n\nfunction format(value: number) {\n return value.toFixed(3);\n}\n\nexport function getLarynxPowerAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"larynx-power\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getSpkWalletQueryOptions(username));\n await getQueryClient().prefetchQuery(getSpkMarketsQueryOptions());\n await getQueryClient().prefetchQuery(\n getHiveAssetGeneralInfoQueryOptions(username)\n );\n\n const wallet = getQueryClient().getQueryData<SpkApiWallet>(\n getSpkWalletQueryOptions(username).queryKey\n );\n const market = getQueryClient().getQueryData<TransformedSpkMarkets>(\n getSpkMarketsQueryOptions().queryKey\n );\n const hiveAsset = getQueryClient().getQueryData<GeneralAssetInfo>(\n getHiveAssetGeneralInfoQueryOptions(username).queryKey\n );\n\n if (!wallet || !market) {\n return {\n name: \"LP\",\n title: \"SPK Network / LARYNX Power\",\n price: 1,\n accountBalance: 0,\n };\n }\n\n const price = +format(\n (wallet.poweredUp / 1000) * +wallet.tick * (hiveAsset?.price ?? 0)\n );\n const accountBalance = +format(wallet.poweredUp / 1000);\n\n return {\n name: \"LP\",\n title: \"LARYNX Power\",\n layer: \"SPK\",\n price: price / accountBalance,\n accountBalance,\n parts: [\n {\n name: \"delegating\",\n balance: wallet.granting?.t ? +format(wallet.granting.t / 1000) : 0,\n },\n {\n name: \"recieved\",\n balance: wallet.granted?.t ? +format(wallet.granted.t / 1000) : 0,\n },\n ],\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { HiveEngineTokenMetadataResponse } from \"../types\";\n\nexport function getHiveEngineTokensMetadataQueryOptions(tokens: string[]) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-engine\", \"metadata-list\", tokens] as const,\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const response = await fetch(\n `${CONFIG.privateApiHost}/private-api/engine-api`,\n {\n method: \"POST\",\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n method: \"find\",\n params: {\n contract: \"tokens\",\n table: \"tokens\",\n query: {\n symbol: { $in: tokens },\n },\n },\n id: 2,\n }),\n headers: { \"Content-type\": \"application/json\" },\n }\n );\n const data = (await response.json()) as {\n result: HiveEngineTokenMetadataResponse[];\n };\n return data.result;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { HiveEngineTokenBalance } from \"../types\";\n\nexport function getHiveEngineTokensBalancesQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-engine\", \"balances\", username] as const,\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const response = await fetch(\n `${CONFIG.privateApiHost}/private-api/engine-api`,\n {\n method: \"POST\",\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n method: \"find\",\n params: {\n contract: \"tokens\",\n table: \"balances\",\n query: {\n account: username,\n },\n },\n id: 1,\n }),\n headers: { \"Content-type\": \"application/json\" },\n }\n );\n const data = (await response.json()) as {\n result: HiveEngineTokenBalance[];\n };\n return data.result;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { HiveEngineMarketResponse } from \"../types\";\nimport { CONFIG } from \"@ecency/sdk\";\n\nexport function getHiveEngineTokensMarketQueryOptions() {\n return queryOptions({\n queryKey: [\"assets\", \"hive-engine\", \"markets\"],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const response = await fetch(\n `${CONFIG.privateApiHost}/private-api/engine-api`,\n {\n method: \"POST\",\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n method: \"find\",\n params: {\n contract: \"market\",\n table: \"metrics\",\n query: {},\n },\n id: 1,\n }),\n headers: { \"Content-type\": \"application/json\" },\n }\n );\n const data = (await response.json()) as {\n result: HiveEngineMarketResponse[];\n };\n return data.result;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { getQueryClient } from \"@ecency/sdk\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { getHiveEngineTokensMetadataQueryOptions } from \"./get-hive-engine-tokens-metadata-query-options\";\nimport { getHiveEngineTokensBalancesQueryOptions } from \"./get-hive-engine-tokens-balances-query-options\";\nimport { getHiveEngineTokensMarketQueryOptions } from \"./get-hive-engine-tokens-market-query-options\";\nimport { getHiveAssetGeneralInfoQueryOptions } from \"../../hive/queries\";\n\nexport function getHiveEngineTokenGeneralInfoQueryOptions(\n username?: string,\n symbol?: string\n) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-engine\", symbol, \"general-info\", username],\n enabled: !!symbol && !!username,\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n if (!symbol || !username) {\n throw new Error(\n \"[SDK][Wallets] – hive engine token or username missed\"\n );\n }\n const queryClient = getQueryClient();\n const hiveQuery = getHiveAssetGeneralInfoQueryOptions(username);\n await queryClient.prefetchQuery(hiveQuery);\n const hiveData = queryClient.getQueryData<GeneralAssetInfo>(\n hiveQuery.queryKey\n );\n\n const metadataList = await queryClient.ensureQueryData(\n getHiveEngineTokensMetadataQueryOptions([symbol])\n );\n\n const balanceList = await queryClient.ensureQueryData(\n getHiveEngineTokensBalancesQueryOptions(username)\n );\n\n const marketList = await queryClient.ensureQueryData(\n getHiveEngineTokensMarketQueryOptions()\n );\n\n const metadata = metadataList?.find((i) => i.symbol === symbol);\n const balance = balanceList?.find((i) => i.symbol === symbol);\n const market = marketList?.find((i) => i.symbol === symbol);\n\n const lastPrice = +(market?.lastPrice ?? \"0\");\n\n const liquidBalance = parseFloat(balance?.balance ?? \"0\");\n const stakedBalance = parseFloat(balance?.stake ?? \"0\");\n const unstakingBalance = parseFloat(balance?.pendingUnstake ?? \"0\");\n\n const parts: GeneralAssetInfo[\"parts\"] = [\n { name: \"liquid\", balance: liquidBalance },\n { name: \"staked\", balance: stakedBalance },\n ];\n\n if (unstakingBalance > 0) {\n parts.push({ name: \"unstaking\", balance: unstakingBalance });\n }\n\n return {\n name: symbol,\n title: metadata?.name ?? \"\",\n price: lastPrice === 0 ? 0 : Number(lastPrice * (hiveData?.price ?? 0)),\n accountBalance: liquidBalance + stakedBalance,\n layer: \"ENGINE\",\n parts,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { HiveEngineTransaction } from \"../types\";\n\nexport function getHiveEngineTokenTransactionsQueryOptions(\n username: string | undefined,\n symbol: string,\n limit = 20\n) {\n return infiniteQueryOptions<HiveEngineTransaction[]>({\n queryKey: [\"assets\", \"hive-engine\", symbol, \"transactions\", username],\n enabled: !!symbol && !!username,\n initialPageParam: 0,\n getNextPageParam: (lastPage) => (lastPage?.length ?? 0) + limit,\n queryFn: async ({ pageParam }) => {\n if (!symbol || !username) {\n throw new Error(\n \"[SDK][Wallets] – hive engine token or username missed\"\n );\n }\n\n const url = new URL(\n `${CONFIG.privateApiHost}/private-api/engine-account-history`\n );\n url.searchParams.set(\"account\", username);\n url.searchParams.set(\"symbol\", symbol);\n url.searchParams.set(\"limit\", limit.toString());\n url.searchParams.set(\"offset\", (pageParam as number).toString());\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: { \"Content-type\": \"application/json\" },\n });\n return (await response.json()) as HiveEngineTransaction[];\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { HiveEngineMetric } from \"../types\";\n\nexport function getHiveEngineTokensMetricsQueryOptions(\n symbol: string,\n interval = \"daily\"\n) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-engine\", symbol],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const url = new URL(\n `${CONFIG.privateApiHost}/private-api/engine-chart-api`\n );\n url.searchParams.set(\"symbol\", symbol);\n url.searchParams.set(\"interval\", interval);\n\n const response = await fetch(url, {\n headers: { \"Content-type\": \"application/json\" },\n });\n return (await response.json()) as HiveEngineMetric[];\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\nexport interface DelegateEnginePayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n asset: string;\n type: T;\n}\n\nexport async function delegateEngineToken<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? DelegateEnginePayload<T> & { key: PrivateKey }\n : DelegateEnginePayload<T>\n) {\n const parsedAsset = parseAsset(payload.amount);\n const quantity = parsedAsset.amount.toString();\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: \"ssc-mainnet-hive\",\n required_auths: [payload.from],\n required_posting_auths: [],\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"delegate\",\n contractPayload: {\n symbol: payload.asset,\n to: payload.to,\n quantity: quantity,\n },\n }),\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n\n const op = {\n id: \"ssc-mainnet-hive\",\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"delegate\",\n contractPayload: {\n symbol: params.asset,\n to: params.to,\n quantity: quantity,\n },\n }),\n required_auths: [params.from],\n required_posting_auths: [],\n };\n\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return new Promise((resolve, reject) =>\n (window as any).hive_keychain?.requestCustomJson(\n payload.from,\n \"ssc-mainnet-hive\",\n \"Active\",\n operation[1].json,\n \"Token Delegation\",\n (resp: { success: boolean }) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n }\n )\n );\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(\n operation,\n { callback: `https://ecency.com/@${payload.from}/wallet` },\n () => {}\n );\n }\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\nexport interface UndelegateEnginePayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n asset: string;\n type: T;\n}\n\nexport async function undelegateEngineToken<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? UndelegateEnginePayload<T> & { key: PrivateKey }\n : UndelegateEnginePayload<T>\n) {\n const parsedAsset = parseAsset(payload.amount);\n const quantity = parsedAsset.amount.toString();\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: \"ssc-mainnet-hive\",\n required_auths: [payload.from],\n required_posting_auths: [],\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"undelegate\",\n contractPayload: {\n symbol: payload.asset,\n from: payload.to,\n quantity: quantity,\n },\n }),\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n\n const op = {\n id: \"ssc-mainnet-hive\",\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"undelegate\",\n contractPayload: {\n symbol: params.asset,\n from: params.to,\n quantity: quantity,\n },\n }),\n required_auths: [params.from],\n required_posting_auths: [],\n };\n\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return new Promise((resolve, reject) =>\n (window as any).hive_keychain?.requestCustomJson(\n payload.from,\n \"ssc-mainnet-hive\",\n \"Active\",\n operation[1].json,\n \"Token Undelegation\",\n (resp: { success: boolean }) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n }\n )\n );\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(\n operation,\n { callback: `https://ecency.com/@${payload.from}/wallet` },\n () => {}\n );\n }\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\nexport interface StakeEnginePayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n asset: string;\n type: T;\n}\n\nexport async function stakeEngineToken<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? StakeEnginePayload<T> & { key: PrivateKey }\n : StakeEnginePayload<T>\n) {\n const parsedAsset = parseAsset(payload.amount);\n const quantity = parsedAsset.amount.toString();\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: \"ssc-mainnet-hive\",\n required_auths: [payload.from],\n required_posting_auths: [],\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"stake\",\n contractPayload: {\n symbol: payload.asset,\n to: payload.to,\n quantity: quantity,\n },\n }),\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n\n const op = {\n id: \"ssc-mainnet-hive\",\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"stake\",\n contractPayload: {\n symbol: params.asset,\n to: params.to,\n quantity: quantity,\n },\n }),\n required_auths: [params.from],\n required_posting_auths: [],\n };\n\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return new Promise((resolve, reject) =>\n (window as any).hive_keychain?.requestCustomJson(\n payload.from,\n \"ssc-mainnet-hive\",\n \"Active\",\n operation[1].json,\n \"Token Staking\",\n (resp: { success: boolean }) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n }\n )\n );\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(\n operation,\n { callback: `https://ecency.com/@${payload.from}/wallet` },\n () => {}\n );\n }\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\nexport interface UnstakeEnginePayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n asset: string;\n type: T;\n}\n\nexport async function unstakeEngineToken<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? UnstakeEnginePayload<T> & { key: PrivateKey }\n : UnstakeEnginePayload<T>\n) {\n const parsedAsset = parseAsset(payload.amount);\n const quantity = parsedAsset.amount.toString();\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: \"ssc-mainnet-hive\",\n required_auths: [payload.from],\n required_posting_auths: [],\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"unstake\",\n contractPayload: {\n symbol: payload.asset,\n to: payload.to,\n quantity: quantity,\n },\n }),\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n\n const op = {\n id: \"ssc-mainnet-hive\",\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"unstake\",\n contractPayload: {\n symbol: params.asset,\n to: params.to,\n quantity: quantity,\n },\n }),\n required_auths: [params.from],\n required_posting_auths: [],\n };\n\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return new Promise((resolve, reject) =>\n (window as any).hive_keychain?.requestCustomJson(\n payload.from,\n \"ssc-mainnet-hive\",\n \"Active\",\n operation[1].json,\n \"Token Unstaking\",\n (resp: { success: boolean }) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n }\n )\n );\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(\n operation,\n { callback: `https://ecency.com/@${payload.from}/wallet` },\n () => {}\n );\n }\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\nexport interface TransferEnginePayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo: string;\n asset: string;\n type: T;\n}\n\nexport async function transferEngineToken<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? TransferEnginePayload<T> & { key: PrivateKey }\n : TransferEnginePayload<T>\n) {\n const parsedAsset = parseAsset(payload.amount);\n const quantity = parsedAsset.amount.toString();\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: \"ssc-mainnet-hive\",\n required_auths: [payload.from],\n required_posting_auths: [],\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"transfer\",\n contractPayload: {\n symbol: payload.asset,\n to: payload.to,\n quantity: quantity,\n memo: payload.memo,\n },\n }),\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n\n const op = {\n id: \"ssc-mainnet-hive\",\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"transfer\",\n contractPayload: {\n symbol: params.asset,\n to: params.to,\n quantity: quantity,\n memo: params.memo,\n },\n }),\n required_auths: [params.from],\n required_posting_auths: [],\n };\n\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return new Promise((resolve, reject) =>\n (window as any).hive_keychain?.requestCustomJson(\n payload.from,\n \"ssc-mainnet-hive\",\n \"Active\",\n operation[1].json,\n \"Token Transfer\",\n (resp: { success: boolean }) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n }\n )\n );\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(\n operation,\n { callback: `https://ecency.com/@${payload.from}/wallet` },\n () => {}\n );\n }\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { PointsResponse } from \"../types\";\n\nexport function getPointsQueryOptions(username?: string) {\n return queryOptions({\n queryKey: [\"assets\", \"points\", username],\n queryFn: async () => {\n if (!username) {\n throw new Error(\n \"[SDK][Wallets][Assets][Points][Query] – username wasn`t provided\"\n );\n }\n\n const response = await fetch(\n CONFIG.privateApiHost + \"/private-api/points\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ username }),\n }\n );\n const points = (await response.json()) satisfies PointsResponse;\n return {\n points: points.points,\n uPoints: points.unclaimed_points,\n } as const;\n },\n staleTime: 60000,\n refetchInterval: 90000,\n refetchOnMount: true,\n enabled: !!username,\n });\n}\n","import { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { getPointsQueryOptions } from \"./get-points-query-options\";\n\nexport function getPointsAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"points\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getPointsQueryOptions(username));\n const data = getQueryClient().getQueryData(\n getPointsQueryOptions(username).queryKey\n );\n return {\n name: \"POINTS\",\n title: \"Ecency Points\",\n price: 0.002,\n accountBalance: +data?.points,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { PointTransaction, PointTransactionType } from \"../types\";\nimport { GeneralAssetTransaction } from \"../../types\";\n\nexport function getPointsAssetTransactionsQueryOptions(\n username: string | undefined,\n type?: PointTransactionType\n) {\n return queryOptions({\n queryKey: [\"assets\", \"points\", \"transactions\", username, type],\n queryFn: async () => {\n const response = await fetch(\n `${CONFIG.privateApiHost}/private-api/point-list`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n username,\n type: type ?? 0,\n }),\n }\n );\n const data = (await response.json()) as PointTransaction[];\n return data.map(({ created, type, amount, id, sender, receiver, memo }) => ({\n created: new Date(created),\n type,\n results: [\n {\n amount: parseFloat(amount),\n asset: \"POINTS\",\n },\n ],\n id,\n from: sender ?? undefined,\n to: receiver ?? undefined,\n memo: memo ?? undefined,\n })) satisfies GeneralAssetTransaction[];\n },\n });\n}\n","import { CONFIG, EcencyAnalytics, getAccessToken } from \"@ecency/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { getBoundFetch } from \"@/modules/wallets/utils\";\nimport { getPointsQueryOptions } from \"../queries\";\nimport { Points } from \"../types\";\n\nexport function useClaimPoints(\n username: string | undefined,\n onSuccess?: () => void,\n onError?: Parameters<typeof useMutation>[\"0\"][\"onError\"]\n) {\n const { mutateAsync: recordActivity } = EcencyAnalytics.useRecordActivity(\n username,\n \"points-claimed\"\n );\n const fetchApi = getBoundFetch();\n return useMutation({\n mutationFn: async () => {\n if (!username) {\n throw new Error(\n \"[SDK][Wallets][Assets][Points][Claim] – username wasn`t provided\"\n );\n }\n\n return fetchApi(CONFIG.privateApiHost + \"/private-api/points-claim\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: getAccessToken(username) }),\n });\n },\n onError,\n onSuccess: () => {\n recordActivity();\n\n CONFIG.queryClient.setQueryData<Points>(\n getPointsQueryOptions(username).queryKey,\n (data) => {\n if (!data) {\n return data;\n }\n\n return {\n points: (\n parseFloat(data.points) + parseFloat(data.uPoints)\n ).toFixed(3),\n uPoints: \"0\",\n };\n }\n );\n\n onSuccess?.();\n },\n });\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ntype PointsSignType = \"key\" | \"keychain\" | \"hivesigner\" | \"hiveauth\";\n\ninterface PointsTransferPayloadBase {\n from: string;\n to: string;\n amount: string;\n memo: string;\n type: PointsSignType;\n}\n\ntype PointsTransferPayload<T extends PointsSignType> = T extends \"key\"\n ? PointsTransferPayloadBase & { key: PrivateKey }\n : PointsTransferPayloadBase;\n\nexport async function transferPoint<T extends PointsSignType>({\n from,\n to,\n amount,\n memo,\n type,\n ...payload\n}: PointsTransferPayload<T>) {\n const op: Operation = [\n \"custom_json\",\n {\n id: \"ecency_point_transfer\",\n json: JSON.stringify({\n sender: from,\n receiver: to,\n amount: amount.replace(\"POINTS\", \"POINT\"),\n memo,\n }),\n required_auths: [from],\n required_posting_auths: [],\n },\n ];\n\n if (type === \"key\" && \"key\" in payload) {\n const { key } = payload as PointsTransferPayload<\"key\">;\n // Use hive client to broadcast custom_json with active auth\n return CONFIG.hiveClient.broadcast.sendOperations([op], key);\n }\n\n if (type === \"keychain\") {\n // Broadcast via Hive Keychain as custom_json with Active authority\n return Keychain.broadcast(from, [op], \"Active\") as Promise<unknown>;\n }\n\n if (type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(from, [op], \"active\");\n }\n\n // Default to hivesigner\n return hs.sendOperation(op, { callback: `https://ecency.com/@${from}/wallet` }, () => {});\n}\n","export enum PointTransactionType {\n CHECKIN = 10,\n LOGIN = 20,\n CHECKIN_EXTRA = 30,\n POST = 100,\n COMMENT = 110,\n VOTE = 120,\n REBLOG = 130,\n DELEGATION = 150,\n REFERRAL = 160,\n COMMUNITY = 170,\n TRANSFER_SENT = 998,\n TRANSFER_INCOMING = 999,\n MINTED = 991,\n}\n","import {\n getHiveEngineTokensBalancesQueryOptions,\n getHiveEngineTokensMetadataQueryOptions,\n} from \"@/modules/assets\";\nimport {\n HiveEngineTokenBalance,\n HiveEngineTokenMetadataResponse,\n} from \"@/modules/assets/hive-engine/types\";\nimport { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { EcencyWalletBasicTokens, EcencyWalletCurrency } from \"../enums\";\n\nfunction createFallbackTokenMetadata(symbol: string): HiveEngineTokenMetadataResponse {\n return {\n issuer: \"\",\n symbol,\n name: symbol,\n metadata: \"{}\",\n precision: 0,\n maxSupply: \"0\",\n supply: \"0\",\n circulatingSupply: \"0\",\n stakingEnabled: false,\n unstakingCooldown: 0,\n delegationEnabled: false,\n undelegationCooldown: 0,\n numberTransactions: 0,\n totalStaked: \"0\",\n };\n}\n\nasync function getLayer2TokensMetadata(username?: string) {\n if (!username) {\n return [] as HiveEngineTokenMetadataResponse[];\n }\n\n let balances: HiveEngineTokenBalance[] = [];\n\n try {\n balances = await getQueryClient().fetchQuery(\n getHiveEngineTokensBalancesQueryOptions(username)\n );\n } catch {\n balances = [];\n }\n\n const uniqueSymbols = Array.from(\n new Set(\n balances\n .map((balance) => balance.symbol)\n .filter((symbol): symbol is string => Boolean(symbol))\n )\n );\n\n if (uniqueSymbols.length === 0) {\n return [] as HiveEngineTokenMetadataResponse[];\n }\n\n let metadataList: HiveEngineTokenMetadataResponse[] = [];\n\n try {\n metadataList = await getQueryClient().fetchQuery(\n getHiveEngineTokensMetadataQueryOptions(uniqueSymbols)\n );\n } catch {\n metadataList = [];\n }\n\n const metadataBySymbol = new Map(\n metadataList.map((token) => [token.symbol, token])\n );\n\n return uniqueSymbols.map(\n (symbol) => metadataBySymbol.get(symbol) ?? createFallbackTokenMetadata(symbol)\n );\n}\n\nexport function getAllTokensListQueryOptions(username?: string) {\n return queryOptions({\n queryKey: [\"ecency-wallets\", \"all-tokens-list\", username ?? null],\n queryFn: async () => {\n return {\n basic: [\n EcencyWalletBasicTokens.Points,\n EcencyWalletBasicTokens.Hive,\n EcencyWalletBasicTokens.HivePower,\n EcencyWalletBasicTokens.HiveDollar,\n ],\n external: Object.values(EcencyWalletCurrency),\n spk: [\"SPK\", \"LARYNX\", \"LP\"],\n layer2: await getLayer2TokensMetadata(username),\n };\n },\n });\n}\n","import { AssetOperation, type GeneralAssetInfo } from \"@/modules/assets\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport interface VisionPortfolioWalletItem {\n symbol: string;\n info: GeneralAssetInfo;\n operations: AssetOperation[];\n}\n\nexport interface VisionPortfolioResponse {\n username: string;\n currency?: string;\n wallets: VisionPortfolioWalletItem[];\n}\n\nconst ACTION_ALIAS_MAP: Record<string, AssetOperation> = {\n \"transfer-to-savings\": AssetOperation.TransferToSavings,\n \"transfer-savings\": AssetOperation.TransferToSavings,\n \"savings-transfer\": AssetOperation.TransferToSavings,\n \"withdraw-from-savings\": AssetOperation.WithdrawFromSavings,\n \"withdraw-savings\": AssetOperation.WithdrawFromSavings,\n \"savings-withdraw\": AssetOperation.WithdrawFromSavings,\n \"transfer-from-savings\": AssetOperation.WithdrawFromSavings,\n \"powerup\": AssetOperation.PowerUp,\n \"power-down\": AssetOperation.PowerDown,\n \"powerdown\": AssetOperation.PowerDown,\n \"withdraw-vesting\": AssetOperation.PowerDown,\n \"hp-delegate\": AssetOperation.Delegate,\n \"delegate-hp\": AssetOperation.Delegate,\n \"delegate-power\": AssetOperation.Delegate,\n \"delegate-vesting-shares\": AssetOperation.Delegate,\n \"undelegate-power\": AssetOperation.Undelegate,\n \"undelegate-token\": AssetOperation.Undelegate,\n \"stake-token\": AssetOperation.Stake,\n \"stake-power\": AssetOperation.Stake,\n \"unstake-token\": AssetOperation.Unstake,\n \"unstake-power\": AssetOperation.Unstake,\n \"transfer-to-vesting\": AssetOperation.PowerUp,\n \"lock-liquidity\": AssetOperation.LockLiquidity,\n \"lock-liq\": AssetOperation.LockLiquidity,\n \"gift-points\": AssetOperation.Gift,\n \"points-gift\": AssetOperation.Gift,\n \"promote-post\": AssetOperation.Promote,\n \"promote-entry\": AssetOperation.Promote,\n boost: AssetOperation.Promote,\n convert: AssetOperation.Swap,\n \"swap-token\": AssetOperation.Swap,\n \"swap_tokens\": AssetOperation.Swap,\n \"claim-points\": AssetOperation.Claim,\n \"claim-rewards\": AssetOperation.Claim,\n \"buy-points\": AssetOperation.Buy,\n \"ecency-point-transfer\": AssetOperation.Transfer,\n \"spkcc-spk-send\": AssetOperation.Transfer,\n \"withdraw-routes\": AssetOperation.WithdrawRoutes,\n \"withdrawroutes\": AssetOperation.WithdrawRoutes,\n \"claim-interest\": AssetOperation.ClaimInterest,\n};\n\nconst KNOWN_OPERATION_VALUES = new Map<string, AssetOperation>(\n Object.values(AssetOperation).map((value) => [value, value])\n);\n\nconst DERIVED_PART_KEY_MAP: Record<string, string[]> = {\n liquid: [\"liquid\", \"liquidBalance\", \"liquid_amount\", \"liquidTokens\"],\n savings: [\"savings\", \"savingsBalance\", \"savings_amount\"],\n staked: [\"staked\", \"stakedBalance\", \"staking\", \"stake\", \"power\"],\n delegated: [\"delegated\", \"delegatedBalance\", \"delegationsOut\"],\n received: [\"received\", \"receivedBalance\", \"delegationsIn\"],\n pending: [\n \"pending\",\n \"pendingRewards\",\n \"unclaimed\",\n \"unclaimedBalance\",\n \"pendingReward\",\n ],\n};\n\nconst EXTRA_DATA_PART_KEY_MAP: Record<string, string> = {\n delegated: \"outgoing_delegations\",\n outgoing: \"outgoing_delegations\",\n delegations_out: \"outgoing_delegations\",\n delegated_hive_power: \"outgoing_delegations\",\n delegated_hp: \"outgoing_delegations\",\n received: \"incoming_delegations\",\n incoming: \"incoming_delegations\",\n delegations_in: \"incoming_delegations\",\n received_hive_power: \"incoming_delegations\",\n received_hp: \"incoming_delegations\",\n powering_down: \"pending_power_down\",\n power_down: \"pending_power_down\",\n powering_down_hive_power: \"pending_power_down\",\n};\n\nfunction normalizeString(value: unknown): string | undefined {\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n }\n\n return undefined;\n}\n\nfunction normalizeNumber(value: unknown): number | undefined {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) {\n return undefined;\n }\n\n const direct = Number.parseFloat(trimmed);\n if (Number.isFinite(direct)) {\n return direct;\n }\n\n const sanitized = trimmed.replace(/,/g, \"\");\n const match = sanitized.match(/[-+]?\\d+(?:\\.\\d+)?/);\n if (match) {\n const parsed = Number.parseFloat(match[0]);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n }\n\n return undefined;\n}\n\nfunction normalizeApr(value: unknown): string | undefined {\n const numeric = normalizeNumber(value);\n\n if (numeric === undefined) {\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n }\n\n return undefined;\n }\n\n return numeric.toString();\n}\n\nfunction normalizeParts(\n rawParts: unknown\n): GeneralAssetInfo[\"parts\"] | undefined {\n if (Array.isArray(rawParts)) {\n const parsed = rawParts\n .map((item) => {\n if (!item || typeof item !== \"object\") {\n return undefined;\n }\n\n const name = normalizeString(\n (item as Record<string, unknown>).name ??\n (item as Record<string, unknown>).label ??\n (item as Record<string, unknown>).type ??\n (item as Record<string, unknown>).part\n );\n const balance = normalizeNumber(\n (item as Record<string, unknown>).balance ??\n (item as Record<string, unknown>).amount ??\n (item as Record<string, unknown>).value\n );\n\n if (!name || balance === undefined) {\n return undefined;\n }\n\n return { name, balance };\n })\n .filter((item): item is { name: string; balance: number } => Boolean(item));\n\n return parsed.length ? parsed : undefined;\n }\n\n if (rawParts && typeof rawParts === \"object\") {\n const parsed = Object.entries(rawParts as Record<string, unknown>)\n .map(([name, amount]) => {\n const balance = normalizeNumber(amount);\n if (!name || balance === undefined) {\n return undefined;\n }\n\n return { name, balance };\n })\n .filter((item): item is { name: string; balance: number } => Boolean(item));\n\n return parsed.length ? parsed : undefined;\n }\n\n return undefined;\n}\n\nfunction deriveParts(record: Record<string, unknown>) {\n const derived = Object.entries(DERIVED_PART_KEY_MAP)\n .map(([name, keys]) => {\n for (const key of keys) {\n const value = normalizeNumber(record[key]);\n if (value !== undefined) {\n return { name, balance: value };\n }\n }\n\n return undefined;\n })\n .filter((item): item is { name: string; balance: number } => Boolean(item));\n\n return derived.length ? derived : undefined;\n}\n\nfunction normalizePartKey(value: string) {\n return value.trim().toLowerCase().replace(/[\\s-]+/g, \"_\");\n}\n\nfunction mergeParts(\n ...sources: (GeneralAssetInfo[\"parts\"] | undefined)[]\n): GeneralAssetInfo[\"parts\"] | undefined {\n const order: string[] = [];\n const values = new Map<string, number>();\n\n for (const parts of sources) {\n if (!parts) {\n continue;\n }\n\n for (const part of parts) {\n if (!part?.name || typeof part.balance !== \"number\") {\n continue;\n }\n\n const existing = values.get(part.name);\n if (existing === undefined) {\n order.push(part.name);\n values.set(part.name, part.balance);\n } else {\n values.set(part.name, existing + part.balance);\n }\n }\n }\n\n return order.length\n ? order.map((name) => ({ name, balance: values.get(name)! }))\n : undefined;\n}\n\nfunction normalizeExtraDataParts(\n rawExtraData: unknown\n): GeneralAssetInfo[\"parts\"] | undefined {\n const items = Array.isArray(rawExtraData)\n ? rawExtraData\n : rawExtraData && typeof rawExtraData === \"object\"\n ? Object.values(rawExtraData as Record<string, unknown>)\n : [];\n\n const parts = items\n .map((item) => {\n if (!item || typeof item !== \"object\") {\n return undefined;\n }\n\n const record = item as Record<string, unknown>;\n const keyCandidate =\n normalizeString(record.dataKey) ??\n normalizeString(record.key) ??\n normalizeString(record.name);\n\n if (!keyCandidate) {\n return undefined;\n }\n\n const canonical = normalizePartKey(keyCandidate);\n const partName = EXTRA_DATA_PART_KEY_MAP[canonical];\n\n if (!partName) {\n return undefined;\n }\n\n const balance = normalizeNumber(\n record.balance ??\n record.amount ??\n record.value ??\n record.displayValue ??\n record.text\n );\n\n if (balance === undefined) {\n return undefined;\n }\n\n return { name: partName, balance: Math.abs(balance) };\n })\n .filter((part): part is { name: string; balance: number } => Boolean(part));\n\n return parts.length ? parts : undefined;\n}\n\nfunction normalizeActionKey(value: string) {\n return value.trim().toLowerCase().replace(/[\\s_]+/g, \"-\");\n}\n\nfunction mapActions(rawActions: unknown): AssetOperation[] {\n if (!rawActions) {\n return [];\n }\n\n const rawList = Array.isArray(rawActions) ? rawActions : [rawActions];\n const result: AssetOperation[] = [];\n\n for (const raw of rawList) {\n let candidate: string | undefined;\n if (typeof raw === \"string\") {\n candidate = raw;\n } else if (raw && typeof raw === \"object\") {\n const record = raw as Record<string, unknown>;\n candidate =\n normalizeString(record.code) ??\n normalizeString(record.id) ??\n normalizeString(record.name) ??\n normalizeString(record.action);\n }\n\n if (!candidate) {\n continue;\n }\n\n const canonical = normalizeActionKey(candidate);\n const operation =\n KNOWN_OPERATION_VALUES.get(canonical) ?? ACTION_ALIAS_MAP[canonical];\n\n if (operation && !result.includes(operation)) {\n result.push(operation);\n }\n }\n\n return result;\n}\n\nfunction parseToken(rawToken: unknown): VisionPortfolioWalletItem | undefined {\n if (!rawToken || typeof rawToken !== \"object\") {\n return undefined;\n }\n\n const token = rawToken as Record<string, unknown>;\n const symbol =\n normalizeString(token.symbol) ??\n normalizeString(token.asset) ??\n normalizeString(token.name);\n\n if (!symbol) {\n return undefined;\n }\n\n const normalizedSymbol = symbol.toUpperCase();\n const title =\n normalizeString(token.title) ??\n normalizeString(token.display) ??\n normalizeString(token.label) ??\n normalizeString(token.friendlyName) ??\n normalizeString(token.name) ??\n normalizedSymbol;\n const price =\n normalizeNumber(token.fiatRate) ??\n normalizeNumber(token.price) ??\n normalizeNumber(token.priceUsd) ??\n normalizeNumber(token.usdPrice) ??\n normalizeNumber((token.metrics as Record<string, unknown> | undefined)?.price) ??\n normalizeNumber(\n (token.metrics as Record<string, unknown> | undefined)?.priceUsd\n ) ??\n 0;\n const apr =\n normalizeApr(token.apr) ??\n normalizeApr(token.aprPercent) ??\n normalizeApr((token.metrics as Record<string, unknown> | undefined)?.apr) ??\n normalizeApr(\n (token.metrics as Record<string, unknown> | undefined)?.aprPercent\n );\n const baseParts =\n normalizeParts(\n token.parts ??\n token.balances ??\n token.sections ??\n token.breakdown ??\n token.accountBreakdown ??\n token.walletParts\n ) ?? deriveParts(token);\n const parts = mergeParts(\n baseParts,\n normalizeExtraDataParts(\n (token.extraData ?? token.extra_data ?? token.extra ?? token.badges) as\n | Record<string, unknown>\n | unknown[]\n | undefined\n )\n );\n const accountBalance =\n normalizeNumber(token.balance) ??\n normalizeNumber(token.accountBalance) ??\n normalizeNumber(token.totalBalance) ??\n normalizeNumber(token.total) ??\n normalizeNumber(token.amount) ??\n (baseParts\n ? baseParts.reduce((total, part) => total + (part.balance ?? 0), 0)\n : parts\n ? parts.reduce((total, part) => total + (part.balance ?? 0), 0)\n : 0);\n const layer =\n normalizeString(token.layer) ??\n normalizeString(token.chain) ??\n normalizeString(token.category) ??\n normalizeString(token.type);\n\n return {\n symbol: normalizedSymbol,\n info: {\n name: normalizedSymbol,\n title,\n price,\n accountBalance,\n apr: apr ?? undefined,\n layer: layer ?? undefined,\n parts,\n },\n operations: mapActions(\n token.actions ??\n token.available_actions ??\n token.availableActions ??\n token.operations ??\n token.supportedActions\n ),\n };\n}\n\nfunction extractTokens(payload: unknown): unknown[] {\n if (!payload || typeof payload !== \"object\") {\n return [];\n }\n\n const containers = [payload];\n const record = payload as Record<string, unknown>;\n if (record.data && typeof record.data === \"object\") {\n containers.push(record.data as Record<string, unknown>);\n }\n if (record.result && typeof record.result === \"object\") {\n containers.push(record.result as Record<string, unknown>);\n }\n if (record.portfolio && typeof record.portfolio === \"object\") {\n containers.push(record.portfolio as Record<string, unknown>);\n }\n\n for (const container of containers) {\n if (Array.isArray(container)) {\n return container;\n }\n\n if (container && typeof container === \"object\") {\n for (const key of [\n \"wallets\",\n \"tokens\",\n \"assets\",\n \"items\",\n \"portfolio\",\n \"balances\",\n ]) {\n const value = (container as Record<string, unknown>)[key];\n if (Array.isArray(value)) {\n return value;\n }\n }\n }\n }\n\n return [];\n}\n\nfunction resolveUsername(payload: unknown): string | undefined {\n if (!payload || typeof payload !== \"object\") {\n return undefined;\n }\n\n const record = payload as Record<string, unknown>;\n return (\n normalizeString(record.username) ??\n normalizeString(record.name) ??\n normalizeString(record.account)\n );\n}\n\nexport function getVisionPortfolioQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\n \"ecency-wallets\",\n \"portfolio\",\n \"v2\",\n username,\n \"only-enabled\",\n ],\n enabled: Boolean(username),\n staleTime: 60000,\n refetchInterval: 120000,\n queryFn: async (): Promise<VisionPortfolioResponse> => {\n if (!username) {\n throw new Error(\"[SDK][Wallets] – username is required\");\n }\n\n if (!CONFIG.privateApiHost) {\n throw new Error(\n \"[SDK][Wallets] – privateApiHost isn't configured for portfolio\"\n );\n }\n\n const endpoint = `${CONFIG.privateApiHost}/wallet-api/portfolio-v2`;\n const response = await fetch(endpoint, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ username, onlyEnabled: true }),\n });\n\n if (!response.ok) {\n throw new Error(\n `[SDK][Wallets] – Vision portfolio request failed(${response.status})`\n );\n }\n\n const payload = (await response.json()) as unknown;\n const tokens = extractTokens(payload)\n .map((item) => parseToken(item))\n .filter((item): item is VisionPortfolioWalletItem => Boolean(item));\n\n if (!tokens.length) {\n throw new Error(\n \"[SDK][Wallets] – Vision portfolio payload contained no tokens\"\n );\n }\n\n return {\n username: resolveUsername(payload) ?? username,\n currency: normalizeString(\n (payload as Record<string, unknown> | undefined)?.currency\n )?.toUpperCase(),\n wallets: tokens,\n };\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { EcencyWalletBasicTokens } from \"../enums\";\nimport {\n FullAccount,\n getAccountFullQueryOptions,\n getQueryClient,\n} from \"@ecency/sdk\";\nimport { getVisionPortfolioQueryOptions } from \"./get-vision-portfolio-query-options\";\n\nconst BASIC_TOKENS: string[] = [\n EcencyWalletBasicTokens.Points,\n EcencyWalletBasicTokens.Hive,\n EcencyWalletBasicTokens.HivePower,\n EcencyWalletBasicTokens.HiveDollar,\n];\n\nexport function getAccountWalletListQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"ecency-wallets\", \"list\", username],\n enabled: !!username,\n queryFn: async () => {\n const portfolioQuery = getVisionPortfolioQueryOptions(username);\n const queryClient = getQueryClient();\n const accountQuery = getAccountFullQueryOptions(username);\n\n let account: FullAccount | undefined;\n\n try {\n account = await queryClient.fetchQuery(accountQuery);\n } catch {\n // Best effort; fall back to defaults if account metadata is not available.\n }\n\n const tokenVisibility = new Map<string, boolean>();\n\n account?.profile?.tokens?.forEach((token) => {\n const symbol = token.symbol?.toUpperCase?.();\n\n if (!symbol) {\n return;\n }\n\n const showValue = (token as any)?.meta?.show;\n\n if (typeof showValue === \"boolean\") {\n tokenVisibility.set(symbol, showValue);\n }\n });\n\n const isTokenVisible = (symbol?: string) => {\n const normalized = symbol?.toUpperCase();\n\n if (!normalized) {\n return false;\n }\n\n if (BASIC_TOKENS.includes(normalized)) {\n return true;\n }\n\n return tokenVisibility.get(normalized) === true;\n };\n\n try {\n const portfolio = await queryClient.fetchQuery(portfolioQuery);\n const tokensFromPortfolio = portfolio.wallets.map(\n (asset) => asset.info.name\n );\n\n if (tokensFromPortfolio.length > 0) {\n const visibleTokens = tokensFromPortfolio\n .map((token) => token?.toUpperCase?.())\n .filter((token): token is string => Boolean(token))\n .filter(isTokenVisible);\n\n if (visibleTokens.length > 0) {\n return Array.from(new Set(visibleTokens));\n }\n }\n } catch {\n // Fallback to legacy behaviour when the portfolio endpoint is not accessible.\n }\n\n if (account?.profile?.tokens instanceof Array) {\n const list = [\n ...BASIC_TOKENS,\n ...account.profile.tokens\n .map((token) => token.symbol)\n .filter(isTokenVisible),\n ];\n\n return Array.from(new Set(list).values());\n }\n\n return [...BASIC_TOKENS];\n },\n });\n}\n","export interface ExternalWalletBalance {\n chain: string;\n unit: string;\n raw?: unknown;\n nodeId?: string;\n /**\n * Balance represented as a BigInt for convenience.\n */\n balanceBigInt: bigint;\n /**\n * Balance returned as a string to preserve precision for UIs that cannot\n * handle bigint values directly.\n */\n balanceString: string;\n}\n\nexport interface PrivateApiBalanceResponse {\n chain: string;\n balance: number | string;\n unit: string;\n raw?: unknown;\n nodeId?: string;\n}\n\nfunction normalizeBalance(balance: number | string): string {\n if (typeof balance === \"number\") {\n if (!Number.isFinite(balance)) {\n throw new Error(\"Private API returned a non-finite numeric balance\");\n }\n\n return Math.trunc(balance).toString();\n }\n\n if (typeof balance === \"string\") {\n const trimmed = balance.trim();\n\n if (trimmed === \"\") {\n throw new Error(\"Private API returned an empty balance string\");\n }\n\n return trimmed;\n }\n\n throw new Error(\"Private API returned balance in an unexpected format\");\n}\n\nexport function parsePrivateApiBalance(\n result: PrivateApiBalanceResponse,\n expectedChain: string\n): ExternalWalletBalance {\n if (!result || typeof result !== \"object\") {\n throw new Error(\"Private API returned an unexpected response\");\n }\n\n const { chain, balance, unit, raw, nodeId } = result;\n\n if (typeof chain !== \"string\" || chain !== expectedChain) {\n throw new Error(\"Private API response chain did not match request\");\n }\n\n if (typeof unit !== \"string\" || unit.length === 0) {\n throw new Error(\"Private API response is missing unit information\");\n }\n\n if (balance === undefined || balance === null) {\n throw new Error(\"Private API response is missing balance information\");\n }\n\n const balanceString = normalizeBalance(balance);\n\n let balanceBigInt: bigint;\n\n try {\n balanceBigInt = BigInt(balanceString);\n } catch (error) {\n throw new Error(\"Private API returned a balance that is not an integer\");\n }\n\n return {\n chain,\n unit,\n raw,\n nodeId:\n typeof nodeId === \"string\" && nodeId.length > 0 ? nodeId : undefined,\n balanceBigInt,\n balanceString,\n };\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getAptAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"apt\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/apt/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"apt\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"apt\")\n .balanceString;\n }\n },\n });\n}\n","import { CONFIG, FullAccount, getAccountFullQueryOptions } from \"@ecency/sdk\";\n\nexport async function getAddressFromAccount(\n username: string,\n tokenName: string\n) {\n await CONFIG.queryClient.prefetchQuery(getAccountFullQueryOptions(username));\n const account = CONFIG.queryClient.getQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey\n );\n const address = account?.profile?.tokens?.find((t) => t.symbol === tokenName)\n ?.meta?.address;\n\n if (!address) {\n throw new Error(\n \"[SDK][Wallets] – cannot fetch APT balance with empty adrress\"\n );\n }\n\n return address;\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getAptAssetBalanceQueryOptions } from \"./get-apt-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getAptAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"apt\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"APT\");\n\n await CONFIG.queryClient.fetchQuery(\n getAptAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getAptAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e8;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"APT\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"APT\").queryKey\n ) ?? 0;\n\n return {\n name: \"APT\",\n title: \"Aptos\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getBnbAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"bnb\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/bnb/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"bnb\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"bnb\")\n .balanceString;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getBnbAssetBalanceQueryOptions } from \"./get-bnb-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getBnbAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"bnb\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"BNB\");\n\n await CONFIG.queryClient.fetchQuery(\n getBnbAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getBnbAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e18;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"BNB\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"BNB\").queryKey\n ) ?? 0;\n\n return {\n name: \"BNB\",\n title: \"Binance coin\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getBtcAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"btc\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/btc/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"btc\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"btc\")\n .balanceString;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getBtcAssetBalanceQueryOptions } from \"./get-btc-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getBtcAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"btc\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"BTC\");\n\n await CONFIG.queryClient.fetchQuery(\n getBtcAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getBtcAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e8;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"BTC\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"BTC\").queryKey\n ) ?? 0;\n\n return {\n name: \"BTC\",\n title: \"Bitcoin\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getEthAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"eth\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/eth/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"eth\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"eth\")\n .balanceString;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getEthAssetBalanceQueryOptions } from \"./get-eth-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getEthAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"eth\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"ETH\");\n\n await CONFIG.queryClient.fetchQuery(\n getEthAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getEthAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e18;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"ETH\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"ETH\").queryKey\n ) ?? 0;\n\n return {\n name: \"ETH\",\n title: \"Ethereum\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getSolAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"sol\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/sol/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"sol\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"sol\")\n .balanceString;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getSolAssetBalanceQueryOptions } from \"./get-sol-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getSolAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"sol\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"SOL\");\n\n await CONFIG.queryClient.fetchQuery(\n getSolAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getSolAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e9;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"SOL\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"SOL\").queryKey\n ) ?? 0;\n\n return {\n name: \"SOL\",\n title: \"Solana\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getTonAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"ton\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/ton/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"ton\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"ton\")\n .balanceString;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getTonAssetBalanceQueryOptions } from \"./get-ton-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getTonAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"ton\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"TON\");\n\n await CONFIG.queryClient.fetchQuery(\n getTonAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getTonAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e9;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"TON\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"TON\").queryKey\n ) ?? 0;\n\n return {\n name: \"TON\",\n title: \"The open network\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getTronAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"tron\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/tron/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"tron\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"tron\")\n .balanceString;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getTronAssetBalanceQueryOptions } from \"./get-tron-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getTronAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"tron\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"TRX\");\n await CONFIG.queryClient.fetchQuery(\n getTronAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getTronAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e6;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"TRX\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"TRX\").queryKey\n ) ?? 0;\n\n return {\n name: \"TRX\",\n title: \"Tron\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import {\n GeneralAssetInfo,\n getHbdAssetGeneralInfoQueryOptions,\n getHiveAssetGeneralInfoQueryOptions,\n getHiveEngineTokenGeneralInfoQueryOptions,\n getHiveEngineTokensBalancesQueryOptions,\n getHivePowerAssetGeneralInfoQueryOptions,\n getLarynxAssetGeneralInfoQueryOptions,\n getLarynxPowerAssetGeneralInfoQueryOptions,\n getPointsAssetGeneralInfoQueryOptions,\n getSpkAssetGeneralInfoQueryOptions,\n} from \"@/modules/assets\";\nimport { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport {\n getAptAssetGeneralInfoQueryOptions,\n getBnbAssetGeneralInfoQueryOptions,\n getBtcAssetGeneralInfoQueryOptions,\n getEthAssetGeneralInfoQueryOptions,\n getSolAssetGeneralInfoQueryOptions,\n getTonAssetGeneralInfoQueryOptions,\n getTronAssetGeneralInfoQueryOptions,\n} from \"@/modules/assets/external\";\nimport { getVisionPortfolioQueryOptions } from \"./get-vision-portfolio-query-options\";\n\ninterface Options {\n refetch: boolean;\n}\n\nexport function getAccountWalletAssetInfoQueryOptions(\n username: string,\n asset: string,\n options: Options = { refetch: false }\n) {\n // Helper function to handle both prefetch and refetch cases\n const queryClient = getQueryClient();\n const fetchQuery = async (queryOptions: any) => {\n if (options.refetch) {\n await queryClient.fetchQuery(queryOptions);\n } else {\n await queryClient.prefetchQuery(queryOptions);\n }\n return queryClient.getQueryData<GeneralAssetInfo>(queryOptions.queryKey);\n };\n const portfolioQuery = getVisionPortfolioQueryOptions(username);\n const getPortfolioAssetInfo = async () => {\n try {\n const portfolio = await queryClient.fetchQuery(portfolioQuery);\n const assetInfo = portfolio.wallets.find(\n (assetItem) => assetItem.info.name === asset.toUpperCase()\n );\n\n return assetInfo?.info;\n } catch {\n return undefined;\n }\n };\n\n return queryOptions({\n queryKey: [\"ecency-wallets\", \"asset-info\", username, asset],\n queryFn: async () => {\n const portfolioAssetInfo = await getPortfolioAssetInfo();\n\n if (portfolioAssetInfo) {\n return portfolioAssetInfo;\n }\n\n if (asset === \"HIVE\") {\n return fetchQuery(getHiveAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"HP\") {\n return fetchQuery(getHivePowerAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"HBD\") {\n return fetchQuery(getHbdAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"SPK\") {\n return fetchQuery(getSpkAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"LARYNX\") {\n return fetchQuery(getLarynxAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"LP\") {\n return fetchQuery(getLarynxPowerAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"POINTS\") {\n return fetchQuery(getPointsAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"APT\") {\n return fetchQuery(getAptAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"BNB\") {\n return fetchQuery(getBnbAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"BTC\") {\n return fetchQuery(getBtcAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"ETH\") {\n return fetchQuery(getEthAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"SOL\") {\n return fetchQuery(getSolAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"TON\") {\n return fetchQuery(getTonAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"TRX\") {\n return fetchQuery(getTronAssetGeneralInfoQueryOptions(username));\n }\n\n const balances = await queryClient.ensureQueryData(\n getHiveEngineTokensBalancesQueryOptions(username)\n );\n\n if (balances.some((balance) => balance.symbol === asset)) {\n return await fetchQuery(\n getHiveEngineTokenGeneralInfoQueryOptions(username, asset)\n );\n } else {\n throw new Error(\n \"[SDK][Wallets] – has requested unrecognized asset info\"\n );\n }\n },\n });\n}\n","import { AssetOperation } from \"@/modules/assets\";\nimport { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { getVisionPortfolioQueryOptions } from \"./get-vision-portfolio-query-options\";\n\nfunction normalizePartKey(value: string) {\n return value.trim().toLowerCase().replace(/[\\s-]+/g, \"_\");\n}\n\nfunction hasNonZeroSavingsBalance(\n parts: { name: string; balance: number }[] | undefined\n) {\n return Boolean(\n parts?.some(\n (part) =>\n normalizePartKey(part.name) === \"savings\" && Number(part.balance) > 0\n )\n );\n}\n\nexport function getTokenOperationsQueryOptions(\n token: string,\n username: string,\n isForOwner = false\n) {\n return queryOptions({\n queryKey: [\"wallets\", \"token-operations\", token, username, isForOwner],\n queryFn: async () => {\n const queryClient = getQueryClient();\n const normalizedToken = token.toUpperCase();\n\n if (!username) {\n return [] as AssetOperation[];\n }\n\n try {\n const portfolio = await queryClient.fetchQuery(\n getVisionPortfolioQueryOptions(username)\n );\n const assetEntry = portfolio.wallets.find(\n (assetItem) => assetItem.info.name === normalizedToken\n );\n\n if (!assetEntry) {\n return [] as AssetOperation[];\n }\n\n const operations = assetEntry.operations ?? [];\n const isHiveOrHbd = [\"HIVE\", \"HBD\"].includes(\n assetEntry.info.name.toUpperCase()\n );\n\n if (\n isHiveOrHbd &&\n !hasNonZeroSavingsBalance(assetEntry.info.parts)\n ) {\n return operations.filter(\n (operation) => operation !== AssetOperation.WithdrawFromSavings\n );\n }\n\n return operations;\n } catch {\n return [];\n }\n },\n });\n}\n","import { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { EcencyWalletCurrency } from \"../enums\";\nimport { EcencyTokenMetadata } from \"../types\";\n\nexport function useWalletsCacheQuery(username?: string) {\n const queryClient = useQueryClient();\n const queryKey = [\"ecency-wallets\", \"wallets\", username] as const;\n\n const getCachedWallets = () =>\n queryClient.getQueryData<Map<EcencyWalletCurrency, EcencyTokenMetadata>>(queryKey);\n\n const createEmptyWalletMap = () =>\n new Map<EcencyWalletCurrency, EcencyTokenMetadata>();\n\n return useQuery<Map<EcencyWalletCurrency, EcencyTokenMetadata>>({\n queryKey,\n enabled: Boolean(username),\n initialData: () => getCachedWallets() ?? createEmptyWalletMap(),\n queryFn: async () => getCachedWallets() ?? createEmptyWalletMap(),\n staleTime: Infinity,\n });\n}\n","import { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { useSeedPhrase } from \"@/modules/wallets/queries\";\nimport { EcencyTokenMetadata } from \"@/modules/wallets/types\";\nimport { delay, getWallet } from \"@/modules/wallets/utils\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\n\nconst PATHS = {\n [EcencyWalletCurrency.BTC]: \"m/44'/0'/0'/0/0\", // Bitcoin (BIP44)\n [EcencyWalletCurrency.ETH]: \"m/44'/60'/0'/0/0\", // Ethereum (BIP44)\n [EcencyWalletCurrency.BNB]: \"m/44'/60'/0'/0/0\", // BNB Smart Chain (BIP44)\n [EcencyWalletCurrency.SOL]: \"m/44'/501'/0'/0'\", // Solana (BIP44)\n [EcencyWalletCurrency.TON]: \"m/44'/607'/0'\", // TON (BIP44)\n [EcencyWalletCurrency.TRON]: \"m/44'/195'/0'/0/0\", // Tron (BIP44)\n [EcencyWalletCurrency.APT]: \"m/44'/637'/0'/0'/0'\", // Aptos (BIP44)\n} as const;\n\n/**\n * Uses for creating wallet logically in the application\n *\n * Keep attention: this mutation doesn't save wallet to somewhere in a server\n */\nexport function useWalletCreate(\n username: string,\n currency: EcencyWalletCurrency\n) {\n const { data: mnemonic } = useSeedPhrase(username);\n const queryClient = useQueryClient();\n\n const createWallet = useMutation({\n mutationKey: [\"ecency-wallets\", \"create-wallet\", username, currency],\n mutationFn: async () => {\n if (!mnemonic) {\n throw new Error(\"[Ecency][Wallets] - No seed to create a wallet\");\n }\n\n const wallet = getWallet(currency);\n const privateKey = await wallet?.getDerivedPrivateKey({\n mnemonic,\n hdPath: PATHS[currency],\n });\n await delay(1000);\n const address = (await wallet?.getNewAddress({\n privateKey,\n })) as { address: string; publicKey: string };\n return {\n privateKey,\n address: address.address,\n publicKey: address.publicKey,\n username,\n currency,\n } as EcencyTokenMetadata;\n },\n onSuccess: (info) => {\n queryClient.setQueryData<Map<EcencyWalletCurrency, EcencyTokenMetadata>>(\n [\"ecency-wallets\", \"wallets\", info.username],\n (data) =>\n new Map(data ? Array.from(data.entries()) : []).set(\n info.currency as EcencyWalletCurrency,\n info\n )\n );\n },\n });\n const importWallet = () => {};\n\n return {\n createWallet,\n importWallet,\n };\n}\n","export * from \"./create-account-with-wallets\";\nexport * from \"./check-wallet-existence\";\nexport * from \"./update-account-with-wallets\";\n","import { CONFIG } from \"@ecency/sdk\";\nimport { useHiveKeysQuery, useWalletsCacheQuery } from \"@/modules/wallets/queries\";\nimport { getBoundFetch } from \"@/modules/wallets/utils\";\nimport { useMutation } from \"@tanstack/react-query\";\n\ninterface Payload {\n currency: string;\n address: string;\n}\n\nexport function useCreateAccountWithWallets(username: string) {\n const { data } = useWalletsCacheQuery(username);\n const { data: hiveKeys } = useHiveKeysQuery(username);\n\n const fetchApi = getBoundFetch();\n\n return useMutation({\n mutationKey: [\"ecency-wallets\", \"create-account-with-wallets\", username],\n mutationFn: ({ currency, address }: Payload) =>\n fetchApi(CONFIG.privateApiHost + \"/private-api/wallets-add\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n username,\n token: currency,\n address,\n meta: {\n ownerPublicKey: hiveKeys?.ownerPubkey,\n activePublicKey: hiveKeys?.activePubkey,\n postingPublicKey: hiveKeys?.postingPubkey,\n memoPublicKey: hiveKeys?.memoPubkey,\n\n ...Array.from(data?.entries() ?? []).reduce(\n (acc, [curr, info]) => ({\n ...acc,\n [curr]: info.address,\n }),\n {}\n ),\n },\n }),\n }),\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { useMutation } from \"@tanstack/react-query\";\n\ninterface Payload {\n address: string;\n currency: EcencyWalletCurrency;\n}\n\nexport function useCheckWalletExistence() {\n return useMutation({\n mutationKey: [\"ecency-wallets\", \"check-wallet-existence\"],\n mutationFn: async ({ address, currency }: Payload) => {\n const response = await fetch(\n CONFIG.privateApiHost + \"/private-api/wallets-exist\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n address,\n token: currency,\n }),\n }\n );\n const data = await response.json();\n return data.length === 0;\n },\n });\n}\n","import { CONFIG, getAccessToken } from \"@ecency/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { getBoundFetch } from \"@/modules/wallets/utils\";\n\ninterface Payload {\n tokens: Record<string, string>;\n hiveKeys: {\n ownerPublicKey: string;\n activePublicKey: string;\n postingPublicKey: string;\n memoPublicKey: string;\n };\n}\n\nexport function useUpdateAccountWithWallets(username: string) {\n const fetchApi = getBoundFetch();\n\n return useMutation({\n mutationKey: [\"ecency-wallets\", \"create-account-with-wallets\", username],\n mutationFn: async ({ tokens, hiveKeys }: Payload) => {\n const entries = Object.entries(tokens).filter(([, address]) => Boolean(address));\n\n if (entries.length === 0) {\n return new Response(null, { status: 204 });\n }\n\n const [primaryToken, primaryAddress] = entries[0] ?? [\"\", \"\"];\n\n return fetchApi(CONFIG.privateApiHost + \"/private-api/wallets-add\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n username,\n code: getAccessToken(username),\n token: primaryToken,\n address: primaryAddress,\n status: 3,\n meta: {\n ...Object.fromEntries(entries),\n ownerPublicKey: hiveKeys.ownerPublicKey,\n activePublicKey: hiveKeys.activePublicKey,\n postingPublicKey: hiveKeys.postingPublicKey,\n memoPublicKey: hiveKeys.memoPublicKey,\n },\n }),\n });\n },\n });\n}\n","import { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { BaseWallet } from \"@okxweb3/coin-base\";\n\n/**\n * These HD paths covers popular wallets like Trust, Meta, Ledger, Trezor\n * Supports also XVerse\n */\nconst HD_PATHS: Record<EcencyWalletCurrency, string[]> = {\n [EcencyWalletCurrency.BTC]: [\"m/84'/0'/0'/0/0\"],\n [EcencyWalletCurrency.ETH]: [\"m/84'/60'/0'/0/0\"], // its not working for Trust, Exodus, todo: check others below\n [EcencyWalletCurrency.BNB]: [\"m/84'/60'/0'/0/0\"],\n [EcencyWalletCurrency.SOL]: [\"m/84'/501'/0'/0/0\"],\n [EcencyWalletCurrency.TRON]: [\"m/44'/195'/0'/0'/0'\"],\n [EcencyWalletCurrency.APT]: [\"m/84'/637'/0'/0/0\"],\n [EcencyWalletCurrency.TON]: [\"m/44'/607'/0'\"],\n};\n\nexport async function getKeysFromSeed(\n mnemonic: string,\n wallet: BaseWallet,\n currency: EcencyWalletCurrency\n) {\n for (const hdPath of HD_PATHS[currency] || []) {\n try {\n const derivedPrivateKey = await wallet.getDerivedPrivateKey({\n mnemonic,\n hdPath,\n });\n\n const derivedPublicKey = await wallet.getNewAddress({\n privateKey: derivedPrivateKey,\n addressType:\n currency === EcencyWalletCurrency.BTC ? \"segwit_native\" : undefined,\n });\n\n return [derivedPrivateKey.toString(), derivedPublicKey.address] as const;\n } catch (error) {\n return [];\n }\n }\n return [];\n}\n","import { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { getKeysFromSeed } from \"@/modules/wallets/functions\";\nimport { EcencyTokenMetadata } from \"@/modules/wallets/types\";\nimport { getWallet } from \"@/modules/wallets/utils\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { EcencyWalletsPrivateApi } from \"./private-api-namespace\";\n\ninterface Payload {\n privateKeyOrSeed: string;\n}\n\n/**\n * This mutation uses for importing an existing wallet, validation and saving logically in application\n *\n * Keep attention: this mutation doesn't save wallet to somewhere in a server\n */\nexport function useImportWallet(\n username: string,\n currency: EcencyWalletCurrency\n) {\n const queryClient = useQueryClient();\n const { mutateAsync: checkWalletExistence } =\n EcencyWalletsPrivateApi.useCheckWalletExistence();\n\n return useMutation({\n mutationKey: [\"ecency-wallets\", \"import-wallet\", username, currency],\n mutationFn: async ({ privateKeyOrSeed }: Payload) => {\n const wallet = getWallet(currency);\n\n if (!wallet) {\n throw new Error(\"Cannot find token for this currency\");\n }\n\n const isSeed = privateKeyOrSeed.split(\" \").length === 12;\n let address;\n let privateKey = privateKeyOrSeed;\n\n if (isSeed) {\n [privateKey, address] = await getKeysFromSeed(\n privateKeyOrSeed,\n wallet,\n currency\n );\n } else {\n address = (\n await wallet.getNewAddress({\n privateKey: privateKeyOrSeed,\n })\n ).address;\n }\n\n if (!address || !privateKeyOrSeed) {\n throw new Error(\n \"Private key/seed phrase isn't matching with public key or token\"\n );\n }\n\n // Check wallet for existence in an Ecency's private API\n const hasChecked = await checkWalletExistence({\n address,\n currency,\n });\n if (!hasChecked) {\n throw new Error(\n \"This wallet has already in use by Hive account. Please, try another one\"\n );\n }\n\n return {\n privateKey,\n address,\n publicKey: \"\",\n };\n },\n onSuccess: ({ privateKey, publicKey, address }) => {\n queryClient.setQueryData<Map<EcencyWalletCurrency, EcencyTokenMetadata>>(\n [\"ecency-wallets\", \"wallets\", username],\n (data) =>\n new Map(data ? Array.from(data.entries()) : []).set(currency, {\n privateKey,\n publicKey,\n address,\n username,\n currency,\n type: \"CHAIN\",\n custom: true,\n })\n );\n },\n });\n}\n","import {\n AccountProfile,\n getAccountFullQueryOptions,\n useAccountUpdate,\n} from \"@ecency/sdk\";\nimport {\n useMutation,\n useQuery,\n useQueryClient,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { EcencyTokenMetadata } from \"../types\";\nimport * as R from \"remeda\";\nimport { getAccountWalletListQueryOptions } from \"../queries\";\nimport { EcencyWalletCurrency } from \"../enums\";\n\nfunction getGroupedChainTokens(\n tokens?: AccountProfile[\"tokens\"],\n defaultShow?: boolean\n) {\n if (!tokens) {\n return {};\n }\n\n return R.pipe(\n tokens,\n R.filter(\n ({ type, symbol }) =>\n type === \"CHAIN\" ||\n Object.values(EcencyWalletCurrency).includes(symbol as any)\n ),\n R.map((item) => {\n const meta = {\n ...(item.meta ?? {}),\n } as Record<string, unknown>;\n\n if (typeof meta.show !== \"boolean\" && typeof defaultShow === \"boolean\") {\n meta.show = defaultShow;\n }\n\n return {\n ...item,\n meta,\n };\n }),\n // Chain tokens are unique by symbol, so indexing by symbol\n // gives a direct lookup map instead of an array-based grouping.\n R.indexBy(\n (item: NonNullable<AccountProfile[\"tokens\"]>[number]) => item.symbol\n )\n );\n}\n\n/**\n * Saving of token(s) metadata to Hive profile\n * It may contain: external wallets(see EcencyWalletCurrency), Hive tokens arrangement\n *\n * Basically, this mutation is a convenient wrapper for update profile operation\n */\ntype SaveWalletInformationOptions = Pick<\n UseMutationOptions<unknown, Error, EcencyTokenMetadata[]>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useSaveWalletInformationToMetadata(\n username: string,\n options?: SaveWalletInformationOptions\n) {\n const queryClient = useQueryClient();\n\n const { data: accountData } = useQuery(getAccountFullQueryOptions(username));\n const { mutateAsync: updateProfile } = useAccountUpdate(username);\n\n return useMutation({\n mutationKey: [\n \"ecency-wallets\",\n \"save-wallet-to-metadata\",\n accountData?.name,\n ],\n mutationFn: async (tokens: EcencyTokenMetadata[]) => {\n if (!accountData) {\n throw new Error(\"[SDK][Wallets] – no account data to save wallets\");\n }\n\n // Chain type tokens couldn't be deleted entirely from the profile list,\n // then visibility should be controlling using meta.show field\n const profileChainTokens = getGroupedChainTokens(\n accountData.profile?.tokens\n );\n\n const payloadTokens =\n (tokens.map(({ currency, type, privateKey, username, ...meta }) => ({\n symbol: currency!,\n type:\n type ??\n (Object.values(EcencyWalletCurrency).includes(currency as any)\n ? \"CHAIN\"\n : undefined),\n meta,\n })) as AccountProfile[\"tokens\"]) ?? [];\n\n const payloadChainTokens = getGroupedChainTokens(payloadTokens, true);\n const payloadNonChainTokens = payloadTokens.filter(\n ({ type, symbol }) =>\n type !== \"CHAIN\" &&\n !Object.values(EcencyWalletCurrency).includes(symbol as any)\n );\n\n const mergedChainTokens = R.pipe(\n profileChainTokens,\n R.mergeDeep(payloadChainTokens),\n R.values()\n );\n\n return updateProfile({\n tokens: [\n ...payloadNonChainTokens,\n ...mergedChainTokens,\n ] as AccountProfile[\"tokens\"],\n });\n },\n onError: options?.onError,\n onSuccess: (response, vars, context) => {\n (\n options?.onSuccess as\n | ((\n data: unknown,\n variables: EcencyTokenMetadata[],\n context: unknown\n ) => unknown)\n | undefined\n )?.(response, vars, context);\n queryClient.invalidateQueries({\n queryKey: getAccountWalletListQueryOptions(username).queryKey,\n });\n },\n });\n}\n","import {\n AssetOperation,\n delegateEngineToken,\n delegateHive,\n getHiveEngineTokensBalancesQueryOptions,\n HiveEngineTokenBalance,\n lockLarynx,\n powerDownHive,\n powerUpHive,\n stakeEngineToken,\n transferEngineToken,\n transferHive,\n transferPoint,\n transferSpk,\n transferToSavingsHive,\n transferFromSavingsHive,\n undelegateEngineToken,\n unstakeEngineToken,\n withdrawVestingRouteHive,\n powerUpLarynx,\n transferLarynx,\n claimInterestHive,\n} from \"@/modules/assets\";\nimport { EcencyAnalytics, getQueryClient } from \"@ecency/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { getAccountWalletAssetInfoQueryOptions } from \"../queries\";\n\nconst operationToFunctionMap: Record<\n string,\n Partial<Record<AssetOperation, any>>\n> = {\n HIVE: {\n [AssetOperation.Transfer]: transferHive,\n [AssetOperation.TransferToSavings]: transferToSavingsHive,\n [AssetOperation.WithdrawFromSavings]: transferFromSavingsHive,\n [AssetOperation.PowerUp]: powerUpHive,\n },\n HBD: {\n [AssetOperation.Transfer]: transferHive,\n [AssetOperation.TransferToSavings]: transferToSavingsHive,\n [AssetOperation.WithdrawFromSavings]: transferFromSavingsHive,\n [AssetOperation.ClaimInterest]: claimInterestHive,\n },\n HP: {\n [AssetOperation.PowerDown]: powerDownHive,\n [AssetOperation.Delegate]: delegateHive,\n [AssetOperation.WithdrawRoutes]: withdrawVestingRouteHive,\n },\n POINTS: {\n [AssetOperation.Transfer]: transferPoint,\n [AssetOperation.Gift]: transferPoint,\n },\n SPK: {\n [AssetOperation.Transfer]: transferSpk,\n },\n LARYNX: {\n [AssetOperation.Transfer]: transferLarynx,\n [AssetOperation.LockLiquidity]: lockLarynx,\n [AssetOperation.PowerUp]: powerUpLarynx,\n },\n};\n\nconst engineOperationToFunctionMap: Partial<Record<AssetOperation, any>> = {\n [AssetOperation.Transfer]: transferEngineToken,\n [AssetOperation.Stake]: stakeEngineToken,\n [AssetOperation.Unstake]: unstakeEngineToken,\n [AssetOperation.Delegate]: delegateEngineToken,\n [AssetOperation.Undelegate]: undelegateEngineToken,\n};\n\nexport function useWalletOperation(\n username: string,\n asset: string,\n operation: AssetOperation\n) {\n const { mutateAsync: recordActivity } = EcencyAnalytics.useRecordActivity(\n username,\n operation as any\n );\n\n return useMutation({\n mutationKey: [\"ecency-wallets\", asset, operation],\n mutationFn: async (payload: Record<string, unknown>) => {\n const operationFn = operationToFunctionMap[asset]?.[operation];\n if (operationFn) {\n return operationFn(payload);\n }\n\n // Handle Hive engine ops\n const balancesListQuery =\n getHiveEngineTokensBalancesQueryOptions(username);\n await getQueryClient().prefetchQuery(balancesListQuery);\n const balances = getQueryClient().getQueryData<HiveEngineTokenBalance[]>(\n balancesListQuery.queryKey\n );\n\n if (balances?.some((b) => b.symbol === asset)) {\n const operationFn = engineOperationToFunctionMap[operation];\n if (operationFn) {\n return operationFn({ ...payload, asset });\n }\n }\n\n throw new Error(\"[SDK][Wallets] – no operation for given asset\");\n },\n onSuccess: () => {\n recordActivity();\n\n const assetsToRefresh = new Set<string>([asset]);\n\n if (asset === \"HIVE\") {\n assetsToRefresh.add(\"HP\");\n assetsToRefresh.add(\"HIVE\");\n }\n if (asset === \"HBD\") {\n assetsToRefresh.add(\"HBD\");\n }\n\n if (asset === \"LARYNX\" && operation === AssetOperation.PowerUp) {\n assetsToRefresh.add(\"LP\");\n assetsToRefresh.add(\"LARYNX\");\n }\n\n assetsToRefresh.forEach((symbol) => {\n const query = getAccountWalletAssetInfoQueryOptions(username, symbol, {\n refetch: true,\n });\n\n // Give some time to blockchain\n setTimeout(\n () =>\n getQueryClient().invalidateQueries({\n queryKey: query.queryKey,\n }),\n 5000\n );\n });\n },\n });\n}\n","import { rememberScryptBsvVersion } from \"./internal/scrypt-guard\";\n\nrememberScryptBsvVersion();\n\nexport * from \"./modules/wallets\";\nexport * from \"./modules/assets\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/internal/scrypt-guard.ts","../../src/modules/wallets/enums/ecency-wallet-currency.ts","../../src/modules/wallets/enums/ecency-wallet-basic-tokens.ts","../../src/modules/wallets/queries/use-get-external-wallet-query.ts","../../src/modules/wallets/queries/use-seed-phrase.ts","../../src/modules/wallets/queries/get-token-price-query-options.ts","../../src/modules/wallets/utils/delay.ts","../../src/modules/wallets/utils/get-wallet.ts","../../src/modules/wallets/utils/mnemonic-to-seed-bip-39.ts","../../src/modules/wallets/utils/derive-hive-bip44-keys.ts","../../src/modules/wallets/utils/derive-hive-master-password-keys.ts","../../src/modules/wallets/utils/detect-hive-key-derivation.ts","../../src/modules/wallets/utils/sign-digest.ts","../../src/modules/wallets/utils/sign-transaction.ts","../../src/modules/wallets/utils/encrypt-memo.ts","../../src/modules/wallets/utils/decrypt-memo.ts","../../src/modules/wallets/utils/sign-external-transaction.ts","../../src/modules/wallets/utils/build-external-transaction.ts","../../src/modules/wallets/utils/get-bound-fetch.ts","../../src/modules/wallets/queries/use-hive-keys-query.ts","../../src/modules/assets/utils/parse-asset.ts","../../src/modules/assets/utils/is-empty-date.ts","../../src/modules/assets/utils/vests-to-hp.ts","../../src/modules/assets/utils/reward-spk.ts","../../src/internal/hive-auth.ts","../../src/modules/assets/utils/hive-auth.ts","../../src/modules/assets/hive/queries/get-hive-asset-general-info-query-options.ts","../../src/modules/assets/hive/queries/get-hive-power-asset-general-info-query-options.ts","../../src/modules/assets/hive/queries/get-hbd-asset-general-info-query-options.ts","../../src/modules/assets/hive/consts/hive-account-operation-groups.ts","../../src/modules/assets/hive/consts/hive-operation-list.ts","../../src/modules/assets/hive/consts/hive-operation-orders.ts","../../src/modules/assets/hive/queries/get-hive-asset-transactions-query-options.ts","../../src/modules/assets/hive/queries/get-hive-power-asset-transactions-query-options.ts","../../src/modules/assets/hive/queries/get-hbd-asset-transactions-query-options.ts","../../src/modules/assets/hive/queries/get-hive-asset-metric-query-options.ts","../../src/modules/assets/hive/queries/get-hive-asset-withdrawal-routes-query-options.ts","../../src/modules/assets/hive/queries/get-hive-power-delegates-query-options.ts","../../src/modules/assets/hive/queries/get-hive-power-delegatings-query-options.ts","../../src/modules/assets/hive/mutations/transfer.ts","../../src/modules/assets/hive/mutations/transfer-to-savings.ts","../../src/modules/assets/hive/mutations/transfer-from-savings.ts","../../src/modules/assets/hive/mutations/power-up.ts","../../src/modules/assets/hive/mutations/delegate.ts","../../src/modules/assets/hive/mutations/power-down.ts","../../src/modules/assets/hive/mutations/withdraw-route.ts","../../src/modules/assets/hive/mutations/claim-rewards.ts","../../src/modules/assets/hive/mutations/claim-interest.ts","../../src/modules/assets/types/asset-operation.ts","../../src/modules/assets/spk/mutations/transfer.ts","../../src/modules/assets/spk/mutations/lock.ts","../../src/modules/assets/spk/mutations/power-up.ts","../../src/modules/assets/spk/mutations/transfer-larynx.ts","../../src/modules/assets/spk/queries/get-spk-markets-query-options.ts","../../src/modules/assets/spk/queries/get-spk-wallet-query-options.ts","../../src/modules/assets/spk/queries/get-larynx-asset-general-info-query-options.ts","../../src/modules/assets/spk/queries/get-spk-asset-general-info-query-options.ts","../../src/modules/assets/spk/queries/get-larynx-power-asset-general-info-query-options.ts","../../src/modules/assets/hive-engine/queries/get-hive-engine-tokens-metadata-query-options.ts","../../src/modules/assets/hive-engine/queries/get-hive-engine-tokens-balances-query-options.ts","../../src/modules/assets/hive-engine/queries/get-hive-engine-tokens-market-query-options.ts","../../src/modules/assets/hive-engine/queries/get-hive-engine-token-general-info-query-options.ts","../../src/modules/assets/hive-engine/queries/get-hive-engine-token-transactions-query-options.ts","../../src/modules/assets/hive-engine/queries/get-hive-engine-token-metrics-query-options.ts","../../src/modules/assets/hive-engine/mutations/delegate.ts","../../src/modules/assets/hive-engine/mutations/undelegate.ts","../../src/modules/assets/hive-engine/mutations/stake.ts","../../src/modules/assets/hive-engine/mutations/unstake.ts","../../src/modules/assets/hive-engine/mutations/transfer.ts","../../src/modules/assets/points/queries/get-points-query-options.ts","../../src/modules/assets/points/queries/get-points-asset-general-info-query-options.ts","../../src/modules/assets/points/queries/get-points-asset-transactions-query-options.ts","../../src/modules/assets/points/mutations/claim-points.ts","../../src/modules/assets/points/mutations/gift.ts","../../src/modules/assets/points/types/point-transaction-type.ts","../../src/modules/wallets/queries/get-all-tokens-list-query-options.ts","../../src/modules/wallets/queries/get-vision-portfolio-query-options.ts","../../src/modules/wallets/queries/use-get-account-wallet-list-query.ts","../../src/modules/assets/external/common/parse-private-api-balance.ts","../../src/modules/assets/external/apt/get-apt-asset-balance-query-options.ts","../../src/modules/assets/external/common/index.ts","../../src/modules/assets/external/apt/get-apt-asset-general-info-query-options.ts","../../src/modules/assets/external/bnb/get-bnb-asset-balance-query-options.ts","../../src/modules/assets/external/bnb/get-bnb-asset-general-info-query-options.ts","../../src/modules/assets/external/btc/get-btc-asset-balance-query-options.ts","../../src/modules/assets/external/btc/get-btc-asset-general-info-query-options.ts","../../src/modules/assets/external/eth/get-eth-asset-balance-query-options.ts","../../src/modules/assets/external/eth/get-eth-asset-general-info-query-options.ts","../../src/modules/assets/external/sol/get-sol-asset-balance-query-options.ts","../../src/modules/assets/external/sol/get-sol-asset-general-info-query-options.ts","../../src/modules/assets/external/ton/get-ton-asset-balance-query-options.ts","../../src/modules/assets/external/ton/get-ton-asset-general-info-query-options.ts","../../src/modules/assets/external/tron/get-tron-asset-balance-query-options.ts","../../src/modules/assets/external/tron/get-tron-asset-general-info-query-options.ts","../../src/modules/wallets/queries/get-account-wallet-asset-info-query-options.ts","../../src/modules/wallets/queries/get-tokens-operations-query-options.ts","../../src/modules/wallets/queries/use-wallets-cache-query.ts","../../src/modules/wallets/mutations/use-wallet-create.ts","../../src/modules/wallets/mutations/private-api/index.ts","../../src/modules/wallets/mutations/private-api/create-account-with-wallets.ts","../../src/modules/wallets/mutations/private-api/check-wallet-existence.ts","../../src/modules/wallets/mutations/private-api/update-account-with-wallets.ts","../../src/modules/wallets/functions/get-keys-from-seed.ts","../../src/modules/wallets/mutations/use-import-wallet.ts","../../src/modules/wallets/mutations/save-wallet-information-to-metadata.ts","../../src/modules/wallets/mutations/wallet-operation.ts","../../src/index.ts"],"names":["EcencyWalletCurrency","EcencyWalletBasicTokens","useQuery","CONFIG","bip39","LRUCache","queryOptions","BtcWallet","EthWallet","TrxWallet","TonWallet","SolWallet","AptosWallet","mnemonicToSeedSync","bip32","PrivateKey","getAccountFullQueryOptions","cryptoUtils","memo","Memo","buildBtcPsbt","Symbol","NaiMap","t","getQueryClient","getDynamicPropsQueryOptions","utils","operationOrders","infiniteQueryOptions","dayjs","hs","Keychain","type","params","useQueryClient","useBroadcastMutation","AssetOperation","format","EcencyAnalytics","useMutation","getAccessToken","PointTransactionType","values","normalizeBalance","parsePrivateApiBalance","options","normalizePartKey","R","useAccountUpdate","username","operationFn"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * The scrypt bsv package writes the version string to a global symbol and\n * warns when that symbol is already populated. In environments that reload\n * modules (Next.js dev server, Storybook, etc.) the stale value triggers\n * repeated warnings. Clearing the cached handle before our modules touch bsv\n * keeps the console quiet without requiring downstream wrappers.\n */\nconst globalLike = globalThis as Record<string, unknown> & {\n _scrypt_bsv?: unknown;\n __scryptBsvPreviousVersion?: unknown;\n};\n\nif (typeof globalLike._scrypt_bsv !== \"undefined\") {\n if (typeof globalLike._scrypt_bsv === \"string\") {\n globalLike.__scryptBsvPreviousVersion = globalLike._scrypt_bsv;\n }\n\n try {\n delete globalLike._scrypt_bsv;\n } catch {\n globalLike._scrypt_bsv = undefined;\n }\n}\n\nexport function rememberScryptBsvVersion() {\n if (typeof globalLike._scrypt_bsv === \"string\") {\n globalLike.__scryptBsvPreviousVersion = globalLike._scrypt_bsv;\n }\n}\n","export enum EcencyWalletCurrency {\n BTC = \"BTC\",\n ETH = \"ETH\",\n BNB = \"BNB\",\n APT = \"APT\",\n TON = \"TON\",\n TRON = \"TRX\",\n SOL = \"SOL\",\n // DOGE = \"doge\",\n // LTC = \"litecoin\",\n // ADA = \"cardano\",\n // STX = \"stacks\",\n // NEAR = \"near\",\n // EOS = \"eos\",\n // SUI = \"sui\",\n}\n","export enum EcencyWalletBasicTokens {\n Points = \"POINTS\",\n HivePower = \"HP\",\n Hive = \"HIVE\",\n HiveDollar = \"HBD\"\n}\n","import { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { useQuery } from \"@tanstack/react-query\";\n\nconst currencyChainMap: Record<EcencyWalletCurrency, string> = {\n [EcencyWalletCurrency.BTC]: \"btc\",\n [EcencyWalletCurrency.ETH]: \"eth\",\n [EcencyWalletCurrency.BNB]: \"bnb\",\n [EcencyWalletCurrency.SOL]: \"sol\",\n [EcencyWalletCurrency.TRON]: \"tron\",\n [EcencyWalletCurrency.TON]: \"ton\",\n [EcencyWalletCurrency.APT]: \"apt\",\n};\n\ninterface PrivateApiBalanceResponse {\n chain: string;\n balance: number | string;\n unit: string;\n raw?: unknown;\n nodeId?: string;\n}\n\nexport interface ExternalWalletBalance {\n chain: string;\n unit: string;\n raw?: unknown;\n nodeId?: string;\n /**\n * Balance represented as a BigInt for convenience.\n */\n balanceBigInt: bigint;\n /**\n * Balance returned as a string to preserve precision for UIs that cannot\n * handle bigint values directly.\n */\n balanceString: string;\n}\n\nfunction normalizeBalance(balance: number | string): string {\n if (typeof balance === \"number\") {\n if (!Number.isFinite(balance)) {\n throw new Error(\"Private API returned a non-finite numeric balance\");\n }\n\n return Math.trunc(balance).toString();\n }\n\n if (typeof balance === \"string\") {\n const trimmed = balance.trim();\n\n if (trimmed === \"\") {\n throw new Error(\"Private API returned an empty balance string\");\n }\n\n return trimmed;\n }\n\n throw new Error(\"Private API returned balance in an unexpected format\");\n}\n\nfunction parsePrivateApiBalance(\n result: unknown,\n expectedChain: string\n): ExternalWalletBalance {\n if (!result || typeof result !== \"object\") {\n throw new Error(\"Private API returned an unexpected response\");\n }\n\n const { chain, balance, unit, raw, nodeId } =\n result as PrivateApiBalanceResponse;\n\n if (typeof chain !== \"string\" || chain !== expectedChain) {\n throw new Error(\"Private API response chain did not match request\");\n }\n\n if (typeof unit !== \"string\" || unit.length === 0) {\n throw new Error(\"Private API response is missing unit information\");\n }\n\n if (balance === undefined || balance === null) {\n throw new Error(\"Private API response is missing balance information\");\n }\n\n const balanceString = normalizeBalance(balance);\n\n let balanceBigInt: bigint;\n\n try {\n balanceBigInt = BigInt(balanceString);\n } catch (error) {\n throw new Error(\"Private API returned a balance that is not an integer\");\n }\n\n return {\n chain,\n unit,\n raw,\n nodeId:\n typeof nodeId === \"string\" && nodeId.length > 0 ? nodeId : undefined,\n balanceBigInt,\n balanceString,\n };\n}\n\nexport function useGetExternalWalletBalanceQuery(\n currency: EcencyWalletCurrency,\n address: string\n) {\n return useQuery<ExternalWalletBalance>({\n queryKey: [\"ecency-wallets\", \"external-wallet-balance\", currency, address],\n queryFn: async () => {\n const chain = currencyChainMap[currency];\n\n if (!chain) {\n throw new Error(`Unsupported currency ${currency}`);\n }\n\n if (!CONFIG.privateApiHost) {\n throw new Error(\"Private API host is not configured\");\n }\n\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/${chain}/${encodeURIComponent(\n address\n )}`;\n\n let primaryResponse: Response | undefined;\n let primaryError: unknown;\n\n try {\n primaryResponse = await fetch(baseUrl);\n } catch (error) {\n primaryError = error;\n }\n\n let response = primaryResponse;\n\n if (!response || !response.ok) {\n const fallbackUrl = `${baseUrl}?provider=chainz`;\n let fallbackError: unknown;\n\n try {\n const fallbackResponse = await fetch(fallbackUrl);\n\n if (fallbackResponse.ok) {\n response = fallbackResponse;\n } else {\n fallbackError = new Error(\n `Fallback provider responded with status ${fallbackResponse.status}`\n );\n }\n } catch (error) {\n fallbackError = error;\n }\n\n if (!response || !response.ok) {\n const failureReasons: string[] = [];\n\n if (primaryError) {\n const message =\n primaryError instanceof Error\n ? primaryError.message\n : String(primaryError);\n failureReasons.push(`primary provider failed: ${message}`);\n } else if (primaryResponse && !primaryResponse.ok) {\n failureReasons.push(\n `primary provider status ${primaryResponse.status}`\n );\n }\n\n if (fallbackError) {\n const message =\n fallbackError instanceof Error\n ? fallbackError.message\n : String(fallbackError);\n failureReasons.push(`fallback provider failed: ${message}`);\n }\n\n if (failureReasons.length === 0) {\n failureReasons.push(\"unknown error\");\n }\n\n throw new Error(\n `Private API request failed (${failureReasons.join(\", \")})`\n );\n }\n }\n\n const result = (await response.json()) as unknown;\n\n return parsePrivateApiBalance(result, chain);\n },\n });\n}\n","import { useQuery } from \"@tanstack/react-query\";\nimport bip39 from \"bip39\";\n\nexport function useSeedPhrase(username: string) {\n return useQuery({\n queryKey: [\"ecency-wallets\", \"seed\", username],\n queryFn: async () => bip39.generateMnemonic(128),\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { LRUCache } from \"lru-cache\";\n\nconst options = {\n max: 500,\n // how long to live in ms\n ttl: 1000 * 60 * 5,\n // return stale items before removing from cache?\n allowStale: false,\n updateAgeOnGet: false,\n updateAgeOnHas: false,\n};\n\nconst cache = new LRUCache(options);\nconst undefinedValue = Symbol(\"undefined\");\n\nconst cacheSet = (key: string, value: any) =>\n cache.set(key, value === undefined ? undefinedValue : value);\n\nconst cacheGet = (key: string) => {\n const v = cache.get(key);\n return v === undefinedValue ? undefined : v;\n};\n\ninterface MarketDataQuote {\n last_updated: string;\n percent_change: number;\n price: number;\n}\n\ninterface MarketDataLatestResponse {\n [token: string]: {\n quotes?: {\n usd?: MarketDataQuote;\n btc?: MarketDataQuote;\n [fiat: string]: MarketDataQuote | undefined;\n };\n };\n}\n\nconst CURRENCY_TO_TOKEN_MAP: Record<string, string> = {\n [EcencyWalletCurrency.BTC]: \"btc\",\n [EcencyWalletCurrency.ETH]: \"eth\",\n [EcencyWalletCurrency.SOL]: \"sol\",\n [EcencyWalletCurrency.TON]: \"ton\",\n [EcencyWalletCurrency.TRON]: \"trx\",\n [EcencyWalletCurrency.APT]: \"apt\",\n [EcencyWalletCurrency.BNB]: \"bnb\",\n HBD: \"hbd\",\n HIVE: \"hive\",\n};\n\nconst MARKET_DATA_CACHE_KEY = \"market-data/latest\";\n\nconst normalizeCurrencyToToken = (currency: string) => {\n const upperCased = currency.toUpperCase();\n return CURRENCY_TO_TOKEN_MAP[upperCased] ?? currency.toLowerCase();\n};\n\nexport function getTokenPriceQueryOptions(currency?: string) {\n return queryOptions({\n queryKey: [\"ecency-wallets\", \"market-data\", currency],\n queryFn: async () => {\n if (!currency) {\n throw new Error(\n \"[SDK][Wallets][MarketData] – currency wasn`t provided\"\n );\n }\n\n if (!CONFIG.privateApiHost) {\n throw new Error(\n \"[SDK][Wallets][MarketData] – privateApiHost isn`t configured\"\n );\n }\n\n const token = normalizeCurrencyToToken(currency);\n\n let marketData = cacheGet(MARKET_DATA_CACHE_KEY) as\n | MarketDataLatestResponse\n | undefined;\n\n if (!marketData) {\n const httpResponse = await fetch(\n `${CONFIG.privateApiHost}/private-api/market-data/latest`,\n {\n method: \"GET\",\n }\n );\n\n if (!httpResponse.ok) {\n throw new Error(\n `[SDK][Wallets][MarketData] – failed to fetch latest market data (${httpResponse.status})`\n );\n }\n\n const data = (await httpResponse.json()) as MarketDataLatestResponse;\n cacheSet(MARKET_DATA_CACHE_KEY, data);\n marketData = data;\n }\n\n const tokenData = marketData[token];\n\n if (!tokenData) {\n throw new Error(\n `[SDK][Wallets][MarketData] – missing market data for token: ${token}`\n );\n }\n\n const usdQuote = tokenData.quotes?.usd;\n\n if (!usdQuote) {\n throw new Error(\n `[SDK][Wallets][MarketData] – missing USD quote for token: ${token}`\n );\n }\n\n return Number(usdQuote.price);\n },\n enabled: !!currency,\n });\n}\n","export function delay(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import { BtcWallet } from \"@okxweb3/coin-bitcoin\";\nimport { EthWallet } from \"@okxweb3/coin-ethereum\";\nimport { TrxWallet } from \"@okxweb3/coin-tron\";\nimport { TonWallet } from \"@okxweb3/coin-ton\";\nimport { SolWallet } from \"@okxweb3/coin-solana\";\nimport { AptosWallet } from \"@okxweb3/coin-aptos\";\nimport { BaseWallet } from \"@okxweb3/coin-base\";\nimport { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\n\nexport function getWallet(\n currency: EcencyWalletCurrency\n): BaseWallet | undefined {\n switch (currency) {\n case EcencyWalletCurrency.BTC:\n return new BtcWallet();\n case EcencyWalletCurrency.ETH:\n case EcencyWalletCurrency.BNB:\n return new EthWallet();\n\n case EcencyWalletCurrency.TRON:\n return new TrxWallet();\n\n case EcencyWalletCurrency.TON:\n return new TonWallet();\n\n case EcencyWalletCurrency.SOL:\n return new SolWallet();\n\n case EcencyWalletCurrency.APT:\n return new AptosWallet();\n\n default:\n return undefined;\n }\n}\n","import { mnemonicToSeedSync } from \"bip39\";\n\nexport function mnemonicToSeedBip39(value: string) {\n return mnemonicToSeedSync(value).toString(\"hex\");\n}\n","import { mnemonicToSeedSync } from \"bip39\";\nimport { bip32 } from \"@okxweb3/crypto-lib\";\nimport { PrivateKey } from \"@hiveio/dhive\";\n\nexport type HiveRole = \"owner\" | \"active\" | \"posting\" | \"memo\";\n\nconst ROLE_INDEX: Record<HiveRole, number> = {\n owner: 0,\n active: 1,\n posting: 2,\n memo: 3,\n};\n\nexport function deriveHiveKey(\n mnemonic: string,\n role: HiveRole,\n accountIndex = 0\n) {\n const seed = mnemonicToSeedSync(mnemonic);\n const master = bip32.fromSeed(seed);\n const path = `m/44'/3054'/${accountIndex}'/0'/${ROLE_INDEX[role]}'`;\n const child = master.derivePath(path);\n if (!child.privateKey) {\n throw new Error(\"[Ecency][Wallets] - hive key derivation failed\");\n }\n const pk = PrivateKey.from(child.privateKey);\n return {\n privateKey: pk.toString(),\n publicKey: pk.createPublic().toString(),\n } as const;\n}\n\nexport function deriveHiveKeys(\n mnemonic: string,\n accountIndex = 0\n) {\n const owner = deriveHiveKey(mnemonic, \"owner\", accountIndex);\n const active = deriveHiveKey(mnemonic, \"active\", accountIndex);\n const posting = deriveHiveKey(mnemonic, \"posting\", accountIndex);\n const memo = deriveHiveKey(mnemonic, \"memo\", accountIndex);\n return {\n owner: owner.privateKey,\n active: active.privateKey,\n posting: posting.privateKey,\n memo: memo.privateKey,\n ownerPubkey: owner.publicKey,\n activePubkey: active.publicKey,\n postingPubkey: posting.publicKey,\n memoPubkey: memo.publicKey,\n } as const;\n}\n\n","import { PrivateKey } from \"@hiveio/dhive\";\nimport type { HiveRole } from \"./derive-hive-bip44-keys\";\n\nexport function deriveHiveMasterPasswordKey(\n username: string,\n masterPassword: string,\n role: HiveRole\n) {\n const pk = PrivateKey.fromLogin(username, masterPassword, role);\n return {\n privateKey: pk.toString(),\n publicKey: pk.createPublic().toString(),\n } as const;\n}\n\nexport function deriveHiveMasterPasswordKeys(\n username: string,\n masterPassword: string\n) {\n const owner = deriveHiveMasterPasswordKey(username, masterPassword, \"owner\");\n const active = deriveHiveMasterPasswordKey(username, masterPassword, \"active\");\n const posting = deriveHiveMasterPasswordKey(\n username,\n masterPassword,\n \"posting\"\n );\n const memo = deriveHiveMasterPasswordKey(username, masterPassword, \"memo\");\n return {\n owner: owner.privateKey,\n active: active.privateKey,\n posting: posting.privateKey,\n memo: memo.privateKey,\n ownerPubkey: owner.publicKey,\n activePubkey: active.publicKey,\n postingPubkey: posting.publicKey,\n memoPubkey: memo.publicKey,\n } as const;\n}\n","import { CONFIG, FullAccount, getAccountFullQueryOptions } from \"@ecency/sdk\";\nimport { PrivateKey } from \"@hiveio/dhive\";\nimport { deriveHiveKeys } from \"./derive-hive-bip44-keys\";\n\nexport type HiveKeyDerivation = \"bip44\" | \"master-password\" | \"unknown\";\n\nexport async function detectHiveKeyDerivation(\n username: string,\n seed: string,\n type: \"active\" | \"owner\" = \"active\"\n): Promise<HiveKeyDerivation> {\n const uname = username.trim().toLowerCase();\n\n // ensure we actually have data\n const account = (await CONFIG.queryClient.fetchQuery(\n getAccountFullQueryOptions(uname)\n )) as FullAccount;\n\n // pick the right authority based on `type`\n const auth = account[type];\n\n // --- BIP44 check (match selected authority) ---\n const bip44 = deriveHiveKeys(seed);\n const bip44Pub =\n type === \"owner\" ? bip44.ownerPubkey : bip44.activePubkey;\n\n const matchBip44 = auth.key_auths.some(([pub]) => String(pub) === bip44Pub);\n if (matchBip44) return \"bip44\";\n\n // --- Master password (legacy) check (match selected authority) ---\n const legacyPub = PrivateKey.fromLogin(uname, seed, type)\n .createPublic()\n .toString();\n\n const matchLegacy = auth.key_auths.some(([pub]) => String(pub) === legacyPub);\n if (matchLegacy) return \"master-password\";\n\n return \"unknown\";\n}\n","import { PrivateKey } from \"@hiveio/dhive\";\n\n/**\n * Sign a digest using the provided private key.\n * @param digest Digest as a Buffer or hex string.\n * @param privateKey Private key in WIF format.\n * @returns Hex encoded signature string.\n */\nexport function signDigest(digest: Buffer | string, privateKey: string): string {\n const key = PrivateKey.fromString(privateKey);\n const buf = typeof digest === \"string\" ? Buffer.from(digest, \"hex\") : digest;\n return key.sign(buf).toString();\n}\n\n","import { PrivateKey, Client } from \"@hiveio/dhive\";\nimport type {\n Transaction,\n SignedTransaction,\n TransactionConfirmation,\n} from \"@hiveio/dhive/lib/chain/transaction\";\nimport { cryptoUtils } from \"@hiveio/dhive/lib/crypto\";\n\n/**\n * Sign a transaction with the given private key.\n * Optionally a custom chain id can be provided.\n *\n * @param tx Transaction to sign.\n * @param privateKey Private key in WIF format.\n * @param chainId Optional chain id as a hex string.\n * @returns Signed transaction including the signature.\n */\nexport function signTx(\n tx: Transaction,\n privateKey: string,\n chainId?: string\n): SignedTransaction {\n const key = PrivateKey.fromString(privateKey);\n const chain = chainId ? Buffer.from(chainId, \"hex\") : undefined;\n return cryptoUtils.signTransaction(tx, key, chain);\n}\n\n/**\n * Sign a transaction and broadcast it to the network.\n * Optionally a custom chain id can be provided.\n *\n * @param client Hive client instance used for broadcasting.\n * @param tx Transaction to sign.\n * @param privateKey Private key in WIF format.\n * @param chainId Optional chain id as a hex string.\n * @returns Broadcast confirmation.\n */\nexport async function signTxAndBroadcast(\n client: Client,\n tx: Transaction,\n privateKey: string,\n chainId?: string\n): Promise<TransactionConfirmation> {\n const signed = signTx(tx, privateKey, chainId);\n return client.broadcast.send(signed);\n}\n\n","import { PrivateKey } from \"@hiveio/dhive\";\nimport type { Client } from \"@hiveio/dhive\";\nimport { Memo } from \"@hiveio/dhive/lib/memo\";\n\n/**\n * Encrypt a memo using explicit keys.\n * @param privateKey Sender's private memo key in WIF format.\n * @param publicKey Recipient's public memo key.\n * @param memo Memo text to encrypt.\n */\nexport function encryptMemoWithKeys(\n privateKey: string,\n publicKey: string,\n memo: string\n): string {\n return Memo.encode(PrivateKey.fromString(privateKey), publicKey, memo);\n}\n\n/**\n * Encrypt a memo by looking up the recipient's memo key from the blockchain.\n * @param client Hive client instance used to fetch account information.\n * @param fromPrivateKey Sender's private memo key.\n * @param toAccount Recipient account name.\n * @param memo Memo text to encrypt.\n */\nexport async function encryptMemoWithAccounts(\n client: Client,\n fromPrivateKey: string,\n toAccount: string,\n memo: string\n): Promise<string> {\n const [account] = await client.database.getAccounts([toAccount]);\n if (!account) {\n throw new Error(\"Account not found\");\n }\n return Memo.encode(PrivateKey.fromString(fromPrivateKey), account.memo_key, memo);\n}\n\n","import { PrivateKey } from \"@hiveio/dhive\";\nimport { Memo } from \"@hiveio/dhive/lib/memo\";\n\n/**\n * Decrypt an encrypted memo using the recipient's private key.\n * @param privateKey Private memo key in WIF format.\n * @param memo Encrypted memo string.\n */\nexport function decryptMemoWithKeys(privateKey: string, memo: string): string {\n return Memo.decode(PrivateKey.fromString(privateKey), memo);\n}\n\n/**\n * Decrypt a memo using account information.\n * This is an alias of {@link decryptMemoWithKeys} and provided for\n * API symmetry with {@link encryptMemoWithAccounts}.\n */\nexport const decryptMemoWithAccounts = decryptMemoWithKeys;\n\n","import { CONFIG } from \"@ecency/sdk\";\nimport { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { getWallet } from \"./get-wallet\";\nimport type { SignTxParams } from \"@okxweb3/coin-base\";\n\n/**\n * Sign a transaction for an external chain supported by okxweb3 wallets.\n *\n * @param currency Chain identifier.\n * @param params Signing parameters accepted by okxweb3 wallets.\n */\nexport async function signExternalTx(\n currency: EcencyWalletCurrency,\n params: SignTxParams\n) {\n const wallet = getWallet(currency);\n if (!wallet) throw new Error(\"Unsupported currency\");\n return wallet.signTransaction(params as any);\n}\n\n/**\n * Sign and broadcast a transaction for an external chain. The transaction is\n * signed locally and then sent to a public RPC endpoint for broadcasting.\n *\n * @param currency Chain identifier.\n * @param params Signing parameters accepted by okxweb3 wallets.\n * @returns RPC response or broadcasted transaction hash.\n */\nexport async function signExternalTxAndBroadcast(\n currency: EcencyWalletCurrency,\n params: SignTxParams\n) {\n const signed = await signExternalTx(currency, params);\n\n switch (currency) {\n case EcencyWalletCurrency.BTC: {\n const res = await fetch(\"https://mempool.space/api/tx\", {\n method: \"POST\",\n body: signed as any,\n });\n if (!res.ok) throw new Error(\"Broadcast failed\");\n return res.text();\n }\n case EcencyWalletCurrency.ETH:\n case EcencyWalletCurrency.BNB: {\n const rpcUrl =\n currency === EcencyWalletCurrency.ETH\n ? \"https://rpc.ankr.com/eth\"\n : \"https://bsc-dataseed.binance.org\";\n const res = await fetch(rpcUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: 1,\n method: \"eth_sendRawTransaction\",\n params: [signed],\n }),\n });\n const json = await res.json();\n if (json.error) throw new Error(json.error.message);\n return json.result;\n }\n case EcencyWalletCurrency.SOL: {\n const res = await fetch(\n `https://rpc.helius.xyz/?api-key=${CONFIG.heliusApiKey}`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: 1,\n method: \"sendTransaction\",\n params: [signed],\n }),\n }\n );\n const json = await res.json();\n if (json.error) throw new Error(json.error.message);\n return json.result;\n }\n case EcencyWalletCurrency.TRON: {\n const res = await fetch(\n \"https://api.trongrid.io/wallet/broadcasttransaction\",\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: typeof signed === \"string\" ? signed : JSON.stringify(signed),\n }\n );\n const json = await res.json();\n if (json.result === false) throw new Error(json.message);\n return json.txid || json.result;\n }\n case EcencyWalletCurrency.TON: {\n const res = await fetch(\"https://toncenter.com/api/v2/sendTransaction\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ boc: signed }),\n });\n const json = await res.json();\n if (json.error) throw new Error(json.error.message || json.result);\n return json.result;\n }\n case EcencyWalletCurrency.APT: {\n const res = await fetch(\n \"https://fullnode.mainnet.aptoslabs.com/v1/transactions\",\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: typeof signed === \"string\" ? signed : JSON.stringify(signed),\n }\n );\n if (!res.ok) throw new Error(\"Broadcast failed\");\n return res.json();\n }\n default:\n throw new Error(\"Unsupported currency\");\n }\n}\n\n","import { buildPsbt as buildBtcPsbt } from \"@okxweb3/coin-bitcoin\";\nimport type { utxoTx } from \"@okxweb3/coin-bitcoin/dist/type\";\nimport type { Network as BtcNetwork } from \"@okxweb3/coin-bitcoin/dist/bitcoinjs-lib\";\nimport type { EthTxParams } from \"@okxweb3/coin-ethereum/dist/EthWallet\";\nimport type { SolSignParam } from \"@okxweb3/coin-solana/dist/SolWallet\";\nimport type { TrxSignParam } from \"@okxweb3/coin-tron/dist/TrxWallet\";\nimport type { TxData as TonTxData } from \"@okxweb3/coin-ton/dist/api/types\";\nimport type { AptosParam } from \"@okxweb3/coin-aptos/dist/AptosWallet\";\nimport { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\n\n/**\n * Union type covering all chain-specific build parameters.\n */\nexport type ExternalTxParams =\n | utxoTx\n | EthTxParams\n | SolSignParam\n | TrxSignParam\n | TonTxData\n | AptosParam;\n\n/**\n * Build a Bitcoin PSBT from UTXO inputs and desired outputs.\n *\n * @param tx Transaction description accepted by @okxweb3/coin-bitcoin.\n * @returns Hex encoded PSBT ready for signing.\n */\nexport function buildPsbt(\n tx: utxoTx,\n network?: BtcNetwork,\n maximumFeeRate?: number\n) {\n return buildBtcPsbt(tx, network, maximumFeeRate);\n}\n\n/**\n * Helper returning raw Ethereum transaction data ready for signing.\n *\n * The returned object can be passed directly to signExternalTx.\n */\nexport function buildEthTx(data: EthTxParams): EthTxParams {\n return data;\n}\n\n/**\n * Helper returning Solana transaction params used by signExternalTx.\n */\nexport function buildSolTx(data: SolSignParam): SolSignParam {\n return data;\n}\n\n/**\n * Helper returning Tron transaction params used by signExternalTx.\n */\nexport function buildTronTx(data: TrxSignParam): TrxSignParam {\n return data;\n}\n\n/**\n * Helper returning TON transaction params used by signExternalTx.\n */\nexport function buildTonTx(data: TonTxData): TonTxData {\n return data;\n}\n\n/**\n * Helper returning Aptos transaction params used by signExternalTx.\n */\nexport function buildAptTx(data: AptosParam): AptosParam {\n return data;\n}\n\n/**\n * Build a transaction for an external chain supported by okxweb3 wallets.\n *\n * @param currency Chain identifier.\n * @param tx Chain specific transaction description.\n */\nexport function buildExternalTx(\n currency: EcencyWalletCurrency,\n tx: ExternalTxParams\n) {\n switch (currency) {\n case EcencyWalletCurrency.BTC:\n return buildPsbt(tx as utxoTx);\n case EcencyWalletCurrency.ETH:\n case EcencyWalletCurrency.BNB:\n return buildEthTx(tx as EthTxParams);\n case EcencyWalletCurrency.SOL:\n return buildSolTx(tx as SolSignParam);\n case EcencyWalletCurrency.TRON:\n return buildTronTx(tx as TrxSignParam);\n case EcencyWalletCurrency.TON:\n return buildTonTx(tx as TonTxData);\n case EcencyWalletCurrency.APT:\n return buildAptTx(tx as AptosParam);\n default:\n throw new Error(\"Unsupported currency\");\n }\n}\n","let cachedFetch: typeof globalThis.fetch | undefined;\n\nexport function getBoundFetch() {\n if (!cachedFetch) {\n if (typeof globalThis.fetch !== \"function\") {\n throw new Error(\"[Ecency][Wallets] - global fetch is not available\");\n }\n\n cachedFetch = globalThis.fetch.bind(globalThis);\n }\n\n return cachedFetch;\n}\n","import { useQuery } from \"@tanstack/react-query\";\nimport { useSeedPhrase } from \"./use-seed-phrase\";\nimport { EcencyHiveKeys } from \"@/modules/wallets/types\";\nimport {\n deriveHiveKeys,\n deriveHiveMasterPasswordKeys,\n detectHiveKeyDerivation,\n} from \"@/modules/wallets/utils\";\n\nexport function useHiveKeysQuery(username: string) {\n const { data: seed } = useSeedPhrase(username);\n\n return useQuery({\n queryKey: [\"ecencу-wallets\", \"hive-keys\", username, seed],\n staleTime: Infinity,\n queryFn: async () => {\n if (!seed) {\n throw new Error(\"[Ecency][Wallets] - no seed to create Hive account\");\n }\n\n const method = await detectHiveKeyDerivation(username, seed).catch(\n () => \"bip44\"\n );\n\n const keys =\n method === \"master-password\"\n ? deriveHiveMasterPasswordKeys(username, seed)\n : deriveHiveKeys(seed);\n\n return {\n username,\n ...keys,\n } as EcencyHiveKeys;\n },\n });\n}\n","import { SMTAsset } from \"@hiveio/dhive\";\n\nexport enum Symbol {\n HIVE = \"HIVE\",\n HBD = \"HBD\",\n VESTS = \"VESTS\",\n SPK = \"SPK\",\n}\n\nexport enum NaiMap {\n \"@@000000021\" = \"HIVE\",\n \"@@000000013\" = \"HBD\",\n \"@@000000037\" = \"VESTS\",\n}\n\nexport interface Asset {\n amount: number;\n symbol: Symbol;\n}\n\nexport function parseAsset(sval: string | SMTAsset): Asset {\n if (typeof sval === \"string\") {\n const sp = sval.split(\" \");\n return {\n amount: parseFloat(sp[0]),\n // @ts-ignore\n symbol: Symbol[sp[1]],\n };\n } else {\n return {\n amount: parseFloat(sval.amount.toString()) / Math.pow(10, sval.precision),\n // @ts-ignore\n symbol: NaiMap[sval.nai],\n };\n }\n}\n","export function isEmptyDate(s: string | undefined): boolean {\n if (s === undefined) {\n return true;\n }\n\n return parseInt(s.split(\"-\")[0], 10) < 1980;\n}\n","export function vestsToHp(vests: number, hivePerMVests: number): number {\n return (vests / 1e6) * hivePerMVests;\n}\n","import { SpkApiWallet } from \"../types\";\n\nexport function rewardSpk(data: SpkApiWallet, sstats: any) {\n let a = 0,\n b = 0,\n c = 0,\n t = 0,\n diff = data.head_block - data.spk_block;\n if (!data.spk_block) {\n return 0;\n } else if (diff < 28800) {\n return 0;\n } else {\n t = diff / 28800;\n a = data.gov ? simpleInterest(data.gov, t, sstats.spk_rate_lgov) : 0;\n b = data.pow ? simpleInterest(data.pow, t, sstats.spk_rate_lpow) : 0;\n c = simpleInterest(\n (data.granted.t > 0 ? data.granted.t : 0) +\n (data.granting.t && data.granting.t > 0 ? data.granting.t : 0),\n t,\n sstats.spk_rate_ldel\n );\n const i = a + b + c;\n if (i) {\n return i;\n } else {\n return 0;\n }\n }\n function simpleInterest(p: number, t: number, r: number) {\n const amount = p * (1 + r / 365);\n const interest = amount - p;\n return interest * t;\n }\n}\n","import type { Operation, TransactionConfirmation } from \"@hiveio/dhive\";\n\ntype HiveAuthKeyType = \"posting\" | \"active\";\n\nexport type HiveAuthBroadcastHandler = (\n username: string,\n operations: Operation[],\n keyType: HiveAuthKeyType\n) => Promise<TransactionConfirmation>;\n\nlet broadcastHandler: HiveAuthBroadcastHandler | null = null;\n\nexport function registerHiveAuthBroadcastHandler(handler: HiveAuthBroadcastHandler) {\n broadcastHandler = handler;\n}\n\nexport function getHiveAuthBroadcastHandler(): HiveAuthBroadcastHandler | null {\n return broadcastHandler;\n}\n","import type { Operation, TransactionConfirmation } from \"@hiveio/dhive\";\nimport {\n getHiveAuthBroadcastHandler,\n registerHiveAuthBroadcastHandler,\n type HiveAuthBroadcastHandler,\n} from \"../../../internal/hive-auth\";\n\nexport type { HiveAuthBroadcastHandler } from \"../../../internal/hive-auth\";\n\nexport type HiveAuthKeyType = \"posting\" | \"active\";\n\nexport function registerWalletHiveAuthBroadcast(handler: HiveAuthBroadcastHandler) {\n registerHiveAuthBroadcastHandler(handler);\n}\n\nexport function broadcastWithWalletHiveAuth(\n username: string,\n operations: Operation[],\n keyType: HiveAuthKeyType\n): Promise<TransactionConfirmation> {\n const handler = getHiveAuthBroadcastHandler();\n if (!handler) {\n throw new Error(\"HiveAuth broadcast handler is not registered\");\n }\n\n return handler(username, operations, keyType);\n}\n\nexport function hasWalletHiveAuthBroadcast(): boolean {\n return typeof getHiveAuthBroadcastHandler() === \"function\";\n}\n","import {\n CONFIG,\n DynamicProps,\n getAccountFullQueryOptions,\n getDynamicPropsQueryOptions,\n getQueryClient,\n} from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { type FullAccount } from \"@ecency/sdk\";\n\nexport function getHiveAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"hive\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getDynamicPropsQueryOptions());\n await getQueryClient().prefetchQuery(\n getAccountFullQueryOptions(username)\n );\n\n const dynamicProps = getQueryClient().getQueryData<DynamicProps>(\n getDynamicPropsQueryOptions().queryKey\n );\n const accountData = getQueryClient().getQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey\n );\n\n const marketTicker = await CONFIG.hiveClient\n .call(\"condenser_api\", \"get_ticker\", [])\n .catch(() => undefined) as { latest?: string } | undefined;\n\n const marketPrice = Number.parseFloat(marketTicker?.latest ?? \"\");\n\n if (!accountData) {\n return {\n name: \"HIVE\",\n title: \"Hive\",\n price: Number.isFinite(marketPrice)\n ? marketPrice\n : dynamicProps\n ? dynamicProps.base / dynamicProps.quote\n : 0,\n accountBalance: 0,\n } satisfies GeneralAssetInfo;\n }\n\n const liquidBalance = parseAsset(accountData.balance).amount;\n const savingsBalance = parseAsset(accountData.savings_balance).amount;\n\n return {\n name: \"HIVE\",\n title: \"Hive\",\n price: Number.isFinite(marketPrice)\n ? marketPrice\n : dynamicProps\n ? dynamicProps.base / dynamicProps.quote\n : 0,\n accountBalance: liquidBalance + savingsBalance,\n parts: [\n {\n name: \"current\",\n balance: liquidBalance,\n },\n {\n name: \"savings\",\n balance: savingsBalance,\n },\n ],\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import {\n CONFIG,\n DynamicProps,\n getAccountFullQueryOptions,\n getDynamicPropsQueryOptions,\n getQueryClient,\n} from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { isEmptyDate, parseAsset, vestsToHp } from \"../../utils\";\nimport { type FullAccount } from \"@ecency/sdk\";\n\nfunction getAPR(dynamicProps: DynamicProps) {\n // The inflation was set to 9.5% at block 7m\n const initialInflationRate = 9.5;\n const initialBlock = 7000000;\n\n // It decreases by 0.01% every 250k blocks\n const decreaseRate = 250000;\n const decreasePercentPerIncrement = 0.01;\n\n // How many increments have happened since block 7m?\n const headBlock = dynamicProps.headBlock;\n const deltaBlocks = headBlock - initialBlock;\n const decreaseIncrements = deltaBlocks / decreaseRate;\n\n // Current inflation rate\n let currentInflationRate =\n initialInflationRate - decreaseIncrements * decreasePercentPerIncrement;\n\n // Cannot go lower than 0.95%\n if (currentInflationRate < 0.95) {\n currentInflationRate = 0.95;\n }\n\n // Now lets calculate the \"APR\"\n const vestingRewardPercent = dynamicProps.vestingRewardPercent / 10000;\n const virtualSupply = dynamicProps.virtualSupply;\n const totalVestingFunds = dynamicProps.totalVestingFund;\n\n return (\n (virtualSupply * currentInflationRate * vestingRewardPercent) /\n totalVestingFunds\n ).toFixed(3);\n}\n\nexport function getHivePowerAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-power\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getDynamicPropsQueryOptions());\n await getQueryClient().prefetchQuery(\n getAccountFullQueryOptions(username)\n );\n\n const dynamicProps = getQueryClient().getQueryData<DynamicProps>(\n getDynamicPropsQueryOptions().queryKey\n );\n const accountData = getQueryClient().getQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey\n );\n\n if (!dynamicProps || !accountData) {\n return {\n name: \"HP\",\n title: \"Hive Power\",\n price: 0,\n accountBalance: 0,\n };\n }\n\n const marketTicker = await CONFIG.hiveClient\n .call(\"condenser_api\", \"get_ticker\", [])\n .catch(() => undefined) as { latest?: string } | undefined;\n\n const marketPrice = Number.parseFloat(marketTicker?.latest ?? \"\");\n const price = Number.isFinite(marketPrice)\n ? marketPrice\n : dynamicProps.base / dynamicProps.quote;\n\n // const nextVestingSharesWithdrawal = !isEmptyDate(\n // accountData.next_vesting_withdrawal\n // )\n // ? Math.min(\n // parseAsset(accountData.vesting_withdraw_rate).amount,\n // (Number(accountData.to_withdraw) - Number(accountData.withdrawn)) /\n // 1e6\n // )\n // : 0;\n\n const vestingShares = parseAsset(accountData.vesting_shares).amount;\n const delegatedVests = parseAsset(accountData.delegated_vesting_shares).amount;\n const receivedVests = parseAsset(accountData.received_vesting_shares).amount;\n const withdrawRateVests = parseAsset(accountData.vesting_withdraw_rate).amount;\n const remainingToWithdrawVests = Math.max(\n (Number(accountData.to_withdraw) - Number(accountData.withdrawn)) / 1e6,\n 0\n );\n const nextWithdrawalVests = !isEmptyDate(accountData.next_vesting_withdrawal)\n ? Math.min(withdrawRateVests, remainingToWithdrawVests)\n : 0;\n\n const hpBalance = +vestsToHp(\n vestingShares,\n dynamicProps.hivePerMVests\n ).toFixed(3);\n const outgoingDelegationsHp = +vestsToHp(\n delegatedVests,\n dynamicProps.hivePerMVests\n ).toFixed(3);\n const incomingDelegationsHp = +vestsToHp(\n receivedVests,\n dynamicProps.hivePerMVests\n ).toFixed(3);\n const pendingPowerDownHp = +vestsToHp(\n remainingToWithdrawVests,\n dynamicProps.hivePerMVests\n ).toFixed(3);\n const nextPowerDownHp = +vestsToHp(\n nextWithdrawalVests,\n dynamicProps.hivePerMVests\n ).toFixed(3);\n const totalBalance = Math.max(hpBalance - pendingPowerDownHp, 0);\n const availableHp = Math.max(\n // Owned HP minus the portions already delegated away.\n hpBalance - outgoingDelegationsHp,\n 0\n );\n\n return {\n name: \"HP\",\n title: \"Hive Power\",\n price,\n accountBalance: +totalBalance.toFixed(3),\n apr: getAPR(dynamicProps),\n parts: [\n {\n name: \"hp_balance\",\n balance: hpBalance,\n },\n {\n name: \"available\",\n balance: +availableHp.toFixed(3),\n },\n {\n name: \"outgoing_delegations\",\n balance: outgoingDelegationsHp,\n },\n {\n name: \"incoming_delegations\",\n balance: incomingDelegationsHp,\n },\n ...(pendingPowerDownHp > 0\n ? [\n {\n name: \"pending_power_down\",\n balance: +pendingPowerDownHp.toFixed(3),\n },\n ]\n : []),\n ...(nextPowerDownHp > 0 && nextPowerDownHp !== pendingPowerDownHp\n ? [\n {\n name: \"next_power_down\",\n balance: +nextPowerDownHp.toFixed(3),\n },\n ]\n : []),\n ],\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import {\n DynamicProps,\n getAccountFullQueryOptions,\n getDynamicPropsQueryOptions,\n getQueryClient,\n CONFIG,\n} from \"@ecency/sdk\";\nimport { type FullAccount } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\n\nexport function getHbdAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"hbd\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getDynamicPropsQueryOptions());\n await getQueryClient().prefetchQuery(\n getAccountFullQueryOptions(username)\n );\n\n const accountData = getQueryClient().getQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey\n );\n const dynamicProps = getQueryClient().getQueryData<DynamicProps>(\n getDynamicPropsQueryOptions().queryKey\n );\n\n let price = 1;\n try {\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"HBD\")\n );\n const marketPrice =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"HBD\").queryKey\n ) ?? 0;\n\n if (typeof marketPrice === \"number\" && Number.isFinite(marketPrice)) {\n price = marketPrice;\n }\n } catch {\n // Ignore private API failures and fall back to the peg value.\n }\n\n if (!accountData) {\n return {\n name: \"HBD\",\n title: \"Hive Dollar\",\n price,\n accountBalance: 0,\n };\n }\n\n return {\n name: \"HBD\",\n title: \"Hive Dollar\",\n price,\n accountBalance:\n parseAsset(accountData.hbd_balance).amount +\n parseAsset(accountData?.savings_hbd_balance).amount,\n apr: ((dynamicProps?.hbdInterestRate ?? 0) / 100).toFixed(3),\n parts: [\n {\n name: \"current\",\n balance: parseAsset(accountData.hbd_balance).amount,\n },\n {\n name: \"savings\",\n balance: parseAsset(accountData.savings_hbd_balance).amount,\n },\n ],\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { utils } from \"@hiveio/dhive\";\nimport { HiveOperationGroup } from \"../types\";\nconst ops = utils.operationOrders;\n\nexport const HIVE_ACCOUNT_OPERATION_GROUPS: Record<\n HiveOperationGroup,\n number[]\n> = {\n transfers: [\n ops.transfer,\n ops.transfer_to_savings,\n ops.transfer_from_savings,\n ops.cancel_transfer_from_savings,\n ops.recurrent_transfer,\n ops.fill_recurrent_transfer,\n ops.escrow_transfer,\n ops.fill_recurrent_transfer,\n ],\n \"market-orders\": [\n ops.fill_convert_request,\n ops.fill_order,\n ops.fill_collateralized_convert_request,\n ops.limit_order_create2,\n ops.limit_order_create,\n ops.limit_order_cancel,\n ],\n interests: [ops.interest],\n \"stake-operations\": [\n ops.return_vesting_delegation,\n ops.withdraw_vesting,\n ops.transfer_to_vesting,\n ops.set_withdraw_vesting_route,\n ops.update_proposal_votes,\n ops.fill_vesting_withdraw,\n ops.account_witness_proxy,\n ops.delegate_vesting_shares,\n ],\n rewards: [\n ops.author_reward,\n ops.curation_reward,\n ops.producer_reward,\n ops.claim_reward_balance,\n ops.comment_benefactor_reward,\n ops.liquidity_reward,\n ops.proposal_pay,\n ],\n \"\": [],\n};\n","import { utils } from \"@hiveio/dhive\";\nimport type { HiveOperationName } from \"../types\";\n\nexport const HIVE_OPERATION_LIST = Object.keys(\n utils.operationOrders\n) as HiveOperationName[];\n","import { utils } from \"@hiveio/dhive\";\nimport type { HiveOperationName } from \"../types\";\n\nconst operationOrders = utils.operationOrders as Record<\n HiveOperationName,\n number\n>;\n\nexport const HIVE_OPERATION_ORDERS = operationOrders;\n\nexport const HIVE_OPERATION_NAME_BY_ID: Record<number, HiveOperationName> =\n Object.entries(operationOrders).reduce((acc, [name, id]) => {\n acc[id] = name as HiveOperationName;\n return acc;\n }, {} as Record<number, HiveOperationName>);\n","import { CONFIG } from \"@ecency/sdk\";\nimport { utils } from \"@hiveio/dhive\";\nimport { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { HIVE_ACCOUNT_OPERATION_GROUPS } from \"../consts\";\nimport {\n AuthorReward,\n ClaimRewardBalance,\n HiveOperationFilter,\n HiveOperationFilterKey,\n HiveOperationFilterValue,\n HiveOperationGroup,\n HiveOperationName,\n HiveTransaction,\n} from \"../types\";\nimport { parseAsset } from \"../../utils\";\n\nconst operationOrders = utils.operationOrders;\n\nfunction isHiveOperationName(value: string): value is HiveOperationName {\n return Object.prototype.hasOwnProperty.call(operationOrders, value);\n}\n\nexport function resolveHiveOperationFilters(\n filters: HiveOperationFilter\n): {\n filterKey: HiveOperationFilterKey;\n filterArgs: any[];\n} {\n const rawValues: HiveOperationFilterValue[] = Array.isArray(filters)\n ? filters\n : [filters];\n\n const hasAll = rawValues.includes(\"\" as HiveOperationGroup);\n\n const uniqueValues = Array.from(\n new Set(\n rawValues.filter(\n (value): value is HiveOperationFilterValue =>\n value !== undefined && value !== null && value !== (\"\" as HiveOperationGroup)\n )\n )\n );\n\n const filterKey: HiveOperationFilterKey =\n hasAll || uniqueValues.length === 0\n ? \"all\"\n : uniqueValues\n .map((value) => value.toString())\n .sort()\n .join(\"|\");\n\n const operationIds = new Set<number>();\n\n if (!hasAll) {\n uniqueValues.forEach((value) => {\n if (value in HIVE_ACCOUNT_OPERATION_GROUPS) {\n HIVE_ACCOUNT_OPERATION_GROUPS[value as HiveOperationGroup].forEach((id) =>\n operationIds.add(id)\n );\n return;\n }\n\n if (isHiveOperationName(value)) {\n operationIds.add(operationOrders[value]);\n }\n });\n }\n\n const filterArgs = makeBitMaskFilter(Array.from(operationIds));\n\n return {\n filterKey,\n filterArgs,\n };\n}\n\nfunction makeBitMaskFilter(allowedOperations: number[]) {\n let low = 0n;\n let high = 0n;\n\n allowedOperations.forEach((operation) => {\n if (operation < 64) {\n low |= 1n << BigInt(operation);\n } else {\n high |= 1n << BigInt(operation - 64);\n }\n });\n\n return [low !== 0n ? low.toString() : null, high !== 0n ? high.toString() : null];\n}\n\nexport function getHiveAssetTransactionsQueryOptions(\n username: string | undefined,\n limit = 20,\n filters: HiveOperationFilter = []\n) {\n const { filterArgs, filterKey } = resolveHiveOperationFilters(filters);\n\n return infiniteQueryOptions<HiveTransaction[]>({\n queryKey: [\"assets\", \"hive\", \"transactions\", username, limit, filterKey],\n initialData: { pages: [], pageParams: [] },\n initialPageParam: -1,\n getNextPageParam: (lastPage, __) =>\n lastPage ? +(lastPage[lastPage.length - 1]?.num ?? 0) - 1 : -1,\n\n queryFn: async ({ pageParam }) => {\n const response = await CONFIG.hiveClient.call(\n \"condenser_api\",\n \"get_account_history\",\n [username, pageParam, limit, ...filterArgs]\n );\n\n return response.map(\n (x: any) =>\n ({\n num: x[0],\n type: x[1].op[0],\n timestamp: x[1].timestamp,\n trx_id: x[1].trx_id,\n ...x[1].op[1],\n }) satisfies HiveTransaction\n );\n },\n select: ({ pages, pageParams }) => ({\n pageParams,\n pages: pages.map((page) =>\n page.filter((item) => {\n switch (item.type) {\n case \"author_reward\":\n case \"comment_benefactor_reward\":\n const hivePayout = parseAsset((item as AuthorReward).hive_payout);\n return hivePayout.amount > 0;\n case \"transfer\":\n case \"transfer_to_savings\":\n case \"transfer_to_vesting\":\n case \"recurrent_transfer\":\n return parseAsset(item.amount).symbol === \"HIVE\";\n\n case \"transfer_from_savings\" as HiveOperationName:\n return parseAsset((item as any).amount).symbol === \"HIVE\";\n\n case \"fill_recurrent_transfer\":\n const asset = parseAsset(item.amount);\n return [\"HIVE\"].includes(asset.symbol);\n\n case \"claim_reward_balance\":\n const rewardHive = parseAsset(\n (item as ClaimRewardBalance).reward_hive\n );\n return rewardHive.amount > 0;\n\n case \"curation_reward\":\n case \"cancel_transfer_from_savings\":\n case \"fill_order\":\n case \"limit_order_create\":\n case \"limit_order_cancel\":\n case \"fill_convert_request\":\n case \"fill_collateralized_convert_request\":\n return true;\n\n case \"limit_order_create2\" as HiveOperationName:\n return true;\n default:\n return false;\n }\n })\n ),\n }),\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { parseAsset } from \"../../utils\";\nimport {\n AuthorReward,\n ClaimRewardBalance,\n HiveOperationFilter,\n HiveTransaction,\n} from \"../types\";\nimport {\n getHiveAssetTransactionsQueryOptions,\n resolveHiveOperationFilters,\n} from \"./get-hive-asset-transactions-query-options\";\n\nexport function getHivePowerAssetTransactionsQueryOptions(\n username: string | undefined,\n limit = 20,\n filters: HiveOperationFilter = []\n) {\n const { filterKey } = resolveHiveOperationFilters(filters);\n\n const userSelectedOperations = new Set<string>(\n Array.isArray(filters) ? filters : [filters]\n );\n const hasAllFilter = userSelectedOperations.has(\"\" as any) || userSelectedOperations.size === 0;\n\n return infiniteQueryOptions<HiveTransaction[]>({\n ...getHiveAssetTransactionsQueryOptions(username, limit, filters),\n queryKey: [\n \"assets\",\n \"hive-power\",\n \"transactions\",\n username,\n limit,\n filterKey,\n ],\n select: ({ pages, pageParams }) => ({\n pageParams,\n pages: pages.map((page) =>\n page.filter((item) => {\n switch (item.type) {\n case \"author_reward\":\n case \"comment_benefactor_reward\":\n const vestingPayout = parseAsset(\n (item as AuthorReward).vesting_payout\n );\n return vestingPayout.amount > 0;\n\n case \"claim_reward_balance\":\n const rewardVests = parseAsset(\n (item as ClaimRewardBalance).reward_vests\n );\n return rewardVests.amount > 0;\n\n case \"transfer_to_vesting\":\n return true;\n case \"transfer\":\n case \"transfer_to_savings\":\n case \"recurrent_transfer\":\n return [\"VESTS\", \"HP\"].includes(\n parseAsset(item.amount).symbol\n );\n\n case \"fill_recurrent_transfer\":\n const asset = parseAsset(item.amount);\n return [\"VESTS\", \"HP\"].includes(asset.symbol);\n\n case \"curation_reward\":\n case \"withdraw_vesting\":\n case \"delegate_vesting_shares\":\n case \"fill_vesting_withdraw\":\n case \"return_vesting_delegation\":\n case \"producer_reward\":\n case \"set_withdraw_vesting_route\":\n return true;\n default:\n // If user explicitly selected this operation or selected \"All\", show it\n // Otherwise, filter it out (maintains backward compatibility when using default filters)\n return hasAllFilter || userSelectedOperations.has(item.type);\n }\n })\n ),\n }),\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { parseAsset } from \"../../utils\";\nimport {\n AuthorReward,\n ClaimRewardBalance,\n HiveOperationFilter,\n HiveOperationName,\n HiveTransaction,\n} from \"../types\";\nimport {\n getHiveAssetTransactionsQueryOptions,\n resolveHiveOperationFilters,\n} from \"./get-hive-asset-transactions-query-options\";\n\nexport function getHbdAssetTransactionsQueryOptions(\n username: string | undefined,\n limit = 20,\n filters: HiveOperationFilter = []\n) {\n const { filterKey } = resolveHiveOperationFilters(filters);\n\n return infiniteQueryOptions<HiveTransaction[]>({\n ...getHiveAssetTransactionsQueryOptions(username, limit, filters),\n queryKey: [\"assets\", \"hbd\", \"transactions\", username, limit, filterKey],\n select: ({ pages, pageParams }) => ({\n pageParams,\n pages: pages.map((page) =>\n page.filter((item) => {\n switch (item.type) {\n case \"author_reward\":\n case \"comment_benefactor_reward\":\n const hbdPayout = parseAsset((item as AuthorReward).hbd_payout);\n return hbdPayout.amount > 0;\n\n case \"claim_reward_balance\":\n const rewardHbd = parseAsset(\n (item as ClaimRewardBalance).reward_hbd\n );\n return rewardHbd.amount > 0;\n\n case \"transfer\":\n case \"transfer_to_savings\":\n case \"transfer_to_vesting\":\n case \"recurrent_transfer\":\n return parseAsset(item.amount).symbol === \"HBD\";\n\n case \"transfer_from_savings\" as HiveOperationName:\n return parseAsset((item as any).amount).symbol === \"HBD\";\n\n case \"fill_recurrent_transfer\":\n const asset = parseAsset(item.amount);\n return [\"HBD\"].includes(asset.symbol);\n\n case \"cancel_transfer_from_savings\":\n case \"fill_order\":\n case \"limit_order_create\":\n case \"limit_order_cancel\":\n case \"fill_convert_request\":\n case \"fill_collateralized_convert_request\":\n case \"proposal_pay\":\n case \"interest\":\n return true;\n\n case \"limit_order_create2\" as HiveOperationName:\n return true;\n default:\n return false;\n }\n })\n ),\n }),\n });\n}\n","import { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { HiveMarketMetric } from \"../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport dayjs from \"dayjs\";\n\nexport function getHiveAssetMetricQueryOptions(bucketSeconds = 86_400) {\n return infiniteQueryOptions({\n queryKey: [\"assets\", \"hive\", \"metrics\", bucketSeconds],\n queryFn: async ({ pageParam: [startDate, endDate] }) => {\n const apiData: HiveMarketMetric[] = await CONFIG.hiveClient.call(\n \"condenser_api\",\n \"get_market_history\",\n [\n bucketSeconds,\n dayjs(startDate).format(\"YYYY-MM-DDTHH:mm:ss\"),\n dayjs(endDate).format(\"YYYY-MM-DDTHH:mm:ss\"),\n ],\n );\n\n return apiData.map(({ hive, non_hive, open }) => ({\n close: non_hive.close / hive.close,\n open: non_hive.open / hive.open,\n low: non_hive.low / hive.low,\n high: non_hive.high / hive.high,\n volume: hive.volume,\n time: new Date(open),\n }));\n },\n initialPageParam: [\n // Fetch at least 8 hours or given interval\n dayjs()\n .subtract(Math.max(100 * bucketSeconds, 28_800), \"second\")\n .toDate(),\n new Date(),\n ],\n getNextPageParam: (_, __, [prevStartDate]) => [\n dayjs(prevStartDate.getTime())\n .subtract(Math.max(100 * bucketSeconds, 28_800), \"second\")\n .toDate(),\n dayjs(prevStartDate.getTime()).subtract(bucketSeconds, \"second\").toDate(),\n ],\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { HiveWithdrawRoute } from \"@/modules/assets/hive/types\";\n\nexport function getHiveAssetWithdrawalRoutesQueryOptions(\n username: string | undefined,\n) {\n return queryOptions({\n queryKey: [\"assets\", \"hive\", \"withdrawal-routes\", username],\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_withdraw_routes\", [\n username,\n \"outgoing\",\n ]) as Promise<HiveWithdrawRoute[]>,\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { DelegatedVestingShare } from \"../types\";\n\nexport function getHivePowerDelegatesInfiniteQueryOptions(\n username: string,\n limit = 50\n) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-power\", \"delegates\", username],\n enabled: !!username,\n queryFn: () =>\n CONFIG.hiveClient.database.call(\"get_vesting_delegations\", [\n username,\n \"\",\n limit,\n ]) as Promise<DelegatedVestingShare[]>,\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { ReceivedVestingShare } from \"../types\";\nimport { parseAsset } from \"../../utils\";\n\nexport function getHivePowerDelegatingsQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-power\", \"delegatings\", username],\n queryFn: async () => {\n const response = await fetch(\n CONFIG.privateApiHost + `/private-api/received-vesting/${username}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return (await response.json()).list as ReceivedVestingShare[];\n },\n select: (data) =>\n data.sort(\n (a, b) =>\n parseAsset(b.vesting_shares).amount -\n parseAsset(a.vesting_shares).amount\n ),\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { Symbol as AssetSymbol, parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\nexport interface TransferPayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo: string;\n type: T;\n}\n\nexport async function transferHive<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? TransferPayload<T> & { key: PrivateKey }\n : TransferPayload<T>\n) {\n const parsedAsset = parseAsset(payload.amount);\n const token = parsedAsset.symbol;\n const precision = token === AssetSymbol.VESTS ? 6 : 3;\n const formattedAmount = parsedAsset.amount.toFixed(precision);\n const amountWithSymbol = `${formattedAmount} ${token}`;\n\n const operation: Operation = [\n \"transfer\",\n {\n from: payload.from,\n to: payload.to,\n amount: amountWithSymbol,\n memo: payload.memo,\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n // params contains from, to, amount, memo\n // broadcast.transfer expects amount string like \"1.000 HIVE\" or \"1.000 HBD\"\n return CONFIG.hiveClient.broadcast.transfer(\n {\n from: params.from,\n to: params.to,\n amount: amountWithSymbol,\n memo: params.memo,\n },\n key\n );\n } else if (payload.type === \"keychain\") {\n return new Promise((resolve, reject) =>\n (window as any).hive_keychain?.requestTransfer(\n payload.from,\n payload.to,\n formattedAmount,\n payload.memo,\n token,\n (resp: { success: boolean }) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n },\n true,\n null\n )\n );\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n // For hivesigner, include the same payload fields; amount already contains token denomination\n return hs.sendOperation(\n operation,\n { callback: `https://ecency.com/@${payload.from}/wallet` },\n () => {}\n );\n }\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface Payload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo: string;\n type: T;\n}\n\nexport async function transferToSavingsHive<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\" ? Payload<T> & { key: PrivateKey } : Payload<T>\n) {\n const operationPayload = {\n from: payload.from,\n to: payload.to,\n amount: payload.amount,\n memo: payload.memo,\n };\n const operation: Operation = [\"transfer_to_savings\", operationPayload];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(\n [[\"transfer_to_savings\", params]],\n key\n );\n } else if (payload.type === \"keychain\") {\n return Keychain.broadcast(payload.from, [operation], \"Active\") as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {});\n }\n}\n","import { CONFIG, Keychain } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface PayloadBase {\n from: string;\n to: string;\n amount: string;\n memo: string;\n request_id?: number;\n}\n\ninterface PayloadWithKey<T extends HiveBasedAssetSignType> extends PayloadBase {\n type: T;\n}\n\nexport async function transferFromSavingsHive<\n T extends HiveBasedAssetSignType\n>(\n payload: T extends \"key\"\n ? PayloadWithKey<T> & { key: PrivateKey }\n : PayloadWithKey<T>\n) {\n const requestId = payload.request_id ?? (Date.now() >>> 0);\n const operationPayload = {\n from: payload.from,\n to: payload.to,\n amount: payload.amount,\n memo: payload.memo,\n request_id: requestId,\n };\n\n const operation: Operation = [\"transfer_from_savings\", operationPayload];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(\n [operation],\n key\n );\n }\n\n if (payload.type === \"keychain\") {\n return Keychain.broadcast(payload.from, [operation], \"Active\") as Promise<unknown>;\n }\n\n if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n }\n\n return hs.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {});\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface Payload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo: string;\n type: T;\n}\nexport async function powerUpHive<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\" ? Payload<T> & { key: PrivateKey } : Payload<T>\n) {\n const operationPayload = {\n from: payload.from,\n to: payload.to,\n amount: payload.amount,\n memo: payload.memo,\n };\n const operation: Operation = [\"transfer_to_vesting\", operationPayload];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(\n [[\"transfer_to_vesting\", params]],\n key\n );\n } else if (payload.type === \"keychain\") {\n return Keychain.broadcast(payload.from, [operation], \"Active\") as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {});\n }\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface Payload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo: string;\n type: T;\n}\nexport async function delegateHive<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\" ? Payload<T> & { key: PrivateKey } : Payload<T>\n) {\n const operationPayload = {\n delegator: payload.from,\n delegatee: payload.to,\n vesting_shares: payload.amount,\n };\n const operation: Operation = [\"delegate_vesting_shares\", operationPayload];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(\n [operation],\n key\n );\n } else if (payload.type === \"keychain\") {\n return Keychain.broadcast(payload.from, [operation], \"Active\") as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {});\n }\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface Payload<T extends HiveBasedAssetSignType> {\n from: string;\n amount: string;\n type: T;\n}\nexport async function powerDownHive<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\" ? Payload<T> & { key: PrivateKey } : Payload<T>\n) {\n const operationPayload = {\n account: payload.from,\n vesting_shares: payload.amount,\n };\n\n const operation: Operation = [\"withdraw_vesting\", operationPayload];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(\n [operation],\n key\n );\n } else if (payload.type === \"keychain\") {\n return Keychain.broadcast(payload.from, [operation], \"Active\") as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(operation, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {});\n }\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface Payload<T extends HiveBasedAssetSignType> {\n from_account: string;\n to_account: string;\n percent: number;\n auto_vest: boolean;\n type: T;\n}\n\nexport async function withdrawVestingRouteHive<\n T extends HiveBasedAssetSignType,\n>(payload: T extends \"key\" ? Payload<T> & { key: PrivateKey } : Payload<T>) {\n const baseParams = {\n from_account: payload.from_account,\n to_account: payload.to_account,\n percent: payload.percent,\n auto_vest: payload.auto_vest,\n };\n const operation: Operation = [\"set_withdraw_vesting_route\", baseParams];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(\n [[\"set_withdraw_vesting_route\", params]],\n key\n );\n }\n\n if (payload.type === \"keychain\") {\n const { type, ...params } = payload as Payload<\"keychain\">;\n return Keychain.broadcast(params.from_account, [operation], \"Active\") as Promise<unknown>;\n }\n\n if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from_account, [operation], \"active\");\n }\n\n const { type, ...params } = payload as Payload<\"hivesigner\">;\n return hs.sendOperation(operation, { callback: `https://ecency.com/@${params.from_account}/wallet` }, () => {});\n}\n","import { getAccountFullQueryOptions, useBroadcastMutation } from \"@ecency/sdk\";\nimport { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { getHivePowerAssetGeneralInfoQueryOptions } from \"../queries\";\nimport { delay } from \"@/modules/wallets/utils\";\n\nexport function useClaimRewards(\n username: string,\n onSuccess: () => void\n): ReturnType<typeof useBroadcastMutation<void>> {\n const { data } = useQuery(getAccountFullQueryOptions(username));\n\n const queryClient = useQueryClient();\n\n return useBroadcastMutation<void>(\n [\"assets\", \"hive\", \"claim-rewards\", data?.name],\n username,\n () => {\n if (!data) {\n throw new Error(\"Failed to fetch account while claiming balance\");\n }\n\n const {\n reward_hive_balance: hiveBalance,\n reward_hbd_balance: hbdBalance,\n reward_vesting_balance: vestingBalance,\n } = data;\n\n return [\n [\n \"claim_reward_balance\",\n {\n account: username,\n reward_hive: hiveBalance,\n reward_hbd: hbdBalance,\n reward_vests: vestingBalance,\n },\n ],\n ];\n },\n async () => {\n onSuccess();\n\n // Some time to think for blockchain\n await delay(1000);\n\n queryClient.invalidateQueries({\n queryKey: getAccountFullQueryOptions(username).queryKey,\n });\n queryClient.invalidateQueries({\n queryKey: getHivePowerAssetGeneralInfoQueryOptions(username).queryKey,\n });\n }\n );\n}\n","import { CONFIG, Keychain } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface PayloadBase {\n from: string;\n to: string;\n amount: string;\n memo: string;\n request_id?: number;\n}\n\ninterface PayloadWithKey<T extends HiveBasedAssetSignType> extends PayloadBase {\n type: T;\n}\n\nexport async function claimInterestHive<\n T extends HiveBasedAssetSignType\n>(\n payload: T extends \"key\"\n ? PayloadWithKey<T> & { key: PrivateKey }\n : PayloadWithKey<T>\n) {\n const requestId = payload.request_id ?? (Date.now() >>> 0);\n const baseOperation = {\n from: payload.from,\n to: payload.to,\n amount: payload.amount,\n memo: payload.memo,\n request_id: requestId,\n };\n\n const cancelOperation = {\n from: payload.from,\n request_id: requestId,\n };\n\n const operations: Operation[] = [\n [\"transfer_from_savings\", baseOperation],\n [\"cancel_transfer_from_savings\", cancelOperation],\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.sendOperations(operations, key);\n }\n\n if (payload.type === \"keychain\") {\n return Keychain.broadcast(payload.from, operations, \"Active\") as Promise<unknown>;\n }\n\n if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, operations, \"active\");\n }\n\n return hs.sendOperations(operations, { callback: `https://ecency.com/@${payload.from}/wallet` }, () => {});\n}\n","export enum AssetOperation {\n // Common\n Transfer = \"transfer\",\n\n // APR\n TransferToSavings = \"transfer-saving\",\n WithdrawFromSavings = \"withdraw-saving\",\n Delegate = \"delegate\",\n PowerUp = \"power-up\",\n PowerDown = \"power-down\",\n WithdrawRoutes = \"withdraw-routes\",\n ClaimInterest = \"claim-interest\",\n Swap = \"swap\",\n\n // Points\n Gift = \"gift\",\n Promote = \"promote\",\n Claim = \"claim\",\n Buy = \"buy\",\n\n // SPK\n LockLiquidity = \"lock\",\n\n // Layer 2\n Stake = \"stake\",\n Unstake = \"unstake\",\n Undelegate = \"undelegate\",\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface SpkTransferPayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo?: string;\n type: T;\n}\n\nexport async function transferSpk<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? SpkTransferPayload<T> & { key: PrivateKey }\n : SpkTransferPayload<T>\n) {\n const json = JSON.stringify({\n to: payload.to,\n amount: parseAsset(payload.amount).amount * 1000,\n ...(typeof payload.memo === \"string\" ? { memo: payload.memo } : {}),\n });\n\n const op = {\n id: \"spkcc_spk_send\",\n json,\n required_auths: [payload.from],\n required_posting_auths: [],\n };\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: op.id,\n required_auths: [payload.from],\n required_posting_auths: [],\n json,\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return Keychain.customJson(\n payload.from,\n \"spkcc_spk_send\",\n \"Active\",\n json,\n payload.to\n ) as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n const { amount } = parseAsset(payload.amount);\n return hs.sign(\n \"custom_json\",\n {\n authority: \"active\",\n required_auths: `[\"${payload.from}\"]`,\n required_posting_auths: \"[]\",\n id: \"spkcc_spk_send\",\n json: JSON.stringify({\n to: payload.to,\n amount: +amount * 1000,\n ...(typeof payload.memo === \"string\" ? { memo: payload.memo } : {}),\n }),\n },\n `https://ecency.com/@${payload.from}/wallet`\n );\n }\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface SpkLockPayload<T extends HiveBasedAssetSignType> {\n mode: \"lock\" | \"unlock\";\n from: string;\n amount: string;\n type: T;\n}\n\nexport const lockLarynx = async <T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? SpkLockPayload<T> & { key: PrivateKey }\n : SpkLockPayload<T>\n) => {\n const json = JSON.stringify({ amount: +payload.amount * 1000 });\n\n const op = {\n id: payload.mode === \"lock\" ? \"spkcc_gov_up\" : \"spkcc_gov_down\",\n json,\n required_auths: [payload.from],\n required_posting_auths: [],\n };\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: op.id,\n required_auths: [payload.from],\n required_posting_auths: [],\n json,\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return Keychain.customJson(\n payload.from,\n op.id,\n \"Active\",\n json,\n payload.from\n ) as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n const { amount } = parseAsset(payload.amount);\n return hs.sign(\n \"custom_json\",\n {\n authority: \"active\",\n required_auths: `[\"${payload.from}\"]`,\n required_posting_auths: \"[]\",\n id: op.id,\n json: JSON.stringify({ amount: +amount * 1000 }),\n },\n `https://ecency.com/@${payload.from}/wallet`\n );\n }\n};\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface SpkPowerPayload<T extends HiveBasedAssetSignType> {\n mode: \"up\" | \"down\";\n from: string;\n amount: string;\n type: T;\n}\n\nexport async function powerUpLarynx<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? SpkPowerPayload<T> & { key: PrivateKey }\n : SpkPowerPayload<T>\n) {\n const json = JSON.stringify({ amount: +payload.amount * 1000 });\n\n const op = {\n id: `spkcc_power_${payload.mode}`,\n json,\n required_auths: [payload.from],\n required_posting_auths: [],\n };\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: `spkcc_power_${payload.mode}`,\n required_auths: [payload.from],\n required_posting_auths: [],\n json,\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return Keychain.customJson(\n payload.from,\n `spkcc_power_${payload.mode}`,\n \"Active\",\n json,\n \"\"\n ) as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n const { amount } = parseAsset(payload.amount);\n return hs.sign(\n \"custom_json\",\n {\n authority: \"active\",\n required_auths: `[\"${payload.from}\"]`,\n required_posting_auths: \"[]\",\n id: `spkcc_power_${payload.mode}`,\n json: JSON.stringify({ amount: +amount * 1000 }),\n },\n `https://ecency.com/@${payload.from}/wallet`\n );\n }\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ninterface LarynxTransferPayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo?: string;\n type: T;\n}\n\nexport async function transferLarynx<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? LarynxTransferPayload<T> & { key: PrivateKey }\n : LarynxTransferPayload<T>\n) {\n const json = JSON.stringify({\n to: payload.to,\n amount: parseAsset(payload.amount).amount * 1000,\n ...(typeof payload.memo === \"string\" ? { memo: payload.memo } : {}),\n });\n\n const op = {\n id: \"spkcc_send\",\n json,\n required_auths: [payload.from],\n required_posting_auths: [],\n };\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: \"spkcc_send\",\n required_auths: [payload.from],\n required_posting_auths: [],\n json,\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key } = payload;\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return Keychain.customJson(\n payload.from,\n \"spkcc_send\",\n \"Active\",\n json,\n payload.to\n ) as Promise<unknown>;\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n const { amount } = parseAsset(payload.amount);\n return hs.sign(\n \"custom_json\",\n {\n authority: \"active\",\n required_auths: `[\"${payload.from}\"]`,\n required_posting_auths: \"[]\",\n id: \"spkcc_send\",\n json: JSON.stringify({\n to: payload.to,\n amount: +amount * 1000,\n ...(typeof payload.memo === \"string\" ? { memo: payload.memo } : {}),\n }),\n },\n `https://ecency.com/@${payload.from}/wallet`\n );\n }\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { SpkMarkets, TransformedSpkMarkets } from \"../../types\";\n\nexport function getSpkMarketsQueryOptions() {\n return queryOptions({\n queryKey: [\"assets\", \"spk\", \"markets\"],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const response = await fetch(`${CONFIG.spkNode}/markets`);\n const data = (await response.json()) as SpkMarkets;\n\n return {\n list: Object.entries(data.markets.node).map(([name, node]) => ({\n name,\n status:\n node.lastGood >= data.head_block - 1200\n ? \"🟩\"\n : node.lastGood > data.head_block - 28800\n ? \"🟨\"\n : \"🟥\",\n })),\n raw: data,\n } satisfies TransformedSpkMarkets;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { SpkApiWallet } from \"../../types\";\n\nexport function getSpkWalletQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"spk\", \"wallet\", username],\n queryFn: async () => {\n const response = await fetch(CONFIG.spkNode + `/@${username}`);\n return response.json() as Promise<SpkApiWallet>;\n },\n enabled: !!username,\n staleTime: 60000,\n refetchInterval: 90000,\n });\n}\n","import { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { getHiveAssetGeneralInfoQueryOptions } from \"../../hive\";\nimport {\n GeneralAssetInfo,\n SpkApiWallet,\n TransformedSpkMarkets,\n} from \"../../types\";\nimport { getSpkMarketsQueryOptions } from \"./get-spk-markets-query-options\";\nimport { getSpkWalletQueryOptions } from \"./get-spk-wallet-query-options\";\n\nfunction format(value: number) {\n return value.toFixed(3);\n}\n\nexport function getLarynxAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"larynx\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getSpkWalletQueryOptions(username));\n await getQueryClient().prefetchQuery(getSpkMarketsQueryOptions());\n await getQueryClient().prefetchQuery(\n getHiveAssetGeneralInfoQueryOptions(username)\n );\n\n const wallet = getQueryClient().getQueryData<SpkApiWallet>(\n getSpkWalletQueryOptions(username).queryKey\n );\n const market = getQueryClient().getQueryData<TransformedSpkMarkets>(\n getSpkMarketsQueryOptions().queryKey\n );\n const hiveAsset = getQueryClient().getQueryData<GeneralAssetInfo>(\n getHiveAssetGeneralInfoQueryOptions(username).queryKey\n );\n\n if (!wallet || !market) {\n return {\n name: \"LARYNX\",\n title: \"SPK Network / LARYNX\",\n price: 1,\n accountBalance: 0,\n };\n }\n\n const price = +format(\n (wallet.balance / 1000) * +wallet.tick * (hiveAsset?.price ?? 0)\n );\n const accountBalance = +format(wallet.balance / 1000);\n\n return {\n name: \"LARYNX\",\n layer: \"SPK\",\n title: \"LARYNX\",\n price: price / accountBalance,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { getHiveAssetGeneralInfoQueryOptions } from \"../../hive\";\nimport {\n GeneralAssetInfo,\n SpkApiWallet,\n TransformedSpkMarkets,\n} from \"../../types\";\nimport { rewardSpk } from \"../../utils\";\nimport { getSpkMarketsQueryOptions } from \"./get-spk-markets-query-options\";\nimport { getSpkWalletQueryOptions } from \"./get-spk-wallet-query-options\";\n\nfunction format(value: number) {\n return value.toFixed(3);\n}\n\nexport function getSpkAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"spk\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getSpkWalletQueryOptions(username));\n await getQueryClient().prefetchQuery(getSpkMarketsQueryOptions());\n await getQueryClient().prefetchQuery(\n getHiveAssetGeneralInfoQueryOptions(username)\n );\n\n const wallet = getQueryClient().getQueryData<SpkApiWallet>(\n getSpkWalletQueryOptions(username).queryKey\n );\n const market = getQueryClient().getQueryData<TransformedSpkMarkets>(\n getSpkMarketsQueryOptions().queryKey\n );\n const hiveAsset = getQueryClient().getQueryData<GeneralAssetInfo>(\n getHiveAssetGeneralInfoQueryOptions(username).queryKey\n );\n\n if (!wallet || !market) {\n return {\n name: \"SPK\",\n layer: \"SPK\",\n title: \"SPK Network\",\n price: 1,\n accountBalance: 0,\n };\n }\n\n const price = +format(\n ((wallet.gov + wallet.spk) / 1000) *\n +wallet.tick *\n (hiveAsset?.price ?? 0)\n );\n const accountBalance = +format(\n (wallet.spk +\n rewardSpk(\n wallet,\n market.raw.stats || {\n spk_rate_lgov: \"0.001\",\n spk_rate_lpow: format(\n parseFloat(market.raw.stats.spk_rate_lpow) * 100\n ),\n spk_rate_ldel: format(\n parseFloat(market.raw.stats.spk_rate_ldel) * 100\n ),\n }\n )) /\n 1000\n );\n\n return {\n name: \"SPK\",\n layer: \"SPK\",\n title: \"SPK Network\",\n price: price / accountBalance,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { getHiveAssetGeneralInfoQueryOptions } from \"../../hive\";\nimport {\n GeneralAssetInfo,\n SpkApiWallet,\n TransformedSpkMarkets,\n} from \"../../types\";\nimport { getSpkMarketsQueryOptions } from \"./get-spk-markets-query-options\";\nimport { getSpkWalletQueryOptions } from \"./get-spk-wallet-query-options\";\n\nfunction format(value: number) {\n return value.toFixed(3);\n}\n\nexport function getLarynxPowerAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"larynx-power\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getSpkWalletQueryOptions(username));\n await getQueryClient().prefetchQuery(getSpkMarketsQueryOptions());\n await getQueryClient().prefetchQuery(\n getHiveAssetGeneralInfoQueryOptions(username)\n );\n\n const wallet = getQueryClient().getQueryData<SpkApiWallet>(\n getSpkWalletQueryOptions(username).queryKey\n );\n const market = getQueryClient().getQueryData<TransformedSpkMarkets>(\n getSpkMarketsQueryOptions().queryKey\n );\n const hiveAsset = getQueryClient().getQueryData<GeneralAssetInfo>(\n getHiveAssetGeneralInfoQueryOptions(username).queryKey\n );\n\n if (!wallet || !market) {\n return {\n name: \"LP\",\n title: \"SPK Network / LARYNX Power\",\n price: 1,\n accountBalance: 0,\n };\n }\n\n const price = +format(\n (wallet.poweredUp / 1000) * +wallet.tick * (hiveAsset?.price ?? 0)\n );\n const accountBalance = +format(wallet.poweredUp / 1000);\n\n return {\n name: \"LP\",\n title: \"LARYNX Power\",\n layer: \"SPK\",\n price: price / accountBalance,\n accountBalance,\n parts: [\n {\n name: \"delegating\",\n balance: wallet.granting?.t ? +format(wallet.granting.t / 1000) : 0,\n },\n {\n name: \"recieved\",\n balance: wallet.granted?.t ? +format(wallet.granted.t / 1000) : 0,\n },\n ],\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { HiveEngineTokenMetadataResponse } from \"../types\";\n\nexport function getHiveEngineTokensMetadataQueryOptions(tokens: string[]) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-engine\", \"metadata-list\", tokens] as const,\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const response = await fetch(\n `${CONFIG.privateApiHost}/private-api/engine-api`,\n {\n method: \"POST\",\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n method: \"find\",\n params: {\n contract: \"tokens\",\n table: \"tokens\",\n query: {\n symbol: { $in: tokens },\n },\n },\n id: 2,\n }),\n headers: { \"Content-type\": \"application/json\" },\n }\n );\n const data = (await response.json()) as {\n result: HiveEngineTokenMetadataResponse[];\n };\n return data.result;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { HiveEngineTokenBalance } from \"../types\";\n\nexport function getHiveEngineTokensBalancesQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-engine\", \"balances\", username] as const,\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const response = await fetch(\n `${CONFIG.privateApiHost}/private-api/engine-api`,\n {\n method: \"POST\",\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n method: \"find\",\n params: {\n contract: \"tokens\",\n table: \"balances\",\n query: {\n account: username,\n },\n },\n id: 1,\n }),\n headers: { \"Content-type\": \"application/json\" },\n }\n );\n const data = (await response.json()) as {\n result: HiveEngineTokenBalance[];\n };\n return data.result;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { HiveEngineMarketResponse } from \"../types\";\nimport { CONFIG } from \"@ecency/sdk\";\n\nexport function getHiveEngineTokensMarketQueryOptions() {\n return queryOptions({\n queryKey: [\"assets\", \"hive-engine\", \"markets\"],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const response = await fetch(\n `${CONFIG.privateApiHost}/private-api/engine-api`,\n {\n method: \"POST\",\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n method: \"find\",\n params: {\n contract: \"market\",\n table: \"metrics\",\n query: {},\n },\n id: 1,\n }),\n headers: { \"Content-type\": \"application/json\" },\n }\n );\n const data = (await response.json()) as {\n result: HiveEngineMarketResponse[];\n };\n return data.result;\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { getQueryClient } from \"@ecency/sdk\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { getHiveEngineTokensMetadataQueryOptions } from \"./get-hive-engine-tokens-metadata-query-options\";\nimport { getHiveEngineTokensBalancesQueryOptions } from \"./get-hive-engine-tokens-balances-query-options\";\nimport { getHiveEngineTokensMarketQueryOptions } from \"./get-hive-engine-tokens-market-query-options\";\nimport { getHiveAssetGeneralInfoQueryOptions } from \"../../hive/queries\";\n\nexport function getHiveEngineTokenGeneralInfoQueryOptions(\n username?: string,\n symbol?: string\n) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-engine\", symbol, \"general-info\", username],\n enabled: !!symbol && !!username,\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n if (!symbol || !username) {\n throw new Error(\n \"[SDK][Wallets] – hive engine token or username missed\"\n );\n }\n const queryClient = getQueryClient();\n const hiveQuery = getHiveAssetGeneralInfoQueryOptions(username);\n await queryClient.prefetchQuery(hiveQuery);\n const hiveData = queryClient.getQueryData<GeneralAssetInfo>(\n hiveQuery.queryKey\n );\n\n const metadataList = await queryClient.ensureQueryData(\n getHiveEngineTokensMetadataQueryOptions([symbol])\n );\n\n const balanceList = await queryClient.ensureQueryData(\n getHiveEngineTokensBalancesQueryOptions(username)\n );\n\n const marketList = await queryClient.ensureQueryData(\n getHiveEngineTokensMarketQueryOptions()\n );\n\n const metadata = metadataList?.find((i) => i.symbol === symbol);\n const balance = balanceList?.find((i) => i.symbol === symbol);\n const market = marketList?.find((i) => i.symbol === symbol);\n\n const lastPrice = +(market?.lastPrice ?? \"0\");\n\n const liquidBalance = parseFloat(balance?.balance ?? \"0\");\n const stakedBalance = parseFloat(balance?.stake ?? \"0\");\n const unstakingBalance = parseFloat(balance?.pendingUnstake ?? \"0\");\n\n const parts: GeneralAssetInfo[\"parts\"] = [\n { name: \"liquid\", balance: liquidBalance },\n { name: \"staked\", balance: stakedBalance },\n ];\n\n if (unstakingBalance > 0) {\n parts.push({ name: \"unstaking\", balance: unstakingBalance });\n }\n\n return {\n name: symbol,\n title: metadata?.name ?? \"\",\n price: lastPrice === 0 ? 0 : Number(lastPrice * (hiveData?.price ?? 0)),\n accountBalance: liquidBalance + stakedBalance,\n layer: \"ENGINE\",\n parts,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { infiniteQueryOptions } from \"@tanstack/react-query\";\nimport { HiveEngineTransaction } from \"../types\";\n\nexport function getHiveEngineTokenTransactionsQueryOptions(\n username: string | undefined,\n symbol: string,\n limit = 20\n) {\n return infiniteQueryOptions<HiveEngineTransaction[]>({\n queryKey: [\"assets\", \"hive-engine\", symbol, \"transactions\", username],\n enabled: !!symbol && !!username,\n initialPageParam: 0,\n getNextPageParam: (lastPage) => (lastPage?.length ?? 0) + limit,\n queryFn: async ({ pageParam }) => {\n if (!symbol || !username) {\n throw new Error(\n \"[SDK][Wallets] – hive engine token or username missed\"\n );\n }\n\n const url = new URL(\n `${CONFIG.privateApiHost}/private-api/engine-account-history`\n );\n url.searchParams.set(\"account\", username);\n url.searchParams.set(\"symbol\", symbol);\n url.searchParams.set(\"limit\", limit.toString());\n url.searchParams.set(\"offset\", (pageParam as number).toString());\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: { \"Content-type\": \"application/json\" },\n });\n return (await response.json()) as HiveEngineTransaction[];\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { HiveEngineMetric } from \"../types\";\n\nexport function getHiveEngineTokensMetricsQueryOptions(\n symbol: string,\n interval = \"daily\"\n) {\n return queryOptions({\n queryKey: [\"assets\", \"hive-engine\", symbol],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const url = new URL(\n `${CONFIG.privateApiHost}/private-api/engine-chart-api`\n );\n url.searchParams.set(\"symbol\", symbol);\n url.searchParams.set(\"interval\", interval);\n\n const response = await fetch(url, {\n headers: { \"Content-type\": \"application/json\" },\n });\n return (await response.json()) as HiveEngineMetric[];\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\nexport interface DelegateEnginePayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n asset: string;\n type: T;\n}\n\nexport async function delegateEngineToken<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? DelegateEnginePayload<T> & { key: PrivateKey }\n : DelegateEnginePayload<T>\n) {\n const parsedAsset = parseAsset(payload.amount);\n const quantity = parsedAsset.amount.toString();\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: \"ssc-mainnet-hive\",\n required_auths: [payload.from],\n required_posting_auths: [],\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"delegate\",\n contractPayload: {\n symbol: payload.asset,\n to: payload.to,\n quantity: quantity,\n },\n }),\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n\n const op = {\n id: \"ssc-mainnet-hive\",\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"delegate\",\n contractPayload: {\n symbol: params.asset,\n to: params.to,\n quantity: quantity,\n },\n }),\n required_auths: [params.from],\n required_posting_auths: [],\n };\n\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return new Promise((resolve, reject) =>\n (window as any).hive_keychain?.requestCustomJson(\n payload.from,\n \"ssc-mainnet-hive\",\n \"Active\",\n operation[1].json,\n \"Token Delegation\",\n (resp: { success: boolean }) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n }\n )\n );\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(\n operation,\n { callback: `https://ecency.com/@${payload.from}/wallet` },\n () => {}\n );\n }\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\nexport interface UndelegateEnginePayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n asset: string;\n type: T;\n}\n\nexport async function undelegateEngineToken<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? UndelegateEnginePayload<T> & { key: PrivateKey }\n : UndelegateEnginePayload<T>\n) {\n const parsedAsset = parseAsset(payload.amount);\n const quantity = parsedAsset.amount.toString();\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: \"ssc-mainnet-hive\",\n required_auths: [payload.from],\n required_posting_auths: [],\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"undelegate\",\n contractPayload: {\n symbol: payload.asset,\n from: payload.to,\n quantity: quantity,\n },\n }),\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n\n const op = {\n id: \"ssc-mainnet-hive\",\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"undelegate\",\n contractPayload: {\n symbol: params.asset,\n from: params.to,\n quantity: quantity,\n },\n }),\n required_auths: [params.from],\n required_posting_auths: [],\n };\n\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return new Promise((resolve, reject) =>\n (window as any).hive_keychain?.requestCustomJson(\n payload.from,\n \"ssc-mainnet-hive\",\n \"Active\",\n operation[1].json,\n \"Token Undelegation\",\n (resp: { success: boolean }) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n }\n )\n );\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(\n operation,\n { callback: `https://ecency.com/@${payload.from}/wallet` },\n () => {}\n );\n }\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\nexport interface StakeEnginePayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n asset: string;\n type: T;\n}\n\nexport async function stakeEngineToken<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? StakeEnginePayload<T> & { key: PrivateKey }\n : StakeEnginePayload<T>\n) {\n const parsedAsset = parseAsset(payload.amount);\n const quantity = parsedAsset.amount.toString();\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: \"ssc-mainnet-hive\",\n required_auths: [payload.from],\n required_posting_auths: [],\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"stake\",\n contractPayload: {\n symbol: payload.asset,\n to: payload.to,\n quantity: quantity,\n },\n }),\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n\n const op = {\n id: \"ssc-mainnet-hive\",\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"stake\",\n contractPayload: {\n symbol: params.asset,\n to: params.to,\n quantity: quantity,\n },\n }),\n required_auths: [params.from],\n required_posting_auths: [],\n };\n\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return new Promise((resolve, reject) =>\n (window as any).hive_keychain?.requestCustomJson(\n payload.from,\n \"ssc-mainnet-hive\",\n \"Active\",\n operation[1].json,\n \"Token Staking\",\n (resp: { success: boolean }) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n }\n )\n );\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(\n operation,\n { callback: `https://ecency.com/@${payload.from}/wallet` },\n () => {}\n );\n }\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\nexport interface UnstakeEnginePayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n asset: string;\n type: T;\n}\n\nexport async function unstakeEngineToken<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? UnstakeEnginePayload<T> & { key: PrivateKey }\n : UnstakeEnginePayload<T>\n) {\n const parsedAsset = parseAsset(payload.amount);\n const quantity = parsedAsset.amount.toString();\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: \"ssc-mainnet-hive\",\n required_auths: [payload.from],\n required_posting_auths: [],\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"unstake\",\n contractPayload: {\n symbol: payload.asset,\n to: payload.to,\n quantity: quantity,\n },\n }),\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n\n const op = {\n id: \"ssc-mainnet-hive\",\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"unstake\",\n contractPayload: {\n symbol: params.asset,\n to: params.to,\n quantity: quantity,\n },\n }),\n required_auths: [params.from],\n required_posting_auths: [],\n };\n\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return new Promise((resolve, reject) =>\n (window as any).hive_keychain?.requestCustomJson(\n payload.from,\n \"ssc-mainnet-hive\",\n \"Active\",\n operation[1].json,\n \"Token Unstaking\",\n (resp: { success: boolean }) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n }\n )\n );\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(\n operation,\n { callback: `https://ecency.com/@${payload.from}/wallet` },\n () => {}\n );\n }\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport hs from \"hivesigner\";\nimport { HiveBasedAssetSignType } from \"../../types\";\nimport { parseAsset } from \"../../utils\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\nexport interface TransferEnginePayload<T extends HiveBasedAssetSignType> {\n from: string;\n to: string;\n amount: string;\n memo: string;\n asset: string;\n type: T;\n}\n\nexport async function transferEngineToken<T extends HiveBasedAssetSignType>(\n payload: T extends \"key\"\n ? TransferEnginePayload<T> & { key: PrivateKey }\n : TransferEnginePayload<T>\n) {\n const parsedAsset = parseAsset(payload.amount);\n const quantity = parsedAsset.amount.toString();\n\n const operation: Operation = [\n \"custom_json\",\n {\n id: \"ssc-mainnet-hive\",\n required_auths: [payload.from],\n required_posting_auths: [],\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"transfer\",\n contractPayload: {\n symbol: payload.asset,\n to: payload.to,\n quantity: quantity,\n memo: payload.memo,\n },\n }),\n },\n ];\n\n if (payload.type === \"key\" && \"key\" in payload) {\n const { key, type, ...params } = payload;\n\n const op = {\n id: \"ssc-mainnet-hive\",\n json: JSON.stringify({\n contractName: \"tokens\",\n contractAction: \"transfer\",\n contractPayload: {\n symbol: params.asset,\n to: params.to,\n quantity: quantity,\n memo: params.memo,\n },\n }),\n required_auths: [params.from],\n required_posting_auths: [],\n };\n\n return CONFIG.hiveClient.broadcast.json(op, key);\n } else if (payload.type === \"keychain\") {\n return new Promise((resolve, reject) =>\n (window as any).hive_keychain?.requestCustomJson(\n payload.from,\n \"ssc-mainnet-hive\",\n \"Active\",\n operation[1].json,\n \"Token Transfer\",\n (resp: { success: boolean }) => {\n if (!resp.success) {\n reject({ message: \"Operation cancelled\" });\n }\n\n resolve(resp);\n }\n )\n );\n } else if (payload.type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(payload.from, [operation], \"active\");\n } else {\n return hs.sendOperation(\n operation,\n { callback: `https://ecency.com/@${payload.from}/wallet` },\n () => {}\n );\n }\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { PointsResponse } from \"../types\";\n\nexport function getPointsQueryOptions(username?: string) {\n return queryOptions({\n queryKey: [\"assets\", \"points\", username],\n queryFn: async () => {\n if (!username) {\n throw new Error(\n \"[SDK][Wallets][Assets][Points][Query] – username wasn`t provided\"\n );\n }\n\n const response = await fetch(\n CONFIG.privateApiHost + \"/private-api/points\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ username }),\n }\n );\n const points = (await response.json()) satisfies PointsResponse;\n return {\n points: points.points,\n uPoints: points.unclaimed_points,\n } as const;\n },\n staleTime: 60000,\n refetchInterval: 90000,\n refetchOnMount: true,\n enabled: !!username,\n });\n}\n","import { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { getPointsQueryOptions } from \"./get-points-query-options\";\n\nexport function getPointsAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"points\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n await getQueryClient().prefetchQuery(getPointsQueryOptions(username));\n const data = getQueryClient().getQueryData(\n getPointsQueryOptions(username).queryKey\n );\n return {\n name: \"POINTS\",\n title: \"Ecency Points\",\n price: 0.002,\n accountBalance: +data?.points,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { PointTransaction, PointTransactionType } from \"../types\";\nimport { GeneralAssetTransaction } from \"../../types\";\n\nexport function getPointsAssetTransactionsQueryOptions(\n username: string | undefined,\n type?: PointTransactionType\n) {\n return queryOptions({\n queryKey: [\"assets\", \"points\", \"transactions\", username, type],\n queryFn: async () => {\n const response = await fetch(\n `${CONFIG.privateApiHost}/private-api/point-list`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n username,\n type: type ?? 0,\n }),\n }\n );\n const data = (await response.json()) as PointTransaction[];\n return data.map(({ created, type, amount, id, sender, receiver, memo }) => ({\n created: new Date(created),\n type,\n results: [\n {\n amount: parseFloat(amount),\n asset: \"POINTS\",\n },\n ],\n id,\n from: sender ?? undefined,\n to: receiver ?? undefined,\n memo: memo ?? undefined,\n })) satisfies GeneralAssetTransaction[];\n },\n });\n}\n","import { CONFIG, EcencyAnalytics, getAccessToken } from \"@ecency/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { getBoundFetch } from \"@/modules/wallets/utils\";\nimport { getPointsQueryOptions } from \"../queries\";\nimport { Points } from \"../types\";\n\nexport function useClaimPoints(\n username: string | undefined,\n onSuccess?: () => void,\n onError?: Parameters<typeof useMutation>[\"0\"][\"onError\"]\n) {\n const { mutateAsync: recordActivity } = EcencyAnalytics.useRecordActivity(\n username,\n \"points-claimed\"\n );\n const fetchApi = getBoundFetch();\n return useMutation({\n mutationFn: async () => {\n if (!username) {\n throw new Error(\n \"[SDK][Wallets][Assets][Points][Claim] – username wasn`t provided\"\n );\n }\n\n return fetchApi(CONFIG.privateApiHost + \"/private-api/points-claim\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: getAccessToken(username) }),\n });\n },\n onError,\n onSuccess: () => {\n recordActivity();\n\n CONFIG.queryClient.setQueryData<Points>(\n getPointsQueryOptions(username).queryKey,\n (data) => {\n if (!data) {\n return data;\n }\n\n return {\n points: (\n parseFloat(data.points) + parseFloat(data.uPoints)\n ).toFixed(3),\n uPoints: \"0\",\n };\n }\n );\n\n onSuccess?.();\n },\n });\n}\n","import { PrivateKey, type Operation } from \"@hiveio/dhive\";\nimport { CONFIG, Keychain } from \"@ecency/sdk\";\nimport hs from \"hivesigner\";\nimport { broadcastWithWalletHiveAuth } from \"../../utils/hive-auth\";\n\ntype PointsSignType = \"key\" | \"keychain\" | \"hivesigner\" | \"hiveauth\";\n\ninterface PointsTransferPayloadBase {\n from: string;\n to: string;\n amount: string;\n memo: string;\n type: PointsSignType;\n}\n\ntype PointsTransferPayload<T extends PointsSignType> = T extends \"key\"\n ? PointsTransferPayloadBase & { key: PrivateKey }\n : PointsTransferPayloadBase;\n\nexport async function transferPoint<T extends PointsSignType>({\n from,\n to,\n amount,\n memo,\n type,\n ...payload\n}: PointsTransferPayload<T>) {\n const op: Operation = [\n \"custom_json\",\n {\n id: \"ecency_point_transfer\",\n json: JSON.stringify({\n sender: from,\n receiver: to,\n amount: amount.replace(\"POINTS\", \"POINT\"),\n memo,\n }),\n required_auths: [from],\n required_posting_auths: [],\n },\n ];\n\n if (type === \"key\" && \"key\" in payload) {\n const { key } = payload as PointsTransferPayload<\"key\">;\n // Use hive client to broadcast custom_json with active auth\n return CONFIG.hiveClient.broadcast.sendOperations([op], key);\n }\n\n if (type === \"keychain\") {\n // Broadcast via Hive Keychain as custom_json with Active authority\n return Keychain.broadcast(from, [op], \"Active\") as Promise<unknown>;\n }\n\n if (type === \"hiveauth\") {\n return broadcastWithWalletHiveAuth(from, [op], \"active\");\n }\n\n // Default to hivesigner\n return hs.sendOperation(op, { callback: `https://ecency.com/@${from}/wallet` }, () => {});\n}\n","export enum PointTransactionType {\n CHECKIN = 10,\n LOGIN = 20,\n CHECKIN_EXTRA = 30,\n POST = 100,\n COMMENT = 110,\n VOTE = 120,\n REBLOG = 130,\n DELEGATION = 150,\n REFERRAL = 160,\n COMMUNITY = 170,\n TRANSFER_SENT = 998,\n TRANSFER_INCOMING = 999,\n MINTED = 991,\n}\n","import {\n getHiveEngineTokensBalancesQueryOptions,\n getHiveEngineTokensMetadataQueryOptions,\n} from \"@/modules/assets\";\nimport {\n HiveEngineTokenBalance,\n HiveEngineTokenMetadataResponse,\n} from \"@/modules/assets/hive-engine/types\";\nimport { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { EcencyWalletBasicTokens, EcencyWalletCurrency } from \"../enums\";\n\nfunction createFallbackTokenMetadata(symbol: string): HiveEngineTokenMetadataResponse {\n return {\n issuer: \"\",\n symbol,\n name: symbol,\n metadata: \"{}\",\n precision: 0,\n maxSupply: \"0\",\n supply: \"0\",\n circulatingSupply: \"0\",\n stakingEnabled: false,\n unstakingCooldown: 0,\n delegationEnabled: false,\n undelegationCooldown: 0,\n numberTransactions: 0,\n totalStaked: \"0\",\n };\n}\n\nasync function getLayer2TokensMetadata(username?: string) {\n if (!username) {\n return [] as HiveEngineTokenMetadataResponse[];\n }\n\n let balances: HiveEngineTokenBalance[] = [];\n\n try {\n balances = await getQueryClient().fetchQuery(\n getHiveEngineTokensBalancesQueryOptions(username)\n );\n } catch {\n balances = [];\n }\n\n const uniqueSymbols = Array.from(\n new Set(\n balances\n .map((balance) => balance.symbol)\n .filter((symbol): symbol is string => Boolean(symbol))\n )\n );\n\n if (uniqueSymbols.length === 0) {\n return [] as HiveEngineTokenMetadataResponse[];\n }\n\n let metadataList: HiveEngineTokenMetadataResponse[] = [];\n\n try {\n metadataList = await getQueryClient().fetchQuery(\n getHiveEngineTokensMetadataQueryOptions(uniqueSymbols)\n );\n } catch {\n metadataList = [];\n }\n\n const metadataBySymbol = new Map(\n metadataList.map((token) => [token.symbol, token])\n );\n\n return uniqueSymbols.map(\n (symbol) => metadataBySymbol.get(symbol) ?? createFallbackTokenMetadata(symbol)\n );\n}\n\nexport function getAllTokensListQueryOptions(username?: string) {\n return queryOptions({\n queryKey: [\"ecency-wallets\", \"all-tokens-list\", username ?? null],\n queryFn: async () => {\n return {\n basic: [\n EcencyWalletBasicTokens.Points,\n EcencyWalletBasicTokens.Hive,\n EcencyWalletBasicTokens.HivePower,\n EcencyWalletBasicTokens.HiveDollar,\n ],\n external: Object.values(EcencyWalletCurrency),\n spk: [\"SPK\", \"LARYNX\", \"LP\"],\n layer2: await getLayer2TokensMetadata(username),\n };\n },\n });\n}\n","import { AssetOperation, type GeneralAssetInfo } from \"@/modules/assets\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\n\nexport interface VisionPortfolioWalletItem {\n symbol: string;\n info: GeneralAssetInfo;\n operations: AssetOperation[];\n}\n\nexport interface VisionPortfolioResponse {\n username: string;\n currency?: string;\n wallets: VisionPortfolioWalletItem[];\n}\n\nconst ACTION_ALIAS_MAP: Record<string, AssetOperation> = {\n \"transfer-to-savings\": AssetOperation.TransferToSavings,\n \"transfer-savings\": AssetOperation.TransferToSavings,\n \"savings-transfer\": AssetOperation.TransferToSavings,\n \"withdraw-from-savings\": AssetOperation.WithdrawFromSavings,\n \"withdraw-savings\": AssetOperation.WithdrawFromSavings,\n \"savings-withdraw\": AssetOperation.WithdrawFromSavings,\n \"transfer-from-savings\": AssetOperation.WithdrawFromSavings,\n \"powerup\": AssetOperation.PowerUp,\n \"power-down\": AssetOperation.PowerDown,\n \"powerdown\": AssetOperation.PowerDown,\n \"withdraw-vesting\": AssetOperation.PowerDown,\n \"hp-delegate\": AssetOperation.Delegate,\n \"delegate-hp\": AssetOperation.Delegate,\n \"delegate-power\": AssetOperation.Delegate,\n \"delegate-vesting-shares\": AssetOperation.Delegate,\n \"undelegate-power\": AssetOperation.Undelegate,\n \"undelegate-token\": AssetOperation.Undelegate,\n \"stake-token\": AssetOperation.Stake,\n \"stake-power\": AssetOperation.Stake,\n \"unstake-token\": AssetOperation.Unstake,\n \"unstake-power\": AssetOperation.Unstake,\n \"transfer-to-vesting\": AssetOperation.PowerUp,\n \"lock-liquidity\": AssetOperation.LockLiquidity,\n \"lock-liq\": AssetOperation.LockLiquidity,\n \"gift-points\": AssetOperation.Gift,\n \"points-gift\": AssetOperation.Gift,\n \"promote-post\": AssetOperation.Promote,\n \"promote-entry\": AssetOperation.Promote,\n boost: AssetOperation.Promote,\n convert: AssetOperation.Swap,\n \"swap-token\": AssetOperation.Swap,\n \"swap_tokens\": AssetOperation.Swap,\n \"claim-points\": AssetOperation.Claim,\n \"claim-rewards\": AssetOperation.Claim,\n \"buy-points\": AssetOperation.Buy,\n \"ecency-point-transfer\": AssetOperation.Transfer,\n \"spkcc-spk-send\": AssetOperation.Transfer,\n \"withdraw-routes\": AssetOperation.WithdrawRoutes,\n \"withdrawroutes\": AssetOperation.WithdrawRoutes,\n \"claim-interest\": AssetOperation.ClaimInterest,\n};\n\nconst KNOWN_OPERATION_VALUES = new Map<string, AssetOperation>(\n Object.values(AssetOperation).map((value) => [value, value])\n);\n\nconst DERIVED_PART_KEY_MAP: Record<string, string[]> = {\n liquid: [\"liquid\", \"liquidBalance\", \"liquid_amount\", \"liquidTokens\"],\n savings: [\"savings\", \"savingsBalance\", \"savings_amount\"],\n staked: [\"staked\", \"stakedBalance\", \"staking\", \"stake\", \"power\"],\n delegated: [\"delegated\", \"delegatedBalance\", \"delegationsOut\"],\n received: [\"received\", \"receivedBalance\", \"delegationsIn\"],\n pending: [\n \"pending\",\n \"pendingRewards\",\n \"unclaimed\",\n \"unclaimedBalance\",\n \"pendingReward\",\n ],\n};\n\nconst EXTRA_DATA_PART_KEY_MAP: Record<string, string> = {\n delegated: \"outgoing_delegations\",\n outgoing: \"outgoing_delegations\",\n delegations_out: \"outgoing_delegations\",\n delegated_hive_power: \"outgoing_delegations\",\n delegated_hp: \"outgoing_delegations\",\n received: \"incoming_delegations\",\n incoming: \"incoming_delegations\",\n delegations_in: \"incoming_delegations\",\n received_hive_power: \"incoming_delegations\",\n received_hp: \"incoming_delegations\",\n powering_down: \"pending_power_down\",\n power_down: \"pending_power_down\",\n powering_down_hive_power: \"pending_power_down\",\n};\n\nfunction normalizeString(value: unknown): string | undefined {\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n }\n\n return undefined;\n}\n\nfunction normalizeNumber(value: unknown): number | undefined {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (!trimmed) {\n return undefined;\n }\n\n const direct = Number.parseFloat(trimmed);\n if (Number.isFinite(direct)) {\n return direct;\n }\n\n const sanitized = trimmed.replace(/,/g, \"\");\n const match = sanitized.match(/[-+]?\\d+(?:\\.\\d+)?/);\n if (match) {\n const parsed = Number.parseFloat(match[0]);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n }\n\n return undefined;\n}\n\nfunction normalizeApr(value: unknown): string | undefined {\n const numeric = normalizeNumber(value);\n\n if (numeric === undefined) {\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n }\n\n return undefined;\n }\n\n return numeric.toString();\n}\n\nfunction normalizeParts(\n rawParts: unknown\n): GeneralAssetInfo[\"parts\"] | undefined {\n if (Array.isArray(rawParts)) {\n const parsed = rawParts\n .map((item) => {\n if (!item || typeof item !== \"object\") {\n return undefined;\n }\n\n const name = normalizeString(\n (item as Record<string, unknown>).name ??\n (item as Record<string, unknown>).label ??\n (item as Record<string, unknown>).type ??\n (item as Record<string, unknown>).part\n );\n const balance = normalizeNumber(\n (item as Record<string, unknown>).balance ??\n (item as Record<string, unknown>).amount ??\n (item as Record<string, unknown>).value\n );\n\n if (!name || balance === undefined) {\n return undefined;\n }\n\n return { name, balance };\n })\n .filter((item): item is { name: string; balance: number } => Boolean(item));\n\n return parsed.length ? parsed : undefined;\n }\n\n if (rawParts && typeof rawParts === \"object\") {\n const parsed = Object.entries(rawParts as Record<string, unknown>)\n .map(([name, amount]) => {\n const balance = normalizeNumber(amount);\n if (!name || balance === undefined) {\n return undefined;\n }\n\n return { name, balance };\n })\n .filter((item): item is { name: string; balance: number } => Boolean(item));\n\n return parsed.length ? parsed : undefined;\n }\n\n return undefined;\n}\n\nfunction deriveParts(record: Record<string, unknown>) {\n const derived = Object.entries(DERIVED_PART_KEY_MAP)\n .map(([name, keys]) => {\n for (const key of keys) {\n const value = normalizeNumber(record[key]);\n if (value !== undefined) {\n return { name, balance: value };\n }\n }\n\n return undefined;\n })\n .filter((item): item is { name: string; balance: number } => Boolean(item));\n\n return derived.length ? derived : undefined;\n}\n\nfunction normalizePartKey(value: string) {\n return value.trim().toLowerCase().replace(/[\\s-]+/g, \"_\");\n}\n\nfunction mergeParts(\n ...sources: (GeneralAssetInfo[\"parts\"] | undefined)[]\n): GeneralAssetInfo[\"parts\"] | undefined {\n const order: string[] = [];\n const values = new Map<string, number>();\n\n for (const parts of sources) {\n if (!parts) {\n continue;\n }\n\n for (const part of parts) {\n if (!part?.name || typeof part.balance !== \"number\") {\n continue;\n }\n\n const existing = values.get(part.name);\n if (existing === undefined) {\n order.push(part.name);\n values.set(part.name, part.balance);\n } else {\n values.set(part.name, existing + part.balance);\n }\n }\n }\n\n return order.length\n ? order.map((name) => ({ name, balance: values.get(name)! }))\n : undefined;\n}\n\nfunction normalizeExtraDataParts(\n rawExtraData: unknown\n): GeneralAssetInfo[\"parts\"] | undefined {\n const items = Array.isArray(rawExtraData)\n ? rawExtraData\n : rawExtraData && typeof rawExtraData === \"object\"\n ? Object.values(rawExtraData as Record<string, unknown>)\n : [];\n\n const parts = items\n .map((item) => {\n if (!item || typeof item !== \"object\") {\n return undefined;\n }\n\n const record = item as Record<string, unknown>;\n const keyCandidate =\n normalizeString(record.dataKey) ??\n normalizeString(record.key) ??\n normalizeString(record.name);\n\n if (!keyCandidate) {\n return undefined;\n }\n\n const canonical = normalizePartKey(keyCandidate);\n const partName = EXTRA_DATA_PART_KEY_MAP[canonical];\n\n if (!partName) {\n return undefined;\n }\n\n const balance = normalizeNumber(\n record.balance ??\n record.amount ??\n record.value ??\n record.displayValue ??\n record.text\n );\n\n if (balance === undefined) {\n return undefined;\n }\n\n return { name: partName, balance: Math.abs(balance) };\n })\n .filter((part): part is { name: string; balance: number } => Boolean(part));\n\n return parts.length ? parts : undefined;\n}\n\nfunction normalizeActionKey(value: string) {\n return value.trim().toLowerCase().replace(/[\\s_]+/g, \"-\");\n}\n\nfunction mapActions(rawActions: unknown): AssetOperation[] {\n if (!rawActions) {\n return [];\n }\n\n const rawList = Array.isArray(rawActions) ? rawActions : [rawActions];\n const result: AssetOperation[] = [];\n\n for (const raw of rawList) {\n let candidate: string | undefined;\n if (typeof raw === \"string\") {\n candidate = raw;\n } else if (raw && typeof raw === \"object\") {\n const record = raw as Record<string, unknown>;\n candidate =\n normalizeString(record.code) ??\n normalizeString(record.id) ??\n normalizeString(record.name) ??\n normalizeString(record.action);\n }\n\n if (!candidate) {\n continue;\n }\n\n const canonical = normalizeActionKey(candidate);\n const operation =\n KNOWN_OPERATION_VALUES.get(canonical) ?? ACTION_ALIAS_MAP[canonical];\n\n if (operation && !result.includes(operation)) {\n result.push(operation);\n }\n }\n\n return result;\n}\n\nfunction parseToken(rawToken: unknown): VisionPortfolioWalletItem | undefined {\n if (!rawToken || typeof rawToken !== \"object\") {\n return undefined;\n }\n\n const token = rawToken as Record<string, unknown>;\n const symbol =\n normalizeString(token.symbol) ??\n normalizeString(token.asset) ??\n normalizeString(token.name);\n\n if (!symbol) {\n return undefined;\n }\n\n const normalizedSymbol = symbol.toUpperCase();\n const title =\n normalizeString(token.title) ??\n normalizeString(token.display) ??\n normalizeString(token.label) ??\n normalizeString(token.friendlyName) ??\n normalizeString(token.name) ??\n normalizedSymbol;\n const price =\n normalizeNumber(token.fiatRate) ??\n normalizeNumber(token.price) ??\n normalizeNumber(token.priceUsd) ??\n normalizeNumber(token.usdPrice) ??\n normalizeNumber((token.metrics as Record<string, unknown> | undefined)?.price) ??\n normalizeNumber(\n (token.metrics as Record<string, unknown> | undefined)?.priceUsd\n ) ??\n 0;\n const apr =\n normalizeApr(token.apr) ??\n normalizeApr(token.aprPercent) ??\n normalizeApr((token.metrics as Record<string, unknown> | undefined)?.apr) ??\n normalizeApr(\n (token.metrics as Record<string, unknown> | undefined)?.aprPercent\n );\n const baseParts =\n normalizeParts(\n token.parts ??\n token.balances ??\n token.sections ??\n token.breakdown ??\n token.accountBreakdown ??\n token.walletParts\n ) ?? deriveParts(token);\n const parts = mergeParts(\n baseParts,\n normalizeExtraDataParts(\n (token.extraData ?? token.extra_data ?? token.extra ?? token.badges) as\n | Record<string, unknown>\n | unknown[]\n | undefined\n )\n );\n const accountBalance =\n normalizeNumber(token.balance) ??\n normalizeNumber(token.accountBalance) ??\n normalizeNumber(token.totalBalance) ??\n normalizeNumber(token.total) ??\n normalizeNumber(token.amount) ??\n (baseParts\n ? baseParts.reduce((total, part) => total + (part.balance ?? 0), 0)\n : parts\n ? parts.reduce((total, part) => total + (part.balance ?? 0), 0)\n : 0);\n const layer =\n normalizeString(token.layer) ??\n normalizeString(token.chain) ??\n normalizeString(token.category) ??\n normalizeString(token.type);\n\n return {\n symbol: normalizedSymbol,\n info: {\n name: normalizedSymbol,\n title,\n price,\n accountBalance,\n apr: apr ?? undefined,\n layer: layer ?? undefined,\n parts,\n },\n operations: mapActions(\n token.actions ??\n token.available_actions ??\n token.availableActions ??\n token.operations ??\n token.supportedActions\n ),\n };\n}\n\nfunction extractTokens(payload: unknown): unknown[] {\n if (!payload || typeof payload !== \"object\") {\n return [];\n }\n\n const containers = [payload];\n const record = payload as Record<string, unknown>;\n if (record.data && typeof record.data === \"object\") {\n containers.push(record.data as Record<string, unknown>);\n }\n if (record.result && typeof record.result === \"object\") {\n containers.push(record.result as Record<string, unknown>);\n }\n if (record.portfolio && typeof record.portfolio === \"object\") {\n containers.push(record.portfolio as Record<string, unknown>);\n }\n\n for (const container of containers) {\n if (Array.isArray(container)) {\n return container;\n }\n\n if (container && typeof container === \"object\") {\n for (const key of [\n \"wallets\",\n \"tokens\",\n \"assets\",\n \"items\",\n \"portfolio\",\n \"balances\",\n ]) {\n const value = (container as Record<string, unknown>)[key];\n if (Array.isArray(value)) {\n return value;\n }\n }\n }\n }\n\n return [];\n}\n\nfunction resolveUsername(payload: unknown): string | undefined {\n if (!payload || typeof payload !== \"object\") {\n return undefined;\n }\n\n const record = payload as Record<string, unknown>;\n return (\n normalizeString(record.username) ??\n normalizeString(record.name) ??\n normalizeString(record.account)\n );\n}\n\nexport function getVisionPortfolioQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\n \"ecency-wallets\",\n \"portfolio\",\n \"v2\",\n username,\n \"only-enabled\",\n ],\n enabled: Boolean(username),\n staleTime: 60000,\n refetchInterval: 120000,\n queryFn: async (): Promise<VisionPortfolioResponse> => {\n if (!username) {\n throw new Error(\"[SDK][Wallets] – username is required\");\n }\n\n if (!CONFIG.privateApiHost) {\n throw new Error(\n \"[SDK][Wallets] – privateApiHost isn't configured for portfolio\"\n );\n }\n\n const endpoint = `${CONFIG.privateApiHost}/wallet-api/portfolio-v2`;\n const response = await fetch(endpoint, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ username, onlyEnabled: true }),\n });\n\n if (!response.ok) {\n throw new Error(\n `[SDK][Wallets] – Vision portfolio request failed(${response.status})`\n );\n }\n\n const payload = (await response.json()) as unknown;\n const tokens = extractTokens(payload)\n .map((item) => parseToken(item))\n .filter((item): item is VisionPortfolioWalletItem => Boolean(item));\n\n if (!tokens.length) {\n throw new Error(\n \"[SDK][Wallets] – Vision portfolio payload contained no tokens\"\n );\n }\n\n return {\n username: resolveUsername(payload) ?? username,\n currency: normalizeString(\n (payload as Record<string, unknown> | undefined)?.currency\n )?.toUpperCase(),\n wallets: tokens,\n };\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { EcencyWalletBasicTokens } from \"../enums\";\nimport {\n AccountProfile,\n FullAccount,\n getAccountFullQueryOptions,\n getQueryClient,\n} from \"@ecency/sdk\";\nimport { getVisionPortfolioQueryOptions } from \"./get-vision-portfolio-query-options\";\n\ntype ProfileTokens = AccountProfile[\"tokens\"];\ntype ProfileToken = NonNullable<ProfileTokens>[number];\n\nfunction normalizeAccountTokens(tokens: ProfileTokens): ProfileToken[] {\n if (Array.isArray(tokens)) {\n return tokens.filter(Boolean) as ProfileToken[];\n }\n\n if (tokens && typeof tokens === \"object\") {\n return Object.values(tokens).flatMap((value) =>\n Array.isArray(value) ? (value.filter(Boolean) as ProfileToken[]) : []\n );\n }\n\n return [];\n}\n\nconst BASIC_TOKENS: string[] = [\n EcencyWalletBasicTokens.Points,\n EcencyWalletBasicTokens.Hive,\n EcencyWalletBasicTokens.HivePower,\n EcencyWalletBasicTokens.HiveDollar,\n];\n\nexport function getAccountWalletListQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"ecency-wallets\", \"list\", username],\n enabled: !!username,\n queryFn: async () => {\n const portfolioQuery = getVisionPortfolioQueryOptions(username);\n const queryClient = getQueryClient();\n const accountQuery = getAccountFullQueryOptions(username);\n\n let account: FullAccount | undefined;\n\n try {\n account = await queryClient.fetchQuery(accountQuery);\n } catch {\n // Best effort; fall back to defaults if account metadata is not available.\n }\n\n const tokenVisibility = new Map<string, boolean>();\n\n const accountTokens = normalizeAccountTokens(account?.profile?.tokens);\n\n accountTokens.forEach((token: ProfileToken) => {\n const symbol = token.symbol?.toUpperCase?.();\n\n if (!symbol) {\n return;\n }\n\n const showValue = (token as any)?.meta?.show;\n\n if (typeof showValue === \"boolean\") {\n tokenVisibility.set(symbol, showValue);\n }\n });\n\n const isTokenVisible = (symbol?: string) => {\n const normalized = symbol?.toUpperCase();\n\n if (!normalized) {\n return false;\n }\n\n if (BASIC_TOKENS.includes(normalized)) {\n return true;\n }\n\n return tokenVisibility.get(normalized) === true;\n };\n\n try {\n const portfolio = await queryClient.fetchQuery(portfolioQuery);\n const tokensFromPortfolio = portfolio.wallets.map(\n (asset) => asset.info.name\n );\n\n if (tokensFromPortfolio.length > 0) {\n const visibleTokens = tokensFromPortfolio\n .map((token) => token?.toUpperCase?.())\n .filter((token): token is string => Boolean(token))\n .filter(isTokenVisible);\n\n if (visibleTokens.length > 0) {\n return Array.from(new Set(visibleTokens));\n }\n }\n } catch {\n // Fallback to legacy behaviour when the portfolio endpoint is not accessible.\n }\n\n if (accountTokens.length > 0) {\n const list = [\n ...BASIC_TOKENS,\n ...accountTokens\n .map((token: ProfileToken) => token.symbol)\n .filter(isTokenVisible),\n ];\n\n return Array.from(new Set(list).values());\n }\n\n return [...BASIC_TOKENS];\n },\n });\n}\n","export interface ExternalWalletBalance {\n chain: string;\n unit: string;\n raw?: unknown;\n nodeId?: string;\n /**\n * Balance represented as a BigInt for convenience.\n */\n balanceBigInt: bigint;\n /**\n * Balance returned as a string to preserve precision for UIs that cannot\n * handle bigint values directly.\n */\n balanceString: string;\n}\n\nexport interface PrivateApiBalanceResponse {\n chain: string;\n balance: number | string;\n unit: string;\n raw?: unknown;\n nodeId?: string;\n}\n\nfunction normalizeBalance(balance: number | string): string {\n if (typeof balance === \"number\") {\n if (!Number.isFinite(balance)) {\n throw new Error(\"Private API returned a non-finite numeric balance\");\n }\n\n return Math.trunc(balance).toString();\n }\n\n if (typeof balance === \"string\") {\n const trimmed = balance.trim();\n\n if (trimmed === \"\") {\n throw new Error(\"Private API returned an empty balance string\");\n }\n\n return trimmed;\n }\n\n throw new Error(\"Private API returned balance in an unexpected format\");\n}\n\nexport function parsePrivateApiBalance(\n result: PrivateApiBalanceResponse,\n expectedChain: string\n): ExternalWalletBalance {\n if (!result || typeof result !== \"object\") {\n throw new Error(\"Private API returned an unexpected response\");\n }\n\n const { chain, balance, unit, raw, nodeId } = result;\n\n if (typeof chain !== \"string\" || chain !== expectedChain) {\n throw new Error(\"Private API response chain did not match request\");\n }\n\n if (typeof unit !== \"string\" || unit.length === 0) {\n throw new Error(\"Private API response is missing unit information\");\n }\n\n if (balance === undefined || balance === null) {\n throw new Error(\"Private API response is missing balance information\");\n }\n\n const balanceString = normalizeBalance(balance);\n\n let balanceBigInt: bigint;\n\n try {\n balanceBigInt = BigInt(balanceString);\n } catch (error) {\n throw new Error(\"Private API returned a balance that is not an integer\");\n }\n\n return {\n chain,\n unit,\n raw,\n nodeId:\n typeof nodeId === \"string\" && nodeId.length > 0 ? nodeId : undefined,\n balanceBigInt,\n balanceString,\n };\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getAptAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"apt\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/apt/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"apt\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"apt\")\n .balanceString;\n }\n },\n });\n}\n","import { CONFIG, FullAccount, getAccountFullQueryOptions } from \"@ecency/sdk\";\n\nexport async function getAddressFromAccount(\n username: string,\n tokenName: string\n) {\n await CONFIG.queryClient.prefetchQuery(getAccountFullQueryOptions(username));\n const account = CONFIG.queryClient.getQueryData<FullAccount>(\n getAccountFullQueryOptions(username).queryKey\n );\n const address = account?.profile?.tokens?.find((t) => t.symbol === tokenName)\n ?.meta?.address;\n\n if (!address) {\n throw new Error(\n \"[SDK][Wallets] – cannot fetch APT balance with empty adrress\"\n );\n }\n\n return address;\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getAptAssetBalanceQueryOptions } from \"./get-apt-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getAptAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"apt\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"APT\");\n\n await CONFIG.queryClient.fetchQuery(\n getAptAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getAptAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e8;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"APT\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"APT\").queryKey\n ) ?? 0;\n\n return {\n name: \"APT\",\n title: \"Aptos\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getBnbAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"bnb\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/bnb/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"bnb\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"bnb\")\n .balanceString;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getBnbAssetBalanceQueryOptions } from \"./get-bnb-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getBnbAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"bnb\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"BNB\");\n\n await CONFIG.queryClient.fetchQuery(\n getBnbAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getBnbAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e18;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"BNB\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"BNB\").queryKey\n ) ?? 0;\n\n return {\n name: \"BNB\",\n title: \"Binance coin\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getBtcAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"btc\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/btc/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"btc\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"btc\")\n .balanceString;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getBtcAssetBalanceQueryOptions } from \"./get-btc-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getBtcAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"btc\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"BTC\");\n\n await CONFIG.queryClient.fetchQuery(\n getBtcAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getBtcAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e8;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"BTC\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"BTC\").queryKey\n ) ?? 0;\n\n return {\n name: \"BTC\",\n title: \"Bitcoin\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getEthAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"eth\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/eth/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"eth\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"eth\")\n .balanceString;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getEthAssetBalanceQueryOptions } from \"./get-eth-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getEthAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"eth\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"ETH\");\n\n await CONFIG.queryClient.fetchQuery(\n getEthAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getEthAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e18;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"ETH\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"ETH\").queryKey\n ) ?? 0;\n\n return {\n name: \"ETH\",\n title: \"Ethereum\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getSolAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"sol\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/sol/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"sol\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"sol\")\n .balanceString;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getSolAssetBalanceQueryOptions } from \"./get-sol-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getSolAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"sol\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"SOL\");\n\n await CONFIG.queryClient.fetchQuery(\n getSolAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getSolAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e9;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"SOL\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"SOL\").queryKey\n ) ?? 0;\n\n return {\n name: \"SOL\",\n title: \"Solana\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getTonAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"ton\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/ton/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"ton\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"ton\")\n .balanceString;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getTonAssetBalanceQueryOptions } from \"./get-ton-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getTonAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"ton\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"TON\");\n\n await CONFIG.queryClient.fetchQuery(\n getTonAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getTonAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e9;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"TON\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"TON\").queryKey\n ) ?? 0;\n\n return {\n name: \"TON\",\n title: \"The open network\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { parsePrivateApiBalance } from \"../common/parse-private-api-balance\";\n\nexport function getTronAssetBalanceQueryOptions(address: string) {\n return queryOptions({\n queryKey: [\"assets\", \"tron\", \"balance\", address],\n queryFn: async () => {\n const baseUrl = `${CONFIG.privateApiHost}/private-api/balance/tron/${encodeURIComponent(\n address\n )}`;\n\n try {\n const response = await fetch(baseUrl);\n if (!response.ok) {\n throw new Error(`[SDK][Wallets] – request failed(${baseUrl})`);\n }\n return +parsePrivateApiBalance(await response.json(), \"tron\")\n .balanceString;\n } catch (error) {\n console.error(error);\n\n const response = await fetch(`${baseUrl}?provider=chainz`);\n return +parsePrivateApiBalance(await response.json(), \"tron\")\n .balanceString;\n }\n },\n });\n}\n","import { queryOptions } from \"@tanstack/react-query\";\nimport { GeneralAssetInfo } from \"../../types\";\nimport { CONFIG } from \"@ecency/sdk\";\nimport { getTronAssetBalanceQueryOptions } from \"./get-tron-asset-balance-query-options\";\nimport { getTokenPriceQueryOptions } from \"@/modules/wallets\";\nimport { getAddressFromAccount } from \"../common\";\n\nexport function getTronAssetGeneralInfoQueryOptions(username: string) {\n return queryOptions({\n queryKey: [\"assets\", \"tron\", \"general-info\", username],\n staleTime: 60000,\n refetchInterval: 90000,\n queryFn: async () => {\n const address = await getAddressFromAccount(username, \"TRX\");\n await CONFIG.queryClient.fetchQuery(\n getTronAssetBalanceQueryOptions(address)\n );\n const accountBalance =\n (CONFIG.queryClient.getQueryData<number>(\n getTronAssetBalanceQueryOptions(address).queryKey\n ) ?? 0) / 1e6;\n\n await CONFIG.queryClient.prefetchQuery(\n getTokenPriceQueryOptions(\"TRX\")\n );\n const price =\n CONFIG.queryClient.getQueryData<number>(\n getTokenPriceQueryOptions(\"TRX\").queryKey\n ) ?? 0;\n\n return {\n name: \"TRX\",\n title: \"Tron\",\n price,\n accountBalance,\n } satisfies GeneralAssetInfo;\n },\n });\n}\n","import {\n GeneralAssetInfo,\n getHbdAssetGeneralInfoQueryOptions,\n getHiveAssetGeneralInfoQueryOptions,\n getHiveEngineTokenGeneralInfoQueryOptions,\n getHiveEngineTokensBalancesQueryOptions,\n getHivePowerAssetGeneralInfoQueryOptions,\n getLarynxAssetGeneralInfoQueryOptions,\n getLarynxPowerAssetGeneralInfoQueryOptions,\n getPointsAssetGeneralInfoQueryOptions,\n getSpkAssetGeneralInfoQueryOptions,\n} from \"@/modules/assets\";\nimport { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport {\n getAptAssetGeneralInfoQueryOptions,\n getBnbAssetGeneralInfoQueryOptions,\n getBtcAssetGeneralInfoQueryOptions,\n getEthAssetGeneralInfoQueryOptions,\n getSolAssetGeneralInfoQueryOptions,\n getTonAssetGeneralInfoQueryOptions,\n getTronAssetGeneralInfoQueryOptions,\n} from \"@/modules/assets/external\";\nimport { getVisionPortfolioQueryOptions } from \"./get-vision-portfolio-query-options\";\n\ninterface Options {\n refetch: boolean;\n}\n\nexport function getAccountWalletAssetInfoQueryOptions(\n username: string,\n asset: string,\n options: Options = { refetch: false }\n) {\n // Helper function to handle both prefetch and refetch cases\n const queryClient = getQueryClient();\n const fetchQuery = async (queryOptions: any) => {\n if (options.refetch) {\n await queryClient.fetchQuery(queryOptions);\n } else {\n await queryClient.prefetchQuery(queryOptions);\n }\n return queryClient.getQueryData<GeneralAssetInfo>(queryOptions.queryKey);\n };\n const portfolioQuery = getVisionPortfolioQueryOptions(username);\n const getPortfolioAssetInfo = async () => {\n try {\n const portfolio = await queryClient.fetchQuery(portfolioQuery);\n const assetInfo = portfolio.wallets.find(\n (assetItem) => assetItem.info.name === asset.toUpperCase()\n );\n\n return assetInfo?.info;\n } catch {\n return undefined;\n }\n };\n\n return queryOptions({\n queryKey: [\"ecency-wallets\", \"asset-info\", username, asset],\n queryFn: async () => {\n const portfolioAssetInfo = await getPortfolioAssetInfo();\n\n if (portfolioAssetInfo) {\n return portfolioAssetInfo;\n }\n\n if (asset === \"HIVE\") {\n return fetchQuery(getHiveAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"HP\") {\n return fetchQuery(getHivePowerAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"HBD\") {\n return fetchQuery(getHbdAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"SPK\") {\n return fetchQuery(getSpkAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"LARYNX\") {\n return fetchQuery(getLarynxAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"LP\") {\n return fetchQuery(getLarynxPowerAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"POINTS\") {\n return fetchQuery(getPointsAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"APT\") {\n return fetchQuery(getAptAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"BNB\") {\n return fetchQuery(getBnbAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"BTC\") {\n return fetchQuery(getBtcAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"ETH\") {\n return fetchQuery(getEthAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"SOL\") {\n return fetchQuery(getSolAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"TON\") {\n return fetchQuery(getTonAssetGeneralInfoQueryOptions(username));\n } else if (asset === \"TRX\") {\n return fetchQuery(getTronAssetGeneralInfoQueryOptions(username));\n }\n\n const balances = await queryClient.ensureQueryData(\n getHiveEngineTokensBalancesQueryOptions(username)\n );\n\n if (balances.some((balance) => balance.symbol === asset)) {\n return await fetchQuery(\n getHiveEngineTokenGeneralInfoQueryOptions(username, asset)\n );\n } else {\n throw new Error(\n \"[SDK][Wallets] – has requested unrecognized asset info\"\n );\n }\n },\n });\n}\n","import { AssetOperation } from \"@/modules/assets\";\nimport { getQueryClient } from \"@ecency/sdk\";\nimport { queryOptions } from \"@tanstack/react-query\";\nimport { getVisionPortfolioQueryOptions } from \"./get-vision-portfolio-query-options\";\n\nfunction normalizePartKey(value: string) {\n return value.trim().toLowerCase().replace(/[\\s-]+/g, \"_\");\n}\n\nfunction hasNonZeroSavingsBalance(\n parts: { name: string; balance: number }[] | undefined\n) {\n return Boolean(\n parts?.some(\n (part) =>\n normalizePartKey(part.name) === \"savings\" && Number(part.balance) > 0\n )\n );\n}\n\nexport function getTokenOperationsQueryOptions(\n token: string,\n username: string,\n isForOwner = false\n) {\n return queryOptions({\n queryKey: [\"wallets\", \"token-operations\", token, username, isForOwner],\n queryFn: async () => {\n const queryClient = getQueryClient();\n const normalizedToken = token.toUpperCase();\n\n if (!username) {\n return [] as AssetOperation[];\n }\n\n try {\n const portfolio = await queryClient.fetchQuery(\n getVisionPortfolioQueryOptions(username)\n );\n const assetEntry = portfolio.wallets.find(\n (assetItem) => assetItem.info.name === normalizedToken\n );\n\n if (!assetEntry) {\n return [] as AssetOperation[];\n }\n\n const operations = assetEntry.operations ?? [];\n const isHiveOrHbd = [\"HIVE\", \"HBD\"].includes(\n assetEntry.info.name.toUpperCase()\n );\n\n if (\n isHiveOrHbd &&\n !hasNonZeroSavingsBalance(assetEntry.info.parts)\n ) {\n return operations.filter(\n (operation) => operation !== AssetOperation.WithdrawFromSavings\n );\n }\n\n return operations;\n } catch {\n return [];\n }\n },\n });\n}\n","import { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { EcencyWalletCurrency } from \"../enums\";\nimport { EcencyTokenMetadata } from \"../types\";\n\nexport function useWalletsCacheQuery(username?: string) {\n const queryClient = useQueryClient();\n const queryKey = [\"ecency-wallets\", \"wallets\", username] as const;\n\n const getCachedWallets = () =>\n queryClient.getQueryData<Map<EcencyWalletCurrency, EcencyTokenMetadata>>(queryKey);\n\n const createEmptyWalletMap = () =>\n new Map<EcencyWalletCurrency, EcencyTokenMetadata>();\n\n return useQuery<Map<EcencyWalletCurrency, EcencyTokenMetadata>>({\n queryKey,\n enabled: Boolean(username),\n initialData: () => getCachedWallets() ?? createEmptyWalletMap(),\n queryFn: async () => getCachedWallets() ?? createEmptyWalletMap(),\n staleTime: Infinity,\n });\n}\n","import { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { useSeedPhrase } from \"@/modules/wallets/queries\";\nimport { EcencyTokenMetadata } from \"@/modules/wallets/types\";\nimport { delay, getWallet } from \"@/modules/wallets/utils\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\n\nconst PATHS = {\n [EcencyWalletCurrency.BTC]: \"m/44'/0'/0'/0/0\", // Bitcoin (BIP44)\n [EcencyWalletCurrency.ETH]: \"m/44'/60'/0'/0/0\", // Ethereum (BIP44)\n [EcencyWalletCurrency.BNB]: \"m/44'/60'/0'/0/0\", // BNB Smart Chain (BIP44)\n [EcencyWalletCurrency.SOL]: \"m/44'/501'/0'/0'\", // Solana (BIP44)\n [EcencyWalletCurrency.TON]: \"m/44'/607'/0'\", // TON (BIP44)\n [EcencyWalletCurrency.TRON]: \"m/44'/195'/0'/0/0\", // Tron (BIP44)\n [EcencyWalletCurrency.APT]: \"m/44'/637'/0'/0'/0'\", // Aptos (BIP44)\n} as const;\n\n/**\n * Uses for creating wallet logically in the application\n *\n * Keep attention: this mutation doesn't save wallet to somewhere in a server\n */\nexport function useWalletCreate(\n username: string,\n currency: EcencyWalletCurrency\n) {\n const { data: mnemonic } = useSeedPhrase(username);\n const queryClient = useQueryClient();\n\n const createWallet = useMutation({\n mutationKey: [\"ecency-wallets\", \"create-wallet\", username, currency],\n mutationFn: async () => {\n if (!mnemonic) {\n throw new Error(\"[Ecency][Wallets] - No seed to create a wallet\");\n }\n\n const wallet = getWallet(currency);\n const privateKey = await wallet?.getDerivedPrivateKey({\n mnemonic,\n hdPath: PATHS[currency],\n });\n await delay(1000);\n const address = (await wallet?.getNewAddress({\n privateKey,\n })) as { address: string; publicKey: string };\n return {\n privateKey,\n address: address.address,\n publicKey: address.publicKey,\n username,\n currency,\n } as EcencyTokenMetadata;\n },\n onSuccess: (info) => {\n queryClient.setQueryData<Map<EcencyWalletCurrency, EcencyTokenMetadata>>(\n [\"ecency-wallets\", \"wallets\", info.username],\n (data) =>\n new Map(data ? Array.from(data.entries()) : []).set(\n info.currency as EcencyWalletCurrency,\n info\n )\n );\n },\n });\n const importWallet = () => {};\n\n return {\n createWallet,\n importWallet,\n };\n}\n","export * from \"./create-account-with-wallets\";\nexport * from \"./check-wallet-existence\";\nexport * from \"./update-account-with-wallets\";\n","import { CONFIG } from \"@ecency/sdk\";\nimport { useHiveKeysQuery, useWalletsCacheQuery } from \"@/modules/wallets/queries\";\nimport { getBoundFetch } from \"@/modules/wallets/utils\";\nimport { useMutation } from \"@tanstack/react-query\";\n\ninterface Payload {\n currency: string;\n address: string;\n}\n\nexport function useCreateAccountWithWallets(username: string) {\n const { data } = useWalletsCacheQuery(username);\n const { data: hiveKeys } = useHiveKeysQuery(username);\n\n const fetchApi = getBoundFetch();\n\n return useMutation({\n mutationKey: [\"ecency-wallets\", \"create-account-with-wallets\", username],\n mutationFn: ({ currency, address }: Payload) =>\n fetchApi(CONFIG.privateApiHost + \"/private-api/wallets-add\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n username,\n token: currency,\n address,\n meta: {\n ownerPublicKey: hiveKeys?.ownerPubkey,\n activePublicKey: hiveKeys?.activePubkey,\n postingPublicKey: hiveKeys?.postingPubkey,\n memoPublicKey: hiveKeys?.memoPubkey,\n\n ...Array.from(data?.entries() ?? []).reduce(\n (acc, [curr, info]) => ({\n ...acc,\n [curr]: info.address,\n }),\n {}\n ),\n },\n }),\n }),\n });\n}\n","import { CONFIG } from \"@ecency/sdk\";\nimport { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { useMutation } from \"@tanstack/react-query\";\n\ninterface Payload {\n address: string;\n currency: EcencyWalletCurrency;\n}\n\nexport function useCheckWalletExistence() {\n return useMutation({\n mutationKey: [\"ecency-wallets\", \"check-wallet-existence\"],\n mutationFn: async ({ address, currency }: Payload) => {\n const response = await fetch(\n CONFIG.privateApiHost + \"/private-api/wallets-exist\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n address,\n token: currency,\n }),\n }\n );\n const data = await response.json();\n return data.length === 0;\n },\n });\n}\n","import { CONFIG, getAccessToken } from \"@ecency/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { getBoundFetch } from \"@/modules/wallets/utils\";\n\ninterface Payload {\n tokens: Record<string, string>;\n hiveKeys: {\n ownerPublicKey: string;\n activePublicKey: string;\n postingPublicKey: string;\n memoPublicKey: string;\n };\n}\n\nexport function useUpdateAccountWithWallets(username: string) {\n const fetchApi = getBoundFetch();\n\n return useMutation({\n mutationKey: [\"ecency-wallets\", \"create-account-with-wallets\", username],\n mutationFn: async ({ tokens, hiveKeys }: Payload) => {\n const entries = Object.entries(tokens).filter(([, address]) => Boolean(address));\n\n if (entries.length === 0) {\n return new Response(null, { status: 204 });\n }\n\n const [primaryToken, primaryAddress] = entries[0] ?? [\"\", \"\"];\n\n return fetchApi(CONFIG.privateApiHost + \"/private-api/wallets-add\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n username,\n code: getAccessToken(username),\n token: primaryToken,\n address: primaryAddress,\n status: 3,\n meta: {\n ...Object.fromEntries(entries),\n ownerPublicKey: hiveKeys.ownerPublicKey,\n activePublicKey: hiveKeys.activePublicKey,\n postingPublicKey: hiveKeys.postingPublicKey,\n memoPublicKey: hiveKeys.memoPublicKey,\n },\n }),\n });\n },\n });\n}\n","import { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { BaseWallet } from \"@okxweb3/coin-base\";\n\n/**\n * These HD paths covers popular wallets like Trust, Meta, Ledger, Trezor\n * Supports also XVerse\n */\nconst HD_PATHS: Record<EcencyWalletCurrency, string[]> = {\n [EcencyWalletCurrency.BTC]: [\"m/84'/0'/0'/0/0\"],\n [EcencyWalletCurrency.ETH]: [\"m/84'/60'/0'/0/0\"], // its not working for Trust, Exodus, todo: check others below\n [EcencyWalletCurrency.BNB]: [\"m/84'/60'/0'/0/0\"],\n [EcencyWalletCurrency.SOL]: [\"m/84'/501'/0'/0/0\"],\n [EcencyWalletCurrency.TRON]: [\"m/44'/195'/0'/0'/0'\"],\n [EcencyWalletCurrency.APT]: [\"m/84'/637'/0'/0/0\"],\n [EcencyWalletCurrency.TON]: [\"m/44'/607'/0'\"],\n};\n\nexport async function getKeysFromSeed(\n mnemonic: string,\n wallet: BaseWallet,\n currency: EcencyWalletCurrency\n) {\n for (const hdPath of HD_PATHS[currency] || []) {\n try {\n const derivedPrivateKey = await wallet.getDerivedPrivateKey({\n mnemonic,\n hdPath,\n });\n\n const derivedPublicKey = await wallet.getNewAddress({\n privateKey: derivedPrivateKey,\n addressType:\n currency === EcencyWalletCurrency.BTC ? \"segwit_native\" : undefined,\n });\n\n return [derivedPrivateKey.toString(), derivedPublicKey.address] as const;\n } catch (error) {\n return [];\n }\n }\n return [];\n}\n","import { EcencyWalletCurrency } from \"@/modules/wallets/enums\";\nimport { getKeysFromSeed } from \"@/modules/wallets/functions\";\nimport { EcencyTokenMetadata } from \"@/modules/wallets/types\";\nimport { getWallet } from \"@/modules/wallets/utils\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { EcencyWalletsPrivateApi } from \"./private-api-namespace\";\n\ninterface Payload {\n privateKeyOrSeed: string;\n}\n\n/**\n * This mutation uses for importing an existing wallet, validation and saving logically in application\n *\n * Keep attention: this mutation doesn't save wallet to somewhere in a server\n */\nexport function useImportWallet(\n username: string,\n currency: EcencyWalletCurrency\n) {\n const queryClient = useQueryClient();\n const { mutateAsync: checkWalletExistence } =\n EcencyWalletsPrivateApi.useCheckWalletExistence();\n\n return useMutation({\n mutationKey: [\"ecency-wallets\", \"import-wallet\", username, currency],\n mutationFn: async ({ privateKeyOrSeed }: Payload) => {\n const wallet = getWallet(currency);\n\n if (!wallet) {\n throw new Error(\"Cannot find token for this currency\");\n }\n\n const isSeed = privateKeyOrSeed.split(\" \").length === 12;\n let address;\n let privateKey = privateKeyOrSeed;\n\n if (isSeed) {\n [privateKey, address] = await getKeysFromSeed(\n privateKeyOrSeed,\n wallet,\n currency\n );\n } else {\n address = (\n await wallet.getNewAddress({\n privateKey: privateKeyOrSeed,\n })\n ).address;\n }\n\n if (!address || !privateKeyOrSeed) {\n throw new Error(\n \"Private key/seed phrase isn't matching with public key or token\"\n );\n }\n\n // Check wallet for existence in an Ecency's private API\n const hasChecked = await checkWalletExistence({\n address,\n currency,\n });\n if (!hasChecked) {\n throw new Error(\n \"This wallet has already in use by Hive account. Please, try another one\"\n );\n }\n\n return {\n privateKey,\n address,\n publicKey: \"\",\n };\n },\n onSuccess: ({ privateKey, publicKey, address }) => {\n queryClient.setQueryData<Map<EcencyWalletCurrency, EcencyTokenMetadata>>(\n [\"ecency-wallets\", \"wallets\", username],\n (data) =>\n new Map(data ? Array.from(data.entries()) : []).set(currency, {\n privateKey,\n publicKey,\n address,\n username,\n currency,\n type: \"CHAIN\",\n custom: true,\n })\n );\n },\n });\n}\n","import {\n AccountProfile,\n getAccountFullQueryOptions,\n useAccountUpdate,\n} from \"@ecency/sdk\";\nimport {\n useMutation,\n useQuery,\n useQueryClient,\n type UseMutationOptions,\n} from \"@tanstack/react-query\";\nimport { EcencyTokenMetadata } from \"../types\";\nimport * as R from \"remeda\";\nimport { getAccountWalletListQueryOptions } from \"../queries\";\nimport { EcencyWalletCurrency } from \"../enums\";\n\nfunction getGroupedChainTokens(\n tokens?: AccountProfile[\"tokens\"],\n defaultShow?: boolean\n) {\n if (!tokens) {\n return {};\n }\n\n return R.pipe(\n tokens,\n R.filter(\n ({ type, symbol }) =>\n type === \"CHAIN\" ||\n Object.values(EcencyWalletCurrency).includes(symbol as any)\n ),\n R.map((item) => {\n const meta = {\n ...(item.meta ?? {}),\n } as Record<string, unknown>;\n\n if (typeof meta.show !== \"boolean\" && typeof defaultShow === \"boolean\") {\n meta.show = defaultShow;\n }\n\n return {\n ...item,\n meta,\n };\n }),\n // Chain tokens are unique by symbol, so indexing by symbol\n // gives a direct lookup map instead of an array-based grouping.\n R.indexBy(\n (item: NonNullable<AccountProfile[\"tokens\"]>[number]) => item.symbol\n )\n );\n}\n\n/**\n * Saving of token(s) metadata to Hive profile\n * It may contain: external wallets(see EcencyWalletCurrency), Hive tokens arrangement\n *\n * Basically, this mutation is a convenient wrapper for update profile operation\n */\ntype SaveWalletInformationOptions = Pick<\n UseMutationOptions<unknown, Error, EcencyTokenMetadata[]>,\n \"onSuccess\" | \"onError\"\n>;\n\nexport function useSaveWalletInformationToMetadata(\n username: string,\n options?: SaveWalletInformationOptions\n) {\n const queryClient = useQueryClient();\n\n const { data: accountData } = useQuery(getAccountFullQueryOptions(username));\n const { mutateAsync: updateProfile } = useAccountUpdate(username);\n\n return useMutation({\n mutationKey: [\n \"ecency-wallets\",\n \"save-wallet-to-metadata\",\n accountData?.name,\n ],\n mutationFn: async (tokens: EcencyTokenMetadata[]) => {\n if (!accountData) {\n throw new Error(\"[SDK][Wallets] – no account data to save wallets\");\n }\n\n // Chain type tokens couldn't be deleted entirely from the profile list,\n // then visibility should be controlling using meta.show field\n const profileChainTokens = getGroupedChainTokens(\n accountData.profile?.tokens\n );\n\n const payloadTokens =\n (tokens.map(({ currency, type, privateKey, username, ...meta }) => ({\n symbol: currency!,\n type:\n type ??\n (Object.values(EcencyWalletCurrency).includes(currency as any)\n ? \"CHAIN\"\n : undefined),\n meta,\n })) as AccountProfile[\"tokens\"]) ?? [];\n\n const payloadChainTokens = getGroupedChainTokens(payloadTokens, true);\n const payloadNonChainTokens = payloadTokens.filter(\n ({ type, symbol }) =>\n type !== \"CHAIN\" &&\n !Object.values(EcencyWalletCurrency).includes(symbol as any)\n );\n\n const mergedChainTokens = R.pipe(\n profileChainTokens,\n R.mergeDeep(payloadChainTokens),\n R.values()\n );\n\n return updateProfile({\n tokens: [\n ...payloadNonChainTokens,\n ...mergedChainTokens,\n ] as AccountProfile[\"tokens\"],\n });\n },\n onError: options?.onError,\n onSuccess: (response, vars, context) => {\n (\n options?.onSuccess as\n | ((\n data: unknown,\n variables: EcencyTokenMetadata[],\n context: unknown\n ) => unknown)\n | undefined\n )?.(response, vars, context);\n queryClient.invalidateQueries({\n queryKey: getAccountWalletListQueryOptions(username).queryKey,\n });\n },\n });\n}\n","import {\n AssetOperation,\n delegateEngineToken,\n delegateHive,\n getHiveEngineTokensBalancesQueryOptions,\n HiveEngineTokenBalance,\n lockLarynx,\n powerDownHive,\n powerUpHive,\n stakeEngineToken,\n transferEngineToken,\n transferHive,\n transferPoint,\n transferSpk,\n transferToSavingsHive,\n transferFromSavingsHive,\n undelegateEngineToken,\n unstakeEngineToken,\n withdrawVestingRouteHive,\n powerUpLarynx,\n transferLarynx,\n claimInterestHive,\n} from \"@/modules/assets\";\nimport { EcencyAnalytics, getQueryClient } from \"@ecency/sdk\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { getAccountWalletAssetInfoQueryOptions } from \"../queries\";\n\nconst operationToFunctionMap: Record<\n string,\n Partial<Record<AssetOperation, any>>\n> = {\n HIVE: {\n [AssetOperation.Transfer]: transferHive,\n [AssetOperation.TransferToSavings]: transferToSavingsHive,\n [AssetOperation.WithdrawFromSavings]: transferFromSavingsHive,\n [AssetOperation.PowerUp]: powerUpHive,\n },\n HBD: {\n [AssetOperation.Transfer]: transferHive,\n [AssetOperation.TransferToSavings]: transferToSavingsHive,\n [AssetOperation.WithdrawFromSavings]: transferFromSavingsHive,\n [AssetOperation.ClaimInterest]: claimInterestHive,\n },\n HP: {\n [AssetOperation.PowerDown]: powerDownHive,\n [AssetOperation.Delegate]: delegateHive,\n [AssetOperation.WithdrawRoutes]: withdrawVestingRouteHive,\n },\n POINTS: {\n [AssetOperation.Transfer]: transferPoint,\n [AssetOperation.Gift]: transferPoint,\n },\n SPK: {\n [AssetOperation.Transfer]: transferSpk,\n },\n LARYNX: {\n [AssetOperation.Transfer]: transferLarynx,\n [AssetOperation.LockLiquidity]: lockLarynx,\n [AssetOperation.PowerUp]: powerUpLarynx,\n },\n};\n\nconst engineOperationToFunctionMap: Partial<Record<AssetOperation, any>> = {\n [AssetOperation.Transfer]: transferEngineToken,\n [AssetOperation.Stake]: stakeEngineToken,\n [AssetOperation.Unstake]: unstakeEngineToken,\n [AssetOperation.Delegate]: delegateEngineToken,\n [AssetOperation.Undelegate]: undelegateEngineToken,\n};\n\nexport function useWalletOperation(\n username: string,\n asset: string,\n operation: AssetOperation\n) {\n const { mutateAsync: recordActivity } = EcencyAnalytics.useRecordActivity(\n username,\n operation as any\n );\n\n return useMutation({\n mutationKey: [\"ecency-wallets\", asset, operation],\n mutationFn: async (payload: Record<string, unknown>) => {\n const operationFn = operationToFunctionMap[asset]?.[operation];\n if (operationFn) {\n return operationFn(payload);\n }\n\n // Handle Hive engine ops\n const balancesListQuery =\n getHiveEngineTokensBalancesQueryOptions(username);\n await getQueryClient().prefetchQuery(balancesListQuery);\n const balances = getQueryClient().getQueryData<HiveEngineTokenBalance[]>(\n balancesListQuery.queryKey\n );\n\n if (balances?.some((b) => b.symbol === asset)) {\n const operationFn = engineOperationToFunctionMap[operation];\n if (operationFn) {\n return operationFn({ ...payload, asset });\n }\n }\n\n throw new Error(\"[SDK][Wallets] – no operation for given asset\");\n },\n onSuccess: () => {\n recordActivity();\n\n const assetsToRefresh = new Set<string>([asset]);\n\n if (asset === \"HIVE\") {\n assetsToRefresh.add(\"HP\");\n assetsToRefresh.add(\"HIVE\");\n }\n if (asset === \"HBD\") {\n assetsToRefresh.add(\"HBD\");\n }\n\n if (asset === \"LARYNX\" && operation === AssetOperation.PowerUp) {\n assetsToRefresh.add(\"LP\");\n assetsToRefresh.add(\"LARYNX\");\n }\n\n assetsToRefresh.forEach((symbol) => {\n const query = getAccountWalletAssetInfoQueryOptions(username, symbol, {\n refetch: true,\n });\n\n // Give some time to blockchain\n setTimeout(\n () =>\n getQueryClient().invalidateQueries({\n queryKey: query.queryKey,\n }),\n 5000\n );\n });\n },\n });\n}\n","import { rememberScryptBsvVersion } from \"./internal/scrypt-guard\";\n\nrememberScryptBsvVersion();\n\nexport * from \"./modules/wallets\";\nexport * from \"./modules/assets\";\n"]}
|