test-raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
70 lines (61 loc) • 1.66 kB
text/typescript
import BN from "bn.js";
export function u16ToBytes(num: number): Uint8Array {
const arr = new ArrayBuffer(2);
const view = new DataView(arr);
view.setUint16(0, num, false);
return new Uint8Array(arr);
}
export function i16ToBytes(num: number): Uint8Array {
const arr = new ArrayBuffer(2);
const view = new DataView(arr);
view.setInt16(0, num, false);
return new Uint8Array(arr);
}
export function u32ToBytes(num: number): Uint8Array {
const arr = new ArrayBuffer(4);
const view = new DataView(arr);
view.setUint32(0, num, false);
return new Uint8Array(arr);
}
export function i32ToBytes(num: number): Uint8Array {
const arr = new ArrayBuffer(4);
const view = new DataView(arr);
view.setInt32(0, num, false);
return new Uint8Array(arr);
}
export function leadingZeros(bitNum: number, data: BN): number {
let i = 0;
for (let j = bitNum - 1; j >= 0; j--) {
if (!data.testn(j)) {
i++;
} else {
break;
}
}
return i;
}
export function trailingZeros(bitNum: number, data: BN) {
let i = 0;
for (let j = 0; j < bitNum; j++) {
if (!data.testn(j)) {
i++;
} else {
break;
}
}
return i;
}
export function isZero(bitNum: number, data: BN): boolean {
for (let i = 0; i < bitNum; i++) {
if (data.testn(i)) return false;
}
return true;
}
export function mostSignificantBit(bitNum: number, data: BN): number | null {
if (isZero(bitNum, data)) return null;
else return leadingZeros(bitNum, data);
}
export function leastSignificantBit(bitNum: number, data: BN): number | null {
if (isZero(bitNum, data)) return null;
else return trailingZeros(bitNum, data);
}