package core

import (
	"context"

	"vpnclient/internal/config"
)

// Engine runs one protocol backend (e.g. official naive.exe).
type Engine interface {
	Protocol() config.Protocol
	Start(ctx context.Context, profile config.Profile, binDir string) error
	Stop() error
	Running() bool
	LocalHTTPProxy() (hostPort string, ok bool)
	LocalSOCKSProxy() (hostPort string, ok bool)
}

// Status is a snapshot of the connection manager.
type Status struct {
	Connected   bool              `json:"connected"`
	Profile     string            `json:"profile,omitempty"`
	Protocol    config.Protocol   `json:"protocol,omitempty"`
	HTTPProxy   string            `json:"http_proxy,omitempty"`
	SOCKSProxy  string            `json:"socks_proxy,omitempty"`
	SystemProxy bool              `json:"system_proxy"`
	Extra       map[string]string `json:"extra,omitempty"`
}
