forked from cerc-io/laconic-sdk
241 lines
9.0 KiB
JavaScript
241 lines
9.0 KiB
JavaScript
"use strict";
|
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
}
|
|
Object.defineProperty(o, k2, desc);
|
|
}) : (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
o[k2] = m[k];
|
|
}));
|
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
}) : function(o, v) {
|
|
o["default"] = v;
|
|
});
|
|
var __importStar = (this && this.__importStar) || function (mod) {
|
|
if (mod && mod.__esModule) return mod;
|
|
var result = {};
|
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
__setModuleDefault(result, mod);
|
|
return result;
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.createTxMsgDeleteName = exports.createTxMsgSetAuthorityBond = exports.createTxMsgSetRecord = exports.createTxMsgSetName = exports.createTxMsgReserveAuthority = exports.NAMESERVICE_ERRORS = exports.parseMsgSetRecordResponse = void 0;
|
|
const eip712_1 = require("@tharsis/eip712");
|
|
const nameserviceTx = __importStar(require("../proto/vulcanize/nameservice/v1beta1/tx"));
|
|
const nameservice = __importStar(require("../proto/vulcanize/nameservice/v1beta1/nameservice"));
|
|
const util_1 = require("./util");
|
|
const MSG_RESERVE_AUTHORITY_TYPES = {
|
|
MsgValue: [
|
|
{ name: 'name', type: 'string' },
|
|
{ name: 'signer', type: 'string' },
|
|
{ name: 'owner', type: 'string' },
|
|
],
|
|
};
|
|
const MSG_SET_NAME_TYPES = {
|
|
MsgValue: [
|
|
{ name: 'crn', type: 'string' },
|
|
{ name: 'cid', type: 'string' },
|
|
{ name: 'signer', type: 'string' },
|
|
],
|
|
};
|
|
const MSG_SET_RECORD_TYPES = {
|
|
MsgValue: [
|
|
{ name: 'bond_id', type: 'string' },
|
|
{ name: 'signer', type: 'string' },
|
|
{ name: 'payload', type: 'TypePayload' },
|
|
],
|
|
TypePayload: [
|
|
{ name: 'record', type: 'TypePayloadRecord' },
|
|
{ name: 'signatures', type: 'TypePayloadSignatures[]' },
|
|
],
|
|
TypePayloadRecord: [
|
|
{ name: 'id', type: 'string' },
|
|
{ name: 'bond_id', type: 'string' },
|
|
{ name: 'create_time', type: 'string' },
|
|
{ name: 'expiry_time', type: 'string' },
|
|
{ name: 'deleted', type: 'bool' },
|
|
{ name: 'attributes', type: 'string' },
|
|
],
|
|
TypePayloadSignatures: [
|
|
{ name: 'sig', type: 'string' },
|
|
{ name: 'pub_key', type: 'string' }
|
|
],
|
|
};
|
|
const MSG_SET_AUTHORITY_BOND_TYPES = {
|
|
MsgValue: [
|
|
{ name: 'name', type: 'string' },
|
|
{ name: 'bond_id', type: 'string' },
|
|
{ name: 'signer', type: 'string' },
|
|
],
|
|
};
|
|
const MSG_DELETE_NAME_TYPES = {
|
|
MsgValue: [
|
|
{ name: 'crn', type: 'string' },
|
|
{ name: 'signer', type: 'string' },
|
|
],
|
|
};
|
|
const parseMsgSetRecordResponse = (data) => {
|
|
const responseBytes = Buffer.from(data, 'hex');
|
|
// TODO: Decode response using protobuf.
|
|
// const msgSetRecordResponse = nameserviceTx.vulcanize.nameservice.v1beta1.MsgSetRecordResponse.deserialize(responseBytes);
|
|
// return msgSetRecordResponse.toObject();
|
|
// Workaround as proto based decoding is not working.
|
|
const [_, id] = responseBytes.toString().split(';');
|
|
return { id };
|
|
};
|
|
exports.parseMsgSetRecordResponse = parseMsgSetRecordResponse;
|
|
exports.NAMESERVICE_ERRORS = [
|
|
'Name already reserved.',
|
|
'Authority bond not found.',
|
|
'Name authority not found.',
|
|
'Access denied.',
|
|
];
|
|
function createTxMsgReserveAuthority(chain, sender, fee, memo, params) {
|
|
const types = (0, eip712_1.generateTypes)(MSG_RESERVE_AUTHORITY_TYPES);
|
|
const msg = createMsgReserveAuthority(params.name, sender.accountAddress, params.owner);
|
|
const msgCosmos = protoCreateMsgReserveAuthority(params.name, sender.accountAddress, params.owner);
|
|
return (0, util_1.createTx)(chain, sender, fee, memo, types, msg, msgCosmos);
|
|
}
|
|
exports.createTxMsgReserveAuthority = createTxMsgReserveAuthority;
|
|
function createTxMsgSetName(chain, sender, fee, memo, params) {
|
|
const types = (0, eip712_1.generateTypes)(MSG_SET_NAME_TYPES);
|
|
const msg = createMsgSetName(params.crn, params.cid, sender.accountAddress);
|
|
const msgCosmos = protoCreateMsgSetName(params.crn, params.cid, sender.accountAddress);
|
|
return (0, util_1.createTx)(chain, sender, fee, memo, types, msg, msgCosmos);
|
|
}
|
|
exports.createTxMsgSetName = createTxMsgSetName;
|
|
function createTxMsgSetRecord(chain, sender, fee, memo, params) {
|
|
const types = (0, eip712_1.generateTypes)(MSG_SET_RECORD_TYPES);
|
|
const msg = createMsgSetRecord(params.bondId, params.payload, sender.accountAddress);
|
|
const msgCosmos = protoCreateMsgSetRecord(params.bondId, params.payload, sender.accountAddress);
|
|
return (0, util_1.createTx)(chain, sender, fee, memo, types, msg, msgCosmos);
|
|
}
|
|
exports.createTxMsgSetRecord = createTxMsgSetRecord;
|
|
function createTxMsgSetAuthorityBond(chain, sender, fee, memo, params) {
|
|
const types = (0, eip712_1.generateTypes)(MSG_SET_AUTHORITY_BOND_TYPES);
|
|
const msg = createMsgSetAuthorityBond(params.name, params.bondId, sender.accountAddress);
|
|
const msgCosmos = protoCreateMsgSetAuthorityBond(params.name, params.bondId, sender.accountAddress);
|
|
return (0, util_1.createTx)(chain, sender, fee, memo, types, msg, msgCosmos);
|
|
}
|
|
exports.createTxMsgSetAuthorityBond = createTxMsgSetAuthorityBond;
|
|
function createTxMsgDeleteName(chain, sender, fee, memo, params) {
|
|
const types = (0, eip712_1.generateTypes)(MSG_DELETE_NAME_TYPES);
|
|
const msg = createMsgDeleteName(params.crn, sender.accountAddress);
|
|
const msgCosmos = protoCreateMsgDeleteName(params.crn, sender.accountAddress);
|
|
return (0, util_1.createTx)(chain, sender, fee, memo, types, msg, msgCosmos);
|
|
}
|
|
exports.createTxMsgDeleteName = createTxMsgDeleteName;
|
|
function createMsgReserveAuthority(name, signer, owner) {
|
|
return {
|
|
type: 'nameservice/ReserveAuthority',
|
|
value: {
|
|
name,
|
|
signer,
|
|
owner
|
|
},
|
|
};
|
|
}
|
|
const protoCreateMsgReserveAuthority = (name, signer, owner) => {
|
|
const reserveAuthorityMessage = new nameserviceTx.vulcanize.nameservice.v1beta1.MsgReserveAuthority({
|
|
name,
|
|
signer,
|
|
owner
|
|
});
|
|
return {
|
|
message: reserveAuthorityMessage,
|
|
path: 'vulcanize.nameservice.v1beta1.MsgReserveAuthority',
|
|
};
|
|
};
|
|
function createMsgSetName(crn, cid, signer) {
|
|
return {
|
|
type: 'nameservice/SetName',
|
|
value: {
|
|
crn,
|
|
cid,
|
|
signer
|
|
},
|
|
};
|
|
}
|
|
const protoCreateMsgSetName = (crn, cid, signer) => {
|
|
const setNameMessage = new nameserviceTx.vulcanize.nameservice.v1beta1.MsgSetName({
|
|
crn,
|
|
cid,
|
|
signer,
|
|
});
|
|
return {
|
|
message: setNameMessage,
|
|
path: 'vulcanize.nameservice.v1beta1.MsgSetName',
|
|
};
|
|
};
|
|
function createMsgSetRecord(bondId, payload, signer) {
|
|
return {
|
|
type: 'nameservice/SetRecord',
|
|
value: {
|
|
bond_id: bondId,
|
|
signer,
|
|
payload: payload.serialize()
|
|
},
|
|
};
|
|
}
|
|
const protoCreateMsgSetRecord = (bondId, payloadData, signer) => {
|
|
const record = new nameservice.vulcanize.nameservice.v1beta1.Record(payloadData.record.serialize());
|
|
const signatures = payloadData.signatures.map(signature => new nameservice.vulcanize.nameservice.v1beta1.Signature(signature.serialize()));
|
|
const payload = new nameserviceTx.vulcanize.nameservice.v1beta1.Payload({
|
|
record,
|
|
signatures
|
|
});
|
|
const setNameMessage = new nameserviceTx.vulcanize.nameservice.v1beta1.MsgSetRecord({
|
|
bond_id: bondId,
|
|
signer,
|
|
payload
|
|
});
|
|
return {
|
|
message: setNameMessage,
|
|
path: 'vulcanize.nameservice.v1beta1.MsgSetRecord',
|
|
};
|
|
};
|
|
function createMsgSetAuthorityBond(name, bondId, signer) {
|
|
return {
|
|
type: 'nameservice/SetAuthorityBond',
|
|
value: {
|
|
name,
|
|
bond_id: bondId,
|
|
signer
|
|
},
|
|
};
|
|
}
|
|
const protoCreateMsgSetAuthorityBond = (name, bondId, signer) => {
|
|
const setAuthorityBondMessage = new nameserviceTx.vulcanize.nameservice.v1beta1.MsgSetAuthorityBond({
|
|
name,
|
|
bond_id: bondId,
|
|
signer,
|
|
});
|
|
return {
|
|
message: setAuthorityBondMessage,
|
|
path: 'vulcanize.nameservice.v1beta1.MsgSetAuthorityBond',
|
|
};
|
|
};
|
|
function createMsgDeleteName(crn, signer) {
|
|
return {
|
|
type: 'nameservice/DeleteAuthority',
|
|
value: {
|
|
crn,
|
|
signer
|
|
},
|
|
};
|
|
}
|
|
const protoCreateMsgDeleteName = (crn, signer) => {
|
|
const deleteNameAutorityMessage = new nameserviceTx.vulcanize.nameservice.v1beta1.MsgDeleteNameAuthority({
|
|
crn,
|
|
signer,
|
|
});
|
|
return {
|
|
message: deleteNameAutorityMessage,
|
|
path: 'vulcanize.nameservice.v1beta1.MsgDeleteNameAuthority',
|
|
};
|
|
};
|