Option Strict On
Option Explicit On

Imports System.Collections.Generic
Imports System.Threading

Namespace Nexamas.UI.FileSystem

    Friend Interface IFileSystemProvider

        Function GetRoots() As List(Of FileSystemEntry)

        Function GetChildren(path As String) As List(Of FileSystemEntry)

        Function DirectoryExists(path As String) As Boolean

        Function FileExists(path As String) As Boolean

        Function GetParentPath(path As String) As String

        Function CombinePath(basePath As String, childName As String) As String

        Function NormalizePath(path As String) As String

    End Interface

    ''' <summary>
    ''' Optional internal extension for providers that can observe cancellation during expensive enumeration.
    ''' Existing IFileSystemProvider consumers remain source-compatible, while FilePicker/FileExplorer can avoid UI-thread stalls.
    ''' </summary>
    Friend Interface IFileSystemCancellableProvider

        Function GetRoots(cancellationToken As CancellationToken) As List(Of FileSystemEntry)

        Function GetChildren(path As String, cancellationToken As CancellationToken) As List(Of FileSystemEntry)

    End Interface

End Namespace