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
type Factory @entity(immutable: false) {
# 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!
# default community fee percentage for pools
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
# stores for USD calculations
type Bundle @entity(immutable: false) {
id: ID!
# price of Matic in usd
maticPriceUSD: BigDecimal!
}
Token entity
type Token @entity(immutable: false) {
# 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
type Pool @entity(immutable: false) {
# pool address
id: ID!
# creation
createdAtTimestamp: BigInt!
# block pool was created at
createdAtBlockNumber: BigInt!
# token0
token0: Token!
# token1
token1: Token!
# plugin deploer, zero address for base pools
deployer: Bytes!
# plugin address of pool
plugin: Bytes!
# plugin config
pluginConfig: Int!
# fee amount
fee: BigInt!
# community fee percentage
communityFee: BigInt!
# in range liquidity
liquidity: BigInt!
# current price tracker
sqrtPrice: 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!
# last mint index for tracking mint operations
lastMintIndex: BigInt!
# total token 0 across all ticks
totalValueLockedToken0: BigDecimal!
# total token 1 across all ticks
totalValueLockedToken1: BigDecimal!
# fees collected in token0
feesToken0: BigDecimal!
# fees collected in token1
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(immutable: false) {
# unique identifier for pool position
id: ID!
# pool
pool: Pool!
# lower tick of position
lowerTick: Tick!
# upper tick of position
upperTick: Tick!
# owner address of the position
owner: Bytes!
# amount of liquidity in position
liquidity: BigInt!
}
Tick entity
type Tick @entity(immutable: false) {
# 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")
}
Position entity
type Position @entity(immutable: false) {
# 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!
}
PositionSnapshot entity
type PositionSnapshot @entity(immutable: true){
# <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!
}
Transaction entity
type Transaction @entity(immutable: false) {
# txn hash
id: ID!
# block txn was included in
blockNumber: BigInt!
# timestamp txn was confirmed
timestamp: BigInt!
# transaction gas limit
gasLimit: BigInt!
# transaction gas price
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
type Mint @entity(immutable: true) {
# 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
type Burn @entity(immutable: true) {
# 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
# amount 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
type Swap @entity(immutable: true) {
# 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!
# liquidity after swap
liquidity: BigInt!
# 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
type Collect @entity(immutable: true) {
# 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!
# upper tick of position
tickUpper: BigInt!
# index within the txn
logIndex: BigInt
}
Flash entity
type Flash @entity(immutable: true) {
# 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
type AlgebraDayData @entity(immutable: false) {
# 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!
}
AlgebraHourData
# Data accumulated and condensed into hour stats for all of Algebra
type AlgebraHourData @entity(immutable: false) {
# timestamp rounded to current hour by dividing by 3600
id: ID!
# timestamp rounded to current hour by dividing by 3600
date: Int!
# total hour volume in Algebra derived in terms of Matic
volumeMatic: BigDecimal!
# total hour volume in Algebra derived in terms of USD
volumeUSD: BigDecimal!
# total hour volume in Algebra derived in terms of USD untracked
volumeUSDUntracked: BigDecimal!
# fees in USD
feesUSD: BigDecimal!
# number of hour transactions
txCount: BigInt!
# tvl in terms of USD
tvlUSD: BigDecimal!
}
PoolDayData entity
# Data accumulated and condensed into day stats for each pool
type PoolDayData @entity(immutable: false) {
# 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!
# untracked volume in USD for
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
# tvl derived in USD at end of period
tvlUSD: BigDecimal!
# fees in token0 during period
feesToken0: BigDecimal!
# fees in token1 during period
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
type PoolFeeData @entity(immutable: false){
# unique identifier for fee data entry
id: ID!
# pool address
pool: String
# timestamp when fee was set
timestamp: BigInt!
# fee value in basis points
fee: BigInt!
}
PoolHourData entity
# hourly stats tracker for pool
type PoolHourData @entity(immutable: false) {
# 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
# 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!
# number of transactions during period
untrackedVolumeUSD: BigDecimal!
# number 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
type TickHourData @entity(immutable: false) {
# 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!
}
TokenDayData entity
type TokenDayData @entity(immutable: false) {
# 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
type TokenHourData @entity(immutable: false) {
# 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!
}
Plugin entity
type Plugin @entity(immutable: false) {
# plugin address
id: ID!
# pool
pool: Pool!
# fees collected by plugin in token0
collectedFeesToken0: BigDecimal!
# fees collected by plugin in token1
collectedFeesToken1: BigDecimal!
# fees collected by plugin in USD
collectedFeesUSD: BigDecimal!
}
FeeHourData entity
type FeeHourData @entity(immutable: false) {
# unique identifier for fee hour data
id: ID!
# pool address for which fee data is tracked
pool: String!
# average fee during the hour
fee: BigInt!
# number of fee changes during the hour
changesCount: BigInt!
# timestamp of the hour
timestamp: BigInt!
# minimum fee during the hour
minFee: BigInt!
# maximum fee during the hour
maxFee: BigInt!
# fee at the start of the hour
startFee: BigInt!
# fee at the end of the hour
endFee: BigInt!
}
Last updated