package provider import "context" type Downloadable struct { URL string Extension string Source string } type Client interface { Source() string Login(ctx context.Context) error LoggedIn() bool GetMetadata(ctx context.Context, item, mediaType string) (map[string]any, error) Search(ctx context.Context, mediaType, query string, limit int) ([]map[string]any, error) GetDownloadable(ctx context.Context, item string, quality int) (*Downloadable, error) Close() error }