/**
 * CLI.3 — `opensquid webhooks list|subscribe|unsubscribe|test|rotate`.
 *
 * Thin commander wiring. Verb bodies live in `./webhooks_actions.ts`;
 * persistence + secret-gen + URL helpers in `./webhooks_state.ts`. This
 * file ONLY routes commander options/args into the action functions and
 * resolves default paths from `OPENSQUID_HOME()` + the daemon webhook
 * port default.
 *
 * Verb semantics (locked):
 *
 *   list        — kubectl-style table; SECRET column is ALWAYS [REDACTED].
 *   subscribe   — `--skill <name>` XOR `--deliver-only` (mutex enforced
 *                 with an explicit error message; neither + both both exit
 *                 1). Generates 32-byte HMAC via `crypto.randomBytes`,
 *                 stores as `literal:<hex>` URI, prints URL + secret on
 *                 stdout (the ONE place a secret is intentionally surfaced).
 *   unsubscribe — confirms unless `--yes`; non-TTY without `--yes` exits 1.
 *   test        — signs `--payload` (default `{}`) with the subscription
 *                 secret + POSTs to `http://localhost:<port>/webhook/<id>`.
 *   rotate      — atomic: webhooks.yaml rewritten BEFORE the new secret is
 *                 emitted on stdout. Old secret is invalidated by the same
 *                 atomic file rename.
 *
 * Imports from: commander, ./webhooks_actions, ./webhooks_state.
 * Imported by: src/cli.ts.
 */
import { type WebhookFetch } from './webhooks_actions.js';
import type { Command } from 'commander';
export type { WebhookFetch } from './webhooks_actions.js';
export { renderListTable } from './webhooks_actions.js';
export interface WebhooksCliDeps {
    webhooksPath?: string;
    port?: number;
    stdout?: (s: string) => void;
    stderr?: (s: string) => void;
    isTty?: () => boolean;
    now?: () => Date;
    fetch?: WebhookFetch;
}
export declare function registerWebhooks(parent: Command, deps?: WebhooksCliDeps): Command;
//# sourceMappingURL=webhooks.d.ts.map