export interface AttemptRecord { /** True once a request that can change data has been sent to QuickBooks. */ writeIssued: boolean; } /** A fresh record for one attempt. Caller keeps it; it stays readable after. */ export declare function newAttemptRecord(): AttemptRecord; /** Run `fn` with `record` as the ambient attempt, including across awaits. */ export declare function withWriteTracking(record: AttemptRecord, fn: () => Promise): Promise; /** * Declare that a data-changing request is about to go out. Called *before* the * request, not after: the dangerous state is "may have been committed", which * begins the moment the bytes leave, not when a response comes back. * * A no-op outside an attempt (a direct handler call in a test, say), which is * why the retry decision reads the record it created rather than asking here. */ export declare function markWriteIssued(): void; //# sourceMappingURL=write-barrier.d.ts.map