swapQuote method
Request a bounds-checked swap quote (spec §2.6) — the FIRST step of the
on-ramp. DETERMINISTIC against the user's exact side; funds NEVER move. The
returned SwapQuote carries the deposit address, the min-out floor, the ZEC
side in zatoshis, and the §2.6 privacy disclosure the host MUST render.
Throws a typed SwapApiError (slippageToleranceTooHigh, quoteOutOfBounds,
destinationInvalid, providerUnavailable, swapDisabled, …) the controller
maps to an honest inline fault.
Implementation
@override
Future<SwapQuote> swapQuote({required QuoteRequest request}) async {
swapQuoteCount++;
lastSwapQuoteRequest = request;
final gate = swapQuoteGate;
if (gate != null) await gate.future;
if (swapQuoteNeverCompletes) return Completer<SwapQuote>().future;
if (swapQuoteThrows != null) throw swapQuoteThrows!;
return swapQuoteResult ?? swapQuoteFixture();
}