query eventsInRange($fromBlockNumber: Int!, $toBlockNumber: Int!){
    eventsInRange(fromBlockNumber: $fromBlockNumber, toBlockNumber: $toBlockNumber){
        block{
            cid
            hash
            number
            timestamp
            parentHash
        }
        tx{
            hash
            index
            from
            to
        }
        contract
        eventIndex
        event{
            ... on TransferEvent {
                from
                to
                value
            }
            ... on ApprovalEvent {
                owner
                spender
                value
            }
            ... on AuthorizationUsedEvent {
                authorizer
                nonce
            }
            ... on AdminUpdatedEvent {
                newAdmin
                oldAdmin
            }
            ... on TaxRateUpdatedEvent {
                newNumerator
                newDenominator
                oldNumerator
                oldDenominator
            }
            ... on SlotClaimedEvent {
                slot
                owner
                delegate
                newBidAmount
                oldBidAmount
                taxNumerator
                taxDenominator
            }
            ... on SlotDelegateUpdatedEvent {
                slot
                owner
                newDelegate
                oldDelegate
            }
            ... on StakeEvent {
                staker
                stakeAmount
            }
            ... on UnstakeEvent {
                staker
                unstakedAmount
            }
            ... on WithdrawEvent {
                withdrawer
                withdrawalAmount
            }
            ... on ApprovalForAllEvent {
                owner
                operator
                approved
            }
            ... on BlockProducerAddedEvent {
                producer
            }
            ... on BlockProducerRemovedEvent {
                producer
            }
            ... on BlockProducerRewardCollectorChangedEvent {
                producer
                collector
            }
            ... on RewardScheduleChangedEvent {
                dummy
            }
            ... on ClaimedEvent {
                index
                totalEarned
                account
                claimed
            }
            ... on SlashedEvent {
                account
                slashed
            }
            ... on MerkleRootUpdatedEvent {
                merkleRoot
                distributionNumber
                metadataURI
            }
            ... on AccountUpdatedEvent {
                account
                totalClaimed
                totalSlashed
            }
            ... on PermanentURIEvent {
                value
                id
            }
            ... on GovernanceChangedEvent {
                from
                to
            }
            ... on UpdateThresholdChangedEvent {
                updateThreshold
            }
            ... on RoleAdminChangedEvent {
                role
                previousAdminRole
                newAdminRole
            }
            ... on RoleGrantedEvent {
                role
                account
                sender
            }
            ... on RoleRevokedEvent {
                role
                account
                sender
            }
        }
        proof{
            data
        }
    }
}
