/**
 * Credentials REST Controller
 *
 * Exposes workspace credential management over REST so the frontend (and
 * Cloud portal) can list, add, rename, delete, and OAuth-import credentials.
 *
 * All endpoints return `{ success, data?, error? }` matching the rest of
 * the Crewly API surface. Secret values (token payloads, API keys) are
 * never returned — only registry metadata.
 *
 * @module controllers/credentials/credentials.controller
 */
import type { Request, Response, NextFunction } from 'express';
/** Reset the helper singleton — for tests only. */
export declare function _resetGeminiHelperForTesting(): void;
/**
 * GET /api/credentials — list all credential metadata (never values).
 */
export declare function listCredentials(_req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * GET /api/credentials/:id — metadata for a single credential.
 */
export declare function getCredentialById(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/credentials/api-key — add an API key credential.
 * Body: { name, provider, value }
 */
export declare function addApiKey(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * PATCH /api/credentials/:id — update metadata (name, status).
 * Body: { name?, status? }
 */
export declare function updateCredentialHandler(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * DELETE /api/credentials/:id — delete credential (registry entry + .enc file).
 */
export declare function deleteCredentialHandler(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/credentials/oauth/import-gemini-cli — capture current extension
 * login into a new credential.
 * Body: { name }
 *
 * Precondition: the user has run
 *   `GEMINI_CLI_WORKSPACE_FORCE_FILE_STORAGE=true gemini`
 * and signed in via the workspace extension.
 */
export declare function importOAuthFromGeminiCli(req: Request, res: Response, next: NextFunction): Promise<void>;
/**
 * POST /api/credentials/oauth/gemini-cli/clear-extension-file —
 * delete the extension's cached token file so the next extension login
 * captures a different account.
 */
export declare function clearGeminiCliExtensionFile(_req: Request, res: Response, next: NextFunction): Promise<void>;
//# sourceMappingURL=credentials.controller.d.ts.map