nim-ethers/ethers/provider.nim

123 lines
3.1 KiB
Nim
Raw Normal View History

2022-01-18 13:26:41 +00:00
import ./basics
2022-01-20 11:56:18 +00:00
import ./transaction
2022-01-24 11:14:31 +00:00
import ./blocktag
2022-01-18 13:26:41 +00:00
export basics
2022-01-20 11:56:18 +00:00
export transaction
2022-01-24 11:14:31 +00:00
export blocktag
2022-01-18 13:26:41 +00:00
push: {.upraises: [].}
2022-01-18 11:10:20 +00:00
type
Provider* = ref object of RootObj
Subscription* = ref object of RootObj
Filter* = object
address*: Address
topics*: seq[Topic]
Log* = object
data*: seq[byte]
topics*: seq[Topic]
TransactionHash* = array[32, byte]
BlockHash* = array[32, byte]
TransactionStatus* = enum
Failure = 0,
Success = 1,
Invalid = 2
TransactionResponse* = object
provider*: Provider
hash*: TransactionHash
TransactionReceipt* = object
sender*: ?Address
to*: ?Address
contractAddress*: ?Address
transactionIndex*: UInt256
gasUsed*: UInt256
logsBloom*: seq[byte]
blockHash*: BlockHash
transactionHash*: TransactionHash
logs*: seq[Log]
blockNumber*: ?UInt256
cumulativeGasUsed*: UInt256
status*: TransactionStatus
ProviderEventKind* = enum
LogEvent,
NewHeadEvent
ProviderEvent* = object
case kind*: ProviderEventKind
of LogEvent:
log*: Log
of NewHeadEvent:
newHead*: NewHead
ProviderEventHandler* = proc(event: ProviderEvent) {.gcsafe, upraises:[].}
ProviderEventCallback* = (ProviderEventHandler, ProviderEventKind)
LogHandler* = proc(log: Log) {.gcsafe, upraises:[].}
2022-05-16 12:51:39 +00:00
BlockHandler* = proc(blck: Block) {.gcsafe, upraises:[].}
NewHead* = object
number*: UInt256 # block number
transactions*: seq[TransactionHash]
# NewHeadHandler* = EventHandler[NewHead]
Topic* = array[32, byte]
Block* = object
number*: UInt256
timestamp*: UInt256
hash*: array[32, byte]
2022-01-18 13:26:41 +00:00
const DEFAULT_CONFIRMATIONS* {.intdefine.} = 12
2022-01-18 13:26:41 +00:00
method getBlockNumber*(provider: Provider): Future[UInt256] {.base.} =
doAssert false, "not implemented"
2022-03-17 09:16:13 +00:00
method getBlock*(provider: Provider, tag: BlockTag): Future[?Block] {.base.} =
doAssert false, "not implemented"
2022-01-20 11:56:18 +00:00
method call*(provider: Provider,
tx: Transaction,
blockTag = BlockTag.latest): Future[seq[byte]] {.base.} =
2022-01-20 11:56:18 +00:00
doAssert false, "not implemented"
2022-01-24 11:12:52 +00:00
method getGasPrice*(provider: Provider): Future[UInt256] {.base.} =
doAssert false, "not implemented"
2022-01-24 11:14:31 +00:00
method getTransactionCount*(provider: Provider,
address: Address,
blockTag = BlockTag.latest):
Future[UInt256] {.base.} =
doAssert false, "not implemented"
2022-01-24 13:40:47 +00:00
method estimateGas*(provider: Provider,
transaction: Transaction): Future[UInt256] {.base.} =
doAssert false, "not implemented"
2022-01-24 16:29:25 +00:00
method getChainId*(provider: Provider): Future[UInt256] {.base.} =
doAssert false, "not implemented"
method subscribe*(provider: Provider,
filter: Filter,
callback: LogHandler):
Future[Subscription] {.base.} =
doAssert false, "not implemented"
2022-05-16 12:51:39 +00:00
method subscribe*(provider: Provider,
callback: BlockHandler):
Future[Subscription] {.base.} =
doAssert false, "not implemented"
method unsubscribe*(subscription: Subscription) {.base, async.} =
doAssert false, "not implemented"