{"version":3,"file":"index.cjs","sources":["../src/models/proto/generated/google/protobuf/any.ts","../src/models/proto/generated/tx-signer.ts","../src/models/msgs/tx-msg.ts","../src/models/coin-denom.ts","../src/models/msgs/msg-proto-app-stake.ts","../src/models/msgs/msg-proto-app-transfer.ts","../src/models/msgs/msg-proto-app-unstake.ts","../src/models/msgs/msg-proto-node-stake.ts","../src/models/msgs/msg-proto-node-unjail.ts","../src/models/msgs/msg-proto-node-unstake.ts","../src/models/msgs/msg-proto-send.ts","../src/factory/base-tx-encoder.ts","../src/factory/proto-tx-encoder.ts","../src/models/gov.ts","../src/factory/tx-encoder-factory.ts","../src/models/tx-signature.ts","../src/errors.ts","../src/models/msgs/msg-proto-gov-dao-transfer.ts","../src/models/msgs/msg-proto-gov-change-param.ts","../src/models/msgs/msg-proto-gov-upgrade.ts","../src/tx-builder.ts","../src/factory/proto-tx-decoder.ts","../src/models/transaction-signature.ts"],"sourcesContent":["/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\n\nexport const protobufPackage = \"google.protobuf\";\n\n/**\n * `Any` contains an arbitrary serialized protocol buffer message along with a\n * URL that describes the type of the serialized message.\n *\n * Protobuf library provides support to pack/unpack Any values in the form\n * of utility functions or additional generated methods of the Any type.\n *\n * Example 1: Pack and unpack a message in C++.\n *\n *     Foo foo = ...;\n *     Any any;\n *     any.PackFrom(foo);\n *     ...\n *     if (any.UnpackTo(&foo)) {\n *       ...\n *     }\n *\n * Example 2: Pack and unpack a message in Java.\n *\n *     Foo foo = ...;\n *     Any any = Any.pack(foo);\n *     ...\n *     if (any.is(Foo.class)) {\n *       foo = any.unpack(Foo.class);\n *     }\n *     // or ...\n *     if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n *       foo = any.unpack(Foo.getDefaultInstance());\n *     }\n *\n *  Example 3: Pack and unpack a message in Python.\n *\n *     foo = Foo(...)\n *     any = Any()\n *     any.Pack(foo)\n *     ...\n *     if any.Is(Foo.DESCRIPTOR):\n *       any.Unpack(foo)\n *       ...\n *\n *  Example 4: Pack and unpack a message in Go\n *\n *      foo := &pb.Foo{...}\n *      any, err := anypb.New(foo)\n *      if err != nil {\n *        ...\n *      }\n *      ...\n *      foo := &pb.Foo{}\n *      if err := any.UnmarshalTo(foo); err != nil {\n *        ...\n *      }\n *\n * The pack methods provided by protobuf library will by default use\n * 'type.googleapis.com/full.type.name' as the type URL and the unpack\n * methods only use the fully qualified type name after the last '/'\n * in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n * name \"y.z\".\n *\n * JSON\n * ====\n * The JSON representation of an `Any` value uses the regular\n * representation of the deserialized, embedded message, with an\n * additional field `@type` which contains the type URL. Example:\n *\n *     package google.profile;\n *     message Person {\n *       string first_name = 1;\n *       string last_name = 2;\n *     }\n *\n *     {\n *       \"@type\": \"type.googleapis.com/google.profile.Person\",\n *       \"firstName\": <string>,\n *       \"lastName\": <string>\n *     }\n *\n * If the embedded message type is well-known and has a custom JSON\n * representation, that representation will be embedded adding a field\n * `value` which holds the custom JSON in addition to the `@type`\n * field. Example (for message [google.protobuf.Duration][]):\n *\n *     {\n *       \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n *       \"value\": \"1.212s\"\n *     }\n */\nexport interface Any {\n  /**\n   * A URL/resource name that uniquely identifies the type of the serialized\n   * protocol buffer message. This string must contain at least\n   * one \"/\" character. The last segment of the URL's path must represent\n   * the fully qualified name of the type (as in\n   * `path/google.protobuf.Duration`). The name should be in a canonical form\n   * (e.g., leading \".\" is not accepted).\n   *\n   * In practice, teams usually precompile into the binary all types that they\n   * expect it to use in the context of Any. However, for URLs which use the\n   * scheme `http`, `https`, or no scheme, one can optionally set up a type\n   * server that maps type URLs to message definitions as follows:\n   *\n   * * If no scheme is provided, `https` is assumed.\n   * * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n   *   value in binary format, or produce an error.\n   * * Applications are allowed to cache lookup results based on the\n   *   URL, or have them precompiled into a binary to avoid any\n   *   lookup. Therefore, binary compatibility needs to be preserved\n   *   on changes to types. (Use versioned type names to manage\n   *   breaking changes.)\n   *\n   * Note: this functionality is not currently available in the official\n   * protobuf release, and it is not used for type URLs beginning with\n   * type.googleapis.com. As of May 2023, there are no widely used type server\n   * implementations and no plans to implement one.\n   *\n   * Schemes other than `http`, `https` (or the empty scheme) might be\n   * used with implementation specific semantics.\n   */\n  typeUrl: string;\n  /** Must be a valid serialized protocol buffer of the above specified type. */\n  value: Uint8Array;\n}\n\nfunction createBaseAny(): Any {\n  return { typeUrl: \"\", value: new Uint8Array(0) };\n}\n\nexport const Any = {\n  encode(message: Any, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.typeUrl !== \"\") {\n      writer.uint32(10).string(message.typeUrl);\n    }\n    if (message.value.length !== 0) {\n      writer.uint32(18).bytes(message.value);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): Any {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAny();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.typeUrl = reader.string();\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.value = reader.bytes();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Any {\n    return {\n      typeUrl: isSet(object.typeUrl) ? globalThis.String(object.typeUrl) : \"\",\n      value: isSet(object.value) ? bytesFromBase64(object.value) : new Uint8Array(0),\n    };\n  },\n\n  toJSON(message: Any): unknown {\n    const obj: any = {};\n    if (message.typeUrl !== \"\") {\n      obj.typeUrl = message.typeUrl;\n    }\n    if (message.value.length !== 0) {\n      obj.value = base64FromBytes(message.value);\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<Any>, I>>(base?: I): Any {\n    return Any.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<Any>, I>>(object: I): Any {\n    const message = createBaseAny();\n    message.typeUrl = object.typeUrl ?? \"\";\n    message.value = object.value ?? new Uint8Array(0);\n    return message;\n  },\n};\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n  if ((globalThis as any).Buffer) {\n    return Uint8Array.from(globalThis.Buffer.from(b64, \"base64\"));\n  } else {\n    const bin = globalThis.atob(b64);\n    const arr = new Uint8Array(bin.length);\n    for (let i = 0; i < bin.length; ++i) {\n      arr[i] = bin.charCodeAt(i);\n    }\n    return arr;\n  }\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n  if ((globalThis as any).Buffer) {\n    return globalThis.Buffer.from(arr).toString(\"base64\");\n  } else {\n    const bin: string[] = [];\n    arr.forEach((byte) => {\n      bin.push(globalThis.String.fromCharCode(byte));\n    });\n    return globalThis.btoa(bin.join(\"\"));\n  }\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\ntype KeysOfUnion<T> = T extends T ? keyof T : never;\nexport type Exact<P, I extends P> = P extends Builtin ? P\n  : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n","/* eslint-disable */\nimport Long from \"long\";\nimport _m0 from \"protobufjs/minimal.js\";\nimport { Any } from \"./google/protobuf/any.js\";\n\nexport const protobufPackage = \"pocketjs\";\n\nexport interface ProtoStdTx {\n  msg: Any | undefined;\n  fee: Coin[];\n  signature: ProtoStdSignature | undefined;\n  memo: string;\n  entropy: number;\n}\n\nexport interface ProtoStdSignature {\n  publicKey: Uint8Array;\n  Signature: Uint8Array;\n}\n\nexport interface StdSignDoc {\n  ChainID: string;\n  fee: Uint8Array;\n  memo: string;\n  msg: Uint8Array;\n  entropy: number;\n}\n\nexport interface Coin {\n  denom: string;\n  amount: string;\n}\n\n/**\n * DecCoin defines a token with a denomination and a decimal amount.\n *\n * NOTE: The amount field is an Dec which implements the custom method\n * signatures required by gogoproto.\n */\nexport interface DecCoin {\n  denom: string;\n  amount: string;\n}\n\nexport interface MsgProtoStake {\n  pubKey: Uint8Array;\n  chains: string[];\n  value: string;\n}\n\nexport interface MsgBeginUnstake {\n  Address: Uint8Array;\n}\n\nexport interface MsgUnjail {\n  AppAddr: Uint8Array;\n}\n\nexport interface MsgProtoNodeStake8 {\n  Publickey: Uint8Array;\n  Chains: string[];\n  value: string;\n  ServiceUrl: string;\n  OutAddress: Uint8Array;\n  RewardDelegators: { [key: string]: number };\n}\n\nexport interface MsgProtoNodeStake8_RewardDelegatorsEntry {\n  key: string;\n  value: number;\n}\n\nexport interface MsgBeginNodeUnstake8 {\n  Address: Uint8Array;\n  Signer: Uint8Array;\n}\n\nexport interface MsgNodeUnjail {\n  ValidatorAddr: Uint8Array;\n}\n\nexport interface MsgNodeUnjail8 {\n  ValidatorAddr: Uint8Array;\n  Signer: Uint8Array;\n}\n\nexport interface MsgSend {\n  FromAddress: Uint8Array;\n  ToAddress: Uint8Array;\n  amount: string;\n}\n\nexport interface MsgDAOTransfer {\n  fromAddress: Uint8Array;\n  toAddress: Uint8Array;\n  amount: string;\n  action: string;\n}\n\nexport interface Upgrade {\n  height: number;\n  version: string;\n  oldUpgradeHeight: number;\n  features: string[];\n}\n\nexport interface MsgUpgrade {\n  address: Uint8Array;\n  upgrade: Upgrade | undefined;\n}\n\nexport interface MsgChangeParam {\n  FromAddress: Uint8Array;\n  paramKey: string;\n  paramVal: Uint8Array;\n}\n\nfunction createBaseProtoStdTx(): ProtoStdTx {\n  return { msg: undefined, fee: [], signature: undefined, memo: \"\", entropy: 0 };\n}\n\nexport const ProtoStdTx = {\n  encode(message: ProtoStdTx, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.msg !== undefined) {\n      Any.encode(message.msg, writer.uint32(10).fork()).ldelim();\n    }\n    for (const v of message.fee) {\n      Coin.encode(v!, writer.uint32(18).fork()).ldelim();\n    }\n    if (message.signature !== undefined) {\n      ProtoStdSignature.encode(message.signature, writer.uint32(26).fork()).ldelim();\n    }\n    if (message.memo !== \"\") {\n      writer.uint32(34).string(message.memo);\n    }\n    if (message.entropy !== 0) {\n      writer.uint32(40).int64(message.entropy);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): ProtoStdTx {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProtoStdTx();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.msg = Any.decode(reader, reader.uint32());\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.fee.push(Coin.decode(reader, reader.uint32()));\n          continue;\n        case 3:\n          if (tag !== 26) {\n            break;\n          }\n\n          message.signature = ProtoStdSignature.decode(reader, reader.uint32());\n          continue;\n        case 4:\n          if (tag !== 34) {\n            break;\n          }\n\n          message.memo = reader.string();\n          continue;\n        case 5:\n          if (tag !== 40) {\n            break;\n          }\n\n          message.entropy = longToNumber(reader.int64() as Long);\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProtoStdTx {\n    return {\n      msg: isSet(object.msg) ? Any.fromJSON(object.msg) : undefined,\n      fee: globalThis.Array.isArray(object?.fee) ? object.fee.map((e: any) => Coin.fromJSON(e)) : [],\n      signature: isSet(object.signature) ? ProtoStdSignature.fromJSON(object.signature) : undefined,\n      memo: isSet(object.memo) ? globalThis.String(object.memo) : \"\",\n      entropy: isSet(object.entropy) ? globalThis.Number(object.entropy) : 0,\n    };\n  },\n\n  toJSON(message: ProtoStdTx): unknown {\n    const obj: any = {};\n    if (message.msg !== undefined) {\n      obj.msg = Any.toJSON(message.msg);\n    }\n    if (message.fee?.length) {\n      obj.fee = message.fee.map((e) => Coin.toJSON(e));\n    }\n    if (message.signature !== undefined) {\n      obj.signature = ProtoStdSignature.toJSON(message.signature);\n    }\n    if (message.memo !== \"\") {\n      obj.memo = message.memo;\n    }\n    if (message.entropy !== 0) {\n      obj.entropy = Math.round(message.entropy);\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<ProtoStdTx>, I>>(base?: I): ProtoStdTx {\n    return ProtoStdTx.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<ProtoStdTx>, I>>(object: I): ProtoStdTx {\n    const message = createBaseProtoStdTx();\n    message.msg = (object.msg !== undefined && object.msg !== null) ? Any.fromPartial(object.msg) : undefined;\n    message.fee = object.fee?.map((e) => Coin.fromPartial(e)) || [];\n    message.signature = (object.signature !== undefined && object.signature !== null)\n      ? ProtoStdSignature.fromPartial(object.signature)\n      : undefined;\n    message.memo = object.memo ?? \"\";\n    message.entropy = object.entropy ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseProtoStdSignature(): ProtoStdSignature {\n  return { publicKey: new Uint8Array(0), Signature: new Uint8Array(0) };\n}\n\nexport const ProtoStdSignature = {\n  encode(message: ProtoStdSignature, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.publicKey.length !== 0) {\n      writer.uint32(10).bytes(message.publicKey);\n    }\n    if (message.Signature.length !== 0) {\n      writer.uint32(18).bytes(message.Signature);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): ProtoStdSignature {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProtoStdSignature();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.publicKey = reader.bytes();\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.Signature = reader.bytes();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProtoStdSignature {\n    return {\n      publicKey: isSet(object.publicKey) ? bytesFromBase64(object.publicKey) : new Uint8Array(0),\n      Signature: isSet(object.Signature) ? bytesFromBase64(object.Signature) : new Uint8Array(0),\n    };\n  },\n\n  toJSON(message: ProtoStdSignature): unknown {\n    const obj: any = {};\n    if (message.publicKey.length !== 0) {\n      obj.publicKey = base64FromBytes(message.publicKey);\n    }\n    if (message.Signature.length !== 0) {\n      obj.Signature = base64FromBytes(message.Signature);\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<ProtoStdSignature>, I>>(base?: I): ProtoStdSignature {\n    return ProtoStdSignature.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<ProtoStdSignature>, I>>(object: I): ProtoStdSignature {\n    const message = createBaseProtoStdSignature();\n    message.publicKey = object.publicKey ?? new Uint8Array(0);\n    message.Signature = object.Signature ?? new Uint8Array(0);\n    return message;\n  },\n};\n\nfunction createBaseStdSignDoc(): StdSignDoc {\n  return { ChainID: \"\", fee: new Uint8Array(0), memo: \"\", msg: new Uint8Array(0), entropy: 0 };\n}\n\nexport const StdSignDoc = {\n  encode(message: StdSignDoc, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.ChainID !== \"\") {\n      writer.uint32(10).string(message.ChainID);\n    }\n    if (message.fee.length !== 0) {\n      writer.uint32(18).bytes(message.fee);\n    }\n    if (message.memo !== \"\") {\n      writer.uint32(26).string(message.memo);\n    }\n    if (message.msg.length !== 0) {\n      writer.uint32(34).bytes(message.msg);\n    }\n    if (message.entropy !== 0) {\n      writer.uint32(40).int64(message.entropy);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): StdSignDoc {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseStdSignDoc();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.ChainID = reader.string();\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.fee = reader.bytes();\n          continue;\n        case 3:\n          if (tag !== 26) {\n            break;\n          }\n\n          message.memo = reader.string();\n          continue;\n        case 4:\n          if (tag !== 34) {\n            break;\n          }\n\n          message.msg = reader.bytes();\n          continue;\n        case 5:\n          if (tag !== 40) {\n            break;\n          }\n\n          message.entropy = longToNumber(reader.int64() as Long);\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): StdSignDoc {\n    return {\n      ChainID: isSet(object.ChainID) ? globalThis.String(object.ChainID) : \"\",\n      fee: isSet(object.fee) ? bytesFromBase64(object.fee) : new Uint8Array(0),\n      memo: isSet(object.memo) ? globalThis.String(object.memo) : \"\",\n      msg: isSet(object.msg) ? bytesFromBase64(object.msg) : new Uint8Array(0),\n      entropy: isSet(object.entropy) ? globalThis.Number(object.entropy) : 0,\n    };\n  },\n\n  toJSON(message: StdSignDoc): unknown {\n    const obj: any = {};\n    if (message.ChainID !== \"\") {\n      obj.ChainID = message.ChainID;\n    }\n    if (message.fee.length !== 0) {\n      obj.fee = base64FromBytes(message.fee);\n    }\n    if (message.memo !== \"\") {\n      obj.memo = message.memo;\n    }\n    if (message.msg.length !== 0) {\n      obj.msg = base64FromBytes(message.msg);\n    }\n    if (message.entropy !== 0) {\n      obj.entropy = Math.round(message.entropy);\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<StdSignDoc>, I>>(base?: I): StdSignDoc {\n    return StdSignDoc.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<StdSignDoc>, I>>(object: I): StdSignDoc {\n    const message = createBaseStdSignDoc();\n    message.ChainID = object.ChainID ?? \"\";\n    message.fee = object.fee ?? new Uint8Array(0);\n    message.memo = object.memo ?? \"\";\n    message.msg = object.msg ?? new Uint8Array(0);\n    message.entropy = object.entropy ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseCoin(): Coin {\n  return { denom: \"\", amount: \"\" };\n}\n\nexport const Coin = {\n  encode(message: Coin, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.denom !== \"\") {\n      writer.uint32(10).string(message.denom);\n    }\n    if (message.amount !== \"\") {\n      writer.uint32(18).string(message.amount);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): Coin {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCoin();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.denom = reader.string();\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.amount = reader.string();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Coin {\n    return {\n      denom: isSet(object.denom) ? globalThis.String(object.denom) : \"\",\n      amount: isSet(object.amount) ? globalThis.String(object.amount) : \"\",\n    };\n  },\n\n  toJSON(message: Coin): unknown {\n    const obj: any = {};\n    if (message.denom !== \"\") {\n      obj.denom = message.denom;\n    }\n    if (message.amount !== \"\") {\n      obj.amount = message.amount;\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<Coin>, I>>(base?: I): Coin {\n    return Coin.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<Coin>, I>>(object: I): Coin {\n    const message = createBaseCoin();\n    message.denom = object.denom ?? \"\";\n    message.amount = object.amount ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseDecCoin(): DecCoin {\n  return { denom: \"\", amount: \"\" };\n}\n\nexport const DecCoin = {\n  encode(message: DecCoin, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.denom !== \"\") {\n      writer.uint32(10).string(message.denom);\n    }\n    if (message.amount !== \"\") {\n      writer.uint32(18).string(message.amount);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): DecCoin {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDecCoin();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.denom = reader.string();\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.amount = reader.string();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): DecCoin {\n    return {\n      denom: isSet(object.denom) ? globalThis.String(object.denom) : \"\",\n      amount: isSet(object.amount) ? globalThis.String(object.amount) : \"\",\n    };\n  },\n\n  toJSON(message: DecCoin): unknown {\n    const obj: any = {};\n    if (message.denom !== \"\") {\n      obj.denom = message.denom;\n    }\n    if (message.amount !== \"\") {\n      obj.amount = message.amount;\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<DecCoin>, I>>(base?: I): DecCoin {\n    return DecCoin.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<DecCoin>, I>>(object: I): DecCoin {\n    const message = createBaseDecCoin();\n    message.denom = object.denom ?? \"\";\n    message.amount = object.amount ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseMsgProtoStake(): MsgProtoStake {\n  return { pubKey: new Uint8Array(0), chains: [], value: \"\" };\n}\n\nexport const MsgProtoStake = {\n  encode(message: MsgProtoStake, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.pubKey.length !== 0) {\n      writer.uint32(10).bytes(message.pubKey);\n    }\n    for (const v of message.chains) {\n      writer.uint32(18).string(v!);\n    }\n    if (message.value !== \"\") {\n      writer.uint32(26).string(message.value);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MsgProtoStake {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMsgProtoStake();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.pubKey = reader.bytes();\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.chains.push(reader.string());\n          continue;\n        case 3:\n          if (tag !== 26) {\n            break;\n          }\n\n          message.value = reader.string();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MsgProtoStake {\n    return {\n      pubKey: isSet(object.pubKey) ? bytesFromBase64(object.pubKey) : new Uint8Array(0),\n      chains: globalThis.Array.isArray(object?.chains) ? object.chains.map((e: any) => globalThis.String(e)) : [],\n      value: isSet(object.value) ? globalThis.String(object.value) : \"\",\n    };\n  },\n\n  toJSON(message: MsgProtoStake): unknown {\n    const obj: any = {};\n    if (message.pubKey.length !== 0) {\n      obj.pubKey = base64FromBytes(message.pubKey);\n    }\n    if (message.chains?.length) {\n      obj.chains = message.chains;\n    }\n    if (message.value !== \"\") {\n      obj.value = message.value;\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<MsgProtoStake>, I>>(base?: I): MsgProtoStake {\n    return MsgProtoStake.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<MsgProtoStake>, I>>(object: I): MsgProtoStake {\n    const message = createBaseMsgProtoStake();\n    message.pubKey = object.pubKey ?? new Uint8Array(0);\n    message.chains = object.chains?.map((e) => e) || [];\n    message.value = object.value ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseMsgBeginUnstake(): MsgBeginUnstake {\n  return { Address: new Uint8Array(0) };\n}\n\nexport const MsgBeginUnstake = {\n  encode(message: MsgBeginUnstake, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.Address.length !== 0) {\n      writer.uint32(10).bytes(message.Address);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MsgBeginUnstake {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMsgBeginUnstake();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.Address = reader.bytes();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MsgBeginUnstake {\n    return { Address: isSet(object.Address) ? bytesFromBase64(object.Address) : new Uint8Array(0) };\n  },\n\n  toJSON(message: MsgBeginUnstake): unknown {\n    const obj: any = {};\n    if (message.Address.length !== 0) {\n      obj.Address = base64FromBytes(message.Address);\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<MsgBeginUnstake>, I>>(base?: I): MsgBeginUnstake {\n    return MsgBeginUnstake.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<MsgBeginUnstake>, I>>(object: I): MsgBeginUnstake {\n    const message = createBaseMsgBeginUnstake();\n    message.Address = object.Address ?? new Uint8Array(0);\n    return message;\n  },\n};\n\nfunction createBaseMsgUnjail(): MsgUnjail {\n  return { AppAddr: new Uint8Array(0) };\n}\n\nexport const MsgUnjail = {\n  encode(message: MsgUnjail, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.AppAddr.length !== 0) {\n      writer.uint32(10).bytes(message.AppAddr);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MsgUnjail {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMsgUnjail();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.AppAddr = reader.bytes();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MsgUnjail {\n    return { AppAddr: isSet(object.AppAddr) ? bytesFromBase64(object.AppAddr) : new Uint8Array(0) };\n  },\n\n  toJSON(message: MsgUnjail): unknown {\n    const obj: any = {};\n    if (message.AppAddr.length !== 0) {\n      obj.AppAddr = base64FromBytes(message.AppAddr);\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<MsgUnjail>, I>>(base?: I): MsgUnjail {\n    return MsgUnjail.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<MsgUnjail>, I>>(object: I): MsgUnjail {\n    const message = createBaseMsgUnjail();\n    message.AppAddr = object.AppAddr ?? new Uint8Array(0);\n    return message;\n  },\n};\n\nfunction createBaseMsgProtoNodeStake8(): MsgProtoNodeStake8 {\n  return {\n    Publickey: new Uint8Array(0),\n    Chains: [],\n    value: \"\",\n    ServiceUrl: \"\",\n    OutAddress: new Uint8Array(0),\n    RewardDelegators: {},\n  };\n}\n\nexport const MsgProtoNodeStake8 = {\n  encode(message: MsgProtoNodeStake8, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.Publickey.length !== 0) {\n      writer.uint32(10).bytes(message.Publickey);\n    }\n    for (const v of message.Chains) {\n      writer.uint32(18).string(v!);\n    }\n    if (message.value !== \"\") {\n      writer.uint32(26).string(message.value);\n    }\n    if (message.ServiceUrl !== \"\") {\n      writer.uint32(34).string(message.ServiceUrl);\n    }\n    if (message.OutAddress.length !== 0) {\n      writer.uint32(42).bytes(message.OutAddress);\n    }\n    Object.entries(message.RewardDelegators).forEach(([key, value]) => {\n      MsgProtoNodeStake8_RewardDelegatorsEntry.encode({ key: key as any, value }, writer.uint32(50).fork()).ldelim();\n    });\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MsgProtoNodeStake8 {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMsgProtoNodeStake8();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.Publickey = reader.bytes();\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.Chains.push(reader.string());\n          continue;\n        case 3:\n          if (tag !== 26) {\n            break;\n          }\n\n          message.value = reader.string();\n          continue;\n        case 4:\n          if (tag !== 34) {\n            break;\n          }\n\n          message.ServiceUrl = reader.string();\n          continue;\n        case 5:\n          if (tag !== 42) {\n            break;\n          }\n\n          message.OutAddress = reader.bytes();\n          continue;\n        case 6:\n          if (tag !== 50) {\n            break;\n          }\n\n          const entry6 = MsgProtoNodeStake8_RewardDelegatorsEntry.decode(reader, reader.uint32());\n          if (entry6.value !== undefined) {\n            message.RewardDelegators[entry6.key] = entry6.value;\n          }\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MsgProtoNodeStake8 {\n    return {\n      Publickey: isSet(object.Publickey) ? bytesFromBase64(object.Publickey) : new Uint8Array(0),\n      Chains: globalThis.Array.isArray(object?.Chains) ? object.Chains.map((e: any) => globalThis.String(e)) : [],\n      value: isSet(object.value) ? globalThis.String(object.value) : \"\",\n      ServiceUrl: isSet(object.ServiceUrl) ? globalThis.String(object.ServiceUrl) : \"\",\n      OutAddress: isSet(object.OutAddress) ? bytesFromBase64(object.OutAddress) : new Uint8Array(0),\n      RewardDelegators: isObject(object.RewardDelegators)\n        ? Object.entries(object.RewardDelegators).reduce<{ [key: string]: number }>((acc, [key, value]) => {\n          acc[key] = Number(value);\n          return acc;\n        }, {})\n        : {},\n    };\n  },\n\n  toJSON(message: MsgProtoNodeStake8): unknown {\n    const obj: any = {};\n    if (message.Publickey.length !== 0) {\n      obj.Publickey = base64FromBytes(message.Publickey);\n    }\n    if (message.Chains?.length) {\n      obj.Chains = message.Chains;\n    }\n    if (message.value !== \"\") {\n      obj.value = message.value;\n    }\n    if (message.ServiceUrl !== \"\") {\n      obj.ServiceUrl = message.ServiceUrl;\n    }\n    if (message.OutAddress.length !== 0) {\n      obj.OutAddress = base64FromBytes(message.OutAddress);\n    }\n    if (message.RewardDelegators) {\n      const entries = Object.entries(message.RewardDelegators);\n      if (entries.length > 0) {\n        obj.RewardDelegators = {};\n        entries.forEach(([k, v]) => {\n          obj.RewardDelegators[k] = Math.round(v);\n        });\n      }\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<MsgProtoNodeStake8>, I>>(base?: I): MsgProtoNodeStake8 {\n    return MsgProtoNodeStake8.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<MsgProtoNodeStake8>, I>>(object: I): MsgProtoNodeStake8 {\n    const message = createBaseMsgProtoNodeStake8();\n    message.Publickey = object.Publickey ?? new Uint8Array(0);\n    message.Chains = object.Chains?.map((e) => e) || [];\n    message.value = object.value ?? \"\";\n    message.ServiceUrl = object.ServiceUrl ?? \"\";\n    message.OutAddress = object.OutAddress ?? new Uint8Array(0);\n    message.RewardDelegators = Object.entries(object.RewardDelegators ?? {}).reduce<{ [key: string]: number }>(\n      (acc, [key, value]) => {\n        if (value !== undefined) {\n          acc[key] = globalThis.Number(value);\n        }\n        return acc;\n      },\n      {},\n    );\n    return message;\n  },\n};\n\nfunction createBaseMsgProtoNodeStake8_RewardDelegatorsEntry(): MsgProtoNodeStake8_RewardDelegatorsEntry {\n  return { key: \"\", value: 0 };\n}\n\nexport const MsgProtoNodeStake8_RewardDelegatorsEntry = {\n  encode(message: MsgProtoNodeStake8_RewardDelegatorsEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.key !== \"\") {\n      writer.uint32(10).string(message.key);\n    }\n    if (message.value !== 0) {\n      writer.uint32(16).uint32(message.value);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MsgProtoNodeStake8_RewardDelegatorsEntry {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMsgProtoNodeStake8_RewardDelegatorsEntry();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.key = reader.string();\n          continue;\n        case 2:\n          if (tag !== 16) {\n            break;\n          }\n\n          message.value = reader.uint32();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MsgProtoNodeStake8_RewardDelegatorsEntry {\n    return {\n      key: isSet(object.key) ? globalThis.String(object.key) : \"\",\n      value: isSet(object.value) ? globalThis.Number(object.value) : 0,\n    };\n  },\n\n  toJSON(message: MsgProtoNodeStake8_RewardDelegatorsEntry): unknown {\n    const obj: any = {};\n    if (message.key !== \"\") {\n      obj.key = message.key;\n    }\n    if (message.value !== 0) {\n      obj.value = Math.round(message.value);\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<MsgProtoNodeStake8_RewardDelegatorsEntry>, I>>(\n    base?: I,\n  ): MsgProtoNodeStake8_RewardDelegatorsEntry {\n    return MsgProtoNodeStake8_RewardDelegatorsEntry.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<MsgProtoNodeStake8_RewardDelegatorsEntry>, I>>(\n    object: I,\n  ): MsgProtoNodeStake8_RewardDelegatorsEntry {\n    const message = createBaseMsgProtoNodeStake8_RewardDelegatorsEntry();\n    message.key = object.key ?? \"\";\n    message.value = object.value ?? 0;\n    return message;\n  },\n};\n\nfunction createBaseMsgBeginNodeUnstake8(): MsgBeginNodeUnstake8 {\n  return { Address: new Uint8Array(0), Signer: new Uint8Array(0) };\n}\n\nexport const MsgBeginNodeUnstake8 = {\n  encode(message: MsgBeginNodeUnstake8, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.Address.length !== 0) {\n      writer.uint32(10).bytes(message.Address);\n    }\n    if (message.Signer.length !== 0) {\n      writer.uint32(18).bytes(message.Signer);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MsgBeginNodeUnstake8 {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMsgBeginNodeUnstake8();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.Address = reader.bytes();\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.Signer = reader.bytes();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MsgBeginNodeUnstake8 {\n    return {\n      Address: isSet(object.Address) ? bytesFromBase64(object.Address) : new Uint8Array(0),\n      Signer: isSet(object.Signer) ? bytesFromBase64(object.Signer) : new Uint8Array(0),\n    };\n  },\n\n  toJSON(message: MsgBeginNodeUnstake8): unknown {\n    const obj: any = {};\n    if (message.Address.length !== 0) {\n      obj.Address = base64FromBytes(message.Address);\n    }\n    if (message.Signer.length !== 0) {\n      obj.Signer = base64FromBytes(message.Signer);\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<MsgBeginNodeUnstake8>, I>>(base?: I): MsgBeginNodeUnstake8 {\n    return MsgBeginNodeUnstake8.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<MsgBeginNodeUnstake8>, I>>(object: I): MsgBeginNodeUnstake8 {\n    const message = createBaseMsgBeginNodeUnstake8();\n    message.Address = object.Address ?? new Uint8Array(0);\n    message.Signer = object.Signer ?? new Uint8Array(0);\n    return message;\n  },\n};\n\nfunction createBaseMsgNodeUnjail(): MsgNodeUnjail {\n  return { ValidatorAddr: new Uint8Array(0) };\n}\n\nexport const MsgNodeUnjail = {\n  encode(message: MsgNodeUnjail, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.ValidatorAddr.length !== 0) {\n      writer.uint32(10).bytes(message.ValidatorAddr);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MsgNodeUnjail {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMsgNodeUnjail();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.ValidatorAddr = reader.bytes();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MsgNodeUnjail {\n    return { ValidatorAddr: isSet(object.ValidatorAddr) ? bytesFromBase64(object.ValidatorAddr) : new Uint8Array(0) };\n  },\n\n  toJSON(message: MsgNodeUnjail): unknown {\n    const obj: any = {};\n    if (message.ValidatorAddr.length !== 0) {\n      obj.ValidatorAddr = base64FromBytes(message.ValidatorAddr);\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<MsgNodeUnjail>, I>>(base?: I): MsgNodeUnjail {\n    return MsgNodeUnjail.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<MsgNodeUnjail>, I>>(object: I): MsgNodeUnjail {\n    const message = createBaseMsgNodeUnjail();\n    message.ValidatorAddr = object.ValidatorAddr ?? new Uint8Array(0);\n    return message;\n  },\n};\n\nfunction createBaseMsgNodeUnjail8(): MsgNodeUnjail8 {\n  return { ValidatorAddr: new Uint8Array(0), Signer: new Uint8Array(0) };\n}\n\nexport const MsgNodeUnjail8 = {\n  encode(message: MsgNodeUnjail8, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.ValidatorAddr.length !== 0) {\n      writer.uint32(10).bytes(message.ValidatorAddr);\n    }\n    if (message.Signer.length !== 0) {\n      writer.uint32(18).bytes(message.Signer);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MsgNodeUnjail8 {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMsgNodeUnjail8();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.ValidatorAddr = reader.bytes();\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.Signer = reader.bytes();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MsgNodeUnjail8 {\n    return {\n      ValidatorAddr: isSet(object.ValidatorAddr) ? bytesFromBase64(object.ValidatorAddr) : new Uint8Array(0),\n      Signer: isSet(object.Signer) ? bytesFromBase64(object.Signer) : new Uint8Array(0),\n    };\n  },\n\n  toJSON(message: MsgNodeUnjail8): unknown {\n    const obj: any = {};\n    if (message.ValidatorAddr.length !== 0) {\n      obj.ValidatorAddr = base64FromBytes(message.ValidatorAddr);\n    }\n    if (message.Signer.length !== 0) {\n      obj.Signer = base64FromBytes(message.Signer);\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<MsgNodeUnjail8>, I>>(base?: I): MsgNodeUnjail8 {\n    return MsgNodeUnjail8.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<MsgNodeUnjail8>, I>>(object: I): MsgNodeUnjail8 {\n    const message = createBaseMsgNodeUnjail8();\n    message.ValidatorAddr = object.ValidatorAddr ?? new Uint8Array(0);\n    message.Signer = object.Signer ?? new Uint8Array(0);\n    return message;\n  },\n};\n\nfunction createBaseMsgSend(): MsgSend {\n  return { FromAddress: new Uint8Array(0), ToAddress: new Uint8Array(0), amount: \"\" };\n}\n\nexport const MsgSend = {\n  encode(message: MsgSend, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.FromAddress.length !== 0) {\n      writer.uint32(10).bytes(message.FromAddress);\n    }\n    if (message.ToAddress.length !== 0) {\n      writer.uint32(18).bytes(message.ToAddress);\n    }\n    if (message.amount !== \"\") {\n      writer.uint32(26).string(message.amount);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MsgSend {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMsgSend();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.FromAddress = reader.bytes();\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ToAddress = reader.bytes();\n          continue;\n        case 3:\n          if (tag !== 26) {\n            break;\n          }\n\n          message.amount = reader.string();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MsgSend {\n    return {\n      FromAddress: isSet(object.FromAddress) ? bytesFromBase64(object.FromAddress) : new Uint8Array(0),\n      ToAddress: isSet(object.ToAddress) ? bytesFromBase64(object.ToAddress) : new Uint8Array(0),\n      amount: isSet(object.amount) ? globalThis.String(object.amount) : \"\",\n    };\n  },\n\n  toJSON(message: MsgSend): unknown {\n    const obj: any = {};\n    if (message.FromAddress.length !== 0) {\n      obj.FromAddress = base64FromBytes(message.FromAddress);\n    }\n    if (message.ToAddress.length !== 0) {\n      obj.ToAddress = base64FromBytes(message.ToAddress);\n    }\n    if (message.amount !== \"\") {\n      obj.amount = message.amount;\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<MsgSend>, I>>(base?: I): MsgSend {\n    return MsgSend.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<MsgSend>, I>>(object: I): MsgSend {\n    const message = createBaseMsgSend();\n    message.FromAddress = object.FromAddress ?? new Uint8Array(0);\n    message.ToAddress = object.ToAddress ?? new Uint8Array(0);\n    message.amount = object.amount ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseMsgDAOTransfer(): MsgDAOTransfer {\n  return { fromAddress: new Uint8Array(0), toAddress: new Uint8Array(0), amount: \"\", action: \"\" };\n}\n\nexport const MsgDAOTransfer = {\n  encode(message: MsgDAOTransfer, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.fromAddress.length !== 0) {\n      writer.uint32(10).bytes(message.fromAddress);\n    }\n    if (message.toAddress.length !== 0) {\n      writer.uint32(18).bytes(message.toAddress);\n    }\n    if (message.amount !== \"\") {\n      writer.uint32(26).string(message.amount);\n    }\n    if (message.action !== \"\") {\n      writer.uint32(34).string(message.action);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MsgDAOTransfer {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMsgDAOTransfer();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.fromAddress = reader.bytes();\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.toAddress = reader.bytes();\n          continue;\n        case 3:\n          if (tag !== 26) {\n            break;\n          }\n\n          message.amount = reader.string();\n          continue;\n        case 4:\n          if (tag !== 34) {\n            break;\n          }\n\n          message.action = reader.string();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MsgDAOTransfer {\n    return {\n      fromAddress: isSet(object.fromAddress) ? bytesFromBase64(object.fromAddress) : new Uint8Array(0),\n      toAddress: isSet(object.toAddress) ? bytesFromBase64(object.toAddress) : new Uint8Array(0),\n      amount: isSet(object.amount) ? globalThis.String(object.amount) : \"\",\n      action: isSet(object.action) ? globalThis.String(object.action) : \"\",\n    };\n  },\n\n  toJSON(message: MsgDAOTransfer): unknown {\n    const obj: any = {};\n    if (message.fromAddress.length !== 0) {\n      obj.fromAddress = base64FromBytes(message.fromAddress);\n    }\n    if (message.toAddress.length !== 0) {\n      obj.toAddress = base64FromBytes(message.toAddress);\n    }\n    if (message.amount !== \"\") {\n      obj.amount = message.amount;\n    }\n    if (message.action !== \"\") {\n      obj.action = message.action;\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<MsgDAOTransfer>, I>>(base?: I): MsgDAOTransfer {\n    return MsgDAOTransfer.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<MsgDAOTransfer>, I>>(object: I): MsgDAOTransfer {\n    const message = createBaseMsgDAOTransfer();\n    message.fromAddress = object.fromAddress ?? new Uint8Array(0);\n    message.toAddress = object.toAddress ?? new Uint8Array(0);\n    message.amount = object.amount ?? \"\";\n    message.action = object.action ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseUpgrade(): Upgrade {\n  return { height: 0, version: \"\", oldUpgradeHeight: 0, features: [] };\n}\n\nexport const Upgrade = {\n  encode(message: Upgrade, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.height !== 0) {\n      writer.uint32(8).int64(message.height);\n    }\n    if (message.version !== \"\") {\n      writer.uint32(18).string(message.version);\n    }\n    if (message.oldUpgradeHeight !== 0) {\n      writer.uint32(24).int64(message.oldUpgradeHeight);\n    }\n    for (const v of message.features) {\n      writer.uint32(34).string(v!);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): Upgrade {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUpgrade();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 8) {\n            break;\n          }\n\n          message.height = longToNumber(reader.int64() as Long);\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.version = reader.string();\n          continue;\n        case 3:\n          if (tag !== 24) {\n            break;\n          }\n\n          message.oldUpgradeHeight = longToNumber(reader.int64() as Long);\n          continue;\n        case 4:\n          if (tag !== 34) {\n            break;\n          }\n\n          message.features.push(reader.string());\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Upgrade {\n    return {\n      height: isSet(object.height) ? globalThis.Number(object.height) : 0,\n      version: isSet(object.version) ? globalThis.String(object.version) : \"\",\n      oldUpgradeHeight: isSet(object.oldUpgradeHeight) ? globalThis.Number(object.oldUpgradeHeight) : 0,\n      features: globalThis.Array.isArray(object?.features) ? object.features.map((e: any) => globalThis.String(e)) : [],\n    };\n  },\n\n  toJSON(message: Upgrade): unknown {\n    const obj: any = {};\n    if (message.height !== 0) {\n      obj.height = Math.round(message.height);\n    }\n    if (message.version !== \"\") {\n      obj.version = message.version;\n    }\n    if (message.oldUpgradeHeight !== 0) {\n      obj.oldUpgradeHeight = Math.round(message.oldUpgradeHeight);\n    }\n    if (message.features?.length) {\n      obj.features = message.features;\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<Upgrade>, I>>(base?: I): Upgrade {\n    return Upgrade.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<Upgrade>, I>>(object: I): Upgrade {\n    const message = createBaseUpgrade();\n    message.height = object.height ?? 0;\n    message.version = object.version ?? \"\";\n    message.oldUpgradeHeight = object.oldUpgradeHeight ?? 0;\n    message.features = object.features?.map((e) => e) || [];\n    return message;\n  },\n};\n\nfunction createBaseMsgUpgrade(): MsgUpgrade {\n  return { address: new Uint8Array(0), upgrade: undefined };\n}\n\nexport const MsgUpgrade = {\n  encode(message: MsgUpgrade, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.address.length !== 0) {\n      writer.uint32(10).bytes(message.address);\n    }\n    if (message.upgrade !== undefined) {\n      Upgrade.encode(message.upgrade, writer.uint32(18).fork()).ldelim();\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MsgUpgrade {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMsgUpgrade();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.address = reader.bytes();\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.upgrade = Upgrade.decode(reader, reader.uint32());\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MsgUpgrade {\n    return {\n      address: isSet(object.address) ? bytesFromBase64(object.address) : new Uint8Array(0),\n      upgrade: isSet(object.upgrade) ? Upgrade.fromJSON(object.upgrade) : undefined,\n    };\n  },\n\n  toJSON(message: MsgUpgrade): unknown {\n    const obj: any = {};\n    if (message.address.length !== 0) {\n      obj.address = base64FromBytes(message.address);\n    }\n    if (message.upgrade !== undefined) {\n      obj.upgrade = Upgrade.toJSON(message.upgrade);\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<MsgUpgrade>, I>>(base?: I): MsgUpgrade {\n    return MsgUpgrade.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<MsgUpgrade>, I>>(object: I): MsgUpgrade {\n    const message = createBaseMsgUpgrade();\n    message.address = object.address ?? new Uint8Array(0);\n    message.upgrade = (object.upgrade !== undefined && object.upgrade !== null)\n      ? Upgrade.fromPartial(object.upgrade)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseMsgChangeParam(): MsgChangeParam {\n  return { FromAddress: new Uint8Array(0), paramKey: \"\", paramVal: new Uint8Array(0) };\n}\n\nexport const MsgChangeParam = {\n  encode(message: MsgChangeParam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {\n    if (message.FromAddress.length !== 0) {\n      writer.uint32(10).bytes(message.FromAddress);\n    }\n    if (message.paramKey !== \"\") {\n      writer.uint32(18).string(message.paramKey);\n    }\n    if (message.paramVal.length !== 0) {\n      writer.uint32(26).bytes(message.paramVal);\n    }\n    return writer;\n  },\n\n  decode(input: _m0.Reader | Uint8Array, length?: number): MsgChangeParam {\n    const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMsgChangeParam();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1:\n          if (tag !== 10) {\n            break;\n          }\n\n          message.FromAddress = reader.bytes();\n          continue;\n        case 2:\n          if (tag !== 18) {\n            break;\n          }\n\n          message.paramKey = reader.string();\n          continue;\n        case 3:\n          if (tag !== 26) {\n            break;\n          }\n\n          message.paramVal = reader.bytes();\n          continue;\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skipType(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MsgChangeParam {\n    return {\n      FromAddress: isSet(object.FromAddress) ? bytesFromBase64(object.FromAddress) : new Uint8Array(0),\n      paramKey: isSet(object.paramKey) ? globalThis.String(object.paramKey) : \"\",\n      paramVal: isSet(object.paramVal) ? bytesFromBase64(object.paramVal) : new Uint8Array(0),\n    };\n  },\n\n  toJSON(message: MsgChangeParam): unknown {\n    const obj: any = {};\n    if (message.FromAddress.length !== 0) {\n      obj.FromAddress = base64FromBytes(message.FromAddress);\n    }\n    if (message.paramKey !== \"\") {\n      obj.paramKey = message.paramKey;\n    }\n    if (message.paramVal.length !== 0) {\n      obj.paramVal = base64FromBytes(message.paramVal);\n    }\n    return obj;\n  },\n\n  create<I extends Exact<DeepPartial<MsgChangeParam>, I>>(base?: I): MsgChangeParam {\n    return MsgChangeParam.fromPartial(base ?? ({} as any));\n  },\n  fromPartial<I extends Exact<DeepPartial<MsgChangeParam>, I>>(object: I): MsgChangeParam {\n    const message = createBaseMsgChangeParam();\n    message.FromAddress = object.FromAddress ?? new Uint8Array(0);\n    message.paramKey = object.paramKey ?? \"\";\n    message.paramVal = object.paramVal ?? new Uint8Array(0);\n    return message;\n  },\n};\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n  if ((globalThis as any).Buffer) {\n    return Uint8Array.from(globalThis.Buffer.from(b64, \"base64\"));\n  } else {\n    const bin = globalThis.atob(b64);\n    const arr = new Uint8Array(bin.length);\n    for (let i = 0; i < bin.length; ++i) {\n      arr[i] = bin.charCodeAt(i);\n    }\n    return arr;\n  }\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n  if ((globalThis as any).Buffer) {\n    return globalThis.Buffer.from(arr).toString(\"base64\");\n  } else {\n    const bin: string[] = [];\n    arr.forEach((byte) => {\n      bin.push(globalThis.String.fromCharCode(byte));\n    });\n    return globalThis.btoa(bin.join(\"\"));\n  }\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\ntype KeysOfUnion<T> = T extends T ? keyof T : never;\nexport type Exact<P, I extends P> = P extends Builtin ? P\n  : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };\n\nfunction longToNumber(long: Long): number {\n  if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) {\n    throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n  }\n  return long.toNumber();\n}\n\nif (_m0.util.Long !== Long) {\n  _m0.util.Long = Long as any;\n  _m0.configure();\n}\n\nfunction isObject(value: any): boolean {\n  return typeof value === \"object\" && value !== null;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n","/**\n * Parent class to all Msg to be sent over inside Transactions\n */\nexport abstract class TxMsg {\n  public abstract toStdSignDocMsgObj(): object\n  public abstract toStdTxMsgObj(): any\n}\n","/**\n * An enum to represent all the valid Coin Denominations in Pocket Network\n */\nexport enum CoinDenom {\n  Upokt = 'Upokt',\n  Pokt = 'Pokt',\n}\n","import { Buffer } from 'buffer'\nimport { MsgProtoStake } from '../proto/generated/tx-signer'\nimport { Any } from '../proto/generated/google/protobuf/any'\nimport { TxMsg } from './tx-msg'\n\nconst MINIMUM_STAKE_AMOUNT = 1000000\n\n/**\n * Model representing a MsgAppStake to stake as an Application in the Pocket Network\n */\nexport class MsgProtoAppStake extends TxMsg {\n  public readonly KEY: string = '/x.apps.MsgProtoStake'\n  public readonly AMINO_KEY: string = 'apps/MsgAppStake'\n  public readonly pubKey: Buffer\n  public readonly chains: string[]\n  public readonly amount: string\n\n  /**\n   * Constructor for this class\n   * @param {Buffer} pubKey - Public key buffer\n   * @param {string[]} chains - Network identifier list to be requested by this app\n   * @param {string} amount - The amount to stake, must be greater than 0\n   */\n  constructor(pubKey: string, chains: string[], amount: string) {\n    super()\n    this.pubKey = Buffer.from(pubKey, 'hex')\n    this.chains = chains\n    this.amount = amount\n\n    const amountNumber = Number(this.amount)\n\n    if (isNaN(amountNumber)) {\n      throw new Error('Amount is not a valid number')\n    } else if (amountNumber < MINIMUM_STAKE_AMOUNT) {\n      throw new Error(\n        'Amount should be bigger than ${MINIMUM_STAKE_AMOUNT} uPOKT'\n      )\n    } else if (this.chains.length === 0) {\n      throw new Error('Chains is empty')\n    }\n  }\n\n  /**\n   * Returns the msg type key\n   * @returns {string} - Msg type key value.\n   * @memberof MsgAppStake\n   */\n  public getMsgTypeKey(): string {\n    return this.KEY\n  }\n\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {object} - Msg type key value.\n   * @memberof MsgAppStake\n   */\n  public toStdSignDocMsgObj(): object {\n    return {\n      type: this.AMINO_KEY,\n      value: {\n        chains: this.chains,\n        pubkey: {\n          type: 'crypto/ed25519_public_key',\n          value: this.pubKey.toString('hex'),\n        },\n        value: this.amount,\n      },\n    }\n  }\n\n  /**\n   * Converts an Msg Object for StdTx encoding\n   * @returns {any} - Msg type key value.\n   * @memberof MsgAppStake\n   */\n  public toStdTxMsgObj(): any {\n    const data = {\n      pubKey: this.pubKey,\n      chains: this.chains,\n      value: this.amount,\n    }\n\n    return Any.fromJSON({\n      typeUrl: this.KEY,\n      value: Buffer.from(MsgProtoStake.encode(data).finish()).toString(\n        'base64'\n      ),\n    })\n  }\n}\n","import { Buffer } from 'buffer'\nimport { MsgProtoStake } from '../proto/generated/tx-signer'\nimport { Any } from '../proto/generated/google/protobuf/any'\nimport { TxMsg } from './tx-msg'\n\n/**\n * MsgProtoAppTransfer is a special case of MsgProtoAppStake where\n * chains and amount are not set\n */\nexport class MsgProtoAppTransfer extends TxMsg {\n  public readonly KEY: string = '/x.apps.MsgProtoStake'\n  public readonly AMINO_KEY: string = 'apps/MsgAppStake'\n  public readonly pubKey: Buffer\n\n  /**\n   * Constructor for this class\n   * @param {Buffer} pubKey - Application public key to be transferred to\n   */\n  constructor(pubKey: string) {\n    super()\n    this.pubKey = Buffer.from(pubKey, 'hex')\n  }\n\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {object} - Msg type key value.\n   * @memberof MsgAppStake\n   */\n  public toStdSignDocMsgObj(): object {\n    return {\n      type: this.AMINO_KEY,\n      value: {\n        chains: null,\n        pubkey: {\n          type: 'crypto/ed25519_public_key',\n          value: this.pubKey.toString('hex'),\n        },\n        value: '0',\n      },\n    }\n  }\n\n  /**\n   * Converts an Msg Object for StdTx encoding\n   * @returns {any} - Msg type key value.\n   * @memberof MsgAppStake\n   */\n  public toStdTxMsgObj(): any {\n    const data : MsgProtoStake = {\n      pubKey: this.pubKey,\n      chains: [],\n      value: '0',\n    }\n\n    return Any.fromJSON({\n      typeUrl: this.KEY,\n      value: Buffer.from(MsgProtoStake.encode(data).finish()).toString(\n        'base64'\n      ),\n    })\n  }\n}\n","import { Buffer } from 'buffer'\nimport { MsgBeginUnstake } from './../proto/generated/tx-signer'\nimport { Any } from '../proto/generated/google/protobuf/any'\nimport { TxMsg } from './tx-msg'\n\n/**\n * Model representing a MsgAppStake to unstake an Application in the Pocket Network\n */\nexport class MsgProtoAppUnstake extends TxMsg {\n  public readonly KEY: string = '/x.apps.MsgBeginUnstake'\n  public readonly AMINO_KEY: string = 'apps/MsgAppBeginUnstake'\n  public readonly appAddress: string\n\n  /**\n   * The address hex of the Application to unstake for\n   * @param {string} appAddress - Application address\n   */\n  public constructor(appAddress: string) {\n    super()\n    this.appAddress = appAddress\n  }\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {object} - Msg type key value.\n   * @memberof MsgAppUnstake\n   */\n  public toStdSignDocMsgObj(): object {\n    return {\n      type: this.AMINO_KEY,\n      value: {\n        application_address: this.appAddress.toLowerCase(),\n      },\n    }\n  }\n\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {any} - Msg type key value.\n   * @memberof MsgAppUnstake\n   */\n  public toStdTxMsgObj(): any {\n    const data = { Address: Buffer.from(this.appAddress, 'hex') }\n\n    return Any.fromJSON({\n      typeUrl: this.KEY,\n      value: Buffer.from(MsgBeginUnstake.encode(data).finish()).toString(\n        'base64'\n      ),\n    })\n  }\n}\n","import { Buffer } from 'buffer'\nimport { MsgProtoNodeStake8 } from './../proto/generated/tx-signer'\nimport { Any } from '../proto/generated/google/protobuf/any'\nimport { TxMsg } from './tx-msg'\n\nconst MINIMUM_STAKE_AMOUNT = 15000000000\n\n/**\n * Model representing a MsgNodeStake to stake as an Node in the Pocket Network\n */\nexport class MsgProtoNodeStakeTx extends TxMsg {\n  public readonly KEY: string = '/x.nodes.MsgProtoStake8'\n  public readonly AMINO_KEY: string = 'pos/8.0MsgStake'\n  public readonly DEFAULT_PORT: string = '443'\n  public readonly DEFAULT_PROTOCOL: string = 'https:'\n  public readonly pubKey: Buffer\n  public readonly outputAddress: Buffer\n  public readonly chains: string[]\n  public readonly amount: string\n  public readonly serviceURL: URL\n  public readonly rewardDelegators: { [key: string]: number } | undefined\n\n  /**\n   * @param {string} pubKey - Public key\n   * @param {string[]} chains - String array containing a list of blockchain hashes\n   * @param {string} amount - Amount to be sent, has to be a valid number and cannot be lesser than 0\n   * @param {URL} serviceURL - Service node URL, needs to be https://\n   * @param {Object.<string, number>} rewardDelegators - Reward delegators\n   */\n  constructor(\n    pubKey: string,\n    outputAddress: string,\n    chains: string[],\n    amount: string,\n    serviceURL: URL,\n    rewardDelegators: { [key: string]: number } | undefined,\n  ) {\n    super()\n    this.pubKey = Buffer.from(pubKey, 'hex')\n    this.outputAddress = Buffer.from(outputAddress, 'hex')\n    this.chains = chains\n    this.amount = amount\n    this.serviceURL = serviceURL\n    this.rewardDelegators = rewardDelegators\n\n    if (!this.serviceURL.port) {\n      this.serviceURL.port = '443'\n    }\n\n    const amountNumber = Number(this.amount)\n\n    if (isNaN(amountNumber)) {\n      throw new Error('Amount is not a valid number')\n    } else if (amountNumber < MINIMUM_STAKE_AMOUNT) {\n      throw new Error(\n        `Amount below minimum stake amount (${MINIMUM_STAKE_AMOUNT})`\n      )\n    } else if (this.chains.length === 0) {\n      throw new Error('Chains is empty')\n    }\n  }\n\n  /**\n   * Returns the parsed serviceURL\n   * @returns {string} - Parsed serviceURL\n   * @memberof MsgNodeStake\n   */\n  private getParsedServiceURL(): string {\n    return `${\n      this.serviceURL.protocol\n        ? this.serviceURL.protocol\n        : this.DEFAULT_PROTOCOL\n    }//${this.serviceURL.hostname}:${\n      this.serviceURL.port ? this.serviceURL.port : this.DEFAULT_PORT\n    }`\n  }\n\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {object} - Msg type key value.\n   * @memberof MsgNodeStake\n   */\n  public toStdSignDocMsgObj(): object {\n    const msg = {\n      chains: this.chains,\n      output_address: this.outputAddress.toString('hex'),\n      public_key: {\n        type: 'crypto/ed25519_public_key',\n        value: this.pubKey.toString('hex'),\n      },\n      service_url: this.getParsedServiceURL(),\n      value: this.amount,\n    };\n    if (this.rewardDelegators) {\n      msg['reward_delegators'] = this.rewardDelegators;\n    }\n    return {\n      type: this.AMINO_KEY,\n      value: msg,\n    }\n  }\n\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {any} - Msg type key value.\n   * @memberof MsgNodeStake\n   */\n  public toStdTxMsgObj(): any {\n    const data = {\n      Publickey: this.pubKey,\n      Chains: this.chains,\n      value: this.amount,\n      ServiceUrl: this.getParsedServiceURL(),\n      OutAddress: this.outputAddress,\n      RewardDelegators: this.rewardDelegators || {},\n    }\n\n    return Any.fromJSON({\n      typeUrl: this.KEY,\n      value: Buffer.from(MsgProtoNodeStake8.encode(data).finish()).toString(\n        'base64'\n      ),\n    })\n  }\n}\n","import { Buffer } from 'buffer'\nimport { MsgNodeUnjail8 } from '../proto/generated/tx-signer'\nimport { Any } from '../proto/generated/google/protobuf/any'\nimport { TxMsg } from './tx-msg'\n\n/**\n * Model representing a MsgNodeUnjail to unjail as an Node in the Pocket Network\n */\nexport class MsgProtoNodeUnjail extends TxMsg {\n  public readonly KEY: string = '/x.nodes.MsgUnjail8'\n  public readonly AMINO_KEY: string = 'pos/8.0MsgUnjail'\n  public readonly nodeAddress: string\n  public readonly signerAddress: string\n\n  /**\n   * @param {string} nodeAddress - Node address to be unjailed\n   * @param {string} signerAddress - Signer address (who triggered the unjail)\n   */\n  public constructor(nodeAddress: string, signerAddress: string) {\n    super()\n    this.nodeAddress = nodeAddress\n    this.signerAddress = signerAddress\n  }\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {object} - Msg type key value.\n   * @memberof MsgNodeUnjail\n   */\n  public toStdSignDocMsgObj(): object {\n    return {\n      type: this.AMINO_KEY,\n      value: {\n        address: this.nodeAddress,\n        signer_address: this.signerAddress,\n      },\n    }\n  }\n\n  /**\n   * Converts an Msg Object to StdTx\n   * @returns {any} - Msg type key value.\n   * @memberof MsgNodeUnjail\n   */\n  public toStdTxMsgObj(): any {\n    const data = {\n      ValidatorAddr: Buffer.from(this.nodeAddress, 'hex'),\n      Signer: Buffer.from(this.signerAddress, 'hex'),\n    }\n\n    return Any.fromJSON({\n      typeUrl: this.KEY,\n      value: Buffer.from(MsgNodeUnjail8.encode(data).finish()).toString(\n        'base64'\n      ),\n    })\n  }\n}\n","import { Buffer } from 'buffer'\nimport { MsgBeginNodeUnstake8 } from './../proto/generated/tx-signer'\nimport { Any } from '../proto/generated/google/protobuf/any'\nimport { TxMsg } from './tx-msg'\n/**\n * Model representing a MsgNodeStake to unstake as an Node in the Pocket Network\n */\nexport class MsgProtoNodeUnstake extends TxMsg {\n  public readonly KEY: string = '/x.nodes.MsgBeginUnstake8'\n  public readonly AMINO_KEY: string = 'pos/8.0MsgBeginUnstake'\n  public readonly nodeAddress: string\n  public readonly signerAddress: string\n\n  /**\n   * @param {string} nodeAddress - Node address\n   */\n  public constructor(nodeAddress: string, signerAddress: string) {\n    super()\n    this.nodeAddress = nodeAddress\n    this.signerAddress = signerAddress\n  }\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {object} - Msg type key value.\n   * @memberof MsgNodeUnstake\n   */\n  public toStdSignDocMsgObj(): object {\n    return {\n      type: this.AMINO_KEY,\n      value: {\n        signer_address: this.signerAddress,\n        validator_address: this.nodeAddress,\n      },\n    }\n  }\n\n  /**\n   * Converts an Msg Object to StdTx\n   * @returns {any} - Msg type key value.\n   * @memberof MsgNodeUnstake\n   */\n  public toStdTxMsgObj(): any {\n    const data = {\n      Address: Buffer.from(this.nodeAddress, 'hex'),\n      Signer: Buffer.from(this.signerAddress, 'hex'),\n    }\n\n    return Any.fromJSON({\n      typeUrl: this.KEY,\n      value: Buffer.from(MsgBeginNodeUnstake8.encode(data).finish()).toString(\n        'base64'\n      ),\n    })\n  }\n}\n","import { Buffer } from 'buffer'\nimport { MsgSend } from './../proto/generated/tx-signer'\nimport { Any } from '../proto/generated/google/protobuf/any'\nimport { TxMsg } from './tx-msg'\n\n/**\n * Model representing a MsgSend to send POKT from one account to another\n */\nexport class MsgProtoSend extends TxMsg {\n  public readonly fromAddress: string\n  public readonly toAddress: string\n  public readonly amount: string\n  public readonly KEY: string = '/x.nodes.MsgSend'\n  public readonly AMINO_KEY: string = 'pos/Send'\n\n  /**\n   * Constructor this message\n   * @param {string} fromAddress - Origin address\n   * @param {string} toAddress - Destination address\n   * @param {string} amount - Amount to be sent, needs to be a valid number greater than 0\n   * @param {CoinDenom | undefined} amountDenom  - Amount value denomination\n   */\n  public constructor(fromAddress: string, toAddress: string, amount: string) {\n    super()\n    this.fromAddress = fromAddress\n    this.toAddress = toAddress\n    this.amount = amount\n\n    if (fromAddress === toAddress) {\n      throw new Error('fromAddress cannot be equal to toAddress')\n    }\n\n    const amountNumber = Number(this.amount)\n\n    if (isNaN(amountNumber)) {\n      throw new Error('Amount is not a valid number')\n    } else if (amountNumber < 0) {\n      throw new Error('Amount < 0')\n    }\n  }\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {object} - Msg type key value.\n   * @memberof MsgSend\n   */\n  public toStdSignDocMsgObj(): object {\n    return {\n      type: this.AMINO_KEY,\n      value: {\n        amount: this.amount,\n        from_address: this.fromAddress.toLowerCase(),\n        to_address: this.toAddress.toLowerCase(),\n      },\n    }\n  }\n\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {any} - Msg type key value.\n   * @memberof MsgSend\n   */\n  public toStdTxMsgObj(): any {\n    const data = {\n      FromAddress: Buffer.from(this.fromAddress, 'hex'),\n      ToAddress: Buffer.from(this.toAddress, 'hex'),\n      amount: this.amount,\n    }\n\n    const result = Any.fromJSON({\n      typeUrl: this.KEY,\n      value: Buffer.from(MsgSend.encode(data).finish()).toString('base64'),\n    })\n\n    return result\n  }\n}\n","import { TxSignature } from '../models/tx-signature'\nimport { CoinDenom, TxMsg } from '../models'\n\nexport abstract class BaseTxEncoder {\n  entropy: string\n  chainID: string\n  msg: TxMsg\n  fee: string\n  feeDenom?: CoinDenom\n  memo?: string = ''\n\n  // Concrete constructor\n  constructor(\n    entropy: string,\n    chainID: string,\n    msg: TxMsg,\n    fee: string,\n    feeDenom?: CoinDenom,\n    memo?: string\n  ) {\n    this.entropy = entropy\n    this.chainID = chainID\n    this.msg = msg\n    this.fee = fee\n    this.feeDenom = feeDenom\n    this.memo = memo ? memo : ''\n  }\n\n  // Abstract functions\n  abstract marshalStdSignDoc(): Buffer\n  abstract marshalStdTx(signature: TxSignature): Buffer\n}\n","import * as varint from 'varint'\nimport { Buffer } from 'buffer'\nimport { BaseTxEncoder } from './base-tx-encoder'\nimport { CoinDenom } from '../models/coin-denom'\nimport { TxSignature } from '../models/tx-signature'\nimport {\n  ProtoStdSignature,\n  ProtoStdTx,\n} from '../models/proto/generated/tx-signer'\nimport { stringifyObjectWithSort } from '@pokt-foundation/pocketjs-utils'\n\nexport class ProtoTxEncoder extends BaseTxEncoder {\n  public getFeeObj() {\n    return [\n      {\n        amount: this.fee,\n        denom:\n          this.feeDenom !== undefined\n            ? CoinDenom[this.feeDenom].toLowerCase()\n            : 'upokt',\n      },\n    ]\n  }\n\n  // Returns the bytes to be signed by the account sending the transaction\n  public marshalStdSignDoc(): Buffer {\n    const stdSignDoc = {\n      chain_id: this.chainID,\n      entropy: this.entropy,\n      fee: this.getFeeObj(),\n      memo: this.memo,\n      msg: this.msg.toStdSignDocMsgObj(),\n    }\n\n    // Use stringifyObject instead JSON.stringify to get a deterministic result.\n    return Buffer.from(stringifyObjectWithSort(stdSignDoc), 'utf-8')\n  }\n\n  // Returns the encoded transaction\n  public marshalStdTx(signature: TxSignature): Buffer {\n    const txSig: ProtoStdSignature = {\n      publicKey: signature.pubKey,\n      Signature: signature.signature,\n    }\n    const stdTx: ProtoStdTx = {\n      msg: this.msg.toStdTxMsgObj(),\n      fee: this.getFeeObj(),\n      signature: txSig,\n      memo: this.memo ? this.memo : '',\n      entropy: parseInt(this.entropy, 10),\n    }\n\n    // Create the Proto Std Tx bytes\n    const protoStdTxBytes: Buffer = Buffer.from(\n      ProtoStdTx.encode(stdTx).finish()\n    )\n\n    // Create the prefix\n    const prefixBytes = varint.encode(protoStdTxBytes.length)\n    const prefix = Buffer.from(prefixBytes)\n\n    // Concatenate for the result\n    return Buffer.concat([prefix, protoStdTxBytes])\n  }\n}\n","export const FEATURE_UPGRADE_ONLY_HEIGHT = 1\nexport const FEATURE_UPGRADE_KEY = 'FEATURE'\n\n// This is not really used, just filling in for an empty value since proto was not optional\nexport const OLD_UPGRADE_HEIGHT_EMPTY_VALUE = 0\n\nexport enum GovParameter {\n  APPLICATION_ApplicationStakeMinimum = 'application/ApplicationStakeMinimum',\n  APPLICATION_AppUnstakingTime = 'application/AppUnstakingTime',\n  APPLICATION_BaseRelaysPerPOKT = 'application/BaseRelaysPerPOKT',\n  APPLICATION_MaxApplications = 'application/MaxApplications',\n  APPLICATION_MaximumChains = 'application/MaximumChains',\n  APPLICATION_ParticipationRateOn = 'application/ParticipationRateOn',\n  APPLICATION_StabilityAdjustment = 'application/StabilityAdjustment',\n  AUTH_MaxMemoCharacters = 'auth/MaxMemoCharacters',\n  AUTH_TxSigLimit = 'auth/TxSigLimit',\n  GOV_Acl = 'gov/acl',\n  GOV_DaoOwner = 'gov/daoOwner',\n  GOV_Upgrade = 'gov/upgrade',\n  POCKETCORE_ClaimExpiration = 'pocketcore/ClaimExpiration',\n  AUTH_FeeMultipliers = 'auth/FeeMultipliers',\n  POCKETCORE_ReplayAttackBurnMultiplier = 'pocketcore/ReplayAttackBurnMultiplier',\n  POS_ProposerPercentage = 'pos/ProposerPercentage',\n  POCKETCORE_ClaimSubmissionWindow = 'pocketcore/ClaimSubmissionWindow',\n  POCKETCORE_MinimumNumberOfProofs = 'pocketcore/MinimumNumberOfProofs',\n  POCKETCORE_SessionNodeCount = 'pocketcore/SessionNodeCount',\n  POCKETCORE_SupportedBlockchains = 'pocketcore/SupportedBlockchains',\n  POS_BlocksPerSession = 'pos/BlocksPerSession',\n  POS_DAOAllocation = 'pos/DAOAllocation',\n  POS_DowntimeJailDuration = 'pos/DowntimeJailDuration',\n  POS_MaxEvidenceAge = 'pos/MaxEvidenceAge',\n  POS_MaximumChains = 'pos/MaximumChains',\n  POS_MaxJailedBlocks = 'pos/MaxJailedBlocks',\n  POS_MaxValidators = 'pos/MaxValidators',\n  POS_MinSignedPerWindow = 'pos/MinSignedPerWindow',\n  POS_RelaysToTokensMultiplier = 'pos/RelaysToTokensMultiplier',\n  POS_SignedBlocksWindow = 'pos/SignedBlocksWindow',\n  POS_SlashFractionDoubleSign = 'pos/SlashFractionDoubleSign',\n  POS_SlashFractionDowntime = 'pos/SlashFractionDowntime',\n  POS_StakeDenom = 'pos/StakeDenom',\n  POS_StakeMinimum = 'pos/StakeMinimum',\n  POS_UnstakingTime = 'pos/UnstakingTime',\n  POS_ServicerStakeWeightMultiplier = 'pos/ServicerStakeWeightMultiplier',\n}\n\nexport enum DAOAction {\n  Transfer = 'dao_transfer',\n  Burn = 'dao_burn',\n}\n","import { ProtoTxEncoder } from './proto-tx-encoder'\nimport { BaseTxEncoder } from './base-tx-encoder'\nimport { TxMsg } from '../models/msgs'\nimport { CoinDenom } from '../models/coin-denom'\n\nexport class TxEncoderFactory {\n  public static createEncoder(\n    entropy: string,\n    chainID: string,\n    msg: TxMsg,\n    fee: string,\n    feeDenom?: CoinDenom,\n    memo?: string\n  ): BaseTxEncoder {\n    return new ProtoTxEncoder(entropy, chainID, msg, fee, feeDenom, memo)\n  }\n}\n","import * as belt from '@tendermint/belt'\nimport { PosmintStdSignature } from '@pokt-network/amino-js/types/src/types/pocket'\n\nconst bytesToBase64 = belt.bytesToBase64\n/**\n * Represents a given signature for a Transaction\n */\nexport class TxSignature {\n  public readonly pubKey: Buffer\n  public readonly signature: Buffer\n  private readonly PUBLIC_KEY_TYPE: string = 'crypto/ed25519_public_key'\n\n  /**\n   * @param pubKey {Buffer} public key of the signer\n   * @param signature {Buffer} the signature\n   */\n  public constructor(pubKey: Buffer, signature: Buffer) {\n    this.pubKey = pubKey\n    this.signature = signature\n  }\n\n  /**\n   * Encodes the object to it's Amino encodable form\n   */\n  public toPosmintStdSignature(): PosmintStdSignature {\n    return {\n      pub_key: {\n        type: this.PUBLIC_KEY_TYPE,\n        value: bytesToBase64(this.pubKey).toString(),\n      },\n      signature: bytesToBase64(this.signature).toString(),\n    }\n  }\n}\n","export class InvalidChainIDError extends Error {\n  constructor(message: string, ...params: any[]) {\n    super(...params)\n    this.message = message\n    this.name = 'InvalidChainIDError'\n  }\n}\n\nexport class NoProviderError extends Error {\n  constructor(message: string, ...params: any[]) {\n    super(...params)\n    this.message = message\n    this.name = 'NoProviderError'\n  }\n}\n\nexport class NoSignerError extends Error {\n  constructor(message: string, ...params: any[]) {\n    super(...params)\n    this.message = message\n    this.name = 'NoSignerError'\n  }\n}\n","import { Buffer } from 'buffer'\nimport { MsgDAOTransfer } from './../proto/generated/tx-signer'\nimport { Any } from '../proto/generated/google/protobuf/any'\nimport { TxMsg } from './tx-msg'\nimport { DAOAction } from '../gov'\n\n/**\n * Model representing a MsgGovDAOTransfer to send POKT from the DAO Module Account to another account\n */\nexport class MsgProtoGovDAOTransfer extends TxMsg {\n  public readonly fromAddress: string\n  public readonly toAddress: string\n  public readonly amount: string\n  public readonly KEY: string = '/x.gov.MsgDAOTransfer'\n  public readonly AMINO_KEY: string = 'gov/msg_dao_transfer'\n  public readonly action: DAOAction\n\n  /**\n   * Constructor this message\n   * @param {string} fromAddress - DAOOwner Address\n   * @param {string} toAddress - Destination address\n   * @param {string} amount - Amount to be sent, needs to be a valid number greater than 0\n   * @param {CoinDenom | undefined} amountDenom  - Amount value denomination\n   * @param {DAOAction} action  - dao action to perform for transfers\n   */\n  public constructor(\n    fromAddress: string,\n    toAddress: string,\n    amount: string,\n    action: DAOAction\n  ) {\n    super()\n    this.fromAddress = fromAddress\n    this.toAddress = toAddress || ''\n    this.amount = amount\n    this.action = action\n\n    if (fromAddress.length == 0) {\n      throw new Error('fromAddress cannot be empty')\n    }\n\n    if (fromAddress === toAddress) {\n      throw new Error('fromAddress cannot be equal to toAddress')\n    }\n\n    const amountNumber = Number(this.amount)\n\n    if (isNaN(amountNumber)) {\n      throw new Error('Amount is not a valid number')\n    } else if (amountNumber < 0) {\n      throw new Error('Amount < 0')\n    }\n\n    // Whitelisting valid actions just in case someone ignores types.\n    if (!Object.values(DAOAction).includes(action)) {\n      throw new Error('Invalid DAOAction: ' + action)\n    }\n\n    if (action == DAOAction.Transfer && toAddress.length == 0) {\n      throw new Error('toAddress cannot be empty if action is transfer')\n    }\n  }\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {object} - Msg type key value.\n   * @memberof MsgSend\n   */\n  public toStdSignDocMsgObj(): object {\n    return {\n      type: this.AMINO_KEY,\n      value: {\n        action: this.action.toString(),\n        amount: this.amount,\n        from_address: this.fromAddress.toLowerCase(),\n        to_address: this.toAddress.toLowerCase(),\n      },\n    }\n  }\n\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {any} - Msg type key value.\n   * @memberof MsgSend\n   */\n  public toStdTxMsgObj(): any {\n    const data = {\n      fromAddress: Buffer.from(this.fromAddress.toLowerCase(), 'hex'),\n      toAddress: Buffer.from(this.toAddress.toLowerCase(), 'hex'),\n      amount: this.amount,\n      action: this.action.toString(),\n    }\n\n    const result = Any.fromJSON({\n      typeUrl: this.KEY,\n      value: Buffer.from(MsgDAOTransfer.encode(data).finish()).toString(\n        'base64'\n      ),\n    })\n\n    return result\n  }\n}\n","import { Buffer } from 'buffer'\nimport { MsgChangeParam } from './../proto/generated/tx-signer'\nimport { Any } from '../proto/generated/google/protobuf/any'\nimport { TxMsg } from './tx-msg'\nimport { GovParameter } from '../gov'\n\n/**\n * Model representing a MsgGovChangeParam to change an existing governance parameter\n */\nexport class MsgProtoGovChangeParam extends TxMsg {\n  public readonly fromAddress: string\n  public readonly paramKey: string\n  public readonly paramValue: string\n  public readonly KEY: string = '/x.gov.MsgChangeParam'\n  public readonly AMINO_KEY: string = 'gov/msg_change_param'\n\n  /**\n   * Constructor this message\n   * @param {string} fromAddress - Origin address\n   * @param {string} paramKey - the acl key for governance parameter\n   * @param {string} paramValue - the plain text (ASCII) value the governance parameter will represent\n   * @param {string} overrideGovParamsWhitelistValidation - In the event that the PocketJS does not support the specified paramKey, this parameter can be set to true to override the validation check.\n   */\n  public constructor(\n    fromAddress: string,\n    paramKey: GovParameter | string,\n    paramValue: string,\n    overrideGovParamsWhitelistValidation?: boolean\n  ) {\n    super()\n    this.fromAddress = fromAddress\n    this.paramKey = paramKey\n    this.paramValue = paramValue\n\n    if (paramKey.length == 0) {\n      throw new Error('paramKey cannot be empty')\n    }\n\n    if (paramValue.length == 0) {\n      throw new Error('paramValue cannot be empty')\n    }\n\n    if (\n      !overrideGovParamsWhitelistValidation &&\n      !Object.values(GovParameter).includes(paramKey as GovParameter)\n    ) {\n      throw new Error(\n        `${paramKey} is not a valid gov parameter, if this is an error, you can set overrideGovParamsWhitelistValidation to true to bypass the validation`\n      )\n    }\n  }\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {object} - Msg type key value.\n   * @memberof MsgSend\n   */\n  public toStdSignDocMsgObj(): object {\n    return {\n      type: this.AMINO_KEY,\n      value: {\n        address: this.fromAddress.toLowerCase(),\n        param_key: this.paramKey,\n        param_value: Buffer.from(JSON.stringify(this.paramValue)).toString(\n          'base64'\n        ),\n      },\n    }\n  }\n\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {any} - Msg type key value.\n   * @memberof MsgSend\n   */\n  public toStdTxMsgObj(): any {\n    const data = {\n      FromAddress: Buffer.from(this.fromAddress.toLowerCase(), 'hex'),\n      paramKey: this.paramKey,\n      paramVal: Buffer.from(\n        Buffer.from(JSON.stringify(this.paramValue)).toString('base64'),\n        'base64'\n      ),\n    }\n\n    const result = Any.fromJSON({\n      typeUrl: this.KEY,\n      value: Buffer.from(MsgChangeParam.encode(data).finish()).toString(\n        'base64'\n      ),\n    })\n\n    return result\n  }\n}\n","import { Buffer } from 'buffer'\nimport { MsgUpgrade, Upgrade } from './../proto/generated/tx-signer'\nimport { Any } from '../proto/generated/google/protobuf/any'\nimport { TxMsg } from './tx-msg'\n\n/**\n * Model representing a MsgGovUpgrade to indicate an upgrade height for protocol updates, i.e consensus breaking changes\n */\nexport class MsgProtoGovUpgrade extends TxMsg {\n  public readonly fromAddress: string\n  public readonly upgrade: Upgrade\n\n  public readonly KEY: string = '/x.gov.MsgUpgrade'\n  public readonly AMINO_KEY: string = 'gov/msg_upgrade'\n\n  /**\n   * Constructor this message\n   * @param {string} fromAddress - Origin address\n   * @param {string} upgrade - the upgrade details such as upgrade height and features being activated\n   */\n  public constructor(fromAddress: string, upgrade: Upgrade) {\n    super()\n    this.fromAddress = fromAddress\n    this.upgrade = upgrade\n\n    if (fromAddress.length == 0) {\n      throw new Error('fromAddress cannot be empty')\n    }\n\n    if (upgrade.height == 0) {\n      throw new Error('upgrade height cannot be zero')\n    }\n\n    if (upgrade.version.length == 0) {\n      throw new Error(\n        'version cannot be empty, it should be a semantic version or FEATURE'\n      )\n    }\n\n    // Validate that features are provided\n    if (upgrade.version == 'FEATURE') {\n      if (upgrade.height != 1) {\n        throw new Error('Features cannot be added unless height is 1')\n      }\n\n      const zeroFeatures = upgrade.features.length == 0\n      if (zeroFeatures) {\n        throw new Error(\n          'Zero features was provided to upgrade, despite being a feature upgrade.'\n        )\n      }\n\n      upgrade.features.forEach((f) => {\n        const featureKeyHeightTuple = f.split(':')\n\n        if (featureKeyHeightTuple.length != 2) {\n          throw new Error(\n            `${f} is malformed for feature upgrade, format should be: KEY:HEIGHT`\n          )\n        }\n\n        const featureHeight = featureKeyHeightTuple[1]\n        if (isNaN(parseInt(featureHeight))) {\n          throw new Error(\n            `${featureHeight} is malformed for feature upgrade, feature height should be an integer.`\n          )\n        }\n      })\n    } else {\n      // Version upgrade but features were added\n      if (upgrade.features.length > 0) {\n        throw new Error('Features cannot be added unless version is FEATURE')\n      }\n    }\n  }\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {object} - Msg type key value.\n   * @memberof MsgSend\n   */\n  public toStdSignDocMsgObj(): object {\n    // Upgrades are conditional\n    let upgradeMsg: {\n      Features?: string[]\n      Height: string\n      Version: string\n    } = {\n      ...(this.upgrade.features.length > 0 && {\n        Features: this.upgrade.features,\n      }),\n      Height: `${this.upgrade.height}`,\n      Version: this.upgrade.version,\n    }\n\n    return {\n      type: this.AMINO_KEY,\n      value: {\n        address: this.fromAddress.toLowerCase(),\n        upgrade: upgradeMsg,\n      },\n    }\n  }\n\n  /**\n   * Converts an Msg Object to StdSignDoc\n   * @returns {any} - Msg type key value.\n   * @memberof MsgSend\n   */\n  public toStdTxMsgObj(): any {\n    const data = {\n      address: Buffer.from(this.fromAddress.toLowerCase(), 'hex'),\n      upgrade: this.upgrade,\n    }\n\n    const result = Any.fromJSON({\n      typeUrl: this.KEY,\n      value: Buffer.from(MsgUpgrade.encode(data).finish()).toString('base64'),\n    })\n\n    return result\n  }\n}\n","import { Buffer } from 'buffer'\nimport {\n  MsgProtoAppStake,\n  MsgProtoAppTransfer,\n  MsgProtoAppUnstake,\n  MsgProtoNodeStakeTx,\n  MsgProtoNodeUnjail,\n  MsgProtoNodeUnstake,\n  MsgProtoSend,\n} from './models/msgs'\nimport { AbstractProvider } from '@pokt-foundation/pocketjs-abstract-provider'\nimport { AbstractSigner } from '@pokt-foundation/pocketjs-signer'\nimport {\n  RawTxRequest,\n  TransactionResponse,\n} from '@pokt-foundation/pocketjs-types'\nimport { TxEncoderFactory } from './factory/tx-encoder-factory'\nimport {\n  CoinDenom,\n  DAOAction,\n  FEATURE_UPGRADE_KEY,\n  FEATURE_UPGRADE_ONLY_HEIGHT,\n  GovParameter,\n  OLD_UPGRADE_HEIGHT_EMPTY_VALUE,\n  TxMsg,\n  TxSignature,\n} from './models/'\nimport { InvalidChainIDError, NoProviderError, NoSignerError } from './errors'\nimport { AbstractBuilder } from './abstract-tx-builder'\nimport { MsgProtoGovDAOTransfer } from './models/msgs/msg-proto-gov-dao-transfer'\nimport { MsgProtoGovChangeParam } from './models/msgs/msg-proto-gov-change-param'\nimport { MsgProtoGovUpgrade } from './models/msgs/msg-proto-gov-upgrade'\n\nexport type ChainID = 'mainnet' | 'testnet' | 'localnet'\n\n// Default Pocket Base fee.\n// Using anything above 10k uPOKT means overpaying--there is no reason to do so,\n// as the chain is merely focused on utility. No profit is gained by ordering txs\n// in a block in a certain way.\nexport const DEFAULT_BASE_FEE = '10000'\n\n/**\n * A Transaction builder lets you create transaction messages, sign them, and send them over the network.\n * Requires a properly initialized Provider and Signer to work.\n */\nexport class TransactionBuilder implements AbstractBuilder {\n  private provider: AbstractProvider\n  private signer: AbstractSigner\n  private chainID: ChainID\n\n  constructor({\n    provider,\n    signer,\n    chainID = 'mainnet',\n  }: {\n    provider: AbstractProvider\n    signer: AbstractSigner\n    chainID: ChainID\n  }) {\n    if (!provider) {\n      throw new NoProviderError('Please add a provider.')\n    }\n    if (!signer) {\n      throw new NoSignerError('Please add a signer.')\n    }\n\n    this.provider = provider\n    this.signer = signer\n    this.chainID = chainID\n  }\n\n  /**\n   * Gets the current chain ID this Transaction Builder has been initialized for.\n   * @returns {ChainID} - 'mainnet', 'localnet', or 'testnet'.\n   */\n  public getChainID(): ChainID {\n    return this.chainID\n  }\n\n  /**\n   * Sets the chainID to one of the supported networks.\n   */\n  public setChainID(id: ChainID): void {\n    if (id === 'mainnet' || id === 'testnet' || id === 'localnet') {\n      this.chainID = id\n    } else {\n      throw new InvalidChainIDError(\n        `Invalid ChainID. Must be \"mainnet\", \"testnet\", or \"localnet\".`\n      )\n    }\n  }\n  /**\n   * Signs and creates a transaction object that can be submitted to the network given the parameters and called upon Msgs.\n   * Will empty the msg list after succesful creation\n   * @param {string} fee - The amount to pay as a fee for executing this transaction, in uPOKT (1 POKT = 1*10^6 uPOKT).\n   * @param {string} memo - The memo field for this account\n   * @returns {Promise<RawTxRequest>} - A Raw transaction Request which can be sent over the network.\n   */\n  public async createTransaction({\n    fee = DEFAULT_BASE_FEE,\n    memo = '',\n    txMsg,\n  }: {\n    fee?: string | bigint\n    memo?: string\n    txMsg: TxMsg\n  }): Promise<RawTxRequest> {\n    // Let's make sure txMsg is defined.\n    if (!txMsg) {\n      throw new Error('txMsg should be defined.')\n    }\n\n    const entropy = Number(\n      BigInt(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER)).toString()\n    ).toString()\n\n    const signer = TxEncoderFactory.createEncoder(\n      entropy,\n      this.chainID,\n      txMsg,\n      fee.toString(),\n      CoinDenom.Upokt,\n      memo\n    )\n\n    const bytesToSign = signer.marshalStdSignDoc()\n\n    const txBytes = await this.signer.sign(bytesToSign.toString('hex'))\n\n    const marshalledTx = new TxSignature(\n      Buffer.from(this.signer.getPublicKey(), 'hex'),\n      Buffer.from(txBytes, 'hex')\n    )\n\n    const rawHexBytes = signer.marshalStdTx(marshalledTx).toString('hex')\n\n    return new RawTxRequest(this.signer.getAddress(), rawHexBytes)\n  }\n\n  /**\n   * Submit receives a valid transaction message, creates a Raw Transaction Request and sends it over the network.\n   * @param {string} fee - The amount to pay as a fee for executing this transaction, in uPOKT (1 POKT = 1*10^6 uPOKT).\n   * @param {string} memo - The memo field for this account\n   * @param {TxMsg} txMsg - The transaction message to use for creating the RawTxRequest that will be sent over the network.\n   * @returns {Promise<TransactionResponse>} - The Transaction Response from the network, containing the transaction hash.\n   */\n  public async submit({\n    fee = DEFAULT_BASE_FEE,\n    memo = '',\n    txMsg,\n  }: {\n    fee?: string | bigint\n    memo?: string\n    txMsg: TxMsg\n  }): Promise<TransactionResponse> {\n    const tx = await this.createTransaction({ fee, memo, txMsg })\n\n    return await this.provider.sendTransaction(tx)\n  }\n\n  /**\n   * Submit receives an already made Raw Transaction Request and sends it over the network.\n   * @param {RawTxRequest} tx - The Raw Transaction Request use for creating the RawTxRequest that will be sent over the network.\n   * @returns {Promise<TransactionResponse>} - The Transaction Response from the network, containing the transaction hash.\n   */\n  public async submitRawTransaction(\n    tx: RawTxRequest\n  ): Promise<TransactionResponse> {\n    return await this.provider.sendTransaction(tx)\n  }\n\n  /**\n   * Adds a MsgSend TxMsg for this transaction\n   * @param {string} fromAddress - Origin address\n   * @param {string} toAddress - Destination address\n   * @param {string} amount - Amount to be sent, needs to be a valid number greater than 1 uPOKT.\n   * @returns {MsgProtoSend} - The unsigned Send message.\n   */\n  public send({\n    fromAddress = this.signer.getAddress(),\n    toAddress,\n    amount,\n  }: {\n    fromAddress?: string\n    toAddress: string\n    amount: string\n  }): MsgProtoSend {\n    return new MsgProtoSend(fromAddress, toAddress, amount)\n  }\n\n  /**\n   * Adds a MsgAppStake TxMsg for this transaction\n   * @param {string} appPubKey - Application Public Key\n   * @param {string[]} chains - Network identifier list to be requested by this app\n   * @param {string} amount - the amount to stake, must be greater than or equal to 1 POKT\n   * @returns {MsgProtoAppStake} - The unsigned App Stake message.\n   */\n  public appStake({\n    appPubKey,\n    chains,\n    amount,\n  }: {\n    appPubKey: string\n    chains: string[]\n    amount: string\n  }): MsgProtoAppStake {\n    return new MsgProtoAppStake(appPubKey, chains, amount)\n  }\n\n  /**\n   * Builds a transaction message to transfer the slot of a staked app.\n   * Signer must be an existing staked app to transfer the slot from.\n   * @param {string} appPubKey - Application public key to be transferred to\n   * @returns {MsgProtoAppTransfer} - The unsigned AppTransfer message\n   */\n  public appTransfer({\n    appPubKey,\n  }: {\n    appPubKey: string\n  }): MsgProtoAppTransfer {\n    return new MsgProtoAppTransfer(appPubKey)\n  }\n\n  /**\n   * Adds a MsgBeginAppUnstake TxMsg for this transaction\n   * @param {string} address - Address of the Application to unstake for\n   * @returns {MsgProtoAppUnstake} - The unsigned App Unstake message.\n   */\n  public appUnstake(address: string): MsgProtoAppUnstake {\n    return new MsgProtoAppUnstake(address)\n  }\n\n  /**\n   * Adds a NodeStake TxMsg for this transaction\n   * @param {Object} params\n   * @param {string} params.nodePubKey - Node Public key\n   * @param {string} params.outputAddress - The address that the coins will be sent to when the node is unstaked\n   * @param {string[]} params.chains - Network identifier list to be serviced by this node\n   * @param {string} params.amount - the amount to stake, must be greater than or equal to 1 POKT\n   * @param {URL} params.serviceURL - Node service url\n   * @param {Object.<string, number>} params.rewardDelegators - Reward delegators.\n   *    If undefined or another falsey value is specified, the msg removes the\n   *    current delegators.\n   * @returns {MsgProtoNodeStakeTx} - The unsigned Node Stake message.\n   */\n  public nodeStake({\n    nodePubKey = this.signer.getPublicKey(),\n    outputAddress = this.signer.getAddress(),\n    chains,\n    amount,\n    serviceURL,\n    rewardDelegators,\n  }: {\n    nodePubKey?: string\n    outputAddress?: string\n    chains: string[]\n    amount: string\n    serviceURL: URL\n    rewardDelegators?: { [key: string]: number }\n  }): MsgProtoNodeStakeTx {\n    return new MsgProtoNodeStakeTx(\n      nodePubKey,\n      outputAddress,\n      chains,\n      amount,\n      serviceURL,\n      rewardDelegators,\n    )\n  }\n\n  /**\n   * Adds a MsgBeginUnstake TxMsg for this transaction\n   * @param {string} nodeAddress - Address of the Node to unstake for\n   * @param {string} signerAddress - The address that the coins will be sent to when the node is unstaked. Must be the same address entered when the node was staked\n   * @returns {MsgProtoNodeUnstake} - The unsigned Node Unstake message.\n   */\n  public nodeUnstake({\n    nodeAddress = this.signer.getAddress(),\n    signerAddress = this.signer.getAddress(),\n  }: {\n    nodeAddress?: string\n    signerAddress?: string\n  }): MsgProtoNodeUnstake {\n    return new MsgProtoNodeUnstake(nodeAddress, signerAddress)\n  }\n\n  /**\n   * Adds a MsgUnjail TxMsg for this transaction\n   * @param {string} nodeAddress - Address of the Node to unjail\n   * @param {string} signerAddress - The address of where the coins will be sent to when the node is unstaked (if it is ever). Necessary to unjail the node\n   * @returns {MsgProtoNodeUnjail} - The unsigned Node Unjail message.\n   */\n  public nodeUnjail({\n    nodeAddress = this.signer.getAddress(),\n    signerAddress = this.signer.getAddress(),\n  }: {\n    nodeAddress?: string\n    signerAddress?: string\n  }): MsgProtoNodeUnjail {\n    return new MsgProtoNodeUnjail(nodeAddress, signerAddress)\n  }\n\n  /**\n   * Adds a MsgDAOTransfer TxMsg for this transaction\n   * @param {string} fromAddress - Address of the sender of the dao transfer\n   * @param {string} toAddress - The receiver of the dao transfer\n   * @param {string} - Amount to be used, needs to be a valid number greater than 1 uPOKT.\n   * @param {DAOAction} - the action to perform using the specified amount (i.e burn or transfer)\n   */\n  public govDAOTransfer({\n    fromAddress = this.signer.getAddress(),\n    toAddress = '',\n    amount,\n    action,\n  }: {\n    fromAddress?: string\n    toAddress?: string\n    amount: string\n    action: DAOAction\n  }): MsgProtoGovDAOTransfer {\n    return new MsgProtoGovDAOTransfer(fromAddress, toAddress, amount, action)\n  }\n\n  /**\n   * Adds a MsgChangeParam TxMsg for this transaction\n   * @param {string} fromAddress - Address of the signer, must be on the ACL\n   * @param {string} paramKey - the governance parameter key\n   * @param {string} paramValue - the governance parameter's new value in human-readable format (utf8).\n   */\n  public govChangeParam({\n    fromAddress = this.signer.getAddress(),\n    paramKey,\n    paramValue,\n    overrideGovParamsWhitelistValidation,\n  }: {\n    fromAddress?: string\n    paramKey: GovParameter | string\n    paramValue: string\n    overrideGovParamsWhitelistValidation?: boolean\n  }): MsgProtoGovChangeParam {\n    return new MsgProtoGovChangeParam(\n      fromAddress,\n      paramKey,\n      paramValue,\n      overrideGovParamsWhitelistValidation\n    )\n  }\n\n  public govUpgrade({\n    fromAddress = this.signer.getAddress(),\n    upgrade,\n  }: {\n    fromAddress?: string\n    upgrade: {\n      height: number\n      features: string[]\n      version: string\n    }\n  }): MsgProtoGovUpgrade {\n    return new MsgProtoGovUpgrade(fromAddress, {\n      height: upgrade.height,\n      features: upgrade.features,\n      version: upgrade.version,\n      oldUpgradeHeight: OLD_UPGRADE_HEIGHT_EMPTY_VALUE,\n    })\n  }\n\n  /**\n   * Adds a MsgUpgrade TxMsg for this transaction\n   * @param {string} fromAddress - Address of the signer\n   * @param {Upgrade} upgrade - the upgrade object such as the new upgrade height and new values.\n   */\n  public govUpgradeVersion({\n    fromAddress = this.signer.getAddress(),\n    upgrade,\n  }: {\n    fromAddress?: string\n    upgrade: {\n      height: number\n      version: string\n    }\n  }): MsgProtoGovUpgrade {\n    return this.govUpgrade({\n      fromAddress,\n      upgrade: {\n        features: [],\n        height: upgrade.height,\n        version: upgrade.version,\n      },\n    })\n  }\n\n  public govUpgradeFeatures({\n    fromAddress = this.signer.getAddress(),\n    upgrade,\n  }: {\n    fromAddress?: string\n    upgrade: {\n      features: string[]\n    }\n  }): MsgProtoGovUpgrade {\n    return this.govUpgrade({\n      fromAddress,\n      upgrade: {\n        features: upgrade.features,\n        height: FEATURE_UPGRADE_ONLY_HEIGHT,\n        version: FEATURE_UPGRADE_KEY,\n      },\n    })\n  }\n}\n","/* eslint-disable no-case-declarations */\nimport { Buffer } from 'buffer'\nimport { MsgSend, ProtoStdTx } from '../models/proto/generated/tx-signer'\n\nexport class ProtoTxDecoder {\n  // Returns partially decoded transaction\n  public unmarshalStdTx(\n    encodedTxBytes: Buffer,\n    length: number = encodedTxBytes.length\n  ): ProtoStdTx {\n    return ProtoStdTx.decode(encodedTxBytes.subarray(2), length - 2)\n  }\n\n  // Returns decoded transaction message data\n  public decodeStdTxData(protoStdTx: ProtoStdTx) {\n    switch (protoStdTx.msg?.typeUrl) {\n      case '/x.nodes.MsgSend':\n        const msgSendData = MsgSend.decode(protoStdTx.msg.value)\n\n        const decodedStdTxData = {\n          memo: protoStdTx.memo,\n          entropy: protoStdTx.entropy,\n          fee: protoStdTx.fee,\n          msg: {\n            typeUrl: protoStdTx.msg.typeUrl,\n            value: {\n              amount: msgSendData.amount,\n              FromAddress: Buffer.from(msgSendData.FromAddress).toString('hex'),\n              ToAddress: Buffer.from(msgSendData.ToAddress).toString('hex'),\n            },\n          },\n          signature: protoStdTx.signature\n            ? {\n                publicKey: Buffer.from(protoStdTx.signature.publicKey).toString(\n                  'hex'\n                ),\n                Signature: Buffer.from(protoStdTx.signature.Signature).toString(\n                  'hex'\n                ),\n              }\n            : protoStdTx.signature,\n        }\n\n        return decodedStdTxData\n      default:\n        throw Error('Decoding for transaction type not supported yet.')\n    }\n  }\n}\n","import { Buffer } from 'buffer'\n/**\n * Model representing a ECDSA signature result\n */\nexport class TransactionSignature {\n  public readonly publicKey: Buffer\n  public readonly signature: Buffer\n\n  constructor(publicKey: Buffer, signature: Buffer) {\n    this.publicKey = publicKey\n    this.signature = signature\n  }\n}\n"],"names":["createBaseAny","typeUrl","value","Uint8Array","Any","encode","message","writer","_m0","Writer","create","uint32","string","length","bytes","decode","input","reader","Reader","end","undefined","len","pos","tag","skipType","fromJSON","object","isSet","globalThis","String","bytesFromBase64","toJSON","obj","arr","Buffer","from","toString","bin","forEach","byte","push","fromCharCode","btoa","join","base64FromBytes","base","fromPartial","b64","atob","i","charCodeAt","ProtoStdTx","msg","fork","ldelim","fee","Coin","signature","ProtoStdSignature","memo","entropy","int64","longToNumber","Array","isArray","map","e","Number","_message$fee","Math","round","createBaseProtoStdSignature","publicKey","Signature","denom","amount","createBaseMsgProtoStake","pubKey","chains","MsgProtoStake","v","_message$chains","createBaseMsgBeginUnstake","Address","MsgBeginUnstake","createBaseMsgProtoNodeStake8","Publickey","Chains","ServiceUrl","OutAddress","RewardDelegators","MsgProtoNodeStake8","Object","entries","MsgProtoNodeStake8_RewardDelegatorsEntry","key","entry6","reduce","acc","_message$Chains","createBaseMsgBeginNodeUnstake8","Signer","MsgBeginNodeUnstake8","createBaseMsgNodeUnjail8","ValidatorAddr","MsgNodeUnjail8","createBaseMsgSend","FromAddress","ToAddress","MsgSend","createBaseMsgDAOTransfer","fromAddress","toAddress","action","MsgDAOTransfer","Upgrade","height","version","oldUpgradeHeight","features","_message$features","createBaseMsgUpgrade","address","upgrade","MsgUpgrade","createBaseMsgChangeParam","paramKey","paramVal","MsgChangeParam","long","gt","MAX_SAFE_INTEGER","Error","toNumber","util","Long","configure","TxMsg","CoinDenom","MsgProtoAppStake","_this","KEY","AMINO_KEY","amountNumber","isNaN","getMsgTypeKey","toStdSignDocMsgObj","type","this","pubkey","toStdTxMsgObj","finish","MsgProtoAppTransfer","MsgProtoAppUnstake","appAddress","application_address","toLowerCase","data","MsgProtoNodeStakeTx","outputAddress","serviceURL","rewardDelegators","DEFAULT_PORT","DEFAULT_PROTOCOL","port","getParsedServiceURL","protocol","hostname","output_address","public_key","service_url","MsgProtoNodeUnjail","nodeAddress","signerAddress","signer_address","MsgProtoNodeUnstake","validator_address","MsgProtoSend","from_address","to_address","BaseTxEncoder","chainID","feeDenom","ProtoTxEncoder","GovParameter","DAOAction","getFeeObj","marshalStdSignDoc","stdSignDoc","chain_id","stringifyObjectWithSort","marshalStdTx","txSig","stdTx","parseInt","protoStdTxBytes","prefixBytes","varint","prefix","concat","TxEncoderFactory","createEncoder","bytesToBase64","belt","TxSignature","PUBLIC_KEY_TYPE","toPosmintStdSignature","pub_key","InvalidChainIDError","name","NoProviderError","_this2","NoSignerError","_this3","MsgProtoGovDAOTransfer","values","includes","Transfer","MsgProtoGovChangeParam","paramValue","overrideGovParamsWhitelistValidation","param_key","param_value","JSON","stringify","MsgProtoGovUpgrade","f","featureKeyHeightTuple","split","featureHeight","upgradeMsg","Features","Height","Version","TransactionBuilder","provider","signer","getChainID","setChainID","id","createTransaction","txMsg","BigInt","floor","random","Upokt","bytesToSign","sign","txBytes","marshalledTx","getPublicKey","rawHexBytes","RawTxRequest","getAddress","submit","_this4","tx","sendTransaction","submitRawTransaction","send","appStake","appPubKey","appTransfer","appUnstake","nodeStake","nodePubKey","nodeUnstake","nodeUnjail","govDAOTransfer","govChangeParam","govUpgrade","govUpgradeVersion","govUpgradeFeatures","ProtoTxDecoder","unmarshalStdTx","encodedTxBytes","subarray","decodeStdTxData","protoStdTx","_protoStdTx$msg","msgSendData"],"mappings":"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"}