secured-finance-watcher-ts/subgraph-build/schema.graphql
2024-05-22 15:25:36 +05:30

159 lines
3.0 KiB
GraphQL

type Transaction @entity {
id: ID!
currency: Bytes!
maturity: BigInt!
side: Int!
executionPrice: BigInt!
user: User!
executionType: TransactionExecutionType!
futureValue: BigInt!
amount: BigInt!
feeInFV: BigInt!
averagePrice: BigDecimal!
lendingMarket: LendingMarket!
order: Order!
createdAt: BigInt!
blockNumber: BigInt!
txHash: Bytes!
}
type Order @entity {
id: ID!
orderId: BigInt!
user: User!
currency: Bytes!
side: Int!
maturity: BigInt!
inputUnitPrice: BigInt!
inputAmount: BigInt!
filledAmount: BigInt!
status: OrderStatus!
statusUpdatedAt: BigInt!
lendingMarket: LendingMarket!
isPreOrder: Boolean!
type: OrderType!
transactions: [Transaction!]! @derivedFrom(field: "order")
isCircuitBreakerTriggered: Boolean!
createdAt: BigInt!
blockNumber: BigInt!
txHash: Bytes!
}
type LendingMarket @entity {
id: ID!
currency: Bytes!
maturity: BigInt!
isActive: Boolean!
transactions: [Transaction!]! @derivedFrom(field: "lendingMarket")
orders: [Order!]! @derivedFrom(field: "lendingMarket")
volume: BigInt!
dailyVolume: [DailyVolume!]! @derivedFrom(field: "lendingMarket")
openingUnitPrice: BigInt!
lastLendUnitPrice: BigInt!
lastBorrowUnitPrice: BigInt!
offsetAmount: BigInt!
}
enum TransactionExecutionType {
Maker
Taker
}
enum OrderType {
Market
Limit
Unwind
}
enum OrderStatus {
Open
PartiallyFilled
Filled
Killed
Cancelled
}
type User @entity {
id: ID! # wallet address
createdAt: BigInt!
transactionCount: BigInt!
transactions: [Transaction!]! @derivedFrom(field: "user")
orderCount: BigInt!
orders: [Order!]! @derivedFrom(field: "user")
liquidationCount: BigInt!
liquidations: [Liquidation!]! @derivedFrom(field: "user")
transferCount: BigInt!
transfers: [Transfer!]! @derivedFrom(field: "user")
deposits: [Deposit!]! @derivedFrom(field: "user")
}
type DailyVolume @entity {
id: ID! # currency-maturity-date(yyyy-mm-dd)
currency: Bytes!
maturity: BigInt!
day: String! # dd-mm-yyyy
volume: BigInt!
timestamp: BigInt!
lendingMarket: LendingMarket!
}
type Protocol @entity {
id: ID! # 1
totalUsers: BigInt!
}
type Liquidation @entity {
id: ID!
collateralCurrency: Bytes!
debtCurrency: Bytes!
debtMaturity: BigInt!
debtAmount: BigInt!
user: User!
timestamp: BigInt!
blockNumber: BigInt!
txHash: Bytes!
}
enum TransferType {
Deposit
Withdraw
}
type Transfer @entity {
id: ID!
user: User!
currency: Bytes!
amount: BigInt!
transferType: TransferType!
timestamp: BigInt!
blockNumber: BigInt!
txHash: Bytes!
}
type Deposit @entity {
id: ID!
user: User!
currency: Bytes!
amount: BigInt!
}
type TransactionCandleStick @entity {
id: ID! # A composite ID, e.g., "currency-maturity-interval-epochTime"
interval: BigInt! # interval in seconds
currency: Bytes!
maturity: BigInt!
timestamp: BigInt! # The start time of the interval
open: BigInt!
close: BigInt!
high: BigInt!
low: BigInt!
average: BigDecimal!
volume: BigInt!
volumeInFV: BigInt!
lendingMarket: LendingMarket!
}