Subgraphs and analytics
Introduction
This section is devoted to obtaining data about an instance of the Algebra Integral protocol from the corresponding indexer (The Graph procotol subgraphs).
This page describes the entity schemas in a subgraph.
Examples of requests are given on the subpage: Examples of queries
Subgraph Schema
Factory entity
{
# factory address
id: ID!
# amount of pools created
poolCount: BigInt!
# amoutn of transactions all time
txCount: BigInt!
# total volume all time in derived USD
totalVolumeUSD: BigDecimal!
# total volume all time in derived Matic
totalVolumeMatic: BigDecimal!
# total swap fees all time in USD
totalFeesUSD: BigDecimal!
# total swap fees all time in USD
totalFeesMatic: BigDecimal!
# all volume even through less reliable USD values
untrackedVolumeUSD: BigDecimal!
# TVL derived in USD
totalValueLockedUSD: BigDecimal!
# value that will be set in the pool when the pool is created
defaultCommunityFee: BigInt!
# TVL derived in Matic
totalValueLockedMatic: BigDecimal!
# TVL derived in USD untracked
totalValueLockedUSDUntracked: BigDecimal!
# TVL derived in Matic untracked
totalValueLockedMaticUntracked: BigDecimal!
# current owner of the factory
owner: ID!
}
Bundle entity
{
id: ID!
# price of Matic in usdgr
maticPriceUSD: BigDecimal!
}
Token entity
{
# token address
id: ID!
# token symbol
symbol: String!
# token name
name: String!
# token decimals
decimals: BigInt!
# token total supply
totalSupply: BigInt!
# volume in token units
volume: BigDecimal!
# volume in derived USD
volumeUSD: BigDecimal!
# volume in USD even on pools with less reliable USD values
untrackedVolumeUSD: BigDecimal!
# fees in USD
feesUSD: BigDecimal!
# transactions across all pools that include this token
txCount: BigInt!
# number of pools containing this token
poolCount: BigInt!
# liquidity across all pools in token units
totalValueLocked: BigDecimal!
# liquidity across all pools in derived USD
totalValueLockedUSD: BigDecimal!
# TVL derived in USD untracked
totalValueLockedUSDUntracked: BigDecimal!
# derived price in Matic
derivedMatic: BigDecimal!
# pools token is in that are white listed for USD pricing
whitelistPools: [Pool!]!
# derived fields
tokenDayData: [TokenDayData!]! @derivedFrom(field: "token")
}
Pool entity
{
# pool address
id: ID!
# creation
createdAtTimestamp: BigInt!
# block pool was created at
createdAtBlockNumber: BigInt!
# token0
token0: Token!
# token1
token1: Token!
# fee amount
fee: BigInt!
communityFee: BigInt!
# in range liquidity
liquidity: BigInt!
# current price tracker
sqrtPrice: BigInt!
# tracker for global fee growth
feeGrowthGlobal0X128: BigInt!
# tracker for global fee growth
feeGrowthGlobal1X128: BigInt!
# token0 per token1
token0Price: BigDecimal!
# token1 per token0
token1Price: BigDecimal!
# current tick
tick: BigInt!
# current observation index
observationIndex: BigInt!
# all time token0 swapped
volumeToken0: BigDecimal!
# all time token1 swapped
volumeToken1: BigDecimal!
# all time USD swapped
volumeUSD: BigDecimal!
# all time USD swapped, unfiltered for unreliable USD pools
untrackedVolumeUSD: BigDecimal!
# fees in USD
feesUSD: BigDecimal!
# tick spacing
tickSpacing: BigInt!
# untracked fees in usd
untrackedFeesUSD: BigDecimal!
# all time number of transactions
txCount: BigInt!
# all time fees collected token0
collectedFeesToken0: BigDecimal!
# all time fees collected token1
collectedFeesToken1: BigDecimal!
# all time fees collected derived USD
collectedFeesUSD: BigDecimal!
# total token 0 across all ticks
totalValueLockedToken0: BigDecimal!
# total token 1 across all ticks
totalValueLockedToken1: BigDecimal!
feesToken0: BigDecimal!
feesToken1: BigDecimal!
# tvl derived Matic
totalValueLockedMatic: BigDecimal!
# tvl USD
totalValueLockedUSD: BigDecimal!
# TVL derived in USD untracked
totalValueLockedUSDUntracked: BigDecimal!
# Fields used to help derived relationship
liquidityProviderCount: BigInt! # used to detect new exchanges
# hourly snapshots of pool data
poolHourData: [PoolHourData!]! @derivedFrom(field: "pool")
# daily snapshots of pool data
poolDayData: [PoolDayData!]! @derivedFrom(field: "pool")
# derived fields
mints: [Mint!]! @derivedFrom(field: "pool")
burns: [Burn!]! @derivedFrom(field: "pool")
swaps: [Swap!]! @derivedFrom(field: "pool")
collects: [Collect!]! @derivedFrom(field: "pool")
ticks: [Tick!]! @derivedFrom(field: "pool")
}
PoolPosition entity
type PoolPosition @entity {
id: ID!
pool: Pool!
lowerTick: Tick!
upperTick: Tick!
owner: Bytes!
liquidity: BigInt!
}
Tick entity
{
"format: <pool address>#<tick index>â
id: ID!
"pool addressâ
poolAddress: String
"tick indexâ
tickIdx: BigInt!
"pointer to poolâ
pool: Pool!
"total liquidity pool has as tick lower or upperâ
liquidityGross: BigInt!
"how much liquidity changes when tick crossedâ
liquidityNet: BigInt!
"calculated price of token0 of tick within this pool - constantâ
price0: BigDecimal!
"calculated price of token1 of tick within this pool - constantâ
price1: BigDecimal!
"lifetime volume of token0 with this tick in rangeâ
volumeToken0: BigDecimal!
"lifetime volume of token1 with this tick in rangeâ
volumeToken1: BigDecimal!
"lifetime volume in derived USD with this tick in rangeâ
volumeUSD: BigDecimal!
"lifetime volume in untracked USD with this tick in rangeâ
untrackedVolumeUSD: BigDecimal!
"fees in USDâ
feesUSD: BigDecimal!
"all time collected fees in token0â
collectedFeesToken0: BigDecimal!
"all time collected fees in token1â
collectedFeesToken1: BigDecimal!
"all time collected fees in USDâ
collectedFeesUSD: BigDecimal!
"created timeâ
createdAtTimestamp: BigInt!
"created blockâ
createdAtBlockNumber: BigInt!
"Fields used to help derived relationshipâ
liquidityProviderCount: BigInt! "used to detect new exchanges
"derived fieldsâ
swaps: [Swap!]! @derivedFrom(field: "tick")
"vars needed for fee computationâ
feeGrowthOutside0X128: BigInt!
feeGrowthOutside1X128: BigInt!
}
Position entity
{
# Positions created through NonfungiblePositionManager
# NFT token id
id: ID!
# owner of the NFT
owner: Bytes!
# pool position is within
pool: Pool!
# allow indexing by tokens
token0: Token!
# allow indexing by tokens
token1: Token!
# lower tick of the position
tickLower: Tick!
# upper tick of the position
tickUpper: Tick!
# total position liquidity
liquidity: BigInt!
# amount of token 0 ever deposited to position
depositedToken0: BigDecimal!
# amount of token 1 ever deposited to position
depositedToken1: BigDecimal!
# amount of token 0 ever withdrawn from position (without fees)
withdrawnToken0: BigDecimal!
# amount of token 1 ever withdrawn from position (without fees)
withdrawnToken1: BigDecimal!
# all time collected token0 (withdrawnToken0 + collectedFeesToken0)
collectedToken0: BigDecimal!
# all time collected token1 (withdrawnToken1 + collectedFeesToken1)
collectedToken1: BigDecimal!
# all time collected fees in token0
collectedFeesToken0: BigDecimal!
# all time collected fees in token1
collectedFeesToken1: BigDecimal!
# tx in which the position was initialized
transaction: Transaction!
# vars needed for fee computation
feeGrowthInside0LastX128: BigInt!
feeGrowthInside1LastX128: BigInt!
token0Tvl : BigDecimal
token1Tvl : BigDecimal
}
PositionSnapshot entity
{
"<NFT token id>#<block number>â
id: ID!
"owner of the NFTâ
owner: Bytes!
"pool the position is withinâ
pool: Pool!
"position of which the snap was taken ofâ
position: Position!
"block in which the snap was createdâ
blockNumber: BigInt!
"timestamp of block in which the snap was createdâ
timestamp: BigInt!
"total position liquidityâ
liquidity: BigInt!
"amount of token 0 ever deposited to positionâ
depositedToken0: BigDecimal!
"amount of token 1 ever deposited to positionâ
depositedToken1: BigDecimal!
"amount of token 0 ever withdrawn from position (without fees)â
withdrawnToken0: BigDecimal!
"amount of token 1 ever withdrawn from position (without fees)â
withdrawnToken1: BigDecimal!
"all time collected fees in token0â
collectedFeesToken0: BigDecimal!
"all time collected fees in token1â
collectedFeesToken1: BigDecimal!
"tx in which the snapshot was initializedâ
transaction: Transaction!
"internal vars needed for fee computationâ
feeGrowthInside0LastX128: BigInt!
feeGrowthInside1LastX128: BigInt!
}
Transaction entity
{
"txn hashâ
id: ID!
"block txn was included inâ
blockNumber: BigInt!
"timestamp txn was confirmedâ
timestamp: BigInt!
"gas used during txn executionâ
gasLimit: BigInt!
gasPrice: BigInt!
"derived valuesâ
mints: [Mint!]! @derivedFrom(field: "transaction")
burns: [Burn!]! @derivedFrom(field: "transaction")
swaps: [Swap!]! @derivedFrom(field: "transaction")
flashed: [Flash!]! @derivedFrom(field: "transaction")
collects: [Collect!]! @derivedFrom(field: "transaction")
}
Mint entity
{
"transaction hash + "#" + index in mints Transaction arrayâ
id: ID!
"which txn the mint was included inâ
transaction: Transaction!
"time of txnâ
timestamp: BigInt!
"pool position is withinâ
pool: Pool!
"allow indexing by tokensâ
token0: Token!
"allow indexing by tokensâ
token1: Token!
"owner of position where liquidity minted toâ
owner: Bytes!
"the address that minted the liquidityâ
sender: Bytes
"txn originâ
origin: Bytes! "the EOA that initiated the txn
"amount of liquidity mintedâ
amount: BigInt!
"amount of token 0 mintedâ
amount0: BigDecimal!
"amount of token 1 mintedâ
amount1: BigDecimal!
"derived amount based on available prices of tokensâ
amountUSD: BigDecimal
"lower tick of the positionâ
tickLower: BigInt!
"upper tick of the positionâ
tickUpper: BigInt!
"order within the txnâ
logIndex: BigInt
}
Burn entity
{
"transaction hash + "#" + index in mints Transaction arrayâ
id: ID!
"txn burn was included inâ
transaction: Transaction!
"pool position is withinâ
pool: Pool!
"allow indexing by tokensâ
token0: Token!
"allow indexing by tokensâ
token1: Token!
"need this to pull recent txns for specific token or poolâ
timestamp: BigInt!
"owner of position where liquidity was burnedâ
owner: Bytes
"txn originâ
origin: Bytes! "the EOA that initiated the txn
"amouny of liquidity burnedâ
amount: BigInt!
"amount of token 0 burnedâ
amount0: BigDecimal!
"amount of token 1 burnedâ
amount1: BigDecimal!
"derived amount based on available prices of tokensâ
amountUSD: BigDecimal
"lower tick of positionâ
tickLower: BigInt!
"upper tick of positionâ
tickUpper: BigInt!
"position within the transactionsâ
logIndex: BigInt
}
Swap entity
{
"transaction hash + "#" + index in swaps Transaction arrayâ
id: ID!
"pointer to transactionâ
transaction: Transaction!
"timestamp of transactionâ
timestamp: BigInt!
"pool swap occured withinâ
pool: Pool!
"allow indexing by tokensâ
token0: Token!
"allow indexing by tokensâ
token1: Token!
"sender of the swapâ
sender: Bytes!
"recipient of the swapâ
recipient: Bytes!
"txn originâ
origin: Bytes! "the EOA that initiated the txn
"delta of token0 swappedâ
amount0: BigDecimal!
"delta of token1 swappedâ
amount1: BigDecimal!
"derived infoâ
amountUSD: BigDecimal!
"The sqrt(price) of the pool after the swap, as a Q64.96â
price: BigInt!
"the tick after the swapâ
tick: BigInt!
"index within the txnâ
logIndex: BigInt
}
Collect entity
{
"transaction hash + "#" + index in collect Transaction arrayâ
id: ID!
"pointer to txnâ
transaction: Transaction!
"timestamp of eventâ
timestamp: BigInt!
"pool collect occured withinâ
pool: Pool!
"owner of position collect was performed onâ
owner: Bytes
"amount of token0 collectedâ
amount0: BigDecimal!
"amount of token1 collectedâ
amount1: BigDecimal!
"derived amount based on available prices of tokensâ
amountUSD: BigDecimal
"lower tick of positionâ
tickLower: BigInt!
"uppper tick of positionâ
tickUpper: BigInt!
"index within the txnâ
logIndex: BigInt
}
Flash entity
{
"transaction hash + "-" + index in collect Transaction array
id: ID!
"pointer to txnâ
transaction: Transaction!
"timestamp of eventâ
timestamp: BigInt!
"pool collect occured withinâ
pool: Pool!
"sender of the flashâ
sender: Bytes!
"recipient of the flashâ
recipient: Bytes!
"amount of token0 flashedâ
amount0: BigDecimal!
"amount of token1 flashedâ
amount1: BigDecimal!
"derived amount based on available prices of tokensâ
amountUSD: BigDecimal!
"amount token0 paid for flashâ
amount0Paid: BigDecimal!
"amount token1 paid for flashâ
amount1Paid: BigDecimal!
"index within the txnâ
logIndex: BigInt
}
AlgebraDayData entity
Data accumulated and condensed into day stats for each pool
{
"timestamp rounded to current day by dividing by 86400â
id: ID!
"timestamp rounded to current day by dividing by 86400â
date: Int!
"total daily volume in Algebra derived in terms of Maticâ
volumeMatic: BigDecimal!
"total daily volume in Algebra derived in terms of USDâ
volumeUSD: BigDecimal!
"total daily volume in Algebra derived in terms of USD untrackedâ
volumeUSDUntracked: BigDecimal!
"fees in USDâ
feesUSD: BigDecimal!
"number of daily transactionsâ
txCount: BigInt!
"tvl in terms of USDâ
tvlUSD: BigDecimal!
}
PoolDayData entity
{
# timestamp rounded to current day by dividing by 86400
id: ID!
# timestamp rounded to current day by dividing by 86400
date: Int!
# pointer to pool
pool: Pool!
# in range liquidity at end of period
liquidity: BigInt!
# current price tracker at end of period
sqrtPrice: BigInt!
#
untrackedVolumeUSD: BigDecimal!
# price of token0 - derived from sqrtPrice
token0Price: BigDecimal!
# price of token1 - derived from sqrtPrice
token1Price: BigDecimal!
# current tick at end of period
tick: BigInt
# tracker for global fee growth
feeGrowthGlobal0X128: BigInt!
# tracker for global fee growth
feeGrowthGlobal1X128: BigInt!
# tvl derived in USD at end of period
tvlUSD: BigDecimal!
feesToken0: BigDecimal!
feesToken1: BigDecimal!
# volume in token0
volumeToken0: BigDecimal!
# volume in token1
volumeToken1: BigDecimal!
# volume in USD
volumeUSD: BigDecimal!
# fees in USD
feesUSD: BigDecimal!
# numebr of transactions during period
txCount: BigInt!
# opening price of token0
open: BigDecimal!
# high price of token0
high: BigDecimal!
# low price of token0
low: BigDecimal!
# close price of token0
close: BigDecimal!
}
PoolFeeData entity
{
âformat: <pool address><timestamp>â
id: ID!
âpool addressâ
pool: String
âchange timestampâ
timestamp: BigInt!
âfee amount, where 1 = 0.0001%â
fee: BigInt!
}
PoolHourData entity
{
"format: <pool address>-<timestamp>â
id: ID!
"unix timestamp for start of hourâ
periodStartUnix: Int!
"pointer to poolâ
pool: Pool!
"in range liquidity at end of periodâ
liquidity: BigInt!
"current price tracker at end of periodâ
sqrtPrice: BigInt!
"price of token0 - derived from sqrtPriceâ
token0Price: BigDecimal!
"price of token1 - derived from sqrtPriceâ
token1Price: BigDecimal!
"current tick at end of periodâ
tick: BigInt
"tracker for global fee growthâ
feeGrowthGlobal0X128: BigInt!
"tracker for global fee growthâ
feeGrowthGlobal1X128: BigInt!
"tvl derived in USD at end of periodâ
tvlUSD: BigDecimal!
"volume in token0â
volumeToken0: BigDecimal!
"volume in token1â
volumeToken1: BigDecimal!
"volume in USDâ
volumeUSD: BigDecimal!
"fees in USDâ
feesUSD: BigDecimal!
"numebr of transactions during periodâ
txCount: BigInt!
"opening price of token0â
open: BigDecimal!
"high price of token0â
high: BigDecimal!
"low price of token0â
low: BigDecimal!
"close price of token0â
close: BigDecimal!
}
TickHourData entity
{
"format: <pool address>-<tick index>-<timestamp>â
id: ID!
"unix timestamp for start of hourâ
periodStartUnix: Int!
"pointer to poolâ
pool: Pool!
"pointer to tickâ
tick: Tick!
"total liquidity pool has as tick lower or upper at end of periodâ
liquidityGross: BigInt!
"how much liquidity changes when tick crossed at end of periodâ
liquidityNet: BigInt!
"hourly volume of token0 with this tick in rangeâ
volumeToken0: BigDecimal!
"hourly volume of token1 with this tick in rangeâ
volumeToken1: BigDecimal!
"hourly volume in derived USD with this tick in rangeâ
volumeUSD: BigDecimal!
"fees in USDâ
feesUSD: BigDecimal!
}
TickDayData entity
{
"format: <pool address>-<tick index>-<timestamp>â
id: ID!
"timestamp rounded to current day by dividing by 86400â
date: Int!
"pointer to poolâ
pool: Pool!
"pointer to tickâ
tick: Tick!
"total liquidity pool has as tick lower or upper at end of periodâ
liquidityGross: BigInt!
"how much liquidity changes when tick crossed at end of periodâ
liquidityNet: BigInt!
"hourly volume of token0 with this tick in rangeâ
volumeToken0: BigDecimal!
"hourly volume of token1 with this tick in rangeâ
volumeToken1: BigDecimal!
"hourly volume in derived USD with this tick in rangeâ
volumeUSD: BigDecimal!
"fees in USDâ
feesUSD: BigDecimal!
"vars needed for fee computationâ
feeGrowthOutside0X128: BigInt!
feeGrowthOutside1X128: BigInt!
}
TokenDayData entity
{
"token address concatendated with dateâ
id: ID!
"timestamp rounded to current day by dividing by 86400â
date: Int!
"pointer to tokenâ
token: Token!
"volume in token unitsâ
volume: BigDecimal!
"volume in derived USDâ
volumeUSD: BigDecimal!
"volume in USD even on pools with less reliable USD valuesâ
untrackedVolumeUSD: BigDecimal!
"liquidity across all pools in token unitsâ
totalValueLocked: BigDecimal!
"liquidity across all pools in derived USDâ
totalValueLockedUSD: BigDecimal!
"price at end of period in USDâ
priceUSD: BigDecimal!
"fees in USDâ
feesUSD: BigDecimal!
"opening price USDâ
open: BigDecimal!
"high price USDâ
high: BigDecimal!
"low price USDâ
low: BigDecimal!
"close price USDâ
close: BigDecimal!
}
TokenHourData entity
{
"token address concatendated with dateâ
id: ID!
"unix timestamp for start of hourâ
periodStartUnix: Int!
"pointer to tokenâ
token: Token!
"volume in token unitsâ
volume: BigDecimal!
"volume in derived USDâ
volumeUSD: BigDecimal!
"volume in USD even on pools with less reliable USD valuesâ
untrackedVolumeUSD: BigDecimal!
"liquidity across all pools in token unitsâ
totalValueLocked: BigDecimal!
"liquidity across all pools in derived USDâ
totalValueLockedUSD: BigDecimal!
"price at end of period in USDâ
priceUSD: BigDecimal!
"fees in USDâ
feesUSD: BigDecimal!
"opening price USDâ
open: BigDecimal!
"high price USDâ
high: BigDecimal!
"low price USDâ
low: BigDecimal!
"close price USDâ
close: BigDecimal!
}
FeeHourData entity
{
#
id: ID!
# pointer to pool
pool: String!
# sum of all fees for hour
fee: BigInt!
# count of fees changes for hour
changesCount: BigInt!
# time
timestamp: BigInt!
# min fee for hour
minFee: BigInt!
# max fee for hour
maxFee: BigInt!
# fee at the start timestamp of hour
startFee: BigInt!
# fee at the end of hour
endFee: BigInt!
}