@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
90 lines • 3.67 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Claimant = void 0;
const xdr_1 = __importDefault(require("./xdr"));
const keypair_1 = require("./keypair");
const strkey_1 = require("./strkey");
class Claimant {
constructor(destination, predicate) {
if (destination && !strkey_1.StrKey.isValidEd25519PublicKey(destination)) {
throw new Error('Destination is invalid');
}
this._destination = destination;
if (!predicate) {
this._predicate = xdr_1.default.ClaimPredicate.claimPredicateUnconditional();
}
else if (predicate instanceof xdr_1.default.ClaimPredicate) {
this._predicate = predicate;
}
else {
throw new Error('Predicate should be an xdr.ClaimPredicate');
}
}
static predicateUnconditional() {
return xdr_1.default.ClaimPredicate.claimPredicateUnconditional();
}
static predicateAnd(left, right) {
if (!(left instanceof xdr_1.default.ClaimPredicate)) {
throw new Error('left Predicate should be an xdr.ClaimPredicate');
}
if (!(right instanceof xdr_1.default.ClaimPredicate)) {
throw new Error('right Predicate should be an xdr.ClaimPredicate');
}
return xdr_1.default.ClaimPredicate.claimPredicateAnd([left, right]);
}
static predicateOr(left, right) {
if (!(left instanceof xdr_1.default.ClaimPredicate)) {
throw new Error('left Predicate should be an xdr.ClaimPredicate');
}
if (!(right instanceof xdr_1.default.ClaimPredicate)) {
throw new Error('right Predicate should be an xdr.ClaimPredicate');
}
return xdr_1.default.ClaimPredicate.claimPredicateOr([left, right]);
}
static predicateNot(predicate) {
if (!(predicate instanceof xdr_1.default.ClaimPredicate)) {
throw new Error('right Predicate should be an xdr.ClaimPredicate');
}
return xdr_1.default.ClaimPredicate.claimPredicateNot(predicate);
}
static predicateBeforeAbsoluteTime(absBefore) {
return xdr_1.default.ClaimPredicate.claimPredicateBeforeAbsoluteTime(xdr_1.default.Int64.fromString(absBefore));
}
static predicateBeforeRelativeTime(seconds) {
return xdr_1.default.ClaimPredicate.claimPredicateBeforeRelativeTime(xdr_1.default.Int64.fromString(seconds));
}
static fromXDR(claimantXdr) {
let value;
switch (claimantXdr.switch()) {
case xdr_1.default.ClaimantType.claimantTypeV0():
value = claimantXdr.v0();
return new this(strkey_1.StrKey.encodeEd25519PublicKey(value.destination().ed25519()), value.predicate());
default:
throw new Error(`Invalid claimant type: ${claimantXdr.switch().name}`);
}
}
toXDRObject() {
const claimant = new xdr_1.default.ClaimantV0({
destination: keypair_1.Keypair.fromPublicKey(this._destination).xdrAccountId(),
predicate: this._predicate
});
return xdr_1.default.Claimant.claimantTypeV0(claimant);
}
get destination() {
return this._destination;
}
set destination(value) {
throw new Error('Claimant is immutable');
}
get predicate() {
return this._predicate;
}
set predicate(value) {
throw new Error('Claimant is immutable');
}
}
exports.Claimant = Claimant;
//# sourceMappingURL=claimant.js.map