import { Raid, Signup, Character, RaidData, User, Spec } from "../../Types/Types"

export class IRaidManager{
    getRaids: () => Promise<Raid[]>
    createRaid: (raid:Raid) => Promise<Raid>
    addSignup: (signup: Signup) => Promise<Signup>
    removeSignup: (signup: Signup) => Promise<any>    
    getSignups: (raid:Raid) => Promise<(Signup & Character & Spec & User)[]>
    sign: (userToken: string, character:Character, raid:Raid, late:boolean, absent:boolean, memo?: string) => Promise<any>
    unsign: (userToken: string, character:Character, raid:Raid,) => Promise<any>
    archiveRaid: (raid:Raid) => Promise<RaidData>
    getRaidData: (raid:Raid) => Promise<RaidData>
    updateSignup: (signup: Signup) => Promise<void>
    getPastRaids: (limit: number) => Promise<RaidData[]>
    getArchiveRaid: (id:number) => Promise<RaidData>
    startRaid: (raid:Raid) => Promise<RaidData>
    adminUnsign: (character:Character, raid:Raid) => Promise<any>
    cancelRaid: (raid: Raid) => Promise<void>
    notifyRaid : (raid: Raid | { id: number }) => Promise<void>
}
