import { z } from 'zod';
import { CallData } from '@hyperlane-xyz/utils';
export declare function encodeIcaCalls(calls: CallData[], salt: string): string;
export type RawCallData = {
    to: string;
    value?: string | number;
    data: string;
};
export declare function normalizeCalls(calls: RawCallData[]): CallData[];
export declare function commitmentFromIcaCalls(calls: CallData[], salt: string): string;
/**
 * Format of REVEAL message:
 * [   0:  1] MessageType.REVEAL (uint8)
 * [   1: 33] ICA ISM (bytes32)
 * [  33: 65] Commitment (bytes32)
 */
export declare function commitmentFromRevealMessage(message: string): string;
declare const PostCallsLegacySchema: z.ZodObject<{
    calls: z.ZodArray<z.ZodObject<{
        to: z.ZodString;
        data: z.ZodString;
        value: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        to: string;
        data: string;
        value?: string | undefined;
    }, {
        to: string;
        data: string;
        value?: string | undefined;
    }>, "many">;
    relayers: z.ZodArray<z.ZodString, "many">;
    salt: z.ZodString;
    ismOverride: z.ZodOptional<z.ZodString>;
    originDomain: z.ZodNumber;
} & {
    commitmentDispatchTx: z.ZodString;
}, "strip", z.ZodTypeAny, {
    salt: string;
    calls: {
        to: string;
        data: string;
        value?: string | undefined;
    }[];
    relayers: string[];
    originDomain: number;
    commitmentDispatchTx: string;
    ismOverride?: string | undefined;
}, {
    salt: string;
    calls: {
        to: string;
        data: string;
        value?: string | undefined;
    }[];
    relayers: string[];
    originDomain: number;
    commitmentDispatchTx: string;
    ismOverride?: string | undefined;
}>;
declare const PostCallsIcaSchema: z.ZodObject<{
    calls: z.ZodArray<z.ZodObject<{
        to: z.ZodString;
        data: z.ZodString;
        value: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        to: string;
        data: string;
        value?: string | undefined;
    }, {
        to: string;
        data: string;
        value?: string | undefined;
    }>, "many">;
    relayers: z.ZodArray<z.ZodString, "many">;
    salt: z.ZodString;
    ismOverride: z.ZodOptional<z.ZodString>;
    originDomain: z.ZodNumber;
} & {
    destinationDomain: z.ZodNumber;
    owner: z.ZodString;
    userSalt: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    owner: string;
    salt: string;
    destinationDomain: number;
    calls: {
        to: string;
        data: string;
        value?: string | undefined;
    }[];
    relayers: string[];
    originDomain: number;
    ismOverride?: string | undefined;
    userSalt?: string | undefined;
}, {
    owner: string;
    salt: string;
    destinationDomain: number;
    calls: {
        to: string;
        data: string;
        value?: string | undefined;
    }[];
    relayers: string[];
    originDomain: number;
    ismOverride?: string | undefined;
    userSalt?: string | undefined;
}>;
export declare const PostCallsSchema: z.ZodUnion<[z.ZodObject<{
    calls: z.ZodArray<z.ZodObject<{
        to: z.ZodString;
        data: z.ZodString;
        value: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        to: string;
        data: string;
        value?: string | undefined;
    }, {
        to: string;
        data: string;
        value?: string | undefined;
    }>, "many">;
    relayers: z.ZodArray<z.ZodString, "many">;
    salt: z.ZodString;
    ismOverride: z.ZodOptional<z.ZodString>;
    originDomain: z.ZodNumber;
} & {
    destinationDomain: z.ZodNumber;
    owner: z.ZodString;
    userSalt: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    owner: string;
    salt: string;
    destinationDomain: number;
    calls: {
        to: string;
        data: string;
        value?: string | undefined;
    }[];
    relayers: string[];
    originDomain: number;
    ismOverride?: string | undefined;
    userSalt?: string | undefined;
}, {
    owner: string;
    salt: string;
    destinationDomain: number;
    calls: {
        to: string;
        data: string;
        value?: string | undefined;
    }[];
    relayers: string[];
    originDomain: number;
    ismOverride?: string | undefined;
    userSalt?: string | undefined;
}>, z.ZodObject<{
    calls: z.ZodArray<z.ZodObject<{
        to: z.ZodString;
        data: z.ZodString;
        value: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        to: string;
        data: string;
        value?: string | undefined;
    }, {
        to: string;
        data: string;
        value?: string | undefined;
    }>, "many">;
    relayers: z.ZodArray<z.ZodString, "many">;
    salt: z.ZodString;
    ismOverride: z.ZodOptional<z.ZodString>;
    originDomain: z.ZodNumber;
} & {
    commitmentDispatchTx: z.ZodString;
}, "strip", z.ZodTypeAny, {
    salt: string;
    calls: {
        to: string;
        data: string;
        value?: string | undefined;
    }[];
    relayers: string[];
    originDomain: number;
    commitmentDispatchTx: string;
    ismOverride?: string | undefined;
}, {
    salt: string;
    calls: {
        to: string;
        data: string;
        value?: string | undefined;
    }[];
    relayers: string[];
    originDomain: number;
    commitmentDispatchTx: string;
    ismOverride?: string | undefined;
}>]>;
export type PostCallsType = z.infer<typeof PostCallsSchema>;
export type PostCallsLegacyType = z.infer<typeof PostCallsLegacySchema>;
export type PostCallsIcaType = z.infer<typeof PostCallsIcaSchema>;
export declare function isPostCallsIca(data: PostCallsType): data is PostCallsIcaType;
export {};
//# sourceMappingURL=icaCalls.d.ts.map