/**
 * `instar test-as-self` — one-button throwaway-deploy harness (Part 2.1).
 *
 * Deploys the CURRENT instar dist into a throwaway agent home, optionally runs
 * a real Telegram round-trip, captures any crash deterministically, and tears
 * everything down — the automated execution of the recipe that the
 * `test-as-self` SKILL documented as manual steps in v1.
 *
 * Spec: MULTI-MACHINE-BOOTSTRAP-ROBUSTNESS §Track F (folds in the approved
 * Part 2.1). The seven gated steps:
 *   1. Bot acquisition  — via Secret Drop ID (refuses a raw token on argv).
 *   2. Target prep       — throwaway home; Bob-block / canonical-home block.
 *   3. Dist deploy       — `instar init --dir <target>` (ships the current dist).
 *   4. Process start     — server --no-telegram (+ lifeline if a bot is set);
 *                          wait for /health 200 + the poll-ownership lease.
 *   5. Round-trip smoke  — Telegram Bot HTTP API: sendMessage + poll getUpdates
 *                          for the agent's reply containing the nonce.
 *   6. Crash + lease     — the existing deterministic verify.mjs.
 *   7. Teardown          — signal-safe finally (skip with --keep).
 *
 * Variance from the approved Part 2.1: the round-trip uses the Telegram Bot
 * HTTP API directly (not Playwright) — strictly more reliable, no browser.
 */
export interface TestAsSelfOptions {
    target?: string;
    botToken?: string;
    keep?: boolean;
    noRoundtrip?: boolean;
    reportJson?: string;
    timeoutS?: number;
    /** Protected agent names that may never be a target. */
    protectedNames?: string[];
}
/**
 * Run the harness. Returns the JSON report + an exit code (0 = all PASS).
 */
export declare function runTestAsSelf(opts: TestAsSelfOptions): Promise<{
    report: object;
    exitCode: number;
}>;
/**
 * `instar test-as-self --slack` — the credential-free Slack permission demonstration
 * (Pillar 4, §8.4). Extends the throwaway-agent primitive from "is the agent alive?"
 * to "does it enforce the RIGHT decision for each (principal, request) pair?".
 *
 * Runs the audit-asserting scenario suite IN-PROCESS (no throwaway home, no Slack
 * tokens): every row flows through the SAME observer the live SlackAdapter calls
 * (resolver → gate → decision ledger), and BOTH the verdict AND the matching
 * audit/ledger entry are asserted per row. Prints a per-row report and returns
 * exit 0 iff every row produced its expected decision AND its audit entry.
 */
export declare function runTestAsSelfSlack(opts?: {
    reportJson?: string;
}): Promise<{
    report: object;
    exitCode: number;
}>;
//# sourceMappingURL=test-as-self.d.ts.map