Event Handling
Actions emit events throughout their lifecycle. These events can be used to update application UI and track progress.
Available Events
| Event | Payload | Description |
|---|---|---|
status-change | string | Triggered when status updates |
progress | StrategyProgress | Detailed progress metrics |
completed | none | Operation completed successfully |
failed | none | Operation failed |
error | LombardError | Error details |
Subscribing to Events
import { StakeEvent } from '@lombard.finance/sdk';
const stake = sdk.chain.btc.stake({ /* ... */ });
stake.on(StakeEvent.StatusChange, (status) => {
console.log('Status:', status);
});
stake.on(StakeEvent.Progress, (progress) => {
console.log('Progress:', progress);
console.log('Confirmations:', progress.confirmations);
});
stake.on(StakeEvent.Completed, () => {
console.log('Staking completed!');
});
stake.on(StakeEvent.Error, (error) => {
console.error('Error:', error.code, error.message);
});Progress Tracking
The StrategyProgress interface provides detailed tracking:
interface StrategyProgress<TStatus extends string> {
status: TStatus;
steps: Record<string, StepStatus>;
confirmations?: number;
requiredConfirmations?: number;
metadata?: Record<string, unknown>;
}
const StepStatus = {
IDLE: 'idle',
PENDING: 'pending',
COMPLETE: 'complete',
FAILED: 'failed',
} as const;Cleanup
Remove event listeners to prevent memory leaks:
const handler = (status) => console.log(status);
stake.on(StakeEvent.StatusChange, handler);
// Later, when done:
stake.off(StakeEvent.StatusChange, handler);Event Constants
All action types share identical event structures:
StakeEventDepositEventUnstakeEventDeployEventRedeemEventBridgeEventStakeAndDeployEventDepositAndDeployEvent
Each provides: Progress, StatusChange, Completed, Failed, and Error.
Last updated on