/**
 * Audit Resource
 *
 * Auditor-only access to the indexer. Wraps the WASM SDK's
 * `auditQueryTransactions` / `auditQueryBalances` exports, which in turn drive
 * the canonical `privacy_boost_core::operations::audit` flow:
 *
 *   1. Build EIP-712 typed data identifying (auditor, account, action).
 *   2. Connected wallet signs via `eth_signTypedData_v4`.
 *   3. POST to `/api/v1/audit/{transactions,balances}` with the
 *      operator-provided `X-Admin-Key` header.
 *
 * The SDK does no networking or signing in TypeScript — the WASM binding is
 * the single implementation, shared with iOS/Android/CLI.
 */
import type * as Wasm from '../wasm/privacy_boost_wasm';
import type { Logger } from '../utils/logger';
/** Identifier of the account being audited. Exactly one variant is supplied. */
export type AuditTarget = {
    accountId: string;
    eoaAddress?: never;
} | {
    accountId?: never;
    eoaAddress: string;
};
/**
 * Common options carried by every audit call. `chainId` falls back to whatever
 * the SDK discovered from the server's `/api/v1/info` if omitted.
 */
export interface AuditCommonOptions {
    /** Server-operator superadmin key used as the `X-Admin-Key` request header. */
    adminKey: string;
    /**
     * AuditGateway contract address used as the EIP-712 verifying contract.
     * Optional: defaults to whatever the server advertises in `/api/v1/info`.
     */
    auditGatewayAddress?: string;
    /** Override chain ID; defaults to the SDK's discovered chain. */
    chainId?: number;
}
/** Allowed transaction-type filter strings; matches the server enum. */
export type AuditTxType = '' | 'shield' | 'unshield' | 'transfer' | 'forced_unshield';
export interface AuditQueryTransactionsOptions extends AuditCommonOptions {
    target: AuditTarget;
    /** Empty/omitted returns all transaction types. */
    txType?: AuditTxType;
    /** Filter by registered token id (uint16). */
    tokenId?: number;
    /** Inclusive lower bound on `createdAt` (Unix seconds). */
    createdFrom?: number;
    /** Inclusive upper bound on `createdAt` (Unix seconds). */
    createdTo?: number;
    /** Page size (1–200; server clamps out-of-range values to 50). */
    limit?: number;
    /** Page offset. */
    offset?: number;
}
export interface AuditQueryBalancesOptions extends AuditCommonOptions {
    target: AuditTarget;
}
/** Single transaction entry; mirrors `AuditTransactionRecord` in the core crate. */
export interface AuditTransaction {
    type: 'shield' | 'unshield' | 'transfer' | 'forced_unshield';
    direction: 'in' | 'out';
    tokenId: number;
    /** Decimal string (u256). */
    amount: string;
    /** Counterparty: EOA hex when `counterpartyType === 'eoa'`, account ID decimal when `'account'`. */
    counterparty?: string;
    counterpartyType?: 'eoa' | 'account';
    /**
     * Nullifier of the spent note (hex). Omitted on rows that don't correspond
     * to a spent note (e.g. shield deposits or incoming transfer records).
     */
    nullifier?: string;
    /** Seconds since Unix epoch. */
    createdAt: number;
}
export interface AuditTransactionsResponse {
    accountId: string;
    transactions: AuditTransaction[];
    total: number;
    limit: number;
    offset: number;
}
export interface AuditBalance {
    tokenId: number;
    /** Decimal string (u256). */
    balance: string;
    noteCount: number;
}
export interface AuditBalancesResponse {
    accountId: string;
    balances: AuditBalance[];
}
export declare class AuditResource {
    private getWasm;
    private log;
    constructor(getWasm: () => Wasm.PrivacyBoost | null, logger?: Logger);
    /** Run a signed audit transactions query. The connected wallet signs the EIP-712 typed data. */
    queryTransactions(options: AuditQueryTransactionsOptions): Promise<AuditTransactionsResponse>;
    /** Run a signed audit balances query. */
    queryBalances(options: AuditQueryBalancesOptions): Promise<AuditBalancesResponse>;
    private requireWasm;
}
//# sourceMappingURL=Audit.d.ts.map