import { type Address } from '@solana/kit';
import { type HyperlaneTokenAccountData } from '../accounts/token.js';
import type { SvmRpc } from '../types.js';
export declare enum SvmWarpTokenType {
    Native = "native",
    Synthetic = "synthetic",
    Collateral = "collateral",
    CrossCollateral = "crossCollateral"
}
/**
 * Fetches and decodes the HyperlaneToken PDA for a given warp program.
 * Returns null if the account does not exist or is not initialized.
 */
export declare function fetchTokenAccount(rpc: SvmRpc, programId: Address): Promise<HyperlaneTokenAccountData | null>;
/**
 * Detects the warp token type by checking which type-specific PDA exists on-chain.
 *
 * Each token type creates exactly one unique PDA during init:
 *   Native:     nativeCollateralPda  ["hyperlane_token", "-", "native_collateral"]
 *   Synthetic:  syntheticMintPda     ["hyperlane_token", "-", "mint"]
 *   Collateral: escrowPda            ["hyperlane_token", "-", "escrow"]
 */
export declare function detectWarpTokenType(rpc: SvmRpc, programId: Address): Promise<SvmWarpTokenType>;
/** Converts a 32-byte router H256 to a 0x-prefixed hex string. */
export declare function routerBytesToHex(bytes: Uint8Array): string;
/**
 * Converts a 0x-prefixed hex string to a 32-byte Uint8Array.
 * Asserts the result is exactly 32 bytes.
 */
export declare function routerHexToBytes(hex: string): Uint8Array;
//# sourceMappingURL=warp-query.d.ts.map