//go:build !windows

package sboxrun

import (
	"context"
	"errors"
)

// Status — duplicate of the Windows-side enum so call sites compile.
type Status string

const (
	StatusIdle     Status = "idle"
	StatusStarting Status = "starting"
	StatusActive   Status = "active"
	StatusFailed   Status = "failed"
)

// Engine stub for non-Windows builds.
type Engine struct{}

// New returns an error on non-Windows: sing-box + wintun + WFP-based
// per-process routing only make sense on Windows.
func New(_ Config) (*Engine, error) {
	return nil, errors.New("sboxrun is Windows-only")
}

func (e *Engine) Start(_ context.Context) error { return errors.New("sboxrun is Windows-only") }
func (e *Engine) Stop() error                   { return nil }
func (e *Engine) Status() Status                { return StatusIdle }
func (e *Engine) LastError() error              { return nil }
func (e *Engine) LogPath() string               { return "" }
func (e *Engine) ConfigPath() string            { return "" }

// AssetPaths stub.
type AssetPaths struct {
	SingBoxExe string
	WintunDLL  string
	WorkDir    string
	ConfigPath string
	LogPath    string
}

// InstallAssets stub.
func InstallAssets() (*AssetPaths, error) {
	return nil, errors.New("sboxrun is Windows-only")
}
