import { apiClient } from "./client";

export interface SSHKey {
  id: string;
  name: string;
  public_key: string;
  created_at: string;
}

export interface SSHKeyCreate {
  name: string;
}

export async function listSSHKeys(): Promise<SSHKey[]> {
  const response = await apiClient.get<SSHKey[]>("/ssh-keys");
  return response.data;
}

export async function createSSHKey(data: SSHKeyCreate): Promise<SSHKey> {
  const response = await apiClient.post<SSHKey>("/ssh-keys", data);
  return response.data;
}

export async function deleteSSHKey(keyId: string): Promise<void> {
  await apiClient.delete(`/ssh-keys/${keyId}`);
}

export interface SignPayloadRequest {
  payload: string;
}

export interface SignatureResponse {
  signature: string;
}

export interface VerifySignatureRequest {
  payload: string;
  signature: string;
}

export interface VerifySignatureResponse {
  valid: boolean;
}

export async function signPayload(keyId: string, data: SignPayloadRequest): Promise<SignatureResponse> {
  const response = await apiClient.post<SignatureResponse>(`/ssh-keys/${keyId}/sign`, data);
  return response.data;
}

export async function verifySignature(keyId: string, data: VerifySignatureRequest): Promise<VerifySignatureResponse> {
  const response = await apiClient.post<VerifySignatureResponse>(`/ssh-keys/${keyId}/verify`, data);
  return response.data;
}
