import { type Address } from '@solana/kit';
import type { ArtifactWriter } from '@hyperlane-xyz/provider-sdk/artifact';
import type { DeployedWarpAddress, RawNativeWarpArtifactConfig, RawWarpArtifactConfig } from '@hyperlane-xyz/provider-sdk/warp';
import { SvmSigner } from '../clients/signer.js';
import type { createRpc } from '../rpc.js';
/**
 * Overrides that can be applied to any token type config.
 * Excludes the `type` discriminant — each test provides its own fixed type.
 */
export type WarpConfigOverrides = Partial<Omit<RawNativeWarpArtifactConfig, 'type'>>;
export interface WarpTestContext {
    writer: ArtifactWriter<RawWarpArtifactConfig, DeployedWarpAddress>;
    makeConfig(overrides?: WarpConfigOverrides): RawWarpArtifactConfig;
    igpProgramId: Address;
    testIsmAddress: Address;
    signer: SvmSigner;
    rpc: ReturnType<typeof createRpc>;
    rpcUrl: string;
}
/**
 * Registers the shared warp token test suite inside the calling describe() block.
 * Calls onDeployedProgramId with the address from the first deploy test so
 * token-specific tests in the calling file can capture it via closure.
 */
export declare function defineWarpTokenTests(getContext: () => WarpTestContext, onDeployedProgramId: (id: string) => void): void;
//# sourceMappingURL=warp-token-suite.d.ts.map