import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@hyperlane-xyz/provider-sdk/artifact';
import type { TestIsmConfig } from '@hyperlane-xyz/provider-sdk/ism';
import type { SvmSigner } from '../clients/signer.js';
import type { AnnotatedSvmTransaction, SvmDeployedIsm, SvmProgramTarget, SvmReceipt, SvmRpc } from '../types.js';
/**
 * Deployment-time configuration for the SVM test ISM writer.
 * Passed to the writer constructor; separate from the on-chain artifact config.
 */
export type SvmTestIsmWriterConfig = Readonly<{
    /** How to obtain the deployed program: fresh bytes or pre-existing ID. */
    program: SvmProgramTarget;
}>;
export declare class SvmTestIsmReader implements ArtifactReader<TestIsmConfig, SvmDeployedIsm> {
    protected readonly rpc: SvmRpc;
    constructor(rpc: SvmRpc);
    read(address: string): Promise<ArtifactDeployed<TestIsmConfig, SvmDeployedIsm>>;
}
export declare class SvmTestIsmWriter extends SvmTestIsmReader implements ArtifactWriter<TestIsmConfig, SvmDeployedIsm> {
    private readonly config;
    private readonly svmSigner;
    constructor(config: SvmTestIsmWriterConfig, rpc: SvmRpc, svmSigner: SvmSigner);
    create(_artifact: ArtifactNew<TestIsmConfig>): Promise<[ArtifactDeployed<TestIsmConfig, SvmDeployedIsm>, SvmReceipt[]]>;
    update(_artifact: ArtifactDeployed<TestIsmConfig, SvmDeployedIsm>): Promise<AnnotatedSvmTransaction[]>;
}
//# sourceMappingURL=test-ism.d.ts.map