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"; } }