import { assert_eq } from "."
import { SDK, Block, Pallets } from "./../src/index"
export async function runBlockEvents() {
const sdk = await SDK.New(SDK.turingEndpoint)
const block = await Block.New(sdk.client, "0x94746ba186876d7407ee618d10cb6619befc59eeb173cacb00c14d1ff492fc58")
const blockEvents = block.events
if (blockEvents == null) throw Error()
assert_eq(blockEvents.len(), 53)
// Printout All Block Events
for (const event of blockEvents.iter()) {
console.log(
`Pallet Name: ${event.palletName()}, Pallet Index: ${event.palletIndex()}, Event Name: ${event.eventName()}, Event Index: ${event.eventIndex()}, Tx Index: ${event.txIndex()}`,
)
}
// Find Transfer event
const transferEvents = blockEvents.find(Pallets.BalancesEvents.Transfer)
assert_eq(transferEvents.length, 2)
for (const event of transferEvents) {
console.log(`From: ${event.from}, To: ${event.to}, Amount: ${event.amount.toString()}`)
}
// Find ApplicationKeyCreated event
const keyCreatedEvent = blockEvents.findFirst(Pallets.DataAvailabilityEvents.ApplicationKeyCreated)
if (keyCreatedEvent == undefined) throw Error()
console.log(`Owner: ${keyCreatedEvent.owner}, Key: ${keyCreatedEvent.keyToString()}, App Id: ${keyCreatedEvent.id}`)
// Check
assert_eq(blockEvents.find(Pallets.DataAvailabilityEvents.DataSubmitted).length, 4)
assert_eq(blockEvents.find(Pallets.DataAvailabilityEvents.ApplicationKeyCreated).length, 1)
// Events for Specific Transaction
const txIndex = 0
const txEvents = block.eventsForTransaction(txIndex)
if (txEvents == undefined) throw Error()
assert_eq(txEvents.len(), 1)
// Printout All Tx Events
for (const event of txEvents.iter()) {
console.log(
`Pallet Name: ${event.palletName()}, Pallet Index: ${event.palletIndex()}, Event Name: ${event.eventName()}, Event Index: ${event.eventIndex()}, Tx Index: ${event.txIndex()}`,
)
}
// Find ExtrinsicSuccess event
const successEvent = blockEvents.findFirst(Pallets.SystemEvents.ExtrinsicSuccess)
if (successEvent == undefined) throw Error()
console.log(`DispatchInfo Pays:`, successEvent.dispatchInfo.pays.toString())
// Check
const tx2 = block.transactions({ txIndex: txIndex })
assert_eq(tx2.length, 1)
const tx2Events = tx2[0].events()
if (tx2Events == undefined) throw Error()
assert_eq(tx2Events.len(), txEvents.len())
console.log("runBlockEvents finished correctly")
}