import type { Address, Instruction, ProgramDerivedAddress, Rpc, SolanaRpcApi, TransactionSigner } from '@solana/kit';
import type { DeployedHookAddress } from '@hyperlane-xyz/provider-sdk/hook';
import type { DeployedIsmAddress } from '@hyperlane-xyz/provider-sdk/ism';
export type SvmInstruction = Instruction;
export type SvmRpc = Rpc<SolanaRpcApi>;
export interface SvmTransaction {
    /** Fee payer for the compiled transaction.
     *  Used to set the correct signer in the serialized transaction
     *  output (e.g. a Squads vault instead of the local keypair).
     */
    feePayer?: Address;
    instructions: SvmInstruction[];
    computeUnits?: number;
    additionalSigners?: TransactionSigner[];
    /** Skip preflight simulation.
     *  Some transactions that include account creation might fail the simulation check.
     */
    skipPreflight?: boolean;
}
export interface SvmReceipt {
    signature: string;
    slot?: bigint;
    meta?: {
        logMessages?: readonly string[];
    };
}
/** Structural interface matching @solana/web3.js Keypair. */
export interface LegacyKeypair {
    secretKey: Uint8Array;
}
/**
 * Mixin for legacy @solana/web3.js Keypair extra signers.
 * Used at the signer boundary to accept extra signers from SDK adapters
 * that still use the legacy Transaction format.
 */
export type WithExtraSigners<T> = T & {
    extraSigners?: readonly LegacyKeypair[];
};
export type AnnotatedSvmTransaction = SvmTransaction & {
    annotation?: string;
};
/**
 * Specifies how to obtain a deployed program address:
 * - `{ programId }` — use an already-deployed program
 * - `{ programBytes }` — deploy a fresh binary via BPF Loader v3
 */
export type SvmProgramTarget = {
    programId: Address;
} | {
    programBytes: Uint8Array;
};
/** ISM deployed data — the address IS the program. */
export interface SvmDeployedIsm extends DeployedIsmAddress {
    programId: Address;
}
/** Base hook deployed data — references the owning program. */
export interface SvmDeployedHook extends DeployedHookAddress {
    programId: Address;
}
/** IGP hook deployed data — account-level artifact within an IGP program. */
export interface SvmDeployedIgpHook extends SvmDeployedHook {
    igpPda: Address;
    overheadIgpPda?: Address;
}
export interface PdaWithBump {
    pda: ProgramDerivedAddress;
    address: Address;
    bump: number;
}
//# sourceMappingURL=types.d.ts.map