import { Item, Character, SRToken, SRPriority, Spec, Signup } from "../../Types/Types"
import { Tiers } from "../../Types/Items"

export class IItemManager{
    getItems: () => Promise<Item[]>
    getItem: (name:string, tier?:Tiers) => Promise<Item | undefined>
    fetchItem: (name:string, tier?:Tiers) => Promise<Item | undefined>
    buyToken: (usertoken: string, charactername:string, itemname:string, signup:Signup) => Promise<(SRToken & Character & Item) | undefined>
    setPriority: (itemname:string, priority: any) => Promise<void>
    calculatePriorities: (itemname: string, character:Character) => Promise<number>
    deletePriority: (priority:SRPriority) => Promise<void>
    getTokens: (character:Character, tiers: Tiers[], valid:boolean) => Promise<(SRToken & Character & Item)[] | undefined>
    getToken: (character:Character, item:Item, valid?:boolean) => Promise<(SRToken & Character & Item) | undefined>
    getAllPriorities: () => Promise<(SRPriority & Spec & Item)[]>
    wipeCurrencyAndItems: () => Promise<void>
    decayTokens: (tier: Tiers, amount?:number) => Promise<void>
    decayTokensOfCharacter: (tier: Tiers, character:Character, amount?:number) => Promise<void>

    increaseReserve: (token: Character & SRToken & Item, raidid?:number) => Promise<void>
    decreaseReserve: (token: Character & SRToken & Item, raidid?:number) => Promise<void>
}