/**
 * AgentMeter — intra-network agent outcome ledger.
 *
 * Sprint-563: B7 — append-only ledger + verifyChain + OutcomeGate.
 * x402 inter-agent scope deferred to sprint-564 C1.
 *
 * recordRun(runId, agentId, outcome) → appends to ledger.
 * getBalance(agentId, period) → MeterBalance (total runs, total value, net).
 * verifyChain(agentId, since?) → valid + firstInvalidAt (R8 non-bloquant #3).
 * OutcomeGate.validate(outcome, threshold) → chargeableCents.
 */
export interface MeterEntry {
    agentId: string;
    runId: string;
    valueCents: number;
    timestamp: number;
    /** Hash of previous entry (chain integrity). */
    prevHash: string;
    /** Hash of this entry. */
    hash: string;
}
export interface MeterBalance {
    agentId: string;
    totalRuns: number;
    totalValueCents: number;
    netValueCents: number;
    firstRunAt: number;
    lastRunAt: number;
}
export interface MeterVerifyResult {
    valid: boolean;
    firstInvalidAt?: number;
    reason?: string;
    totalEntries: number;
}
/**
 * AgentMeter — append-only ledger for agent outcomes.
 * Internal scope: intra-network only (no x402 cross-agent payments).
 */
export declare class AgentMeter {
    private ledger;
    /** Record a run outcome. Appends to the ledger with chain hash. */
    recordRun(runId: string, agentId: string, valueCents: number): MeterEntry;
    /** Get balance for an agent within a time period. */
    getBalance(agentId: string, since?: number): MeterBalance;
    /** Verify chain integrity. Returns first invalid entry index or null if all valid. */
    verifyChain(agentId?: string, since?: number): MeterVerifyResult;
    /** Export full ledger (for storage/persistence). */
    export(): MeterEntry[];
    /** Import ledger entries (from storage). */
    import(entries: MeterEntry[]): void;
}
export interface OutcomeGateResult {
    allowed: boolean;
    chargeableCents: number;
    reason?: string;
}
export interface OutcomeGateOptions {
    /** Maximum value per run (cents). Reject if outcome exceeds this. */
    maxValueCents?: number;
    /** Minimum value per run (cents). Reject if outcome is below this. */
    minValueCents?: number;
    /** Maximum cumulative spend in period (cents). */
    maxCumulativeCents?: number;
}
/**
 * OutcomeGate — validates agent outcomes against thresholds.
 * Used to gate agent actions before execution.
 */
export declare function validateOutcome(outcome: {
    valueCents: number;
}, currentBalance: MeterBalance, opts?: OutcomeGateOptions): OutcomeGateResult;
//# sourceMappingURL=meter.d.ts.map