export type OneTimeLink = { oneTimeLink: string; expiresAt: Date; }; export type Client = { id: string; name: string; address: string; privateKey: string; publicKey: string; preSharedKey: string; expiresAt: Date | null; endpoint: string | null; allowedIPs: string[]; oneTimeLink: OneTimeLink | null; createdAt: Date; updatedAt: Date; enabled: boolean; persistentKeepalive: number; }; export type NewClient = Omit; /** * Interface for client-related database operations. * This interface provides methods for managing client data. */ export interface ClientRepository { getClients(): Promise>; getClient(id: string): Promise; createClient(client: NewClient): Promise; deleteClient(id: string): Promise; toggleClient(id: string, enable: boolean): Promise; updateClientName(id: string, name: string): Promise; updateClientAddress(id: string, address: string): Promise; updateClientExpirationDate( id: string, expirationDate: Date | null ): Promise; deleteOneTimeLink(id: string): Promise; createOneTimeLink(id: string, oneTimeLink: OneTimeLink): Promise; }