using System; using System.Threading.Tasks; using TINK.Services.BluetoothLock.Tdo; namespace TINK.Services.BluetoothLock { public enum DeviceState { Disconnected = 0, Connecting = 1, Connected = 2, Limited = 3 /* Mactches Connecting? */ } public interface ILockService { /// <summary> Reconnect to lock. </summary> Task ReconnectAsync( LockInfoAuthTdo authInfo, TimeSpan connectTimeout); /// <summary> Opens lock. </summary> /// <returns> State of lock after performing open operation. </returns> Task<LockitLockingState?> OpenAsync(); /// <summary> Closes lock. </summary> /// <returns>State of lock after performing close operation.</returns> Task<LockitLockingState?> CloseAsync(); string Name { get; } Guid Guid { get; } int Id { get; } /// <summary> Gets the device state.</summary> DeviceState? GetDeviceState(); /// <summary> /// Gets the locking state. /// </summary> /// <param name="doWaitRetry">True if to wait and retry in case of failures. </param> /// <returns></returns> Task<LockInfoTdo> GetLockStateAsync(bool doWaitRetry = false); Task<bool> SetSoundAsync(SoundSettings settings); Task<bool> GetIsAlarmOffAsync(); Task SetIsAlarmOffAsync(bool isActivated); /// <summary>Gets the battery percentage.</summary> Task<double> GetBatteryPercentageAsync(); /// <summary> Disconnect from lock.</summary> Task Disconnect(); } }