package wireguard

import (
	"net/netip"

	"github.com/sagernet/sing-tun"
	N "github.com/sagernet/sing/common/network"
	wgTun "github.com/sagernet/wireguard-go/tun"
)

type Device interface {
	wgTun.Device
	N.Dialer
	Start() error
	Inet4Address() netip.Addr
	Inet6Address() netip.Addr
	// NewEndpoint() (stack.LinkEndpoint, error)
}

type NatDevice interface {
	Device
	CreateDestination(session tun.RouteSession, conn tun.RouteContext) tun.DirectDestination
}