import { SvmSpokeClient } from "@across-protocol/contracts";
import { Idl } from "@coral-xyz/anchor";
import { Address, Instruction, KeyPairSigner, type Commitment, type TransactionSigner } from "@solana/kit";
import { RelayData, RelayDataWithMessageHash } from "../../interfaces";
import { BigNumber, Address as SdkAddress } from "../../utils";
import { AttestedCCTPMessage, EventName, SVMProvider, LatestBlockhash, SolanaTransaction } from "./types";
import winston from "winston";
export declare const SolanaVoidSigner: (simulationAddress: string) => TransactionSigner<string>;
export declare function isDevnet(rpc: SVMProvider): Promise<boolean>;
export declare function toAddress(address: SdkAddress): Address<string>;
export declare function getNearestSlotTime(provider: SVMProvider, opts?: {
    slot: bigint;
} | {
    commitment: Commitment;
}, logger?: winston.Logger): Promise<{
    slot: bigint;
    timestamp: number;
}>;
export declare function getLatestFinalizedSlotWithBlock(provider: SVMProvider, logger: winston.Logger, maxSlot: bigint, maxLookback?: number): Promise<number>;
export declare function parseEventData(eventData: any): any;
export declare function decodeEvent(idl: Idl, rawEvent: string): {
    data: unknown;
    name: string;
};
export declare function getEventName(rawName: string): EventName;
export declare function unwrapEventData(data: unknown, uint8ArrayKeysAsBigInt?: string[], currentKey?: string): unknown;
export declare function getStatePda(programId: Address): Promise<Address>;
export declare function getFillStatusPda(programId: Address, relayData: RelayDataWithMessageHash, destinationChainId: number): Promise<Address>;
export declare function getRoutePda(originToken: Address, seed: bigint, routeChainId: bigint): Promise<Address>;
export declare function getTransferLiabilityPda(programId: Address, originToken: Address): Promise<Address>;
export declare function getRootBundlePda(programId: Address, rootBundleId: number): Promise<Address>;
export declare function getInstructionParamsPda(programId: Address, signer: Address): Promise<Address>;
export declare function getClaimAccountPda(programId: Address, mint: Address, tokenOwner: Address): Promise<Address>;
export declare function getEventAuthority(programId: Address): Promise<Address>;
export declare function getHandlerSignerPda(programId: Address): Promise<Address>;
export declare const getSelfAuthority: () => Promise<Address<string>>;
export declare function getRandomSvmAddress(): Address<string>;
export declare const createDefaultTransaction: (rpcClient: SVMProvider, signer: TransactionSigner, latestBlockhash?: LatestBlockhash) => Promise<SolanaTransaction>;
export declare const simulateAndDecode: <P extends (buf: Buffer) => unknown>(solanaClient: SVMProvider, ix: Instruction, signer: KeyPairSigner, parser: P, latestBlockhash?: LatestBlockhash) => Promise<ReturnType<P>>;
export declare function toSvmRelayData(relayData: RelayData): SvmSpokeClient.RelayData;
export declare const getCCTPNoncePda: (solanaClient: SVMProvider, signer: KeyPairSigner, nonce: number, sourceDomain: number, latestBlockhash?: LatestBlockhash) => Promise<Address>;
export declare function isDepositForBurnEvent(event: AttestedCCTPMessage): boolean;
export declare const isRelayRootBundleMessageBody: (body: Buffer) => boolean;
export declare const isEmergencyDeleteRootBundleMessageBody: (body: Buffer) => boolean;
export declare const getEmergencyDeleteRootBundleRootBundleId: (body: Buffer) => number;
export declare function bigintToU8a32(n: bigint): Uint8Array;
export declare const bigToU8a32: (bn: bigint | BigNumber) => Uint8Array<ArrayBufferLike>;
export declare const numberToU8a32: (n: number) => Uint8Array<ArrayBufferLike>;
