@openproduct/web-sdk
Version:
OpenMask Web - TypeScript Browser SDK for TON blockchain
94 lines (93 loc) • 4.83 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.JettonMinter = void 0;
const bn_js_1 = __importDefault(require("bn.js"));
const cell_1 = require("../../../boc/cell");
const contract_1 = require("../../contract");
const utils_1 = require("../nft/utils");
const jettonMinterDao_1 = require("./jettonMinterDao");
class JettonMinter extends contract_1.Contract {
/**
* @param provider
* @param options {{adminAddress: Address, jettonContentUri: string, jettonWalletCodeHex: string, address?: Address | string, code?: Cell}}
*/
constructor(provider, options) {
options.wc = 0;
options.code =
options.code ||
cell_1.Cell.oneFromBoc("B5EE9C7241020B010001ED000114FF00F4A413F4BCF2C80B0102016202030202CC040502037A60090A03EFD9910E38048ADF068698180B8D848ADF07D201800E98FE99FF6A2687D007D206A6A18400AA9385D47181A9AA8AAE382F9702480FD207D006A18106840306B90FD001812881A28217804502A906428027D012C678B666664F6AA7041083DEECBEF29385D71811A92E001F1811802600271812F82C207F97840607080093DFC142201B82A1009AA0A01E428027D012C678B00E78B666491646580897A007A00658064907C80383A6465816503E5FFE4E83BC00C646582AC678B28027D0109E5B589666664B8FD80400FE3603FA00FA40F82854120870542013541403C85004FA0258CF1601CF16CCC922C8CB0112F400F400CB00C9F9007074C8CB02CA07CBFFC9D05008C705F2E04A12A1035024C85004FA0258CF16CCCCC9ED5401FA403020D70B01C3008E1F8210D53276DB708010C8CB055003CF1622FA0212CB6ACB1FCB3FC98042FB00915BE200303515C705F2E049FA403059C85004FA0258CF16CCCCC9ED54002E5143C705F2E049D43001C85004FA0258CF16CCCCC9ED54007DADBCF6A2687D007D206A6A183618FC1400B82A1009AA0A01E428027D012C678B00E78B666491646580897A007A00658064FC80383A6465816503E5FFE4E840001FAF16F6A2687D007D206A6A183FAA904051007F09");
super(provider, options);
}
/**
* @override
* @private
* @return {Cell} cell contains jetton minter data
*/
createDataCell() {
const cell = new cell_1.Cell();
cell.bits.writeCoins(0); // total supply
cell.bits.writeAddress(this.options.adminAddress);
cell.refs[0] = (0, utils_1.createOffchainUriCell)(this.options.jettonContentUri);
cell.refs[1] = cell_1.Cell.oneFromBoc(this.options.jettonWalletCodeHex);
return cell;
}
/**
* params {{jettonAmount: BN, destination: Address, amount: BN, queryId?: number}}
* @return {Cell}
*/
createMintBody(params) {
const body = new cell_1.Cell();
body.bits.writeUint(21, 32); // OP mint
body.bits.writeUint(params.queryId || 0, 64); // query_id
body.bits.writeAddress(params.destination);
body.bits.writeCoins(params.amount); // in Toncoins
const transferBody = new cell_1.Cell(); // internal transfer
transferBody.bits.writeUint(0x178d4519, 32); // internal_transfer op
transferBody.bits.writeUint(params.queryId || 0, 64);
transferBody.bits.writeCoins(params.jettonAmount);
transferBody.bits.writeAddress(null); // from_address
transferBody.bits.writeAddress(null); // response_address
transferBody.bits.writeCoins(new bn_js_1.default(0)); // forward_amount
transferBody.bits.writeBit(false); // forward_payload in this slice, not separate cell
body.refs[0] = transferBody;
return body;
}
/**
* params {{queryId?: number, newAdminAddress: Address}}
* @return {Cell}
*/
createChangeAdminBody(params) {
if (params.newAdminAddress === undefined)
throw new Error("Specify newAdminAddress");
const body = new cell_1.Cell();
body.bits.writeUint(3, 32); // OP
body.bits.writeUint(params.queryId || 0, 64); // query_id
body.bits.writeAddress(params.newAdminAddress);
return body;
}
/**
* params {{jettonContentUri: string, queryId?: number}}
* @return {Cell}
*/
createEditContentBody(params) {
const body = new cell_1.Cell();
body.bits.writeUint(4, 32); // OP
body.bits.writeUint(params.queryId || 0, 64); // query_id
body.refs[0] = (0, utils_1.createOffchainUriCell)(params.jettonContentUri);
return body;
}
async getJettonData() {
const myAddress = await this.getAddress();
const dao = new jettonMinterDao_1.JettonMinterDao(this.provider, myAddress);
return dao.getJettonData();
}
async getJettonWalletAddress(ownerAddress) {
const myAddress = await this.getAddress();
const dao = new jettonMinterDao_1.JettonMinterDao(this.provider, myAddress);
return dao.getJettonWalletAddress(ownerAddress);
}
}
exports.JettonMinter = JettonMinter;