sbtc-bridge-lib
Version:
Library for sBTC Bridge web client and API apps
111 lines (110 loc) • 3.73 kB
TypeScript
import * as btc from '@scure/btc-signer';
import type { PayloadType } from './types/sbtc_types.js';
export declare const MAGIC_BYTES_TESTNET = "5432";
export declare const MAGIC_BYTES_MAINNET = "5832";
export declare const PEGIN_OPCODE = "3C";
export declare const PEGOUT_OPCODE = "3E";
export declare function parseDepositPayload(d1: Uint8Array): PayloadType;
export declare function amountToUint8(amt: number, size: number): Uint8Array;
/**
export function uint8ToAmount(buf:Uint8Array):number {
const hmmm = hex.decode(hex.encode(buf)) // needed to make work ?
const view = new DataView(hmmm.buffer);
const amt = view.getUint32(0);
return amt;
}
*/
export declare function amountToBigUint64(amt: number, size: number): Uint8Array;
export declare function bigUint64ToAmount(buf: Uint8Array): number;
export declare function parseWithdrawPayload(network: string, d0: string, bitcoinAddress: string, sigMode: 'rsv' | 'vrs'): PayloadType;
export declare enum PrincipalType {
STANDARD = "05",
CONTRACT = "06"
}
export declare function buildDepositPayload(network: string, stacksAddress: string): string;
export declare function buildDepositPayloadOpDrop(network: string, stacksAddress: string, revealFee: number): string;
/**
* @param network (testnet|mainnet)
* @param amount
* @param signature
* @returns
*/
export declare function buildWithdrawPayload(network: string, amount: number, signature: string): string;
/**
* Withdrawal using commit reveal (op_drop) pattern
* @param network (testnet|mainnet)
* @param amount
* @param signature
* @returns
*/
export declare function buildWithdrawPayloadOpDrop(network: string, amount: number, signature: string): string;
export declare function readDepositValue(outputs: Array<any>): number;
/**
*
* @param network
* @param txHex
* @returns
*/
export declare function parsePayloadFromTransaction(network: string, txHex: string): PayloadType;
export declare function parsePayloadFromOutput(network: string, tx: btc.Transaction): PayloadType;
/**
*
* @param network
* @param amount
* @param bitcoinAddress
* @returns
*/
export declare function getDataToSign(network: string, amount: number, bitcoinAddress: string): string;
export declare function getStacksSimpleHashOfDataToSign(network: string, amount: number, bitcoinAddress: string): string;
/**
*
* @param messageHash
* @param signature
* @returns
*/
export declare function getStacksAddressFromSignature(messageHash: Uint8Array, signature: string): {
tp2pkh: string;
tp2sh: string;
mp2pkh: string;
mp2sh: string;
};
export declare function getStacksAddressFromSignatureRsv(messageHash: Uint8Array, signature: string): {
tp2pkh: string;
tp2sh: string;
mp2pkh: string;
mp2sh: string;
};
export declare function getStacksAddressFromPubkey(pubkey: Uint8Array): {
tp2pkh: string;
tp2sh: string;
mp2pkh: string;
mp2sh: string;
};
export declare function getMagicAndOpCode(d1: Uint8Array): {
magic?: string;
opcode: string;
txType?: string;
};
/**
* Ensure we don't overwrite the original object with Uint8Arrays these can't be serialised to local storage.
* @param script
* @returns
*/
export declare function fromStorable(script: any): any;
/**
*
* @param script
* @returns
*/
export declare function toStorable(script: any): {
address: any;
script: string | Uint8Array | undefined;
paymentType: any;
witnessScript: string | Uint8Array | undefined;
redeemScript: string | Uint8Array | undefined;
leaves: any;
tapInternalKey: string | Uint8Array | undefined;
tapLeafScript: any;
tapMerkleRoot: string | Uint8Array | undefined;
tweakedPubkey: string | Uint8Array | undefined;
};