@openproduct/web-sdk
Version:
OpenMask Web - TypeScript Browser SDK for TON blockchain
81 lines (74 loc) • 2.48 kB
text/typescript
import { Cell } from "../../boc/cell";
import TonHttpProvider from "../../providers/httpProvider";
import { Options } from "../contract";
import { WalletContract } from "./walletContract";
class WalletV3ContractBase extends WalletContract {
/**
* @override
* @private
* @param seqno? {number}
* @return {Cell}
*/
createSigningMessage(seqno?: number) {
seqno = seqno || 0;
const message = new Cell();
message.bits.writeUint(this.options.walletId, 32);
if (seqno === 0) {
// message.bits.writeInt(-1, 32);// todo: dont work
for (let i = 0; i < 32; i++) {
message.bits.writeBit(1);
}
} else {
const date = new Date();
const timestamp = Math.floor(date.getTime() / 1e3);
message.bits.writeUint(timestamp + 60, 32);
}
message.bits.writeUint(seqno, 32);
return message;
}
/**
* @override
* @return {Cell} cell contains wallet data
*/
createDataCell() {
const cell = new Cell();
cell.bits.writeUint(0, 32);
cell.bits.writeUint(this.options.walletId, 32);
cell.bits.writeBytes(this.options.publicKey);
return cell;
}
}
export class WalletV3ContractR1 extends WalletV3ContractBase {
/**
* @param provider {TonHttpProvider}
* @param options {any}
*/
constructor(provider: TonHttpProvider, options: Options) {
options.code = Cell.oneFromBoc(
"B5EE9C724101010100620000C0FF0020DD2082014C97BA9730ED44D0D70B1FE0A4F2608308D71820D31FD31FD31FF82313BBF263ED44D0D31FD31FD3FFD15132BAF2A15144BAF2A204F901541055F910F2A3F8009320D74A96D307D402FB00E8D101A4C8CB1FCB1FCBFFC9ED543FBE6EE0"
);
super(provider, options);
if (!this.options.walletId)
this.options.walletId = 698983191 + this.options.wc!;
}
getName() {
return "v3R1";
}
}
export class WalletV3ContractR2 extends WalletV3ContractBase {
/**
* @param provider {TonHttpProvider}
* @param options {any}
*/
constructor(provider: TonHttpProvider, options: Options) {
options.code = Cell.oneFromBoc(
"B5EE9C724101010100710000DEFF0020DD2082014C97BA218201339CBAB19F71B0ED44D0D31FD31F31D70BFFE304E0A4F2608308D71820D31FD31FD31FF82313BBF263ED44D0D31FD31FD3FFD15132BAF2A15144BAF2A204F901541055F910F2A3F8009320D74A96D307D402FB00E8D101A4C8CB1FCB1FCBFFC9ED5410BD6DAD"
);
super(provider, options);
if (!this.options.walletId)
this.options.walletId = 698983191 + this.options.wc!;
}
getName() {
return "v3R2";
}
}