0.1.4Updated 6 months ago
declare namespace Supply {

  interface Item {
    id?: number

    key: string

    name: string
    description: string

    provider: string
    reference?: string
    pool?: string

    stock_capacity: number
    stock_remaining: number
    weight: number
    monetary_value?: number

    timestamp_added: Date

    available_from_date?: Date
    available_until_date?: Date
  }

  namespace Item {

    type Unentered = Omit<Item, 'id' | 'timestamp_added' | 'stock_remaining' | 'available_from_date' | 'available_until_date'> & { stock_remaining?: number }

    interface AddResponseFailure {
      added: false
      reason: string
    }

    interface AddResponseSuccess {
      added: true
    }

    type Response = AddResponseFailure | AddResponseSuccess

    interface ArchiveResponseFailure {
      archived: false
      reason: string
    }

    interface ArchiveResponseSuccess {
      archived: true
    }

    type ArchiveResponse = ArchiveResponseFailure | ArchiveResponseSuccess
  }
}