common.ts 911 B

12345678910111213141516171819202122232425262728
  1. import { SubstrateEvent } from '@dzlzv/hydra-common'
  2. import { EventType } from 'query-node/dist/src/modules/enums/enums'
  3. import { Event } from 'query-node/dist/src/modules/event/event.model'
  4. import { Bytes } from '@polkadot/types'
  5. export function createEvent({ blockNumber, extrinsic, index }: SubstrateEvent, type: EventType): Event {
  6. return new Event({
  7. id: `${blockNumber}-${index}`,
  8. inBlock: blockNumber,
  9. inExtrinsic: extrinsic?.hash,
  10. indexInBlock: index,
  11. type,
  12. })
  13. }
  14. type MetadataClass<T> = {
  15. deserializeBinary: (bytes: Uint8Array) => T
  16. name: string
  17. }
  18. export function deserializeMetadata<T>(metadataType: MetadataClass<T>, metadataBytes: Bytes): T | null {
  19. try {
  20. return metadataType.deserializeBinary(metadataBytes.toU8a(true))
  21. } catch (e) {
  22. console.error(`Cannot deserialize ${metadataType.name}! Provided bytes: (${metadataBytes.toHex()})`)
  23. return null
  24. }
  25. }