/**
 * Shared types and helpers for savings-vault readers.
 *
 * Mirrors [../../lst/readers/shared.ts](../../lst/readers/shared.ts)
 * so cross-provider tooling (orchestrator slicing, parser shape) stays
 * uniform.
 */
/** 10**18 — scaling factor for normalised exchange rates. */
export declare const ONE_E18: bigint;
/** One multicall item — `{ address, name, params }` matched against
 *  a parallel ABI array, identical to every other vault provider. */
export interface SavingsCall {
    address: string;
    name: string;
    params: readonly unknown[];
}
/** What a reader produces after consuming its multicall slice. */
export interface SavingsOnChainState {
    /** Total underlying held, raw. */
    totalAssets: bigint;
    /** Total shares minted, raw. */
    totalSupply: bigint;
    /** 1e18-scaled exchange rate: 1 share → X underlying.
     *  Normalised regardless of share decimals. */
    exchangeRate: bigint;
}
/** A self-contained slice of the multicall payload plus a parser
 *  that consumes exactly `calls.length` results. */
export interface SavingsReader {
    calls: SavingsCall[];
    /** ABI per call slot. `any[]` to accept `as const` fragments without
     *  per-call casting — the downstream multicall API is `any`-typed. */
    abis: any[];
    /** Returns `undefined` on parse failure so the orchestrator can
     *  skip the entry without poisoning the batch. */
    parse: (slice: unknown[]) => SavingsOnChainState | undefined;
}
/**
 * Safely coerce a multicall return cell to `bigint`. Failures surface
 * as `undefined` so the parser can bail on the whole entry without
 * poisoning the batch.
 */
export declare const toBigInt: (v: unknown) => bigint | undefined;
//# sourceMappingURL=shared.d.ts.map