/**
 * A `Backing` names a class of runtime resources a provider may need access to.
 * Each backing is owned (writable) by exactly one actor in a deployment; other
 * actors may hold it as read-only or not at all.
 *
 * - `chain-store` — finalized/canonical chain archivists. Owned by the Finalizer.
 * - `mempool-store` — pending transaction and pending block archivists. Owned by the Mempool actor.
 * - `dlq-store` — rejected blocks and rejected transactions archivists. Owned by the Finalizer.
 * - `indexer-store` — derived summary maps (account balances, transfers, etc.).
 *   Owned by the IndexerActor.
 * - `evm-rpc` — connection to the backing EVM chain (Sepolia/Mainnet/Hardhat). Owned by the Bridge.
 * - `wallet` — per-actor signing wallet. Each actor owns its own.
 * - `network` — JSON-RPC transport to another XL1 actor. Pure transport; no ownership.
 */
export type Backing = 'chain-store' | 'mempool-store' | 'dlq-store' | 'indexer-store' | 'evm-rpc' | 'wallet' | 'network';
/**
 * A `BackingNeed` pairs a backing with the access mode required.
 *
 * - `read` is satisfied by either a `read` or `write` ownership in the locator.
 * - `write` is only satisfied by `write` ownership.
 *
 * Descriptors declare the backings they need; locators declare the backings they have.
 * The resolver filters out descriptors whose backings aren't a subset of the locator's.
 */
export interface BackingNeed {
    readonly backing: Backing;
    readonly mode: 'read' | 'write';
}
/**
 * The two API surfaces exposed by an XL1 API actor over JSON-RPC.
 *
 * - `node` — point queries on canonical chain state (block/tx/mempool/finality/balance).
 *   Analogous to a base Ethereum node's RPC. Exposed at `POST /rpc`.
 * - `indexed` — cross-key or aggregate queries that require an indexer
 *   (stake-by-staker, stake-events, NetworkStake step rewards, etc.).
 *   Analogous to Etherscan-style APIs. Exposed at `POST /rpc/indexed`.
 *
 * The litmus test: if the query is `f(primary_key) → value` it's `node`; if it's
 * `f(secondary_attribute) → list` it's `indexed`.
 */
export type Surface = 'node' | 'indexed';
/**
 * Returns true iff every need in `required` is satisfied by some entry in `available`.
 * `read` is satisfied by either `read` or `write`; `write` requires `write`.
 */
export declare function backingsSatisfied(required: readonly BackingNeed[], available: readonly BackingNeed[]): boolean;
/**
 * Diagnostic helper: returns a human-readable description of which needs are unmet
 * given the available backings.
 */
export declare function unmetBackings(required: readonly BackingNeed[], available: readonly BackingNeed[]): readonly BackingNeed[];
//# sourceMappingURL=Backing.d.ts.map