using System.Threading.Tasks; using Bit.Core.Models.Table; using System.Collections.Generic; using System; using Bit.Core.Models.Business; using Bit.Core.Models.Business.Provider; using Bit.Core.Models.Table.Provider; namespace Bit.Core.Services { public interface IProviderService { Task CreateAsync(string ownerEmail); Task CompleteSetupAsync(Provider provider, Guid ownerUserId, string token, string key); Task UpdateAsync(Provider provider, bool updateBilling = false); Task> InviteUserAsync(ProviderUserInvite invite); Task>> ResendInvitesAsync(ProviderUserInvite invite); Task AcceptUserAsync(Guid providerUserId, User user, string token); Task>> ConfirmUsersAsync(Guid providerId, Dictionary keys, Guid confirmingUserId); Task SaveUserAsync(ProviderUser user, Guid savingUserId); Task>> DeleteUsersAsync(Guid providerId, IEnumerable providerUserIds, Guid deletingUserId); Task AddOrganization(Guid providerId, Guid organizationId, Guid addingUserId, string key); Task CreateOrganizationAsync(Guid providerId, OrganizationSignup organizationSignup, string clientOwnerEmail, User user); Task RemoveOrganizationAsync(Guid providerId, Guid providerOrganizationId, Guid removingUserId); Task LogProviderAccessToOrganizationAsync(Guid organizationId); Task ResendProviderSetupInviteEmailAsync(Guid providerId, Guid ownerId); } }