import {
BridgeClient,
Chain,
getBridgeHandlerPDA,
getTargetChainBridgeTxIdFromSourceTxId,
} from "@solayer-labs/bridge-sdk";
import {
Connection,
Keypair,
PublicKey,
sendAndConfirmTransaction,
} from "@solana/web3.js";
import * as anchor from "@coral-xyz/anchor";
async function completeBridgeWorkflow() {
const connection = new Connection("https://api.devnet.solana.com");
const userKeypair = Keypair.generate();
const bridgeClient = new BridgeClient({
connection,
userPublicKey: userKeypair.publicKey,
chain: Chain.Solana,
commitment: "confirmed",
});
// Bridge parameters
const params = {
bridgeProofNonce: new anchor.BN(Date.now()),
amount: new anchor.BN(1000000000), // 1 token
recipient: new PublicKey("recipient_address"),
additionalSolGas: new anchor.BN(0),
};
const accounts = {
mint: new PublicKey("token_mint"),
signerVault: new PublicKey("your_token_account"),
};
try {
// Create bridge transaction
const transaction =
await bridgeClient.createBridgeAssetSourceChainTransaction(
params,
accounts
);
// Sign and send transaction
const signature = await sendAndConfirmTransaction(connection, transaction, [
userKeypair,
]);
console.log("Bridge initiated:", signature);
// Track bridge completion
const targetTxId = await getTargetChainBridgeTxIdFromSourceTxId(
signature,
Chain.Solana,
new Connection("https://rpc.devnet.solayer.com")
);
if (targetTxId) {
console.log("Bridge completed on target chain:", targetTxId);
}
} catch (error) {
console.error("Bridge failed:", error);
}
}