export type OneTimeLink = { oneTimeLink: string; /** ISO String */ expiresAt: string; }; export type Client = { id: string; name: string; address4: string; address6: string; privateKey: string; publicKey: string; preSharedKey: string; /** ISO String */ expiresAt: string | null; endpoint: string | null; allowedIPs: string[]; oneTimeLink: OneTimeLink | null; /** ISO String */ createdAt: string; /** ISO String */ updatedAt: string; 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; updateClientAddress4(id: string, address4: string): Promise; updateClientExpirationDate( id: string, expirationDate: string | null ): Promise; deleteOneTimeLink(id: string): Promise; createOneTimeLink(id: string, oneTimeLink: OneTimeLink): Promise; }