All on-chain data and events from HyperVIBES are indexed via TheGraph.
You can build HyperVIBES-based applications without ever having to deploy a smart contract by creating a realm and building a web3 dapp frontend.
A unique subgraph is deployed for each blockchain network HyperVIBES is on.
Examples Queries
Like all GraphQL APIs, you can use introspection to explore the schema, types, and queries available in the subgraph. Below are a few possible ways of using the subgraph:
List all realms
{
realms(orderBy: createdAtTimestamp, orderDirection: desc) {
id
name
description
token { address symbol name decimals }
createdAtTimestamp
}
}
Get infusion info for an NFT across all realms
{
nfts(where: {
collection: "0xc0877d217b1b83a3347c1703032ae1e013a8fd9f"
tokenId: "11"
}) {
tokenId
collection { address }
owner { address }
# there will be 1 Infusion entity for-each Realm this NFT is infused in
infusions {
realm { id name token { symbol } }
balance
lastClaimAtTimestamp
# all discrete infusion and claim events will be here
events {
eventType
amount
msgSender { address }
target { address }
createdAtTimestamp
}
}
}
}
Get details about a specific account (wallet / agent)
{
account(id:"0xa34c3476ae0c4863fc39e32c0e666219503bed9f") {
address
# realms this account is admin for
realmAdmins { realm { id name } }
# realms this account is an infuser for
realmInfusers { realm { id name } }
# realms this account is a claimer for
realmClaimers { realm { id name } }
# realms this account has created
createdRealms {id name}
# any accounts this account can infuse/claim on behalf of
proxiesAsProxy { realm { id name } delegator { address } }
# any accounts that can infuse/claim on behalf of this account
proxiesAsDelegator { realm { id name } proxy { address } }
# all nfts owned by this account that have been infused across all realms
ownedNFTs {
tokenId
collection { address }
infusions { realm { id name } balance }
}
# find all discrete infusions this account has executed
infusionEventsAsTarget(where:{ eventType: INFUSE }) {
amount
infusion {
realm { id name }
nft { tokenId collection {address} owner { address } }
}
}
}
}