package auth

import "secondbit.org/uuid"

type ClientStore interface {
	GetClient(id uuid.ID) (Client, error)
	CreateClient(name, logo, redirectURI string, owner uuid.ID) (Client, error)
	UpdateClient(client *Client, name, logo, redirectURI *string) error
	RemoveClient(id uuid.ID, ctx Context) error
	ListClients(id uuid.ID, page, num int, ctx Context) ([]Client, error)
}

type TokenStore interface {
	SaveAuthorization(AuthorizeData) error
	GetAuthorization(code string) (AuthorizeData, error)
	RemoveAuthorization(code string) error

	SaveAccess(AccessData) error
	GetAccess(token string) (AccessData, error)
	RemoveAccess(token string) error

	GetRefresh(token string) (AccessData, error)
	RemoveRefresh(token string) error
}

type ProfileStore interface {
	GetProfile(username, password string) (uuid.ID, error)
}
