import { BIP44_COIN_NANO, BIP44_PURPOSE, HARDENED_OFFSET } from '../constants'
import { dec } from '../convert'
import { Rpc } from '../rpc'
+import { SCHEMA } from '../rpc/schema'
import { _account } from './account'
import { _cache } from './cache'
import { _close } from './close'
'hash': input
}
const res = await node.post('block_info', data)
- if (!res || !res.ok || res.error) {
- throw new Error(`Unable to fetch block info`, res)
+ if (!res || typeof res !== 'object' || !('ok' in res) || 'error' in res) {
+ throw new Error('Unable to fetch block info', { cause: res })
}
- const { contents: { account, balance, link, previous, representative, signature } } = res
+ const blockInfo = res as Record<string, unknown> & Record<'ok', unknown>
+ if (!(blockInfo.contents != null && typeof blockInfo.contents === 'object')) {
+ throw new Error('Block info missing contents', { cause: blockInfo })
+ }
+ const contents = {} as Record<string, string>
+ for (const [k, v] of Object.entries(blockInfo.contents)) {
+ if (SCHEMA.block_info.fields.includes(k)) {
+ contents[k] = v
+ }
+ }
+ const { account, balance, link, previous, representative, signature } = contents
const block = new Block(account, balance, previous, representative).receive(link, 0)
block.signature = signature
input = block