package storage import ( "context" "github.com/go-webauthn/webauthn/webauthn" ) type UserRepository interface { CreateUser(ctx context.Context, username string, attributes map[string]any) (*User, error) UpdateUserUsername(ctx context.Context, userID string, username string) (*User, error) UpdateUserAttributes(ctx context.Context, userID string, attributes map[string]any) (*User, error) AddUserCredential(ctx context.Context, userID string, credential *webauthn.Credential) (string, error) RemoveUserCredential(ctx context.Context, userID string, credentialID string) error GenerateRegistrationLink(ctx context.Context, userID string) (*RegistrationLink, error) GetRegistrationLink(ctx context.Context, userID string) (*RegistrationLink, error) GetRegistrationLinkByToken(ctx context.Context, token string) (*RegistrationLink, error) ClearRegistrationLink(ctx context.Context, userID string) error DeleteUserByID(ctx context.Context, userID string) error FindUserByID(ctx context.Context, userID string) (*User, error) FindUserByUsername(ctx context.Context, username string) (*User, error) ListUsers(ctx context.Context) ([]UserHeader, error) }