import { type Address, type Rpc, type SolanaRpcApi } from '@solana/kit';
import type { SvmSigner } from '../clients/signer.js';
import type { SvmRpc } from '../types.js';
import type { PreloadedProgram } from './solana-container.js';
export declare const TEST_PROGRAM_IDS: {
    readonly mailbox: Address;
    readonly igp: Address;
    readonly multisigIsm: Address;
    readonly testIsm: Address;
    readonly validatorAnnounce: Address;
};
export declare const TEST_ATA_PAYER_FUNDING_AMOUNT = 100000000n;
export declare const PROGRAM_BINARIES: {
    readonly mailbox: "hyperlane_sealevel_mailbox.so";
    readonly igp: "hyperlane_sealevel_igp.so";
    readonly multisigIsm: "hyperlane_sealevel_multisig_ism_message_id.so";
    readonly testIsm: "hyperlane_sealevel_test_ism.so";
    readonly validatorAnnounce: "hyperlane_sealevel_validator_announce.so";
    readonly tokenSynthetic: "hyperlane_sealevel_token.so";
    readonly tokenNative: "hyperlane_sealevel_token_native.so";
    readonly tokenCollateral: "hyperlane_sealevel_token_collateral.so";
};
export type PreloadableProgram = keyof typeof PROGRAM_BINARIES & keyof typeof TEST_PROGRAM_IDS;
/**
 * Writes embedded program bytes to temp .so files for the test validator.
 * The solana-test-validator CLI requires file paths for --bpf-program,
 * so we materialize the embedded Uint8Array bytes to disk.
 *
 * Returns the programs array and a cleanup function to remove the temp dir.
 */
export declare function getPreloadedPrograms(programs: Array<PreloadableProgram>): {
    programs: PreloadedProgram[];
    cleanup: () => void;
};
export declare function airdropSol(rpc: Rpc<SolanaRpcApi>, address: string, amount?: bigint): Promise<void>;
export declare function getBalance(rpc: Rpc<SolanaRpcApi>, address: Address): Promise<number>;
/**
 * Creates a new SPL Token (v1) mint account using only @solana/kit primitives.
 * The signer becomes the mint authority. No freeze authority is set.
 */
export declare function createSplMint(rpc: SvmRpc, signer: SvmSigner, decimals: number): Promise<Address>;
//# sourceMappingURL=setup.d.ts.map