diff --git a/ethers/providers/jsonrpc.nim b/ethers/providers/jsonrpc.nim index f213fd1..0d2c8d6 100644 --- a/ethers/providers/jsonrpc.nim +++ b/ethers/providers/jsonrpc.nim @@ -164,6 +164,18 @@ proc subscribe(provider: JsonRpcProvider, return JsonRpcSubscription(id: id, provider: provider) +proc subscribe(provider: JsonRpcProvider, + name: string, + handler: SubscriptionHandler): Future[Subscription] {.async.} = + convertError: + let client = await provider.client + doAssert client of RpcWebSocketClient, "subscriptions require websockets" + + let id = await client.eth_subscribe(name) + provider.subscriptions[id] = handler + + return JsonRpcSubscription(id: id, provider: provider) + method subscribe*(provider: JsonRpcProvider, filter: Filter, callback: LogHandler): @@ -179,7 +191,7 @@ method subscribe*(provider: JsonRpcProvider, proc handler(id, arguments: JsonNode) {.async.} = if blck =? Block.fromJson(arguments["result"]).catch: await callback(blck) - return await provider.subscribe("newHeads", Filter.none, handler) + return await provider.subscribe("newHeads", handler) method unsubscribe*(subscription: JsonRpcSubscription) {.async.} = convertError: diff --git a/ethers/providers/jsonrpc/signatures.nim b/ethers/providers/jsonrpc/signatures.nim index 1d9a88f..bcc016d 100644 --- a/ethers/providers/jsonrpc/signatures.nim +++ b/ethers/providers/jsonrpc/signatures.nim @@ -10,5 +10,6 @@ proc eth_chainId(): UInt256 proc eth_sendTransaction(transaction: Transaction): TransactionHash proc eth_getTransactionReceipt(hash: TransactionHash): ?TransactionReceipt proc eth_sign(account: Address, message: seq[byte]): seq[byte] -proc eth_subscribe(name: string, filter = Filter.none): JsonNode +proc eth_subscribe(name: string, filter: ?Filter): JsonNode +proc eth_subscribe(name: string): JsonNode proc eth_unsubscribe(id: JsonNode): bool