///
import { TransactionSignerPair } from '@certusone/wormhole-sdk/lib/cjs/algorand';
import { Algodv2 } from "algosdk";
import { BigNumberish, ContractReceipt, ethers, PayableOverrides, Signer } from "ethers";
import { ChainName, WormholeEnvironment, WormholeNetwork, XAssetId, XContractAddress, XRecipientId } from "./types";
import { WormholeDictionary } from "./dictionary";
import { Connection, PublicKey, PublicKeyInitData, Transaction, TransactionResponse, TransactionSignature, VersionedTransactionResponse } from "@solana/web3.js";
import type { SolanaSignTxCallback } from "../tools";
export type SolanaRedeemProgress = {
verifySigTxs?: Transaction[];
postVaaTx?: Transaction;
signers?: any[];
successTxCount: number;
totalTxCount: number;
};
export type CreateSolanaAtaAccountInfo = {
created: boolean;
signature: string;
};
export interface WormholeService {
getMirrorAsset(xAsset: XAssetId, dest: ChainName, provider?: ethers.providers.Provider | ethers.Signer): Promise;
createWormholeTxForEthereumRedeem(sender: XRecipientId, vaa: Uint8Array, signer: Signer, overrides?: ethers.Overrides): Promise;
createWormholeTxForSolanaRedeem(asset: XAssetId, signedVAA: Uint8Array, connection: Connection, payerAccount: PublicKey, signCallback: SolanaSignTxCallback, transactionProgress: SolanaRedeemProgress, postVaaMaxRetries?: number, multiplier?: number, maxPriorityFeeCap?: number, minPriorityFee?: number): Promise;
redeemOnAlgorand(sender: XRecipientId, vaa: Uint8Array): Promise;
createWormholeTxForEvmNetworkDeposit(toAddress: XRecipientId, asset: XAssetId, amount: BigNumberish, repayAmount: bigint, signer: Signer, receiver: string, overrides?: PayableOverrides): Promise;
createWormholeTxForEvmNetworkDeposit_CCTP(toAddress: XRecipientId, asset: XAssetId, amount: BigNumberish, repayAmount: bigint, signer: Signer, receiver: string, hubAddress: string, overrides?: PayableOverrides): Promise;
createWormholeTxForAlgorandNetworkWithdraw(fromXAddress: XRecipientId, toXAddress: XRecipientId, xAsset: XContractAddress, amount: bigint, fee: bigint, optionalArgs?: any): Promise;
createWormholeTxForAlgorandNetworkWithdraw_CCTP(fromXAddress: XRecipientId, toXAddress: XRecipientId, xAsset: XContractAddress, amount: bigint, fee: bigint, hubAddress: string, optionalArgs?: any): Promise;
createWormholeTxForSolanaNetworkDeposit(connection: Connection, publicKey: PublicKey, signCallback: SolanaSignTxCallback, toAddress: XRecipientId, asset: XAssetId, amount: bigint, repayAmount: bigint, receiver: string): Promise;
fetchVaaFromSource(evmSourceChain: ChainName, vaaSequence: bigint, retryTimeout?: number, maxRetryCount?: number, rpcOptions?: Record): Promise;
getWormholeVaaSequenceFromEthereumTx(chain: ChainName, txReceipt: ethers.ContractReceipt): string;
getWormholeVaaSequenceFromAlgorandTx(txId: string): Promise;
getWormholeVaaSequenceFromSolanaTx(transactionResponse: TransactionResponse | VersionedTransactionResponse): Promise;
getDictionary(): WormholeDictionary;
isEthereumTransferComplete(signer: ethers.Signer | ethers.providers.Provider, signedVAA: Uint8Array, evmDestChain: ChainName): Promise;
isAlgorandTransferComplete(signedVAA: Uint8Array): Promise;
isSolanaTransferComplete(connection: Connection, signedVAA: Uint8Array): Promise;
getNetwork(): WormholeNetwork;
isVaaEnqueued(sourceChain: ChainName, vaaSequence: bigint, retryTimeout?: number, maxRetryCount?: number, rpcOptions?: Record): Promise;
createSolanaAtaAccount(connection: Connection, associatedTokenAddress: PublicKey, ownerPublicKey: PublicKey, payerSignCallback: SolanaSignTxCallback, mint: PublicKey, payer?: PublicKey): Promise;
solanaAtaExistsFromOwner(connection: Connection, ownerAddr: string, tokenAddress: string): Promise;
getSolanaAssociatedTokenAddress(xAsset: XContractAddress, owner: XContractAddress): Promise;
getSolanaAssociatedTokenAddressRaw(mint: PublicKeyInitData, owner: PublicKeyInitData): PublicKey;
}
export declare class WormholeServiceImpl implements WormholeService {
private wormholeEnvironment;
private algodClient;
private dictionary;
constructor(wormholeEnvironment: WormholeEnvironment, algodClient: Algodv2);
getDictionary(): WormholeDictionary;
getNetwork(): WormholeNetwork;
buildDepositCallData(asset: XAssetId, toAddress: XRecipientId, repayAmount: bigint, receiver: string, sender: string): {
payload: Buffer;
recipient: XRecipientId;
};
createWormholeTxForEvmNetworkDeposit(toAddress: XRecipientId, asset: XAssetId, amount: BigNumberish, repayAmount: bigint, signer: Signer, receiver: string, overrides?: PayableOverrides): Promise;
createWormholeTxForSolanaNetworkDeposit(connection: Connection, publicKey: PublicKey, signCallback: SolanaSignTxCallback, toAddress: XRecipientId, asset: XAssetId, amount: bigint, repayAmount: bigint, receiver: string): Promise;
createWormholeTxForEvmNetworkDeposit_CCTP(toAddress: XRecipientId, asset: XAssetId, amount: BigNumberish, repayAmount: bigint, signer: Signer, receiver: string, hubAddress: string, overrides?: PayableOverrides): Promise;
createWormholeTxForAlgorandNetworkWithdraw(fromXAddress: XRecipientId, toXAddress: XRecipientId, xAsset: XContractAddress, amount: bigint, fee: bigint, optionalArgs?: any): Promise;
createWormholeTxForAlgorandNetworkWithdraw_CCTP(fromXAddress: XRecipientId, toXAddress: XRecipientId, xAsset: XContractAddress, amount: bigint, fee: bigint, hubAddress: string, optionalArgs?: any): Promise;
getWormholeVaaSequenceFromEthereumTx(chain: ChainName, txReceipt: ethers.ContractReceipt): string;
getWormholeVaaSequenceFromAlgorandTx(txId: string): Promise;
getWormholeVaaSequenceFromSolanaTx(transactionResponse: TransactionResponse | VersionedTransactionResponse): Promise;
/**
* Returns the mirrored asset for a given destination chain.
* @param xAsset The asset to query for. It's chain must be different from the destination chain.
* @param dest The destination chain to map.
* @param provider The RPC provider to use for the query, if needed. This must match the destination chain to query if it's an EVM chain.
* @returns The mirrored asset for the destination chain.
*/
getMirrorAsset(xAsset: XAssetId, dest: ChainName, provider?: ethers.providers.Provider | ethers.Signer): Promise;
fetchVaaFromSource(sourceChain: ChainName, vaaSequence: bigint, retryTimeout?: number, maxRetryCount?: number, rpcOptions?: Record): Promise;
createWormholeTxForEthereumRedeem(asset: XAssetId, signedVAA: Uint8Array, signer: ethers.Signer, overrides?: ethers.Overrides): Promise;
/**
* Creates a transaction for withdraw assets on Solana.
* @remarks The transactionProgress object is modified in place, beware of any concurrency issues.
*/
createWormholeTxForSolanaRedeem(asset: XAssetId, signedVAA: Uint8Array, connection: Connection, payerAccount: PublicKey, signCallback: SolanaSignTxCallback, transactionProgress: SolanaRedeemProgress, postVaaMaxRetries?: number, multiplier?: number, maxPriorityFeeCap?: number, minPriorityFee?: number): Promise;
redeemOnAlgorand(asset: XAssetId, vaa: Uint8Array): Promise;
isEthereumTransferComplete(signer: ethers.Signer | ethers.providers.Provider, signedVAA: Uint8Array, evmDestChain: ChainName): Promise;
isAlgorandTransferComplete(signedVAA: Uint8Array): Promise;
isSolanaTransferComplete(connection: Connection, signedVAA: Uint8Array): Promise;
isVaaEnqueued(sourceChain: ChainName, vaaSequence: bigint, retryTimeout?: number, maxRetryCount?: number, rpcOptions?: Record): Promise;
/**
* Gets the ATA Address for a specific token and owner tuple.
*
* @param asa The token to get the ATA for.
* @param owner The owner of the ATA. This must be a Solana address enconded in hex (not base58 string)
* @returns The associated token address for the owner.
*/
getSolanaAssociatedTokenAddress(asa: XContractAddress, owner: XContractAddress): Promise;
getSolanaAssociatedTokenAddressRaw(mint: PublicKeyInitData, owner: PublicKeyInitData): PublicKey;
solanaAtaExistsFromOwner(connection: Connection, ownerAddress: string, tokenAddress: string): Promise;
createSolanaAtaAccount(connection: Connection, associatedTokenAddress: PublicKey, ownerPublicKey: PublicKey, payerSignCallback: SolanaSignTxCallback, mint: PublicKey, payer?: PublicKey): Promise;
}
//# sourceMappingURL=service.d.ts.map