using Knot.Contracts.Profiles.Application.DTOs; using Knot.Shared.Kernel; namespace Knot.Contracts.Profiles.Domain; public interface IProfileRepository { Task GetAsync(Guid userId, CancellationToken cancellationToken = default); Task GetByUsernameAsync(string username, CancellationToken cancellationToken = default); Task> GetAsync(IEnumerable userIds, CancellationToken cancellationToken = default); Task> SearchAsync(string query, int limit = 20, CancellationToken cancellationToken = default); Task> CreateAsync(UserProfileDto dto, CancellationToken cancellationToken = default); Task> UpdateAsync(UserProfileDto dto, CancellationToken cancellationToken = default); Task DeleteAsync(Guid userId, CancellationToken cancellationToken = default); Task UpdateStatusAsync(Guid userId, bool isBanned, bool isDeleted, CancellationToken ct = default); }