import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@hyperlane-xyz/provider-sdk/artifact';
import type { MerkleTreeHookConfig } from '@hyperlane-xyz/provider-sdk/hook';
import type { SvmSigner } from '../clients/signer.js';
import type { AnnotatedSvmTransaction, SvmDeployedHook, SvmReceipt, SvmRpc } from '../types.js';
/**
 * Deployment-time configuration for the SVM merkle tree hook writer.
 * Passed to the writer constructor; separate from the on-chain artifact config.
 *
 * On SVM the merkle tree hook IS the mailbox program, so the writer only
 * needs the mailbox address to reference it — no separate deployment needed.
 */
export type SvmMerkleTreeHookWriterConfig = Readonly<{
    /** The already-deployed mailbox program address. */
    mailboxAddress: string;
}>;
export declare class SvmMerkleTreeHookReader implements ArtifactReader<MerkleTreeHookConfig, SvmDeployedHook> {
    protected readonly _rpc: SvmRpc;
    constructor(_rpc: SvmRpc);
    read(address: string): Promise<ArtifactDeployed<MerkleTreeHookConfig, SvmDeployedHook>>;
}
export declare class SvmMerkleTreeHookWriter extends SvmMerkleTreeHookReader implements ArtifactWriter<MerkleTreeHookConfig, SvmDeployedHook> {
    private readonly config;
    protected readonly _signer: SvmSigner;
    constructor(config: SvmMerkleTreeHookWriterConfig, rpc: SvmRpc, _signer: SvmSigner);
    create(_artifact: ArtifactNew<MerkleTreeHookConfig>): Promise<[
        ArtifactDeployed<MerkleTreeHookConfig, SvmDeployedHook>,
        SvmReceipt[]
    ]>;
    update(_artifact: ArtifactDeployed<MerkleTreeHookConfig, SvmDeployedHook>): Promise<AnnotatedSvmTransaction[]>;
}
//# sourceMappingURL=merkle-tree-hook.d.ts.map