mirror of
https://github.com/logos-storage/nim-ethers.git
synced 2026-01-02 13:43:06 +00:00
Converts specific errors to RpcNetworkError, which can be bubbled to applications at a higher level and retried on the network (eg with exponential backoff) until resolved or timed out.
26 lines
702 B
Nim
26 lines
702 B
Nim
import pkg/ethers
|
|
|
|
type MockSigner* = ref object of Signer
|
|
provider: Provider
|
|
address*: Address
|
|
transactions*: seq[Transaction]
|
|
|
|
func new*(_: type MockSigner, provider: Provider): MockSigner =
|
|
MockSigner(provider: provider)
|
|
|
|
method provider*(signer: MockSigner): Provider =
|
|
signer.provider
|
|
|
|
method getAddress*(
|
|
signer: MockSigner): Future[Address]
|
|
{.async: (raises:[ProviderError, SignerError, CancelledError, RpcNetworkError]).} =
|
|
|
|
return signer.address
|
|
|
|
method sendTransaction*(
|
|
signer: MockSigner,
|
|
transaction: Transaction): Future[TransactionResponse]
|
|
{.async: (raises:[SignerError, ProviderError, CancelledError, RpcNetworkError]).} =
|
|
|
|
signer.transactions.add(transaction)
|