import { WalletInterface } from "@bsv/sdk";
import { Request } from "express";
//#region src/types.d.ts
interface PaymentReceipt {
  satoshisPaid: number;
  accepted: true;
  tx: string;
  txid: string;
}
interface PaymentRequest extends Request {
  auth?: {
    identityKey?: unknown;
  };
  payment?: PaymentReceipt;
}
/**
 * Replay claims must be atomic. Return false when the transaction ID has
 * already been claimed. Shared deployments should use a durable implementation.
 */
interface PaymentReplayStore {
  claim: (transactionId: string) => boolean | Promise<boolean>;
}
interface PaymentLogger {
  error?: (message: string, context?: Record<string, unknown>) => void;
  warn?: (message: string, context?: Record<string, unknown>) => void;
}
interface PaymentMiddlewareOptions {
  calculateRequestPrice?: (req: PaymentRequest) => number | Promise<number>;
  wallet: WalletInterface;
  replayStore?: PaymentReplayStore;
  maxPaymentHeaderBytes?: number;
  logger?: PaymentLogger;
}
interface BSVPayment {
  derivationPrefix: string;
  derivationSuffix: string;
  transaction: string;
}
//#endregion
export { BSVPayment, PaymentLogger, PaymentMiddlewareOptions, PaymentReceipt, PaymentReplayStore, PaymentRequest };
//# sourceMappingURL=types.d.mts.map