UNPKG

interchainjs

Version:

InterchainJS is a JavaScript library for interacting with Cosmos SDK based blockchains.

481 lines (480 loc) 19.4 kB
import { Coin } from "../../base/v1beta1/coin"; import { Timestamp } from "../../../google/protobuf/timestamp"; import { Duration } from "../../../google/protobuf/duration"; import { Any } from "../../../google/protobuf/any"; import { BinaryReader, BinaryWriter } from "../../../binary"; import { toTimestamp, fromTimestamp } from "../../../helpers"; import { GlobalDecoderRegistry } from "../../../registry"; function createBaseBasicAllowance() { return { spendLimit: [], expiration: undefined }; } /** * BasicAllowance implements Allowance with a one-time grant of coins * that optionally expires. The grantee can use up to SpendLimit to cover fees. * @name BasicAllowance * @package cosmos.feegrant.v1beta1 * @see proto type: cosmos.feegrant.v1beta1.BasicAllowance */ export const BasicAllowance = { typeUrl: "/cosmos.feegrant.v1beta1.BasicAllowance", aminoType: "cosmos-sdk/BasicAllowance", is(o) { return o && (o.$typeUrl === BasicAllowance.typeUrl || Array.isArray(o.spendLimit) && (!o.spendLimit.length || Coin.is(o.spendLimit[0]))); }, isAmino(o) { return o && (o.$typeUrl === BasicAllowance.typeUrl || Array.isArray(o.spend_limit) && (!o.spend_limit.length || Coin.isAmino(o.spend_limit[0]))); }, encode(message, writer = BinaryWriter.create()) { for (const v of message.spendLimit) { Coin.encode(v, writer.uint32(10).fork()).ldelim(); } if (message.expiration !== undefined) { Timestamp.encode(toTimestamp(message.expiration), writer.uint32(18).fork()).ldelim(); } return writer; }, decode(input, length) { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseBasicAllowance(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.spendLimit.push(Coin.decode(reader, reader.uint32())); break; case 2: message.expiration = fromTimestamp(Timestamp.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } } return message; }, fromPartial(object) { const message = createBaseBasicAllowance(); message.spendLimit = object.spendLimit?.map(e => Coin.fromPartial(e)) || []; message.expiration = object.expiration ?? undefined; return message; }, fromAmino(object) { const message = createBaseBasicAllowance(); message.spendLimit = object.spend_limit?.map(e => Coin.fromAmino(e)) || []; if (object.expiration !== undefined && object.expiration !== null) { message.expiration = fromTimestamp(Timestamp.fromAmino(object.expiration)); } return message; }, toAmino(message) { const obj = {}; if (message.spendLimit) { obj.spend_limit = message.spendLimit.map(e => e ? Coin.toAmino(e) : undefined); } else { obj.spend_limit = message.spendLimit; } obj.expiration = message.expiration ? Timestamp.toAmino(toTimestamp(message.expiration)) : undefined; return obj; }, fromAminoMsg(object) { return BasicAllowance.fromAmino(object.value); }, toAminoMsg(message) { return { type: "cosmos-sdk/BasicAllowance", value: BasicAllowance.toAmino(message) }; }, fromProtoMsg(message) { return BasicAllowance.decode(message.value); }, toProto(message) { return BasicAllowance.encode(message).finish(); }, toProtoMsg(message) { return { typeUrl: "/cosmos.feegrant.v1beta1.BasicAllowance", value: BasicAllowance.encode(message).finish() }; }, registerTypeUrl() { if (!GlobalDecoderRegistry.registerExistingTypeUrl(BasicAllowance.typeUrl)) { return; } GlobalDecoderRegistry.register(BasicAllowance.typeUrl, BasicAllowance); GlobalDecoderRegistry.registerAminoProtoMapping(BasicAllowance.aminoType, BasicAllowance.typeUrl); Coin.registerTypeUrl(); } }; function createBasePeriodicAllowance() { return { basic: BasicAllowance.fromPartial({}), period: Duration.fromPartial({}), periodSpendLimit: [], periodCanSpend: [], periodReset: new Date() }; } /** * PeriodicAllowance extends Allowance to allow for both a maximum cap, * as well as a limit per time period. * @name PeriodicAllowance * @package cosmos.feegrant.v1beta1 * @see proto type: cosmos.feegrant.v1beta1.PeriodicAllowance */ export const PeriodicAllowance = { typeUrl: "/cosmos.feegrant.v1beta1.PeriodicAllowance", aminoType: "cosmos-sdk/PeriodicAllowance", is(o) { return o && (o.$typeUrl === PeriodicAllowance.typeUrl || BasicAllowance.is(o.basic) && Duration.is(o.period) && Array.isArray(o.periodSpendLimit) && (!o.periodSpendLimit.length || Coin.is(o.periodSpendLimit[0])) && Array.isArray(o.periodCanSpend) && (!o.periodCanSpend.length || Coin.is(o.periodCanSpend[0])) && Timestamp.is(o.periodReset)); }, isAmino(o) { return o && (o.$typeUrl === PeriodicAllowance.typeUrl || BasicAllowance.isAmino(o.basic) && Duration.isAmino(o.period) && Array.isArray(o.period_spend_limit) && (!o.period_spend_limit.length || Coin.isAmino(o.period_spend_limit[0])) && Array.isArray(o.period_can_spend) && (!o.period_can_spend.length || Coin.isAmino(o.period_can_spend[0])) && Timestamp.isAmino(o.period_reset)); }, encode(message, writer = BinaryWriter.create()) { if (message.basic !== undefined) { BasicAllowance.encode(message.basic, writer.uint32(10).fork()).ldelim(); } if (message.period !== undefined) { Duration.encode(message.period, writer.uint32(18).fork()).ldelim(); } for (const v of message.periodSpendLimit) { Coin.encode(v, writer.uint32(26).fork()).ldelim(); } for (const v of message.periodCanSpend) { Coin.encode(v, writer.uint32(34).fork()).ldelim(); } if (message.periodReset !== undefined) { Timestamp.encode(toTimestamp(message.periodReset), writer.uint32(42).fork()).ldelim(); } return writer; }, decode(input, length) { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBasePeriodicAllowance(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.basic = BasicAllowance.decode(reader, reader.uint32()); break; case 2: message.period = Duration.decode(reader, reader.uint32()); break; case 3: message.periodSpendLimit.push(Coin.decode(reader, reader.uint32())); break; case 4: message.periodCanSpend.push(Coin.decode(reader, reader.uint32())); break; case 5: message.periodReset = fromTimestamp(Timestamp.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } } return message; }, fromPartial(object) { const message = createBasePeriodicAllowance(); message.basic = object.basic !== undefined && object.basic !== null ? BasicAllowance.fromPartial(object.basic) : undefined; message.period = object.period !== undefined && object.period !== null ? Duration.fromPartial(object.period) : undefined; message.periodSpendLimit = object.periodSpendLimit?.map(e => Coin.fromPartial(e)) || []; message.periodCanSpend = object.periodCanSpend?.map(e => Coin.fromPartial(e)) || []; message.periodReset = object.periodReset ?? undefined; return message; }, fromAmino(object) { const message = createBasePeriodicAllowance(); if (object.basic !== undefined && object.basic !== null) { message.basic = BasicAllowance.fromAmino(object.basic); } if (object.period !== undefined && object.period !== null) { message.period = Duration.fromAmino(object.period); } message.periodSpendLimit = object.period_spend_limit?.map(e => Coin.fromAmino(e)) || []; message.periodCanSpend = object.period_can_spend?.map(e => Coin.fromAmino(e)) || []; if (object.period_reset !== undefined && object.period_reset !== null) { message.periodReset = fromTimestamp(Timestamp.fromAmino(object.period_reset)); } return message; }, toAmino(message) { const obj = {}; obj.basic = message.basic ? BasicAllowance.toAmino(message.basic) : BasicAllowance.toAmino(BasicAllowance.fromPartial({})); obj.period = message.period ? Duration.toAmino(message.period) : Duration.toAmino(Duration.fromPartial({})); if (message.periodSpendLimit) { obj.period_spend_limit = message.periodSpendLimit.map(e => e ? Coin.toAmino(e) : undefined); } else { obj.period_spend_limit = message.periodSpendLimit; } if (message.periodCanSpend) { obj.period_can_spend = message.periodCanSpend.map(e => e ? Coin.toAmino(e) : undefined); } else { obj.period_can_spend = message.periodCanSpend; } obj.period_reset = message.periodReset ? Timestamp.toAmino(toTimestamp(message.periodReset)) : new Date(); return obj; }, fromAminoMsg(object) { return PeriodicAllowance.fromAmino(object.value); }, toAminoMsg(message) { return { type: "cosmos-sdk/PeriodicAllowance", value: PeriodicAllowance.toAmino(message) }; }, fromProtoMsg(message) { return PeriodicAllowance.decode(message.value); }, toProto(message) { return PeriodicAllowance.encode(message).finish(); }, toProtoMsg(message) { return { typeUrl: "/cosmos.feegrant.v1beta1.PeriodicAllowance", value: PeriodicAllowance.encode(message).finish() }; }, registerTypeUrl() { if (!GlobalDecoderRegistry.registerExistingTypeUrl(PeriodicAllowance.typeUrl)) { return; } GlobalDecoderRegistry.register(PeriodicAllowance.typeUrl, PeriodicAllowance); GlobalDecoderRegistry.registerAminoProtoMapping(PeriodicAllowance.aminoType, PeriodicAllowance.typeUrl); BasicAllowance.registerTypeUrl(); Coin.registerTypeUrl(); } }; function createBaseAllowedMsgAllowance() { return { allowance: undefined, allowedMessages: [] }; } /** * AllowedMsgAllowance creates allowance only for specified message types. * @name AllowedMsgAllowance * @package cosmos.feegrant.v1beta1 * @see proto type: cosmos.feegrant.v1beta1.AllowedMsgAllowance */ export const AllowedMsgAllowance = { typeUrl: "/cosmos.feegrant.v1beta1.AllowedMsgAllowance", aminoType: "cosmos-sdk/AllowedMsgAllowance", is(o) { return o && (o.$typeUrl === AllowedMsgAllowance.typeUrl || Array.isArray(o.allowedMessages) && (!o.allowedMessages.length || typeof o.allowedMessages[0] === "string")); }, isAmino(o) { return o && (o.$typeUrl === AllowedMsgAllowance.typeUrl || Array.isArray(o.allowed_messages) && (!o.allowed_messages.length || typeof o.allowed_messages[0] === "string")); }, encode(message, writer = BinaryWriter.create()) { if (message.allowance !== undefined) { Any.encode(GlobalDecoderRegistry.wrapAny(message.allowance), writer.uint32(10).fork()).ldelim(); } for (const v of message.allowedMessages) { writer.uint32(18).string(v); } return writer; }, decode(input, length) { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseAllowedMsgAllowance(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.allowance = GlobalDecoderRegistry.unwrapAny(reader); break; case 2: message.allowedMessages.push(reader.string()); break; default: reader.skipType(tag & 7); break; } } return message; }, fromPartial(object) { const message = createBaseAllowedMsgAllowance(); message.allowance = object.allowance !== undefined && object.allowance !== null ? GlobalDecoderRegistry.fromPartial(object.allowance) : undefined; message.allowedMessages = object.allowedMessages?.map(e => e) || []; return message; }, fromAmino(object) { const message = createBaseAllowedMsgAllowance(); if (object.allowance !== undefined && object.allowance !== null) { message.allowance = GlobalDecoderRegistry.fromAminoMsg(object.allowance); } message.allowedMessages = object.allowed_messages?.map(e => e) || []; return message; }, toAmino(message) { const obj = {}; obj.allowance = message.allowance ? GlobalDecoderRegistry.toAminoMsg(message.allowance) : undefined; if (message.allowedMessages) { obj.allowed_messages = message.allowedMessages.map(e => e); } else { obj.allowed_messages = message.allowedMessages; } return obj; }, fromAminoMsg(object) { return AllowedMsgAllowance.fromAmino(object.value); }, toAminoMsg(message) { return { type: "cosmos-sdk/AllowedMsgAllowance", value: AllowedMsgAllowance.toAmino(message) }; }, fromProtoMsg(message) { return AllowedMsgAllowance.decode(message.value); }, toProto(message) { return AllowedMsgAllowance.encode(message).finish(); }, toProtoMsg(message) { return { typeUrl: "/cosmos.feegrant.v1beta1.AllowedMsgAllowance", value: AllowedMsgAllowance.encode(message).finish() }; }, registerTypeUrl() { if (!GlobalDecoderRegistry.registerExistingTypeUrl(AllowedMsgAllowance.typeUrl)) { return; } GlobalDecoderRegistry.register(AllowedMsgAllowance.typeUrl, AllowedMsgAllowance); GlobalDecoderRegistry.registerAminoProtoMapping(AllowedMsgAllowance.aminoType, AllowedMsgAllowance.typeUrl); BasicAllowance.registerTypeUrl(); PeriodicAllowance.registerTypeUrl(); AllowedMsgAllowance.registerTypeUrl(); } }; function createBaseGrant() { return { granter: "", grantee: "", allowance: undefined }; } /** * Grant is stored in the KVStore to record a grant with full context * @name Grant * @package cosmos.feegrant.v1beta1 * @see proto type: cosmos.feegrant.v1beta1.Grant */ export const Grant = { typeUrl: "/cosmos.feegrant.v1beta1.Grant", aminoType: "cosmos-sdk/Grant", is(o) { return o && (o.$typeUrl === Grant.typeUrl || typeof o.granter === "string" && typeof o.grantee === "string"); }, isAmino(o) { return o && (o.$typeUrl === Grant.typeUrl || typeof o.granter === "string" && typeof o.grantee === "string"); }, encode(message, writer = BinaryWriter.create()) { if (message.granter !== "") { writer.uint32(10).string(message.granter); } if (message.grantee !== "") { writer.uint32(18).string(message.grantee); } if (message.allowance !== undefined) { Any.encode(GlobalDecoderRegistry.wrapAny(message.allowance), writer.uint32(26).fork()).ldelim(); } return writer; }, decode(input, length) { const reader = input instanceof BinaryReader ? input : new BinaryReader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseGrant(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.granter = reader.string(); break; case 2: message.grantee = reader.string(); break; case 3: message.allowance = GlobalDecoderRegistry.unwrapAny(reader); break; default: reader.skipType(tag & 7); break; } } return message; }, fromPartial(object) { const message = createBaseGrant(); message.granter = object.granter ?? ""; message.grantee = object.grantee ?? ""; message.allowance = object.allowance !== undefined && object.allowance !== null ? GlobalDecoderRegistry.fromPartial(object.allowance) : undefined; return message; }, fromAmino(object) { const message = createBaseGrant(); if (object.granter !== undefined && object.granter !== null) { message.granter = object.granter; } if (object.grantee !== undefined && object.grantee !== null) { message.grantee = object.grantee; } if (object.allowance !== undefined && object.allowance !== null) { message.allowance = GlobalDecoderRegistry.fromAminoMsg(object.allowance); } return message; }, toAmino(message) { const obj = {}; obj.granter = message.granter === "" ? undefined : message.granter; obj.grantee = message.grantee === "" ? undefined : message.grantee; obj.allowance = message.allowance ? GlobalDecoderRegistry.toAminoMsg(message.allowance) : undefined; return obj; }, fromAminoMsg(object) { return Grant.fromAmino(object.value); }, toAminoMsg(message) { return { type: "cosmos-sdk/Grant", value: Grant.toAmino(message) }; }, fromProtoMsg(message) { return Grant.decode(message.value); }, toProto(message) { return Grant.encode(message).finish(); }, toProtoMsg(message) { return { typeUrl: "/cosmos.feegrant.v1beta1.Grant", value: Grant.encode(message).finish() }; }, registerTypeUrl() { if (!GlobalDecoderRegistry.registerExistingTypeUrl(Grant.typeUrl)) { return; } BasicAllowance.registerTypeUrl(); PeriodicAllowance.registerTypeUrl(); AllowedMsgAllowance.registerTypeUrl(); } };