interface Vault { readonly id: string; readonly provider: string; add(name: string, credential: Credential): Promise; update(name: string, credential: Credential): Promise; remove(name: string): Promise; list(): Promise; destroy(): Promise; } type Credential = { type: "bearer"; token: string; } | { type: "oauth"; accessToken: string; expiresAt?: string; refresh?: OAuthRefreshConfig; }; interface OAuthRefreshConfig { refreshToken: string; tokenEndpoint: string; clientId: string; clientSecret?: string; scopes?: string; } interface CredentialInfo { name: string; type: "bearer" | "oauth"; status: "active" | "expired" | "error"; expiresAt?: string; createdAt: string; updatedAt: string; } interface VaultOptions { name: string; metadata?: Record; } interface VaultStore { createVault(options: VaultOptions): Promise; getVault(vaultId: string): Promise; updateVaultMetadata(vaultId: string, metadata: Record): Promise; removeVault(vaultId: string): Promise; set(vaultId: string, name: string, credential: Credential): Promise; get(vaultId: string, name: string): Promise; getAll(vaultId: string): Promise; remove(vaultId: string, name: string): Promise; } interface VaultRecord { id: string; name: string; metadata?: Record; createdAt: string; } interface StoredCredential { name: string; type: "bearer" | "oauth"; credential: Credential; status: "active" | "expired" | "error"; expiresAt?: string; createdAt: string; updatedAt: string; } export type { Credential as C, OAuthRefreshConfig as O, StoredCredential as S, VaultStore as V, Vault as a, CredentialInfo as b, VaultOptions as c, VaultRecord as d };