import { AnchorProvider, BN } from "@coral-xyz/anchor";
import { BigNumber } from "ethers";
import { PublicKey } from "@solana/web3.js";
/**
 * Returns the chainId for a given solana cluster.
 */
export declare const getSolanaChainId: (cluster: "devnet" | "mainnet") => BigNumber;
/**
 * Returns true if the provider is on the devnet cluster.
 */
export declare const isSolanaDevnet: (provider: AnchorProvider) => boolean;
/**
 * “Absolute‐deadline” deposit data
 */
export declare class DepositSeedData {
    depositor: Uint8Array;
    recipient: Uint8Array;
    inputToken: Uint8Array;
    outputToken: Uint8Array;
    inputAmount: BN;
    outputAmount: number[];
    destinationChainId: BN;
    exclusiveRelayer: Uint8Array;
    quoteTimestamp: BN;
    fillDeadline: BN;
    exclusivityParameter: BN;
    message: Uint8Array;
    constructor(fields: {
        depositor: Uint8Array;
        recipient: Uint8Array;
        inputToken: Uint8Array;
        outputToken: Uint8Array;
        inputAmount: BN;
        outputAmount: number[];
        destinationChainId: BN;
        exclusiveRelayer: Uint8Array;
        quoteTimestamp: BN;
        fillDeadline: BN;
        exclusivityParameter: BN;
        message: Uint8Array;
    });
}
/**
 * Hash for the standard `deposit(...)` flow
 */
export declare function getDepositSeedHash(depositData: {
    depositor: PublicKey;
    recipient: PublicKey;
    inputToken: PublicKey;
    outputToken: PublicKey;
    inputAmount: BN;
    outputAmount: number[];
    destinationChainId: BN;
    exclusiveRelayer: PublicKey;
    quoteTimestamp: BN;
    fillDeadline: BN;
    exclusivityParameter: BN;
    message: Uint8Array;
}): Uint8Array;
/**
 * Returns the delegate PDA for `deposit(...)`
 */
export declare function getDepositPda(depositData: Parameters<typeof getDepositSeedHash>[0], programId: PublicKey): PublicKey;
/**
 * “Offset/now” deposit data
 */
export declare class DepositNowSeedData {
    depositor: Uint8Array;
    recipient: Uint8Array;
    inputToken: Uint8Array;
    outputToken: Uint8Array;
    inputAmount: BN;
    outputAmount: number[];
    destinationChainId: BN;
    exclusiveRelayer: Uint8Array;
    fillDeadlineOffset: BN;
    exclusivityPeriod: BN;
    message: Uint8Array;
    constructor(fields: {
        depositor: Uint8Array;
        recipient: Uint8Array;
        inputToken: Uint8Array;
        outputToken: Uint8Array;
        inputAmount: BN;
        outputAmount: number[];
        destinationChainId: BN;
        exclusiveRelayer: Uint8Array;
        fillDeadlineOffset: BN;
        exclusivityPeriod: BN;
        message: Uint8Array;
    });
}
/**
 * Hash for the `deposit_now(...)` flow
 */
export declare function getDepositNowSeedHash(depositData: {
    depositor: PublicKey;
    recipient: PublicKey;
    inputToken: PublicKey;
    outputToken: PublicKey;
    inputAmount: BN;
    outputAmount: number[];
    destinationChainId: BN;
    exclusiveRelayer: PublicKey;
    fillDeadlineOffset: BN;
    exclusivityPeriod: BN;
    message: Uint8Array;
}): Uint8Array;
/**
 * Returns the delegate PDA for `deposit_now(...)`
 */
export declare function getDepositNowPda(depositData: Parameters<typeof getDepositNowSeedHash>[0], programId: PublicKey): PublicKey;
/**
 * Returns the fill delegate seed hash.
 */
export declare function getFillRelayDelegateSeedHash(relayHash: Uint8Array, repaymentChainId: BN, repaymentAddress: PublicKey): Uint8Array;
/**
 * Returns the fill delegate PDA.
 */
export declare function getFillRelayDelegatePda(relayHash: Uint8Array, repaymentChainId: BN, repaymentAddress: PublicKey, programId: PublicKey): {
    seedHash: Uint8Array;
    pda: PublicKey;
};
