export interface VaultConfig {
  address: string;
  roleId: string;
  secretId: string;
  secretPath: string;
  refreshIntervalMs?: number;
  tokenRenewThreshold?: number;
  requestTimeoutMs?: number;
}

export interface VaultTokenState {
  clientToken: string;
  leaseDuration: number;
  authenticatedAt: number;
}

export interface VaultAuthResponse {
  auth: {
    client_token: string;
    lease_duration: number;
    renewable: boolean;
    policies: string[];
  };
}

export interface VaultSecretResponse {
  data: {
    data: Record<string, string>;
    metadata: {
      version: number;
      created_time: string;
      deletion_time: string;
      destroyed: boolean;
    };
  };
}

export interface VaultRenewResponse {
  auth: {
    client_token: string;
    lease_duration: number;
    renewable: boolean;
  };
}
