using Hcs.Broker.Api;
using Hcs.Broker.Logger;
using Hcs.Broker.MessageCapturer;
using Hcs.Broker.Mock.Api;

namespace Hcs.Broker.Mock
{
    /// <inheritdoc cref="IClient"/>
    public class MockClient : IClient
    {
        /// <inheritdoc cref="IClient"/>
        public string OrgPPAGUID { get; set; }

        /// <inheritdoc cref="IClient"/>
        public string ExecutorGUID { get; set; }

        /// <inheritdoc cref="IClient"/>
        public bool UseTunnel { get; set; }

        /// <inheritdoc cref="IClient"/>
        public bool IsPPAK { get; set; }

        /// <inheritdoc cref="IClient"/>
        public OrganizationRole Role { get; set; }

        /// <inheritdoc cref="IClient"/>
        public ILogger Logger { get; set; }

        /// <inheritdoc cref="IClient"/>
        public IMessageCapturer MessageCapturer { get; set; }

        public IBillsApi Bills => new MockBillsApi();

        public IDeviceMeteringApi DeviceMetering => new MockDeviceMeteringApi();

        public IHouseManagementApi HouseManagement => new MockHouseManagementApi();

        public INsiApi Nsi => new MockNsiApi();

        public INsiCommonApi NsiCommon => new MockNsiCommonApi();

        public IOrgRegistryCommonApi OrgRegistryCommon => new MockOrgRegistryCommonApi();

        public IPaymentsApi Payments => new MockPaymentsApi();

        public void SetSigningCertificate(string serialNumber, string? pin = null) { }
    }
}
