import std/sequtils import pkg/taskpools import pkg/taskpools/flowvars import pkg/chronos import pkg/chronos/threadsync import pkg/questionable/results import ./circomcompat const CompletitionTimeout = 1.seconds # Maximum await time for completition after receiving a signal CompletitionRetryDelay = 10.millis type AsyncCircomCompat* = object params*: CircomCompatParams # Args objects are missing seq[seq[byte]] field, to avoid unnecessary data copy ProveTaskArgs = object signal: ThreadSignalPtr params: CircomCompatParams proc prove*[H]( self: AsyncCircomCompat, input: ProofInputs[H] ): Future[?!CircomProof] {.async.} = ## Generates proof using circom-compat asynchronously ## discard proc verify*[H]( self: AsyncCircomCompat, proof: CircomProof, inputs: ProofInputs[H] ): Future[?!bool] {.async.} = ## Verify a proof using a ctx ## discard