/// <reference types="node" />
import { ChainId } from "@certusone/wormhole-sdk";
export declare function parseVaaTyped(signedVAA: Uint8Array): Promise<ParsedVaa<Uint8Array>>;
export declare type ParsedVaa<T> = {
    timestamp: number;
    nonce: number;
    emitterChain: ChainId;
    emitterAddress: Uint8Array;
    sequence: number;
    consistencyLevel: number;
    payload: T;
};
export declare const sizeof: (d: "u8" | "boolean" | "u16" | "u64" | "u8[32]" | "evmAdr" | "u256") => number;
export declare enum ZebecPayloadId {
    SolStream = 1,
    TokenStream = 2,
    SolWithdrawStream = 3,
    TokenWithdrawStream = 4,
    DepositSol = 5,
    DepositToken = 6,
    PauseSolStream = 7,
    PauseTokenStream = 8,
    WithdrawSol = 9,
    WithdrawToken = 10,
    InstantSol = 11,
    InstantToken = 12,
    SolStreamUpdate = 13,
    TokenStreamUpdate = 14,
    CancelSolStream = 15,
    CancelTokenStream = 16,
    DirectTokenTransfer = 17
}
export declare type SolStreamPayload = {
    id: ZebecPayloadId;
    startTime: bigint;
    endTime: bigint;
    amount: bigint;
    targetChain: ChainId;
    sender: Uint8Array;
    recipient: Uint8Array;
    canCancel: bigint;
    canUpdate: bigint;
};
export declare const parseSolStreamPayload: (arr: Buffer) => SolStreamPayload;
export declare function IsSolStreamPayload(payload: any): payload is SolStreamPayload;
export declare type TokenStreamPayload = {
    id: ZebecPayloadId;
    startTime: bigint;
    endTime: bigint;
    amount: bigint;
    targetChain: ChainId;
    sender: Uint8Array;
    recipient: Uint8Array;
    canCancel: bigint;
    canUpdate: bigint;
    tokenMint: Uint8Array;
};
export declare const parseTokenStreamPayload: (arr: Buffer) => TokenStreamPayload;
export declare function IsTokenStreamPayload(payload: any): payload is TokenStreamPayload;
export declare type SolWithdrawStreamPayload = {
    id: ZebecPayloadId;
    targetChain: ChainId;
    withdrawer: Uint8Array;
};
export declare const parseSolWithdrawStreamPayload: (arr: Buffer) => SolWithdrawStreamPayload;
export declare function IsSolWithdrawStreamPayload(payload: any): payload is SolWithdrawStreamPayload;
export declare type TokenWithdrawStreamPayload = {
    id: ZebecPayloadId;
    targetChain: ChainId;
    withdrawer: Uint8Array;
    tokenMint: Uint8Array;
    sender: Uint8Array;
    dataAccount: Uint8Array;
};
export declare const parseTokenWithdrawStreamPayload: (arr: Buffer) => TokenWithdrawStreamPayload;
export declare function IsTokenWithdrawStreamPayload(payload: any): payload is TokenWithdrawStreamPayload;
export declare type SolDepositPayload = {
    id: ZebecPayloadId;
    amount: bigint;
    targetChain: ChainId;
    sender: Uint8Array;
};
export declare const parseSolDepositPayload: (arr: Buffer) => SolDepositPayload;
export declare function IsSolDepositPayload(payload: any): payload is SolDepositPayload;
export declare type TokenDepositPayload = {
    id: ZebecPayloadId;
    amount: bigint;
    targetChain: ChainId;
    sender: Uint8Array;
    tokenMint: Uint8Array;
};
export declare const parseTokenDepositPayload: (arr: Buffer) => TokenDepositPayload;
export declare function IsTokenDepositPayload(payload: any): payload is TokenDepositPayload;
export declare type PauseSolStreamPayload = {
    id: ZebecPayloadId;
    targetChain: ChainId;
    sender: Uint8Array;
};
export declare const parsePauseSolStreamPayload: (arr: Buffer) => PauseSolStreamPayload;
export declare function IsPauseSolStreamPayload(payload: any): payload is PauseSolStreamPayload;
export declare type PauseTokenStreamPayload = {
    id: ZebecPayloadId;
    targetChain: ChainId;
    sender: Uint8Array;
    tokenMint: Uint8Array;
    recipient: Uint8Array;
    dataAccount: Uint8Array;
};
export declare const parsePauseTokenStreamPayload: (arr: Buffer) => PauseTokenStreamPayload;
export declare function IsPauseTokenStreamPayload(payload: any): payload is PauseTokenStreamPayload;
export declare type SolWithdrawPayload = {
    id: ZebecPayloadId;
    amount: bigint;
    targetChain: ChainId;
    withdrawer: Uint8Array;
};
export declare function IsSolWithdrawPayload(payload: any): payload is SolWithdrawPayload;
export declare const parseSolWithdrawPayload: (arr: Buffer) => SolWithdrawPayload;
export declare type TokenWithdrawPayload = {
    id: ZebecPayloadId;
    amount: bigint;
    targetChain: ChainId;
    withdrawer: Uint8Array;
    tokenMint: Uint8Array;
};
export declare const parseTokenWithdrawPayload: (arr: Buffer) => TokenWithdrawPayload;
export declare function IsTokenWithdrawPayload(payload: any): payload is TokenWithdrawPayload;
export declare type InstantSolTransferPayload = {
    id: ZebecPayloadId;
    amount: bigint;
    targetChain: ChainId;
    sender: Uint8Array;
    recipient: Uint8Array;
};
export declare const parseInstantSolPayload: (arr: Buffer) => InstantSolTransferPayload;
export declare function IsInstantSolPayload(payload: any): payload is InstantSolTransferPayload;
export declare type InstantTokenTransferPayload = {
    id: ZebecPayloadId;
    amount: bigint;
    targetChain: ChainId;
    sender: Uint8Array;
    tokenMint: Uint8Array;
    recipient: Uint8Array;
};
export declare const parseInstantTokenPayload: (arr: Buffer) => InstantTokenTransferPayload;
export declare function IsInstantTokenPayload(payload: any): payload is InstantTokenTransferPayload;
export declare type SolStreamUpdatePayload = {
    id: ZebecPayloadId;
    startTime: bigint;
    endTime: bigint;
    amount: bigint;
    targetChain: ChainId;
    sender: Uint8Array;
    recipient: Uint8Array;
};
export declare const parseSolStreamUpdatePayload: (arr: Buffer) => SolStreamUpdatePayload;
export declare function IsSolStreamUpdatePayload(payload: any): payload is SolStreamUpdatePayload;
export declare type TokenStreamUpdatePayload = {
    id: ZebecPayloadId;
    startTime: bigint;
    endTime: bigint;
    amount: bigint;
    targetChain: ChainId;
    sender: Uint8Array;
    recipient: Uint8Array;
    tokenMint: Uint8Array;
    dataAccount: Uint8Array;
};
export declare const parseTokenStreamUpdatePayload: (arr: Buffer) => TokenStreamUpdatePayload;
export declare function IsTokenStreamUpdatePayload(payload: any): payload is TokenStreamUpdatePayload;
export declare type CancelSolStreamPayload = {
    id: ZebecPayloadId;
    targetChain: ChainId;
    sender: Uint8Array;
};
export declare function IsCancelSolStreamPayload(payload: any): payload is CancelSolStreamPayload;
export declare const parseCancelSolStreamPayload: (arr: Buffer) => CancelSolStreamPayload;
export declare type CancelTokenStreamPayload = {
    id: ZebecPayloadId;
    targetChain: ChainId;
    sender: Uint8Array;
    tokenMint: Uint8Array;
    recipient: Uint8Array;
    dataAccount: Uint8Array;
};
export declare const parseCancelTokenStreamPayload: (arr: Buffer) => CancelTokenStreamPayload;
export declare function IsCancelTokenStreamPayload(payload: any): payload is CancelTokenStreamPayload;
export declare type DirectTokenTransferPayload = {
    id: ZebecPayloadId;
    amount: bigint;
    targetChain: ChainId;
    sender: Uint8Array;
    tokenMint: Uint8Array;
    receiver: Uint8Array;
};
export declare const parseDirectTokenTransferPayload: (arr: Buffer) => DirectTokenTransferPayload;
export declare function IsDirectTokenTransferPayload(payload: any): payload is DirectTokenTransferPayload;
export declare type ParsedZebecPayload = SolStreamPayload | TokenStreamPayload | SolWithdrawStreamPayload | TokenWithdrawStreamPayload | SolDepositPayload | TokenDepositPayload | PauseSolStreamPayload | PauseTokenStreamPayload | SolWithdrawPayload | TokenWithdrawPayload | InstantSolTransferPayload | InstantTokenTransferPayload | SolStreamUpdatePayload | TokenStreamUpdatePayload | CancelSolStreamPayload | CancelTokenStreamPayload | DirectTokenTransferPayload;
/** Parse the VAA and return the typed payload */
export declare function parseZebecPayload(payloadBuf: Buffer): ParsedZebecPayload;
