. $PSScriptRoot\base.ps1

class Remote {
    [String]$type
    [System.Collections.ArrayList]$button
    [System.Collections.ArrayList]$strip
    [System.Collections.ArrayList]$bus
    [PSCustomObject]$vban
    $command

    # Constructor
    Remote ([String]$type)
    {
        $this.type = $type
        $this.Setup()
    }

    [void] Setup() {
        if(Setup_DLL) {
            Login -TYPE $this.type

            $this.button = Buttons
            $this.strip = Strips
            $this.bus = Buses
            $this.vban = Vban
            $this.command = Special
        }
        else { Exit }
    }

    [void] Logout() {
        Logout
    }
    
    [void] Set_Multi([HashTable]$hash) {
        Param_Set_Multi -HASH $hash
    }
}

Function Get-RemoteBasic {
    return [Remote]::new('basic')
}

Function Get-RemoteBanana {
    return [Remote]::new('banana')
}

Function Get-RemotePotato {
    return [Remote]::new('potato')
}

Export-ModuleMember -Function Get-RemoteBasic, Get-RemoteBanana, Get-RemotePotato