UNPKG

@lightlink-network/ll-sdk

Version:

[LightLink] Tools for working with LightLink

76 lines (59 loc) 2.34 kB
# @lightlink-network/ll-sdk > [!NOTE] > The SDK was originally forked from the [Optimism SDK](https://www.npmjs.com/package/@eth-optimism/sdk) and has been modified to work with the LightLink network. The LightLink SDK provides a simple interface to interact with the LightLink Native Bridge and Cross Chain Messenger. ## Installation ```bash npm install @lightlink-network/ll-sdk ``` ## Usage The SDK can be used to interact with the LightLink network Native Bridge in a few simple steps. ```typescript import { CrossChainMessenger, L1ChainID, L2ChainID, MessageStatus, } from '@lightlink-network/ll-sdk' import { ethers } from 'ethers' const l1Provider = new ethers.providers.StaticJsonRpcProvider( process.env.L1_RPC_URL! ) const l2Provider = new ethers.providers.StaticJsonRpcProvider( process.env.L2_RPC_URL! ) const l1Wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, l1Provider) const l2Wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, l2Provider) const messenger = new CrossChainMessenger({ l1SignerOrProvider: l1Wallet, l2SignerOrProvider: l2Wallet, l1ChainId: L1ChainID.SEPOLIA, l2ChainId: L2ChainID.LIGHTLINK_PEGASUS, lightlink: true, }) async function main() { // DepositETH is a simple one step process. let tx = await messenger.depositETH(ethers.utils.parseEther('0.001')) await tx.wait() // WithdrawETH is a three step process over a period of at least 7 days. // Step 1: Withdraw ETH from L2 to L1 let tx = await messenger.withdrawETH(ethers.utils.parseEther('0.001')) await tx.wait() // Step 2: Prove the withdrawal on L1 tx = await messenger.proveMessage(tx.hash) await tx.wait() // Step 3: Finalize the withdrawal on L1 tx = await messenger.finalizeMessage(tx.hash) await tx.wait() // A message status can be checked. This can be useful for checking if // the next step in the withdrawal process is ready. i.e. READY_TO_PROVE let status = await messenger.getMessageStatus(tx.hash) if (status === MessageStatus.READY_TO_PROVE) { console.log('Withdrawal is ready to be proven!') } // Optionally, you can wait for a message to reach a certain status. // This can be useful for waiting for a deposit to be relayed by the // sequencer (12 confirmations). await messenger.waitForMessageStatus(tx.hash, MessageStatus.RELAYED) } ```