zodor-protocol-web3
Version:
SDK to interact with zodor protocol
107 lines (106 loc) • 4.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.IdentityRegistry = void 0;
var _ethers = require("ethers");
var _IdentityRegistry2 = _interopRequireDefault(require("../abi/IdentityRegistry.json"));
var _ContractFactory = require("../factories/ContractFactory");
var _utils = require("../utils");
var _WalletFactory = require("../factories/WalletFactory");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
class IdentityRegistry {
constructor(options) {
_defineProperty(this, "contract", void 0);
_defineProperty(this, "network", void 0);
var {
network,
contractRunner,
privateKey,
customRpcUrl
} = options;
var contractAddress = (0, _utils.getContractAddresses)(network).IdentityRegistryContractAddress;
if (!network) throw new Error('network is required');
if (contractRunner) {
var contractFactory = new _ContractFactory.ContractFactory();
this.contract = contractFactory.createContract(contractAddress, _IdentityRegistry2.default.abi, contractRunner);
} else {
var rpcProvider = (0, _utils.getRpcProvider)(network, customRpcUrl);
var wallet;
if (privateKey) {
var walletFactory = new _WalletFactory.WalletFactory(rpcProvider);
wallet = walletFactory.createWallet(privateKey);
}
var _contractFactory = new _ContractFactory.ContractFactory();
this.contract = _contractFactory.createContract(contractAddress, _IdentityRegistry2.default.abi, wallet || rpcProvider);
}
this.network = network;
}
createIdentity(options) {
var _this = this;
return _asyncToGenerator(function* () {
var {
walletAddress,
taxDomicile,
jurisdiction,
category
} = options;
var abiCoder = _ethers.AbiCoder.defaultAbiCoder();
var jurisdictionCode = (0, _ethers.keccak256)(abiCoder.encode(['string'], [jurisdiction]));
var domicile = (0, _ethers.keccak256)(abiCoder.encode(['string'], [taxDomicile]));
var registerIdentityTx = yield _this.contract.registerIdentity(walletAddress, jurisdictionCode, domicile, category);
return registerIdentityTx;
})();
}
isIdentityVerifed(walletAddress) {
var _this2 = this;
return _asyncToGenerator(function* () {
return yield _this2.contract.isVerified(walletAddress);
})();
}
getEntityCategory(walletAddress) {
var _this3 = this;
return _asyncToGenerator(function* () {
var category = yield _this3.contract.getEntityCategory(walletAddress);
return Number(category);
})();
}
getEntityJurisdiction(walletAddress) {
var _this4 = this;
return _asyncToGenerator(function* () {
return yield _this4.contract.getEntityJurisdiction(walletAddress);
})();
}
updateRiskScore(walletAddress, score) {
var _this5 = this;
return _asyncToGenerator(function* () {
return yield _this5.contract.updateRiskScore(walletAddress, score);
})();
}
addJurisdiction(walletAddress, jurisdiction) {
var _this6 = this;
return _asyncToGenerator(function* () {
var abiCoder = _ethers.AbiCoder.defaultAbiCoder();
var jurisdictionCode = (0, _ethers.keccak256)(abiCoder.encode(['string'], [jurisdiction]));
return yield _this6.contract.addJurisdiction(walletAddress, jurisdictionCode);
})();
}
restrictIdentity(walletAddress, reason, status) {
var _this7 = this;
return _asyncToGenerator(function* () {
return yield _this7.contract.restrictIdentity(walletAddress, status, reason);
})();
}
blacklistAddress(walletAddress) {
var _this8 = this;
return _asyncToGenerator(function* () {
return yield _this8.contract.blacklistAddress(walletAddress);
})();
}
}
exports.IdentityRegistry = IdentityRegistry;