using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace Xamarin.PropertyEditing
{
///
/// Light-up interface to handle auto-completion of values.
///
///
/// To be implemented on implementations. Requires .
///
public interface ICompleteValues
{
///
/// Gets whether or not the string can be looked at for auto-completion.
///
///
/// true if contains auto-completable markers, false otherwise.
///
///
///
/// This is not an indicator of whether a value to autocomplete the exists, but
/// instead to indicate whether it is a special string that has auto-completion implications. Examples
/// of this are '@' in Android, or '{' in XAML languages.
///
///
/// Additionally this is not the only gating mechanic for auto-completion. UI elements that would always
/// auto-complete may bypass this check altogether. Instead this is for inputs that may not auto-complete,
/// but could be enabled to given the correct input.
///
///
bool CanAutocomplete (string input);
///
/// A list of strings to be used to set the value of the if selected via .
///
///
/// Returned strings are not post-sorted nor count-trimmed. Across multiple editors, only the common elements will be present
/// in order of the first editor. The general assumption is that order would likely be the same across editors.
///
Task> GetCompletionsAsync (IPropertyInfo property, string input, CancellationToken cancellationToken);
}
}