import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@hyperlane-xyz/provider-sdk/artifact';
import type { IgpHookConfig } from '@hyperlane-xyz/provider-sdk/hook';
import type { SvmSigner } from '../clients/signer.js';
import type { AnnotatedSvmTransaction, SvmDeployedIgpHook, SvmProgramTarget, SvmReceipt, SvmRpc } from '../types.js';
/**
 * Deployment-time configuration for the SVM IGP hook writer.
 * Passed to the writer constructor; separate from the on-chain artifact config.
 */
export type SvmIgpHookWriterConfig = Readonly<{
    /** How to obtain the deployed program: fresh bytes or pre-existing ID. */
    program: SvmProgramTarget;
}>;
export declare function deriveIgpSalt(context: string): Uint8Array;
/** Zero salt — matches mainnet IGP deployments (H256::zero() in Rust). */
export declare const DEFAULT_IGP_SALT: Uint8Array<ArrayBuffer>;
export declare class SvmIgpHookReader implements ArtifactReader<IgpHookConfig, SvmDeployedIgpHook> {
    protected readonly rpc: SvmRpc;
    protected readonly salt: Uint8Array;
    constructor(rpc: SvmRpc, salt: Uint8Array);
    read(address: string): Promise<ArtifactDeployed<IgpHookConfig, SvmDeployedIgpHook>>;
}
export declare class SvmIgpHookWriter extends SvmIgpHookReader implements ArtifactWriter<IgpHookConfig, SvmDeployedIgpHook> {
    private readonly config;
    private readonly svmSigner;
    constructor(config: SvmIgpHookWriterConfig, rpc: SvmRpc, salt: Uint8Array, svmSigner: SvmSigner);
    create(artifact: ArtifactNew<IgpHookConfig>): Promise<[
        ArtifactDeployed<IgpHookConfig, SvmDeployedIgpHook>,
        SvmReceipt[]
    ]>;
    update(artifact: ArtifactDeployed<IgpHookConfig, SvmDeployedIgpHook>): Promise<AnnotatedSvmTransaction[]>;
}
//# sourceMappingURL=igp-hook.d.ts.map