import { type ProtocolType } from '@hyperlane-xyz/utils'; import { type ProtocolTypedTransaction, type WarpTypedTransaction } from '@hyperlane-xyz/sdk'; /** * Runtime-validated cast from WarpTypedTransaction to ProtocolTypedTransaction. * WarpTypedTransaction extends TypedTransaction but ProtocolTypedTransaction * only covers known protocol types. * Safe at runtime because WarpCore only produces default-provider transactions. * * The double-cast (as unknown as) is unavoidable due to TypeScript's type narrowing * limitations: WarpTypedTransaction is a union of all protocol transaction types, * and ProtocolTypedTransaction

is a conditional/mapped type. Even after the * runtime assert() proves type safety, TypeScript cannot narrow the union across * this structural boundary. The cast is safe because the assert validates the * transaction type matches the expected protocol at runtime. * * @param tx - The transaction to cast * @param expectedProtocol - The expected protocol type * @returns The transaction cast to ProtocolTypedTransaction * @throws Error if the transaction type doesn't match the expected protocol */ export declare function toProtocolTransaction(tx: WarpTypedTransaction, expectedProtocol: ProtocolType): ProtocolTypedTransaction; //# sourceMappingURL=transactionUtils.d.ts.map