//go:build !windows

package rdp

import "fmt"

// FreeRDPBackend is a stub on non-Windows platforms. The real implementation
// lives in freerdp_windows.go and loads FreeRDP3 DLLs via syscall at runtime.
type FreeRDPBackend struct{}

// NewFreeRDPBackend creates a stub backend that returns errors on all operations.
func NewFreeRDPBackend() *FreeRDPBackend {
	return &FreeRDPBackend{}
}

func (f *FreeRDPBackend) Connect(config RDPConfig) error {
	return fmt.Errorf("FreeRDP backend is only available on Windows — use MockBackend for development")
}

func (f *FreeRDPBackend) Disconnect() error {
	return nil
}

func (f *FreeRDPBackend) SendMouseEvent(x, y int, flags uint32) error {
	return fmt.Errorf("FreeRDP backend is not available on this platform")
}

func (f *FreeRDPBackend) SendKeyEvent(scancode uint32, pressed bool) error {
	return fmt.Errorf("FreeRDP backend is not available on this platform")
}

func (f *FreeRDPBackend) SendClipboard(data string) error {
	return fmt.Errorf("FreeRDP backend is not available on this platform")
}

func (f *FreeRDPBackend) GetFrame() ([]byte, error) {
	return nil, fmt.Errorf("FreeRDP backend is not available on this platform")
}

func (f *FreeRDPBackend) IsConnected() bool {
	return false
}

// Ensure FreeRDPBackend satisfies the RDPBackend interface at compile time.
var _ RDPBackend = (*FreeRDPBackend)(nil)
