UNPKG

@daevm/cheqd-sdk

Version:

A TypeScript SDK built with CosmJS to interact with cheqd network ledger

170 lines 7.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ResourceModule = exports.setupResourceExtension = exports.isMsgCreateResourceEncodeObject = exports.typeUrlMsgCreateResourceResponse = exports.typeUrlMsgCreateResource = exports.protobufLiterals = exports.defaultResourceExtensionKey = void 0; const _1 = require("./_"); const signer_1 = require("../signer"); const types_1 = require("../types"); const v2_1 = require("@cheqd/ts-proto/cheqd/resource/v2"); const stargate_1 = require("@cosmjs/stargate"); const utils_1 = require("@cosmjs/utils"); exports.defaultResourceExtensionKey = 'resource'; exports.protobufLiterals = { MsgCreateResource: 'MsgCreateResource', MsgCreateResourceResponse: 'MsgCreateResourceResponse' }; exports.typeUrlMsgCreateResource = `/${v2_1.protobufPackage}.${exports.protobufLiterals.MsgCreateResource}`; exports.typeUrlMsgCreateResourceResponse = `/${v2_1.protobufPackage}.${exports.protobufLiterals.MsgCreateResourceResponse}`; function isMsgCreateResourceEncodeObject(obj) { return obj.typeUrl === exports.typeUrlMsgCreateResource; } exports.isMsgCreateResourceEncodeObject = isMsgCreateResourceEncodeObject; const setupResourceExtension = (base) => { const rpc = (0, stargate_1.createProtobufRpcClient)(base); const queryService = new v2_1.QueryClientImpl(rpc); return { [exports.defaultResourceExtensionKey]: { resource: async (collectionId, resourceId) => { const { resource } = await queryService.Resource({ collectionId, id: resourceId }); (0, utils_1.assert)(resource); return resource; }, resourceMetadata: async (collectionId, resourceId) => { const { resource } = await queryService.ResourceMetadata({ collectionId, id: resourceId }); (0, utils_1.assert)(resource); return resource; }, collectionResources: async (collectionId, paginationKey) => { const response = await queryService.CollectionResources({ collectionId, pagination: (0, stargate_1.createPagination)(paginationKey) }); return response; } } }; }; exports.setupResourceExtension = setupResourceExtension; class ResourceModule extends _1.AbstractCheqdSDKModule { static registryTypes = [ [exports.typeUrlMsgCreateResource, v2_1.MsgCreateResource], [exports.typeUrlMsgCreateResourceResponse, v2_1.MsgCreateResourceResponse] ]; static baseMinimalDenom = 'ncheq'; static fees = { DefaultCreateResourceImageFee: { amount: '10000000000', denom: ResourceModule.baseMinimalDenom }, DefaultCreateResourceJsonFee: { amount: '2500000000', denom: ResourceModule.baseMinimalDenom }, DefaultCreateResourceDefaultFee: { amount: '5000000000', denom: ResourceModule.baseMinimalDenom }, }; static querierExtensionSetup = exports.setupResourceExtension; querier; constructor(signer, querier) { super(signer, querier); this.querier = querier; this.methods = { createLinkedResourceTx: this.createLinkedResourceTx.bind(this), queryLinkedResource: this.queryLinkedResource.bind(this), queryLinkedResourceMetadata: this.queryLinkedResourceMetadata.bind(this), queryLinkedResources: this.queryLinkedResources.bind(this), }; } getRegistryTypes() { return ResourceModule.registryTypes; } getQuerierExtensionSetup() { return ResourceModule.querierExtensionSetup; } static async signPayload(payload, signInputs) { const signBytes = v2_1.MsgCreateResourcePayload.encode(payload).finish(); let signatures; if (types_1.ISignInputs.isSignInput(signInputs)) { signatures = await signer_1.CheqdSigningStargateClient.signIdentityTx(signBytes, signInputs); } else { signatures = signInputs; } return { payload, signatures }; } async createLinkedResourceTx(signInputs, resourcePayload, address, fee, memo, context) { if (!this._signer) { this._signer = context.sdk.signer; } const payload = v2_1.MsgCreateResourcePayload.fromPartial(resourcePayload); const msg = await ResourceModule.signPayload(payload, signInputs); const encObj = { typeUrl: exports.typeUrlMsgCreateResource, value: msg }; if (address === '') { address = (await context.sdk.options.wallet.getAccounts())[0].address; } if (!fee) { if (payload.data.length === 0) { throw new Error('Linked resource data is empty'); } fee = await async function () { const mimeType = await ResourceModule.readMimeType(payload.data); if (mimeType.startsWith('image/')) { return await ResourceModule.generateCreateResourceImageFees(address); } if (mimeType.startsWith('application/json')) { return await ResourceModule.generateCreateResourceJsonFees(address); } return await ResourceModule.generateCreateResourceDefaultFees(address); }(); } return this._signer.signAndBroadcast(address, [encObj], fee, memo); } async queryLinkedResource(collectionId, resourceId, context) { if (!this.querier) { this.querier = context.sdk.querier; } return await this.querier[exports.defaultResourceExtensionKey].resource(collectionId, resourceId); } async queryLinkedResourceMetadata(collectionId, resourceId, context) { if (!this.querier) { this.querier = context.sdk.querier; } return await this.querier[exports.defaultResourceExtensionKey].resourceMetadata(collectionId, resourceId); } async queryLinkedResources(collectionId, context) { if (!this.querier) { this.querier = context.sdk.querier; } return await this.querier[exports.defaultResourceExtensionKey].collectionResources(collectionId); } static async readMimeType(content) { return 'application/octet-stream'; } static async generateCreateResourceImageFees(feePayer, granter) { return { amount: [ ResourceModule.fees.DefaultCreateResourceImageFee ], gas: '360000', payer: feePayer, granter: granter }; } static async generateCreateResourceJsonFees(feePayer, granter) { return { amount: [ ResourceModule.fees.DefaultCreateResourceJsonFee ], gas: '360000', payer: feePayer, granter: granter }; } static async generateCreateResourceDefaultFees(feePayer, granter) { return { amount: [ ResourceModule.fees.DefaultCreateResourceDefaultFee ], gas: '360000', payer: feePayer, granter: granter }; } } exports.ResourceModule = ResourceModule; //# sourceMappingURL=resource.js.map