39 lines
1009 B
Nim
39 lines
1009 B
Nim
|
import pkg/ethers
|
||
|
import pkg/chronicles
|
||
|
import pkg/questionable
|
||
|
import pkg/questionable/results
|
||
|
|
||
|
import ../../purchasing
|
||
|
import ../marketplace
|
||
|
import ../market
|
||
|
import ../proofs
|
||
|
import ../clock
|
||
|
import ./interactions
|
||
|
|
||
|
export purchasing
|
||
|
export chronicles
|
||
|
|
||
|
type
|
||
|
ClientInteractions* = ref object of ContractInteractions
|
||
|
purchasing*: Purchasing
|
||
|
|
||
|
proc new*(_: type ClientInteractions,
|
||
|
providerUrl: string,
|
||
|
account: Address,
|
||
|
contractAddress: Address): ?!ClientInteractions =
|
||
|
|
||
|
without prepared =? prepare(providerUrl, account, contractAddress), error:
|
||
|
return failure(error)
|
||
|
|
||
|
let c = ClientInteractions.new(prepared.clock)
|
||
|
c.purchasing = Purchasing.new(prepared.market, prepared.clock)
|
||
|
return success(c)
|
||
|
|
||
|
proc start*(self: ClientInteractions) {.async.} =
|
||
|
await procCall ContractInteractions(self).start()
|
||
|
await self.purchasing.start()
|
||
|
|
||
|
proc stop*(self: ClientInteractions) {.async.} =
|
||
|
await self.purchasing.stop()
|
||
|
await procCall ContractInteractions(self).stop()
|