/**
 * Reactive state for admin session overview.
 *
 * Both the listing and the two revoke-all mutations flow through the shared
 * `AdminAccountsRpc` adapter (`list_sessions`, `session_revoke_all`,
 * `token_revoke_all`); the listing wraps the `admin_session_list` RPC
 * method.
 *
 * Holds one fetch `AsyncSlot` (`list`) plus two `KeyedAsyncSlot`s keyed by
 * `account_id` — `revoke_sessions` and `revoke_tokens`. Per-account
 * concurrent revokes are independent (clicking row B does not abort row A)
 * and per-row errors surface via `revoke_sessions.error(account_id)` /
 * `revoke_tokens.error(account_id)`.
 *
 * @module
 */
import type { Uuid } from '@fuzdev/fuz_util/id.js';
import { AsyncSlot } from './async_slot.svelte.js';
import { KeyedAsyncSlot } from './keyed_async_slot.svelte.js';
import type { AdminAccountsRpc } from './admin_accounts_state.svelte.js';
import type { AdminSessionJson } from '../auth/audit_log_schema.js';
/**
 * Options for `AdminSessionsState`.
 *
 * The RPC adapter drives every operation (listing + the two revoke-all
 * mutations).
 */
export interface AdminSessionsStateOptions {
    /**
     * Reactive accessor for the RPC adapter. Mirrors
     * `AdminAccountsStateOptions.get_rpc` so a single adapter instance backs
     * both states without tripping Svelte's `state_referenced_locally` warning.
     */
    get_rpc: () => AdminAccountsRpc;
}
export declare class AdminSessionsState {
    #private;
    readonly list: AsyncSlot<void, string>;
    readonly revoke_sessions: KeyedAsyncSlot<string & import("zod").$brand<"Uuid">, void, string>;
    readonly revoke_tokens: KeyedAsyncSlot<string & import("zod").$brand<"Uuid">, void, string>;
    sessions: Array<AdminSessionJson>;
    readonly active_count: number;
    constructor(options: AdminSessionsStateOptions);
    fetch(): Promise<void>;
    submit_revoke_sessions(account_id: Uuid): Promise<void>;
    submit_revoke_tokens(account_id: Uuid): Promise<void>;
}
//# sourceMappingURL=admin_sessions_state.svelte.d.ts.map