import { BTCNodeClient } from '../../btcNode'; export type SendTxCallback = (txHash: string) => void; export interface RedeemDetails { redeem_id: string; amount: string; fee: string; requester: string; vault_id: string; btc_address: string; } export enum IssueStatus { PENDING = '1', COMPLETED = '2', CANCELED = '3', } export enum RedeemStatus { PENDING = '1', COMPLETED = '2', CANCELED = '3', } export interface IssueDetails { issue_id: string; amount: string; fee: string; requester: string; vault_id: string; btc_address: string; } export interface TransactionReceipt { blockHash: string; blockNumber: number; contractAddress: null; cumulativeGasUsed: number; events: Record; gasUsed: number; logsBloom: string; status: boolean; to: string; from: string; transactionHash: string; } interface Event { returnValues: T; address: string; blockHash: string; blockNumber: number; logIndex: number; removed: boolean; transactionHash: string; transactionIndex: number; id: string; raw: { data: string; topics: string[]; }; event: string; signature: string; } interface IssueRequestEvent extends Event { event: 'IssueRequest'; } interface LockCollateralEvent extends Event<{ sender: string; amount: string; }> { event: 'LockCollateral'; } interface IncreaseToBeIssuedTokensEvent extends Event<{ vaultId: string; amount: string; }> { event: 'IncreaseToBeIssuedTokens'; } export interface RequestIssueReturn extends TransactionReceipt { events: { IssueRequest: IssueRequestEvent; LockCollateral: LockCollateralEvent; IncreaseToBeIssuedTokens: IncreaseToBeIssuedTokensEvent; }; } export default interface IOneBTCClient { btcNodeClient: BTCNodeClient; init(): Promise; setUseOneWallet(value: boolean): boolean; setUseMathWallet(value: boolean): boolean; setUseMetamask(value: boolean): boolean; requestIssue( amount: number, vaultAddress: string, oneAmount: string, sendTxCallback?: SendTxCallback, ): Promise; getRedeemStatus(requester: string, redeemId: string): Promise; getIssueStatus(requester: string, issueId: string): Promise; executeIssue( requester: string, issueId: string, btcTxHash: string, vaultBtcAddress: string, sendTxCallback?: SendTxCallback, ): Promise; cancelIssue( requester: string, issueId: string, sendTxCallback?: SendTxCallback, ): Promise; cancelRedeem( requester: string, issueId: string, reimburse: boolean, sendTxCallback?: SendTxCallback, ): Promise; getIssueId(requester: string): Promise; transfer( recipient: string, amount: number, sendTxCallback?: SendTxCallback, ): Promise; requestRedeem( amountOneBtc: number, btcAddress: string, vaultId: string, sendTxCallback?: SendTxCallback, ): Promise; executeRedeem( requester: string, redeemId: string, rawTx: any, sendTxCallback?: SendTxCallback, ): Promise; balanceOf(requester: string): Promise; register_vault( x: string, y: string, sendTxCallback?: SendTxCallback, ): Promise; lockAdditionalCollateral( amount: number | string, sendTxCallback: SendTxCallback, ): Promise; withdrawCollateral( amount: number | string, sendTxCallback: SendTxCallback, ): Promise; getIssueDetails(txHash: string): Promise; getRedeemDetails(txHash: string): Promise; extendVaultLockPeriod( vaultId: string, lockPeriod: number, sendTxCallback: SendTxCallback, ): Promise; getVaultLockExpireAt(lockPeriod: string): Promise; lockedVaults(vaultId: string): Promise; updateVaultAccClaimableRewards( vaultId: string, sendTxCallback: SendTxCallback, ): Promise; claimRewardsAndLock( vaultId: string, sendTxCallback: SendTxCallback, ): Promise; claimRewards( vaultId: string, sendTxCallback: SendTxCallback, ): Promise; }