@okxweb3/coin-stellar
Version:
@ok/coin-stellar is a Stellar SDK for building Web3 wallets and applications. It supports Stellar and PI blockchains, enabling private key management, address generation, transaction signing, trustline creation, and asset transfers
85 lines • 2.85 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SorobanDataBuilder = void 0;
const xdr_1 = __importDefault(require("./xdr"));
class SorobanDataBuilder {
constructor(sorobanData) {
let data;
if (!sorobanData) {
data = new xdr_1.default.SorobanTransactionData({
resources: new xdr_1.default.SorobanResources({
footprint: new xdr_1.default.LedgerFootprint({ readOnly: [], readWrite: [] }),
instructions: 0,
readBytes: 0,
writeBytes: 0
}),
ext: new xdr_1.default.ExtensionPoint(0),
resourceFee: new xdr_1.default.Int64(0)
});
}
else if (typeof sorobanData === 'string' ||
ArrayBuffer.isView(sorobanData)) {
data = SorobanDataBuilder.fromXDR(sorobanData);
}
else {
data = SorobanDataBuilder.fromXDR(sorobanData.toXDR());
}
this._data = data;
}
static fromXDR(data) {
return xdr_1.default.SorobanTransactionData.fromXDR(data, typeof data === 'string' ? 'base64' : 'raw');
}
setResourceFee(fee) {
this._data.resourceFee(new xdr_1.default.Int64(fee));
return this;
}
setResources(cpuInstrs, readBytes, writeBytes) {
this._data.resources().instructions(cpuInstrs);
this._data.resources().readBytes(readBytes);
this._data.resources().writeBytes(writeBytes);
return this;
}
appendFootprint(readOnly, readWrite) {
return this.setFootprint(this.getReadOnly().concat(readOnly), this.getReadWrite().concat(readWrite));
}
setFootprint(readOnly, readWrite) {
if (readOnly !== null) {
this.setReadOnly(readOnly);
}
if (readWrite !== null) {
this.setReadWrite(readWrite);
}
return this;
}
setReadOnly(readOnly) {
this._data
.resources()
.footprint()
.readOnly(readOnly ?? []);
return this;
}
setReadWrite(readWrite) {
this._data
.resources()
.footprint()
.readWrite(readWrite ?? []);
return this;
}
build() {
return xdr_1.default.SorobanTransactionData.fromXDR(this._data.toXDR());
}
getReadOnly() {
return this.getFootprint().readOnly();
}
getReadWrite() {
return this.getFootprint().readWrite();
}
getFootprint() {
return this._data.resources().footprint();
}
}
exports.SorobanDataBuilder = SorobanDataBuilder;
//# sourceMappingURL=sorobandata_builder.js.map