import { type Logger } from '@ariestools/sdk';
import type { XyoGateway, XyoGatewayRunner, XyoSigner } from '@xyo-network/xl1-protocol/protocol-lib';
import type { CreatableProviderFactory } from '../protocol-sdk/index-node.js';
import type { BlockValidators } from '../providers/index.js';
/**
 * Fluent builder for client-side XL1 gateways. Hides the locator system from
 * 3rd parties so they can spin up a XyoGateway (read-only) or XyoGatewayRunner
 * (transacting) without touching ProviderFactoryLocator, connection config, or any
 * JsonRpc transport plumbing.
 *
 * @example
 * const gateway = await new GatewayBuilder()
 *   .rpcUrl('https://rpc.xl1.example')
 *   .build()
 *
 * @example
 * const runner = await new GatewayBuilder()
 *   .rpcUrl('https://rpc.xl1.example')
 *   .build(mySigner)
 */
export declare class GatewayBuilder {
    private _additionalProviders;
    private _additionalRunnerProviders;
    private _dataLakeEndpoint;
    private _logger;
    private _name;
    private _rpc;
    private _validators;
    /** Replaces the supplemental read/provider factories registered with the gateway locator. */
    additionalProviders(factories: CreatableProviderFactory[]): this;
    /** Replaces the supplemental mutation-provider factories registered with the gateway locator. */
    additionalRunnerProviders(factories: CreatableProviderFactory[]): this;
    /** Builds a read-only gateway, or a mutation-capable gateway when a signer is supplied. */
    build(): Promise<XyoGateway>;
    /** Builds a read-only gateway, or a mutation-capable gateway when a signer is supplied. */
    build(signer: XyoSigner): Promise<XyoGatewayRunner>;
    /** Configures the endpoint used to retrieve data-lake content. */
    dataLakeEndpoint(endpoint: string): this;
    /** Sets the logger shared by every provider created for this gateway. */
    logger(logger: Logger): this;
    /** Sets the diagnostic name used by the gateway and its provider locator. */
    name(name: string): this;
    /** Configures post-message RPC for the target network and wallet session. */
    postMessage(networkId: string, sessionId: string): this;
    /** Configures HTTP JSON-RPC as the gateway transport. */
    rpcUrl(url: string): this;
    /** Configures validators applied to blocks returned by the gateway. */
    validators(validators: BlockValidators): this;
}
//# sourceMappingURL=GatewayBuilder.d.ts.map