mirror of
https://github.com/cerc-io/watcher-ts
synced 2025-02-03 08:42:50 +00:00
8507bc8b9c
* Rename erc20 watcher folder. * Update repo URLs. * Address watcher package scaffolding.
155 lines
2.5 KiB
TypeScript
155 lines
2.5 KiB
TypeScript
import { gql } from '@apollo/client/core';
|
|
|
|
export default gql`
|
|
#
|
|
# ERC20 GQL schema
|
|
#
|
|
# See: https://eips.ethereum.org/EIPS/eip-20
|
|
# ABI: https://ethereumdev.io/abi-for-erc20-contract-on-ethereum/
|
|
#
|
|
|
|
# Types
|
|
|
|
# Support uint256 values.
|
|
scalar BigInt
|
|
|
|
# Proof for returned data. Serialized blob for now.
|
|
# Will be converted into a well defined structure later.
|
|
type Proof {
|
|
data: String!
|
|
}
|
|
|
|
# Result type, with proof, for string method return values.
|
|
type ResultString {
|
|
value: String
|
|
|
|
# Proof from state/storage trie.
|
|
proof: Proof
|
|
}
|
|
|
|
# Result type, with proof, for uint256 method return values.
|
|
type ResultUInt256 {
|
|
value: BigInt!
|
|
|
|
# Proof from state/storage trie.
|
|
proof: Proof
|
|
}
|
|
|
|
# Transfer Event
|
|
type TransferEvent {
|
|
from: String!
|
|
to: String!
|
|
value: BigInt!
|
|
}
|
|
|
|
# Approval Event
|
|
type ApprovalEvent {
|
|
owner: String!
|
|
spender: String!
|
|
value: BigInt!
|
|
}
|
|
|
|
# All possible event types fired by an ERC20 contract.
|
|
union TokenEvent = TransferEvent | ApprovalEvent
|
|
|
|
# Result type, with proof, for event return values.
|
|
type ResultEvent {
|
|
event: TokenEvent!
|
|
|
|
# Proof from receipts trie.
|
|
proof: Proof
|
|
}
|
|
|
|
# Watched event, include additional context over and above the event data.
|
|
type WatchedEvent {
|
|
blockHash: String!
|
|
token: String!
|
|
|
|
event: ResultEvent!
|
|
}
|
|
|
|
#
|
|
# Queries
|
|
#
|
|
|
|
type Query {
|
|
|
|
#
|
|
# Interface of the ERC20 standard as defined in the EIP.
|
|
# https://docs.openzeppelin.com/contracts/2.x/api/token/erc20#IERC20
|
|
#
|
|
|
|
totalSupply(
|
|
blockHash: String!
|
|
token: String!
|
|
): ResultUInt256!
|
|
|
|
balanceOf(
|
|
blockHash: String!
|
|
token: String!
|
|
|
|
owner: String!
|
|
): ResultUInt256!
|
|
|
|
allowance(
|
|
blockHash: String!
|
|
token: String!
|
|
|
|
owner: String!
|
|
spender: String!
|
|
): ResultUInt256!
|
|
|
|
#
|
|
# Optional functions from the ERC20 standard.
|
|
# https://docs.openzeppelin.com/contracts/2.x/api/token/erc20#ERC20Detailed
|
|
#
|
|
|
|
name(
|
|
blockHash: String!
|
|
token: String!
|
|
): ResultString!
|
|
|
|
symbol(
|
|
blockHash: String!
|
|
token: String!
|
|
): ResultString!
|
|
|
|
decimals(
|
|
blockHash: String!
|
|
token: String!
|
|
): ResultUInt256!
|
|
|
|
#
|
|
# Additional watcher queries.
|
|
#
|
|
|
|
# Get token events at a certain block, optionally filter by event name.
|
|
events(
|
|
blockHash: String!
|
|
token: String!
|
|
name: String
|
|
): [ResultEvent!]
|
|
}
|
|
|
|
#
|
|
# Subscriptions
|
|
#
|
|
type Subscription {
|
|
|
|
# Watch for token events (at head of chain).
|
|
onTokenEvent: WatchedEvent!
|
|
}
|
|
|
|
#
|
|
# Mutations
|
|
#
|
|
type Mutation {
|
|
|
|
# Actively watch and index data for the token.
|
|
watchToken(
|
|
token: String!
|
|
startingBlock: Int
|
|
): Boolean!
|
|
}
|
|
`;
|