export { fulfillOrder } from './fulfill.js'
export { pushSchema, isFulfillmentMigrateError, FulfillmentMigrateError } from './migrate.js'
export {
  accessGrant,
  voucher,
  shipment,
  carrierWebhookEvent,
  fulfillmentSchema,
  fulfillmentDbSchema,
  type FulfillmentSchema,
  type FulfillmentDbSchema,
} from './schema.js'
export type {
  StorageAdapter,
  CarrierAdapter,
  CarrierCapabilities,
  BuyLabelArgs,
  FulfillmentPorts,
} from './seams.js'
export {
  FulfillmentValidationError,
  VoucherAlreadyRedeemedError,
  VoucherExpiredError,
  VoucherWrongVendorError,
  LabelPurchaseError,
  UnfulfillableLineError,
  DownloadNotFoundError,
  isFulfillmentValidationError,
  isVoucherAlreadyRedeemedError,
  isVoucherExpiredError,
  isVoucherWrongVendorError,
  isLabelPurchaseError,
  isUnfulfillableLineError,
  isDownloadNotFoundError,
} from './errors.js'
export {
  UUID_RE,
  assertUuid,
  assertPositiveInt,
  normalizeEmail,
  ownerKeyOf,
  VOUCHER_STATES,
  SHIPMENT_STATUSES,
  type FulfillmentKind,
  type VoucherState,
  type ShipmentStatus,
  type AccessGrant,
  type Voucher,
  type Address,
  type Shipment,
  type Label,
  type CarrierTrackResult,
  type CarrierWebhookResult,
  type FulfillmentOverall,
  type LineFulfillmentOutcome,
  type FulfillmentResult,
  type FulfillmentNotification,
  type Actor,
  type BuyerRef,
  type Order,
  type OrderLine,
  type ProductKind,
} from './types.js'
export { grantDigitalAccess, issueDownloadToken } from './digital.js'
export { decideRedemption, issueVoucher, redeemVoucher } from './voucher.js'
export type { RedeemDecision, RedeemEvent } from './voucher.js'
export {
  createShipment,
  buyShippingLabel,
  handleCarrierWebhook,
  trackShipment,
} from './physical.js'
