import type { XyoGatewayRunner, XyoSigner } from '@xyo-network/xl1-protocol/protocol-lib';
import type { RestGatewayConfig } from './getRestGateway.js';
/**
 * Config for a REST/S3-backed **write-capable** client gateway.
 * Superset of {@link RestGatewayConfig}: chain reads use the static S3 layout;
 * transaction submission goes through `rpcUrl` (mempool), and `signer` signs txs.
 */
export interface RestGatewayRunnerConfig extends RestGatewayConfig {
    /**
     * HTTP RPC endpoint used to submit signed transactions to the network mempool
     * (`mempoolRunner_submitTransactions` / `xyoRunner_broadcastTransaction`).
     * Not used for chain reads — those stay on the REST/S3 buckets.
     */
    rpcUrl: string;
    /** Signs unsigned transactions before broadcast. */
    signer: XyoSigner;
}
/**
 * Minimal config for a REST/S3-backed **write-capable** client gateway — the runner
 * counterpart of `getRestGateway('https://…')`. The read buckets are derived from
 * `endpoint` via {@link restGatewayConfigFromEndpoint} (blocks.<domain>, state.<domain>,
 * indexes.<domain>); only the write path (`rpcUrl`, `signer`) is spelled out.
 */
export interface SimpleRestGatewayRunnerConfig extends Omit<RestGatewayRunnerConfig, 'blocks' | 'chainState' | 'index'> {
    /** Network root domain the standard bucket subdomains are derived from, e.g. `https://sample.mainnet.xyo.space`. */
    endpoint: string;
}
/**
 * Builds a write-capable `XyoGatewayRunner` backed by the S3 static REST layout for
 * reads and an RPC endpoint for mempool submission. Same consumer-facing write
 * surface as `GatewayBuilder.build(signer)` — `addPayloadsToChain`, `send`,
 * `sendMany`, `confirmSubmittedTransaction` — while chain state is still fetched
 * anonymously from CDN files (no RPC for reads).
 *
 * @example
 * // Simple form: network root domain (read buckets derived) + RPC for mempool + local signer.
 * const runner = await getRestGatewayRunner({
 *   endpoint: 'https://sample.mainnet.xyo.space',
 *   rpcUrl: 'https://sample.mainnet.xyo.space/rpc',
 *   signer,
 * })
 * // See also: getAccountBalance / transferXl1 in this package, and the live recipe in
 * // xyo-chain `src/e2e/spec/api-local-s3/RestGatewayRunner.spec.ts` (api-local-s3).
 *
 * @example
 * // Explicit buckets.
 * const runner = await getRestGatewayRunner({
 *   blocks: { readUrl: 'https://cdn.xl1.example/blocks' },
 *   chainState: { readUrl: 'https://cdn.xl1.example/chain-state' },
 *   rpcUrl: 'https://rpc.xl1.example',
 *   signer,
 * })
 */
export declare function getRestGatewayRunner(config: RestGatewayRunnerConfig | SimpleRestGatewayRunnerConfig): Promise<XyoGatewayRunner>;
//# sourceMappingURL=getRestGatewayRunner.d.ts.map