BTC Stake
The BTC Stake action converts native Bitcoin into LBTC on an EVM chain. Users deposit BTC to a generated address, and LBTC is minted on their chosen destination chain after confirmations.
Basic Usage
import { createLombardSDK, Chain, AssetId } from '@lombard.finance/sdk';
import { config } from './lib/lombard';
const sdk = createLombardSDK(config);
const stake = sdk.chain.btc.stake({
destChain: Chain.ETHEREUM,
assetOut: AssetId.LBTC,
});
await stake.prepare({
amount: '0.1',
recipient: '0x1234567890abcdef1234567890abcdef12345678',
});
await stake.authorize();
const depositAddress = await stake.generateDepositAddress();
// depositAddress: 'bc1q...'Parameters
Stake Options
| Parameter | Type | Required | Description |
|---|---|---|---|
destChain | Chain | Yes | Target blockchain for LBTC |
assetOut | AssetId | Yes | Must be AssetId.LBTC |
sourceChain | Chain | No | Bitcoin network (mainnet or signet) |
Prepare Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
amount | string | Yes | BTC quantity |
recipient | string | Yes | EVM wallet address for LBTC |
referralCode | string | No | Referral tracking identifier |
Status Flows
Ethereum Mainnet:
IDLE → NEEDS_FEE_AUTHORIZATION → READY → ADDRESS_READYOther EVM Chains (Base, Arbitrum, etc.):
IDLE → NEEDS_ADDRESS_CONFIRMATION → READY → ADDRESS_READYWith Referral Code
await stake.prepare({
amount: '0.1',
recipient: '0x1234567890abcdef1234567890abcdef12345678',
referralCode: 'PARTNER123',
});Event Handling
import { StakeEvent } from '@lombard.finance/sdk';
stake.on(StakeEvent.StatusChange, (status) => {
console.log('Status:', status);
});
stake.on(StakeEvent.Progress, (progress) => {
console.log('Confirmations:', progress.confirmations, '/', progress.requiredConfirmations);
});
stake.on(StakeEvent.Completed, () => {
console.log('LBTC minted successfully!');
});
stake.on(StakeEvent.Error, (error) => {
console.error('Error:', error.code, error.message);
});Error Handling
import { isLombardError } from '@lombard.finance/sdk';
try {
await stake.authorize();
} catch (error) {
if (isLombardError(error) && error.code === 'user-rejected') {
console.log('User cancelled signing');
}
}Last updated on