UNPKG

@subasshrestha/zebec-wormhole-sdk

Version:

This sdk can be use to transfer assets across chains and to interact with the Zebec's xchain bridge smart contracts for passing message from EVM chain to solana specially to utilize the features of Zebec Streaming and Zebec Multisig Streaming protocol.

102 lines (101 loc) 6.33 kB
import { BigNumber, ContractReceipt, ethers } from "ethers"; /** * A zebec bridge client interface for evm bridge. */ export interface IZebecEthBridgeClient { /** * An arbitary fee used for paying fee to wormhole */ readonly ArbitaryFee: BigNumber; /** * Sends payload to create solana account for evm user. * @param address evm user address for which solana account is created */ registerUser(address: string, overrides?: ethers.Overrides): Promise<ContractReceipt>; /** * Sends payload to initialize associated token account in solana via evm bridge to wormhole. * @param owner evm user address * @param tokenMint solana token mint address */ createTokenAccount(owner: string, tokenMint: string, overrides?: ethers.Overrides): Promise<ContractReceipt>; /** * Sends payload to deposit in zebec vault in solana via evm bridge to wormhole. * @param amount amount of token to deposit * @param depositor evm address of depositor * @param token_mint solana token mint address to deposit */ deposit(amount: string, depositor: string, token_mint: string, overrides?: ethers.Overrides): Promise<ContractReceipt>; /** * Sends payload to withdraw from zebec vault in solana via evm bridge to wormhole. * @param amount amount of token to withdraw * @param sender evm address from where token was deposited at firstd * @param tokenMint solana token mint address to withdraw */ withdraw(amount: string, sender: string, tokenMint: string, overrides?: ethers.Overrides): Promise<ContractReceipt>; /** * Sends payload to initialize token stream in solana via evm bridge to wormhole. * * *Note: It takes few minutes for payloads to reach the solana chain from evm chain. * So, make sure start time does not get passed during transaction execution in solana* * @param startTime unix timestamp from which onward stream starts * @param endTime unix timestamp at which stream ends * @param amount amount of token streamed * @param receiver evm address to which token streams is targeted * @param sender evm address from which token stream is initialized * @param canCancel specifies whether stream can be canceled or not * @param canUpdate specifies whether stream information can be mutated after stream initialization or not * @param tokenMint solana token mint address which is streamed */ initStream(startTime: string, endTime: string, amount: string, receiver: string, sender: string, canCancel: boolean, canUpdate: boolean, tokenMint: string, overrides?: ethers.Overrides): Promise<ContractReceipt>; /** * Sends payload to update existing token stream in solana via evm bridge to wormhole. * @param startTime unix timestamp from which onward stream will to start * @param endTime unix timestamp at which stream will end * @param amount amount of token streamed * @param receiver evm address to which token streams is targeted * @param sender evm address from which token stream is initialized * @param streamDataAcount solana stream info account address created at initialization * @param tokenMint solana token mint address which is streamed */ updateStream(startTime: string, endTime: string, amount: string, receiver: string, sender: string, streamDataAcount: string, tokenMint: string, overrides?: ethers.Overrides): Promise<ContractReceipt>; /** * Sends payload to withdraw streamed token (by receiver) in solana via evm bridge to wormhole. * @param sender evm address from which token stream is initialized * @param withdrawer evm address to which token streams is targeted * @param tokenMint solana token mint address which is streamed * @param streamDataAccount solana stream info account address created at initialization */ withdrawStreamed(sender: string, withdrawer: string, tokenMint: string, streamDataAccount: string, overrides?: ethers.Overrides): Promise<ContractReceipt>; /** * Sends payload to cancel existing token stream in solana via evm bridge to wormhole. * @param sender evm address from which token stream is initialized * @param receiver evm address to which token streams is targeted * @param tokenMint solana token mint address which was streamed * @param streamDataAccount solana stream info account address created at initialization */ cancelStream(sender: string, receiver: string, tokenMint: string, streamDataAccount: string, overrides?: ethers.Overrides): Promise<ContractReceipt>; /** * Sends payload to pause or resume token stream in solana via evm bridge to wormhole. * @param sender evm address from which token stream is initialized * @param receiver evm address to which token streams is targeted * @param tokenMint solana token mint address which was streamed * @param streamDataAccount solana stream info account address created at initialization */ pauseResumeStream(sender: string, receiver: string, tokenMint: string, streamDataAccount: string, overrides?: ethers.Overrides): Promise<ContractReceipt>; /** * Sends payload to transfer token (from vault) instantly (not stream) via evm bridge to wormhole. * @param amount amount of token to transfer * @param sender evm address from whose vault token is transfer * @param receiver evm address to which token token is transfer * @param tokenMint solana token mint address which was streamed */ instantTransfer(amount: string, sender: string, receiver: string, tokenMint: string, overrides?: ethers.Overrides): Promise<ContractReceipt>; /** * Sends payload to transfer token from solana chain to evm chain address via evm bridge to wormhole. * @param amount amount of token to transfer * @param sender evm address from whose corresponding solana account token is transfer * @param receiver evm address to which token is transfer * @param tokenMint */ directTransfer(amount: string, sender: string, receiver: string, tokenMint: string, overrides?: ethers.Overrides): Promise<ContractReceipt>; }