diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..27133f3 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,17 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true +max_line_length = 240 + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/package.json b/package.json index 65c65b2..4ae1d36 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "@babel/preset-typescript": "^7.8.3", "@types/jest": "^26.0.20", "@types/ledgerhq__hw-transport-node-hid": "^4.22.2", + "axios": "^0.21.1", "cross-env": "^7.0.3", "eslint": "^7.19.0", "gts": "^3.1.0", @@ -74,7 +75,7 @@ "prettier": "^2.2.1", "rimraf": "^3.0.2", "ts-jest": "^26.5.0", - "ts-proto": "^1.67.0", + "ts-proto": "^1.79.7", "typedoc": "^0.20.25", "typedoc-plugin-markdown": "^3.5.0", "typescript": "^4.1.3" diff --git a/scripts/define-proto.sh b/scripts/define-proto.sh index e27052a..b8bfe35 100644 --- a/scripts/define-proto.sh +++ b/scripts/define-proto.sh @@ -5,6 +5,10 @@ command -v shellcheck >/dev/null && shellcheck "$0" ROOT_PROTO_DIR="./proto/cosmos/cosmos-sdk" COSMOS_PROTO_DIR="$ROOT_PROTO_DIR/proto" THIRD_PARTY_PROTO_DIR="$ROOT_PROTO_DIR/third_party/proto" + +ROOT_LUM_PROTO_DIR="./proto/lum-network/chain" +LUM_PROTO_DIR="$ROOT_LUM_PROTO_DIR/proto" + OUT_DIR="./src/codec/" mkdir -p "$OUT_DIR" @@ -14,6 +18,7 @@ protoc \ --ts_proto_out="$OUT_DIR" \ --proto_path="$COSMOS_PROTO_DIR" \ --proto_path="$THIRD_PARTY_PROTO_DIR" \ + --proto_path="$LUM_PROTO_DIR" \ --ts_proto_opt="esModuleInterop=true,forceLong=long,useOptionals=true" \ "$COSMOS_PROTO_DIR/cosmos/auth/v1beta1/auth.proto" \ "$COSMOS_PROTO_DIR/cosmos/auth/v1beta1/query.proto" \ @@ -33,12 +38,6 @@ protoc \ "$COSMOS_PROTO_DIR/cosmos/staking/v1beta1/tx.proto" \ "$COSMOS_PROTO_DIR/cosmos/tx/signing/v1beta1/signing.proto" \ "$COSMOS_PROTO_DIR/cosmos/tx/v1beta1/tx.proto" \ - "$COSMOS_PROTO_DIR/ibc/core/channel/v1/channel.proto" \ - "$COSMOS_PROTO_DIR/ibc/core/channel/v1/query.proto" \ - "$COSMOS_PROTO_DIR/ibc/core/client/v1/client.proto" \ - "$COSMOS_PROTO_DIR/ibc/core/commitment/v1/commitment.proto" \ - "$COSMOS_PROTO_DIR/ibc/core/connection/v1/connection.proto" \ - "$COSMOS_PROTO_DIR/ibc/core/connection/v1/query.proto" \ "$THIRD_PARTY_PROTO_DIR/confio/proofs.proto" \ "$THIRD_PARTY_PROTO_DIR/tendermint/abci/types.proto" \ "$THIRD_PARTY_PROTO_DIR/tendermint/crypto/keys.proto" \ @@ -47,7 +46,8 @@ protoc \ "$THIRD_PARTY_PROTO_DIR/tendermint/types/params.proto" \ "$THIRD_PARTY_PROTO_DIR/tendermint/types/types.proto" \ "$THIRD_PARTY_PROTO_DIR/tendermint/types/validator.proto" \ - "$THIRD_PARTY_PROTO_DIR/tendermint/version/types.proto" + "$THIRD_PARTY_PROTO_DIR/tendermint/version/types.proto" \ + "$LUM_PROTO_DIR/chain/beam/beam.proto" # Remove unnecessary codec files rm -rf \ diff --git a/scripts/get-proto.sh b/scripts/get-proto.sh index 6468884..228f027 100644 --- a/scripts/get-proto.sh +++ b/scripts/get-proto.sh @@ -6,14 +6,26 @@ PROTO_DIR="./proto" COSMOS_DIR="$PROTO_DIR/cosmos" COSMOS_SDK_DIR="$COSMOS_DIR/cosmos-sdk" ZIP_FILE="$COSMOS_DIR/tmp.zip" + +LUM_NETWORK_DIR="$PROTO_DIR/lum-network" +LUM_NETWORK_SDK_DIR="$LUM_NETWORK_DIR/chain" + REF=${REF:-"master"} SUFFIX=${REF} [[ $SUFFIX =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-.+)?$ ]] && SUFFIX=${SUFFIX#v} +# Create the cosmos dir mkdir -p "$COSMOS_DIR" +# Download the cosmos archive wget -qO "$ZIP_FILE" "https://github.com/cosmos/cosmos-sdk/archive/$REF.zip" unzip "$ZIP_FILE" "*.proto" -d "$COSMOS_DIR" mv "$COSMOS_SDK_DIR-$SUFFIX" "$COSMOS_SDK_DIR" rm "$ZIP_FILE" + +# Create the lum network dir +mkdir -p "$LUM_NETWORK_SDK_DIR/proto/chain/beam" + +# Download the beam archive +wget -qO "$LUM_NETWORK_SDK_DIR/proto/chain/beam/beam.proto" "https://raw.githubusercontent.com/lum-network/chain/master/proto/beam/beam.proto?token=ABH2VUAPWO3DRGHMRGXWZWDASVAMY" diff --git a/src/codec/chain/beam/beam.ts b/src/codec/chain/beam/beam.ts new file mode 100644 index 0000000..85c8630 --- /dev/null +++ b/src/codec/chain/beam/beam.ts @@ -0,0 +1,2265 @@ +/* eslint-disable */ +import Long from 'long'; +import _m0 from 'protobufjs/minimal'; + +export const protobufPackage = 'lum.network.beam'; + +export interface BeamReward { + rewards: BeamReward_BeamRewardDetails[]; +} + +export interface BeamReward_BeamRewardDetails { + name: string; + amount: Long; + maxAmount: Long; + currency: string; + status: string; +} + +export interface BeamReview { + reviewer?: BeamReview_BeamReviewReviewer; + merchantReview?: BeamReview_BeamReviewMerchantReview; + productsReviews: BeamReview_BeamReviewProductReview[]; +} + +export interface BeamReview_BeamReviewReviewer { + reviewerId: string; + name: string; + isAnonymous: boolean; +} + +export interface BeamReview_BeamReviewMerchantReview { + reviewId: string; + merchantUrl: string; + ratingUrl: string; + reviewUrl: string; + timestamp: string; + ratings: { [key: string]: Long }; + title: string; + content: { [key: string]: string }; +} + +export interface BeamReview_BeamReviewMerchantReview_RatingsEntry { + key: string; + value: Long; +} + +export interface BeamReview_BeamReviewMerchantReview_ContentEntry { + key: string; + value: string; +} + +export interface BeamReview_BeamReviewProductReview { + reviewId: string; + ratingUrl: string; + reviewUrl: string; + collectionMethod: string; + timestamp: string; + ratings: { [key: string]: Long }; + title: string; + content: { [key: string]: string }; + medias: BeamReview_BeamReviewProductReview_Media[]; + products: BeamReview_BeamReviewProductReview_Product[]; +} + +export interface BeamReview_BeamReviewProductReview_Media { + mimetype: string; + url: string; + thumbnailUrl: string; +} + +export interface BeamReview_BeamReviewProductReview_Product { + name: string; + url: string; + brands: string[]; + ids?: BeamReview_BeamReviewProductReview_Product_ProductIds; +} + +export interface BeamReview_BeamReviewProductReview_Product_ProductIds { + gtins: string[]; + mpns: string[]; + skus: string[]; + asins: string[]; +} + +export interface BeamReview_BeamReviewProductReview_RatingsEntry { + key: string; + value: Long; +} + +export interface BeamReview_BeamReviewProductReview_ContentEntry { + key: string; + value: string; +} + +export interface Beam { + creator: string; + id: string; + amount: Long; + status: string; + secret: string; + schema: string; + reward?: BeamReward; + review?: BeamReview; +} + +export interface MsgOpenBeam { + id: string; + creator: string; + amount: Long; + secret: string; + reward?: BeamReward; + review?: BeamReview; +} + +export interface MsgUpdateBeam { + updater: string; + id: string; + amount: Long; + reward?: BeamReward; + review?: BeamReview; +} + +export interface MsgCancelBeam { + updater: string; + id: string; +} + +export interface MsgCloseBeam { + updater: string; + id: string; +} + +export interface MsgClaimBeam { + claimer: string; + id: string; + secret: string; +} + +const baseBeamReward: object = {}; + +export const BeamReward = { + encode(message: BeamReward, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.rewards) { + BeamReward_BeamRewardDetails.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BeamReward { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeamReward } as BeamReward; + message.rewards = []; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.rewards.push(BeamReward_BeamRewardDetails.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): BeamReward { + const message = { ...baseBeamReward } as BeamReward; + message.rewards = []; + if (object.rewards !== undefined && object.rewards !== null) { + for (const e of object.rewards) { + message.rewards.push(BeamReward_BeamRewardDetails.fromJSON(e)); + } + } + return message; + }, + + toJSON(message: BeamReward): unknown { + const obj: any = {}; + if (message.rewards) { + obj.rewards = message.rewards.map((e) => (e ? BeamReward_BeamRewardDetails.toJSON(e) : undefined)); + } else { + obj.rewards = []; + } + return obj; + }, + + fromPartial(object: DeepPartial): BeamReward { + const message = { ...baseBeamReward } as BeamReward; + message.rewards = []; + if (object.rewards !== undefined && object.rewards !== null) { + for (const e of object.rewards) { + message.rewards.push(BeamReward_BeamRewardDetails.fromPartial(e)); + } + } + return message; + }, +}; + +const baseBeamReward_BeamRewardDetails: object = { name: '', amount: Long.ZERO, maxAmount: Long.ZERO, currency: '', status: '' }; + +export const BeamReward_BeamRewardDetails = { + encode(message: BeamReward_BeamRewardDetails, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== '') { + writer.uint32(10).string(message.name); + } + if (!message.amount.isZero()) { + writer.uint32(16).int64(message.amount); + } + if (!message.maxAmount.isZero()) { + writer.uint32(24).int64(message.maxAmount); + } + if (message.currency !== '') { + writer.uint32(34).string(message.currency); + } + if (message.status !== '') { + writer.uint32(42).string(message.status); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BeamReward_BeamRewardDetails { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeamReward_BeamRewardDetails } as BeamReward_BeamRewardDetails; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.amount = reader.int64() as Long; + break; + case 3: + message.maxAmount = reader.int64() as Long; + break; + case 4: + message.currency = reader.string(); + break; + case 5: + message.status = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): BeamReward_BeamRewardDetails { + const message = { ...baseBeamReward_BeamRewardDetails } as BeamReward_BeamRewardDetails; + if (object.name !== undefined && object.name !== null) { + message.name = String(object.name); + } else { + message.name = ''; + } + if (object.amount !== undefined && object.amount !== null) { + message.amount = Long.fromString(object.amount); + } else { + message.amount = Long.ZERO; + } + if (object.maxAmount !== undefined && object.maxAmount !== null) { + message.maxAmount = Long.fromString(object.maxAmount); + } else { + message.maxAmount = Long.ZERO; + } + if (object.currency !== undefined && object.currency !== null) { + message.currency = String(object.currency); + } else { + message.currency = ''; + } + if (object.status !== undefined && object.status !== null) { + message.status = String(object.status); + } else { + message.status = ''; + } + return message; + }, + + toJSON(message: BeamReward_BeamRewardDetails): unknown { + const obj: any = {}; + message.name !== undefined && (obj.name = message.name); + message.amount !== undefined && (obj.amount = (message.amount || Long.ZERO).toString()); + message.maxAmount !== undefined && (obj.maxAmount = (message.maxAmount || Long.ZERO).toString()); + message.currency !== undefined && (obj.currency = message.currency); + message.status !== undefined && (obj.status = message.status); + return obj; + }, + + fromPartial(object: DeepPartial): BeamReward_BeamRewardDetails { + const message = { ...baseBeamReward_BeamRewardDetails } as BeamReward_BeamRewardDetails; + if (object.name !== undefined && object.name !== null) { + message.name = object.name; + } else { + message.name = ''; + } + if (object.amount !== undefined && object.amount !== null) { + message.amount = object.amount as Long; + } else { + message.amount = Long.ZERO; + } + if (object.maxAmount !== undefined && object.maxAmount !== null) { + message.maxAmount = object.maxAmount as Long; + } else { + message.maxAmount = Long.ZERO; + } + if (object.currency !== undefined && object.currency !== null) { + message.currency = object.currency; + } else { + message.currency = ''; + } + if (object.status !== undefined && object.status !== null) { + message.status = object.status; + } else { + message.status = ''; + } + return message; + }, +}; + +const baseBeamReview: object = {}; + +export const BeamReview = { + encode(message: BeamReview, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.reviewer !== undefined) { + BeamReview_BeamReviewReviewer.encode(message.reviewer, writer.uint32(10).fork()).ldelim(); + } + if (message.merchantReview !== undefined) { + BeamReview_BeamReviewMerchantReview.encode(message.merchantReview, writer.uint32(18).fork()).ldelim(); + } + for (const v of message.productsReviews) { + BeamReview_BeamReviewProductReview.encode(v!, writer.uint32(26).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BeamReview { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeamReview } as BeamReview; + message.productsReviews = []; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.reviewer = BeamReview_BeamReviewReviewer.decode(reader, reader.uint32()); + break; + case 2: + message.merchantReview = BeamReview_BeamReviewMerchantReview.decode(reader, reader.uint32()); + break; + case 3: + message.productsReviews.push(BeamReview_BeamReviewProductReview.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): BeamReview { + const message = { ...baseBeamReview } as BeamReview; + message.productsReviews = []; + if (object.reviewer !== undefined && object.reviewer !== null) { + message.reviewer = BeamReview_BeamReviewReviewer.fromJSON(object.reviewer); + } else { + message.reviewer = undefined; + } + if (object.merchantReview !== undefined && object.merchantReview !== null) { + message.merchantReview = BeamReview_BeamReviewMerchantReview.fromJSON(object.merchantReview); + } else { + message.merchantReview = undefined; + } + if (object.productsReviews !== undefined && object.productsReviews !== null) { + for (const e of object.productsReviews) { + message.productsReviews.push(BeamReview_BeamReviewProductReview.fromJSON(e)); + } + } + return message; + }, + + toJSON(message: BeamReview): unknown { + const obj: any = {}; + message.reviewer !== undefined && (obj.reviewer = message.reviewer ? BeamReview_BeamReviewReviewer.toJSON(message.reviewer) : undefined); + message.merchantReview !== undefined && (obj.merchantReview = message.merchantReview ? BeamReview_BeamReviewMerchantReview.toJSON(message.merchantReview) : undefined); + if (message.productsReviews) { + obj.productsReviews = message.productsReviews.map((e) => (e ? BeamReview_BeamReviewProductReview.toJSON(e) : undefined)); + } else { + obj.productsReviews = []; + } + return obj; + }, + + fromPartial(object: DeepPartial): BeamReview { + const message = { ...baseBeamReview } as BeamReview; + message.productsReviews = []; + if (object.reviewer !== undefined && object.reviewer !== null) { + message.reviewer = BeamReview_BeamReviewReviewer.fromPartial(object.reviewer); + } else { + message.reviewer = undefined; + } + if (object.merchantReview !== undefined && object.merchantReview !== null) { + message.merchantReview = BeamReview_BeamReviewMerchantReview.fromPartial(object.merchantReview); + } else { + message.merchantReview = undefined; + } + if (object.productsReviews !== undefined && object.productsReviews !== null) { + for (const e of object.productsReviews) { + message.productsReviews.push(BeamReview_BeamReviewProductReview.fromPartial(e)); + } + } + return message; + }, +}; + +const baseBeamReview_BeamReviewReviewer: object = { reviewerId: '', name: '', isAnonymous: false }; + +export const BeamReview_BeamReviewReviewer = { + encode(message: BeamReview_BeamReviewReviewer, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.reviewerId !== '') { + writer.uint32(10).string(message.reviewerId); + } + if (message.name !== '') { + writer.uint32(18).string(message.name); + } + if (message.isAnonymous === true) { + writer.uint32(24).bool(message.isAnonymous); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BeamReview_BeamReviewReviewer { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeamReview_BeamReviewReviewer } as BeamReview_BeamReviewReviewer; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.reviewerId = reader.string(); + break; + case 2: + message.name = reader.string(); + break; + case 3: + message.isAnonymous = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): BeamReview_BeamReviewReviewer { + const message = { ...baseBeamReview_BeamReviewReviewer } as BeamReview_BeamReviewReviewer; + if (object.reviewerId !== undefined && object.reviewerId !== null) { + message.reviewerId = String(object.reviewerId); + } else { + message.reviewerId = ''; + } + if (object.name !== undefined && object.name !== null) { + message.name = String(object.name); + } else { + message.name = ''; + } + if (object.isAnonymous !== undefined && object.isAnonymous !== null) { + message.isAnonymous = Boolean(object.isAnonymous); + } else { + message.isAnonymous = false; + } + return message; + }, + + toJSON(message: BeamReview_BeamReviewReviewer): unknown { + const obj: any = {}; + message.reviewerId !== undefined && (obj.reviewerId = message.reviewerId); + message.name !== undefined && (obj.name = message.name); + message.isAnonymous !== undefined && (obj.isAnonymous = message.isAnonymous); + return obj; + }, + + fromPartial(object: DeepPartial): BeamReview_BeamReviewReviewer { + const message = { ...baseBeamReview_BeamReviewReviewer } as BeamReview_BeamReviewReviewer; + if (object.reviewerId !== undefined && object.reviewerId !== null) { + message.reviewerId = object.reviewerId; + } else { + message.reviewerId = ''; + } + if (object.name !== undefined && object.name !== null) { + message.name = object.name; + } else { + message.name = ''; + } + if (object.isAnonymous !== undefined && object.isAnonymous !== null) { + message.isAnonymous = object.isAnonymous; + } else { + message.isAnonymous = false; + } + return message; + }, +}; + +const baseBeamReview_BeamReviewMerchantReview: object = { reviewId: '', merchantUrl: '', ratingUrl: '', reviewUrl: '', timestamp: '', title: '' }; + +export const BeamReview_BeamReviewMerchantReview = { + encode(message: BeamReview_BeamReviewMerchantReview, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.reviewId !== '') { + writer.uint32(10).string(message.reviewId); + } + if (message.merchantUrl !== '') { + writer.uint32(18).string(message.merchantUrl); + } + if (message.ratingUrl !== '') { + writer.uint32(26).string(message.ratingUrl); + } + if (message.reviewUrl !== '') { + writer.uint32(34).string(message.reviewUrl); + } + if (message.timestamp !== '') { + writer.uint32(42).string(message.timestamp); + } + Object.entries(message.ratings).forEach(([key, value]) => { + BeamReview_BeamReviewMerchantReview_RatingsEntry.encode({ key: key as any, value }, writer.uint32(50).fork()).ldelim(); + }); + if (message.title !== '') { + writer.uint32(58).string(message.title); + } + Object.entries(message.content).forEach(([key, value]) => { + BeamReview_BeamReviewMerchantReview_ContentEntry.encode({ key: key as any, value }, writer.uint32(66).fork()).ldelim(); + }); + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BeamReview_BeamReviewMerchantReview { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeamReview_BeamReviewMerchantReview } as BeamReview_BeamReviewMerchantReview; + message.ratings = {}; + message.content = {}; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.reviewId = reader.string(); + break; + case 2: + message.merchantUrl = reader.string(); + break; + case 3: + message.ratingUrl = reader.string(); + break; + case 4: + message.reviewUrl = reader.string(); + break; + case 5: + message.timestamp = reader.string(); + break; + case 6: + const entry6 = BeamReview_BeamReviewMerchantReview_RatingsEntry.decode(reader, reader.uint32()); + if (entry6.value !== undefined) { + message.ratings[entry6.key] = entry6.value; + } + break; + case 7: + message.title = reader.string(); + break; + case 8: + const entry8 = BeamReview_BeamReviewMerchantReview_ContentEntry.decode(reader, reader.uint32()); + if (entry8.value !== undefined) { + message.content[entry8.key] = entry8.value; + } + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): BeamReview_BeamReviewMerchantReview { + const message = { ...baseBeamReview_BeamReviewMerchantReview } as BeamReview_BeamReviewMerchantReview; + message.ratings = {}; + message.content = {}; + if (object.reviewId !== undefined && object.reviewId !== null) { + message.reviewId = String(object.reviewId); + } else { + message.reviewId = ''; + } + if (object.merchantUrl !== undefined && object.merchantUrl !== null) { + message.merchantUrl = String(object.merchantUrl); + } else { + message.merchantUrl = ''; + } + if (object.ratingUrl !== undefined && object.ratingUrl !== null) { + message.ratingUrl = String(object.ratingUrl); + } else { + message.ratingUrl = ''; + } + if (object.reviewUrl !== undefined && object.reviewUrl !== null) { + message.reviewUrl = String(object.reviewUrl); + } else { + message.reviewUrl = ''; + } + if (object.timestamp !== undefined && object.timestamp !== null) { + message.timestamp = String(object.timestamp); + } else { + message.timestamp = ''; + } + if (object.ratings !== undefined && object.ratings !== null) { + Object.entries(object.ratings).forEach(([key, value]) => { + message.ratings[key] = new Long(value as any); + }); + } + if (object.title !== undefined && object.title !== null) { + message.title = String(object.title); + } else { + message.title = ''; + } + if (object.content !== undefined && object.content !== null) { + Object.entries(object.content).forEach(([key, value]) => { + message.content[key] = String(value); + }); + } + return message; + }, + + toJSON(message: BeamReview_BeamReviewMerchantReview): unknown { + const obj: any = {}; + message.reviewId !== undefined && (obj.reviewId = message.reviewId); + message.merchantUrl !== undefined && (obj.merchantUrl = message.merchantUrl); + message.ratingUrl !== undefined && (obj.ratingUrl = message.ratingUrl); + message.reviewUrl !== undefined && (obj.reviewUrl = message.reviewUrl); + message.timestamp !== undefined && (obj.timestamp = message.timestamp); + obj.ratings = {}; + if (message.ratings) { + Object.entries(message.ratings).forEach(([k, v]) => { + obj.ratings[k] = v; + }); + } + message.title !== undefined && (obj.title = message.title); + obj.content = {}; + if (message.content) { + Object.entries(message.content).forEach(([k, v]) => { + obj.content[k] = v; + }); + } + return obj; + }, + + fromPartial(object: DeepPartial): BeamReview_BeamReviewMerchantReview { + const message = { ...baseBeamReview_BeamReviewMerchantReview } as BeamReview_BeamReviewMerchantReview; + message.ratings = {}; + message.content = {}; + if (object.reviewId !== undefined && object.reviewId !== null) { + message.reviewId = object.reviewId; + } else { + message.reviewId = ''; + } + if (object.merchantUrl !== undefined && object.merchantUrl !== null) { + message.merchantUrl = object.merchantUrl; + } else { + message.merchantUrl = ''; + } + if (object.ratingUrl !== undefined && object.ratingUrl !== null) { + message.ratingUrl = object.ratingUrl; + } else { + message.ratingUrl = ''; + } + if (object.reviewUrl !== undefined && object.reviewUrl !== null) { + message.reviewUrl = object.reviewUrl; + } else { + message.reviewUrl = ''; + } + if (object.timestamp !== undefined && object.timestamp !== null) { + message.timestamp = object.timestamp; + } else { + message.timestamp = ''; + } + if (object.ratings !== undefined && object.ratings !== null) { + Object.entries(object.ratings).forEach(([key, value]) => { + if (value !== undefined) { + message.ratings[key] = new Long(value as any); + } + }); + } + if (object.title !== undefined && object.title !== null) { + message.title = object.title; + } else { + message.title = ''; + } + if (object.content !== undefined && object.content !== null) { + Object.entries(object.content).forEach(([key, value]) => { + if (value !== undefined) { + message.content[key] = String(value); + } + }); + } + return message; + }, +}; + +const baseBeamReview_BeamReviewMerchantReview_RatingsEntry: object = { key: '', value: Long.ZERO }; + +export const BeamReview_BeamReviewMerchantReview_RatingsEntry = { + encode(message: BeamReview_BeamReviewMerchantReview_RatingsEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.key !== '') { + writer.uint32(10).string(message.key); + } + if (!message.value.isZero()) { + writer.uint32(16).int64(message.value); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BeamReview_BeamReviewMerchantReview_RatingsEntry { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeamReview_BeamReviewMerchantReview_RatingsEntry } as BeamReview_BeamReviewMerchantReview_RatingsEntry; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.key = reader.string(); + break; + case 2: + message.value = reader.int64() as Long; + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): BeamReview_BeamReviewMerchantReview_RatingsEntry { + const message = { ...baseBeamReview_BeamReviewMerchantReview_RatingsEntry } as BeamReview_BeamReviewMerchantReview_RatingsEntry; + if (object.key !== undefined && object.key !== null) { + message.key = String(object.key); + } else { + message.key = ''; + } + if (object.value !== undefined && object.value !== null) { + message.value = Long.fromString(object.value); + } else { + message.value = Long.ZERO; + } + return message; + }, + + toJSON(message: BeamReview_BeamReviewMerchantReview_RatingsEntry): unknown { + const obj: any = {}; + message.key !== undefined && (obj.key = message.key); + message.value !== undefined && (obj.value = (message.value || Long.ZERO).toString()); + return obj; + }, + + fromPartial(object: DeepPartial): BeamReview_BeamReviewMerchantReview_RatingsEntry { + const message = { ...baseBeamReview_BeamReviewMerchantReview_RatingsEntry } as BeamReview_BeamReviewMerchantReview_RatingsEntry; + if (object.key !== undefined && object.key !== null) { + message.key = object.key; + } else { + message.key = ''; + } + if (object.value !== undefined && object.value !== null) { + message.value = object.value as Long; + } else { + message.value = Long.ZERO; + } + return message; + }, +}; + +const baseBeamReview_BeamReviewMerchantReview_ContentEntry: object = { key: '', value: '' }; + +export const BeamReview_BeamReviewMerchantReview_ContentEntry = { + encode(message: BeamReview_BeamReviewMerchantReview_ContentEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.key !== '') { + writer.uint32(10).string(message.key); + } + if (message.value !== '') { + writer.uint32(18).string(message.value); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BeamReview_BeamReviewMerchantReview_ContentEntry { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeamReview_BeamReviewMerchantReview_ContentEntry } as BeamReview_BeamReviewMerchantReview_ContentEntry; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.key = reader.string(); + break; + case 2: + message.value = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): BeamReview_BeamReviewMerchantReview_ContentEntry { + const message = { ...baseBeamReview_BeamReviewMerchantReview_ContentEntry } as BeamReview_BeamReviewMerchantReview_ContentEntry; + if (object.key !== undefined && object.key !== null) { + message.key = String(object.key); + } else { + message.key = ''; + } + if (object.value !== undefined && object.value !== null) { + message.value = String(object.value); + } else { + message.value = ''; + } + return message; + }, + + toJSON(message: BeamReview_BeamReviewMerchantReview_ContentEntry): unknown { + const obj: any = {}; + message.key !== undefined && (obj.key = message.key); + message.value !== undefined && (obj.value = message.value); + return obj; + }, + + fromPartial(object: DeepPartial): BeamReview_BeamReviewMerchantReview_ContentEntry { + const message = { ...baseBeamReview_BeamReviewMerchantReview_ContentEntry } as BeamReview_BeamReviewMerchantReview_ContentEntry; + if (object.key !== undefined && object.key !== null) { + message.key = object.key; + } else { + message.key = ''; + } + if (object.value !== undefined && object.value !== null) { + message.value = object.value; + } else { + message.value = ''; + } + return message; + }, +}; + +const baseBeamReview_BeamReviewProductReview: object = { reviewId: '', ratingUrl: '', reviewUrl: '', collectionMethod: '', timestamp: '', title: '' }; + +export const BeamReview_BeamReviewProductReview = { + encode(message: BeamReview_BeamReviewProductReview, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.reviewId !== '') { + writer.uint32(10).string(message.reviewId); + } + if (message.ratingUrl !== '') { + writer.uint32(18).string(message.ratingUrl); + } + if (message.reviewUrl !== '') { + writer.uint32(26).string(message.reviewUrl); + } + if (message.collectionMethod !== '') { + writer.uint32(34).string(message.collectionMethod); + } + if (message.timestamp !== '') { + writer.uint32(42).string(message.timestamp); + } + Object.entries(message.ratings).forEach(([key, value]) => { + BeamReview_BeamReviewProductReview_RatingsEntry.encode({ key: key as any, value }, writer.uint32(50).fork()).ldelim(); + }); + if (message.title !== '') { + writer.uint32(58).string(message.title); + } + Object.entries(message.content).forEach(([key, value]) => { + BeamReview_BeamReviewProductReview_ContentEntry.encode({ key: key as any, value }, writer.uint32(66).fork()).ldelim(); + }); + for (const v of message.medias) { + BeamReview_BeamReviewProductReview_Media.encode(v!, writer.uint32(74).fork()).ldelim(); + } + for (const v of message.products) { + BeamReview_BeamReviewProductReview_Product.encode(v!, writer.uint32(82).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BeamReview_BeamReviewProductReview { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeamReview_BeamReviewProductReview } as BeamReview_BeamReviewProductReview; + message.ratings = {}; + message.content = {}; + message.medias = []; + message.products = []; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.reviewId = reader.string(); + break; + case 2: + message.ratingUrl = reader.string(); + break; + case 3: + message.reviewUrl = reader.string(); + break; + case 4: + message.collectionMethod = reader.string(); + break; + case 5: + message.timestamp = reader.string(); + break; + case 6: + const entry6 = BeamReview_BeamReviewProductReview_RatingsEntry.decode(reader, reader.uint32()); + if (entry6.value !== undefined) { + message.ratings[entry6.key] = entry6.value; + } + break; + case 7: + message.title = reader.string(); + break; + case 8: + const entry8 = BeamReview_BeamReviewProductReview_ContentEntry.decode(reader, reader.uint32()); + if (entry8.value !== undefined) { + message.content[entry8.key] = entry8.value; + } + break; + case 9: + message.medias.push(BeamReview_BeamReviewProductReview_Media.decode(reader, reader.uint32())); + break; + case 10: + message.products.push(BeamReview_BeamReviewProductReview_Product.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): BeamReview_BeamReviewProductReview { + const message = { ...baseBeamReview_BeamReviewProductReview } as BeamReview_BeamReviewProductReview; + message.ratings = {}; + message.content = {}; + message.medias = []; + message.products = []; + if (object.reviewId !== undefined && object.reviewId !== null) { + message.reviewId = String(object.reviewId); + } else { + message.reviewId = ''; + } + if (object.ratingUrl !== undefined && object.ratingUrl !== null) { + message.ratingUrl = String(object.ratingUrl); + } else { + message.ratingUrl = ''; + } + if (object.reviewUrl !== undefined && object.reviewUrl !== null) { + message.reviewUrl = String(object.reviewUrl); + } else { + message.reviewUrl = ''; + } + if (object.collectionMethod !== undefined && object.collectionMethod !== null) { + message.collectionMethod = String(object.collectionMethod); + } else { + message.collectionMethod = ''; + } + if (object.timestamp !== undefined && object.timestamp !== null) { + message.timestamp = String(object.timestamp); + } else { + message.timestamp = ''; + } + if (object.ratings !== undefined && object.ratings !== null) { + Object.entries(object.ratings).forEach(([key, value]) => { + message.ratings[key] = new Long(value as any); + }); + } + if (object.title !== undefined && object.title !== null) { + message.title = String(object.title); + } else { + message.title = ''; + } + if (object.content !== undefined && object.content !== null) { + Object.entries(object.content).forEach(([key, value]) => { + message.content[key] = String(value); + }); + } + if (object.medias !== undefined && object.medias !== null) { + for (const e of object.medias) { + message.medias.push(BeamReview_BeamReviewProductReview_Media.fromJSON(e)); + } + } + if (object.products !== undefined && object.products !== null) { + for (const e of object.products) { + message.products.push(BeamReview_BeamReviewProductReview_Product.fromJSON(e)); + } + } + return message; + }, + + toJSON(message: BeamReview_BeamReviewProductReview): unknown { + const obj: any = {}; + message.reviewId !== undefined && (obj.reviewId = message.reviewId); + message.ratingUrl !== undefined && (obj.ratingUrl = message.ratingUrl); + message.reviewUrl !== undefined && (obj.reviewUrl = message.reviewUrl); + message.collectionMethod !== undefined && (obj.collectionMethod = message.collectionMethod); + message.timestamp !== undefined && (obj.timestamp = message.timestamp); + obj.ratings = {}; + if (message.ratings) { + Object.entries(message.ratings).forEach(([k, v]) => { + obj.ratings[k] = v; + }); + } + message.title !== undefined && (obj.title = message.title); + obj.content = {}; + if (message.content) { + Object.entries(message.content).forEach(([k, v]) => { + obj.content[k] = v; + }); + } + if (message.medias) { + obj.medias = message.medias.map((e) => (e ? BeamReview_BeamReviewProductReview_Media.toJSON(e) : undefined)); + } else { + obj.medias = []; + } + if (message.products) { + obj.products = message.products.map((e) => (e ? BeamReview_BeamReviewProductReview_Product.toJSON(e) : undefined)); + } else { + obj.products = []; + } + return obj; + }, + + fromPartial(object: DeepPartial): BeamReview_BeamReviewProductReview { + const message = { ...baseBeamReview_BeamReviewProductReview } as BeamReview_BeamReviewProductReview; + message.ratings = {}; + message.content = {}; + message.medias = []; + message.products = []; + if (object.reviewId !== undefined && object.reviewId !== null) { + message.reviewId = object.reviewId; + } else { + message.reviewId = ''; + } + if (object.ratingUrl !== undefined && object.ratingUrl !== null) { + message.ratingUrl = object.ratingUrl; + } else { + message.ratingUrl = ''; + } + if (object.reviewUrl !== undefined && object.reviewUrl !== null) { + message.reviewUrl = object.reviewUrl; + } else { + message.reviewUrl = ''; + } + if (object.collectionMethod !== undefined && object.collectionMethod !== null) { + message.collectionMethod = object.collectionMethod; + } else { + message.collectionMethod = ''; + } + if (object.timestamp !== undefined && object.timestamp !== null) { + message.timestamp = object.timestamp; + } else { + message.timestamp = ''; + } + if (object.ratings !== undefined && object.ratings !== null) { + Object.entries(object.ratings).forEach(([key, value]) => { + if (value !== undefined) { + message.ratings[key] = new Long(value as any); + } + }); + } + if (object.title !== undefined && object.title !== null) { + message.title = object.title; + } else { + message.title = ''; + } + if (object.content !== undefined && object.content !== null) { + Object.entries(object.content).forEach(([key, value]) => { + if (value !== undefined) { + message.content[key] = String(value); + } + }); + } + if (object.medias !== undefined && object.medias !== null) { + for (const e of object.medias) { + message.medias.push(BeamReview_BeamReviewProductReview_Media.fromPartial(e)); + } + } + if (object.products !== undefined && object.products !== null) { + for (const e of object.products) { + message.products.push(BeamReview_BeamReviewProductReview_Product.fromPartial(e)); + } + } + return message; + }, +}; + +const baseBeamReview_BeamReviewProductReview_Media: object = { mimetype: '', url: '', thumbnailUrl: '' }; + +export const BeamReview_BeamReviewProductReview_Media = { + encode(message: BeamReview_BeamReviewProductReview_Media, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.mimetype !== '') { + writer.uint32(10).string(message.mimetype); + } + if (message.url !== '') { + writer.uint32(18).string(message.url); + } + if (message.thumbnailUrl !== '') { + writer.uint32(26).string(message.thumbnailUrl); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BeamReview_BeamReviewProductReview_Media { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeamReview_BeamReviewProductReview_Media } as BeamReview_BeamReviewProductReview_Media; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.mimetype = reader.string(); + break; + case 2: + message.url = reader.string(); + break; + case 3: + message.thumbnailUrl = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): BeamReview_BeamReviewProductReview_Media { + const message = { ...baseBeamReview_BeamReviewProductReview_Media } as BeamReview_BeamReviewProductReview_Media; + if (object.mimetype !== undefined && object.mimetype !== null) { + message.mimetype = String(object.mimetype); + } else { + message.mimetype = ''; + } + if (object.url !== undefined && object.url !== null) { + message.url = String(object.url); + } else { + message.url = ''; + } + if (object.thumbnailUrl !== undefined && object.thumbnailUrl !== null) { + message.thumbnailUrl = String(object.thumbnailUrl); + } else { + message.thumbnailUrl = ''; + } + return message; + }, + + toJSON(message: BeamReview_BeamReviewProductReview_Media): unknown { + const obj: any = {}; + message.mimetype !== undefined && (obj.mimetype = message.mimetype); + message.url !== undefined && (obj.url = message.url); + message.thumbnailUrl !== undefined && (obj.thumbnailUrl = message.thumbnailUrl); + return obj; + }, + + fromPartial(object: DeepPartial): BeamReview_BeamReviewProductReview_Media { + const message = { ...baseBeamReview_BeamReviewProductReview_Media } as BeamReview_BeamReviewProductReview_Media; + if (object.mimetype !== undefined && object.mimetype !== null) { + message.mimetype = object.mimetype; + } else { + message.mimetype = ''; + } + if (object.url !== undefined && object.url !== null) { + message.url = object.url; + } else { + message.url = ''; + } + if (object.thumbnailUrl !== undefined && object.thumbnailUrl !== null) { + message.thumbnailUrl = object.thumbnailUrl; + } else { + message.thumbnailUrl = ''; + } + return message; + }, +}; + +const baseBeamReview_BeamReviewProductReview_Product: object = { name: '', url: '', brands: '' }; + +export const BeamReview_BeamReviewProductReview_Product = { + encode(message: BeamReview_BeamReviewProductReview_Product, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== '') { + writer.uint32(10).string(message.name); + } + if (message.url !== '') { + writer.uint32(18).string(message.url); + } + for (const v of message.brands) { + writer.uint32(26).string(v!); + } + if (message.ids !== undefined) { + BeamReview_BeamReviewProductReview_Product_ProductIds.encode(message.ids, writer.uint32(34).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BeamReview_BeamReviewProductReview_Product { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeamReview_BeamReviewProductReview_Product } as BeamReview_BeamReviewProductReview_Product; + message.brands = []; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.url = reader.string(); + break; + case 3: + message.brands.push(reader.string()); + break; + case 4: + message.ids = BeamReview_BeamReviewProductReview_Product_ProductIds.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): BeamReview_BeamReviewProductReview_Product { + const message = { ...baseBeamReview_BeamReviewProductReview_Product } as BeamReview_BeamReviewProductReview_Product; + message.brands = []; + if (object.name !== undefined && object.name !== null) { + message.name = String(object.name); + } else { + message.name = ''; + } + if (object.url !== undefined && object.url !== null) { + message.url = String(object.url); + } else { + message.url = ''; + } + if (object.brands !== undefined && object.brands !== null) { + for (const e of object.brands) { + message.brands.push(String(e)); + } + } + if (object.ids !== undefined && object.ids !== null) { + message.ids = BeamReview_BeamReviewProductReview_Product_ProductIds.fromJSON(object.ids); + } else { + message.ids = undefined; + } + return message; + }, + + toJSON(message: BeamReview_BeamReviewProductReview_Product): unknown { + const obj: any = {}; + message.name !== undefined && (obj.name = message.name); + message.url !== undefined && (obj.url = message.url); + if (message.brands) { + obj.brands = message.brands.map((e) => e); + } else { + obj.brands = []; + } + message.ids !== undefined && (obj.ids = message.ids ? BeamReview_BeamReviewProductReview_Product_ProductIds.toJSON(message.ids) : undefined); + return obj; + }, + + fromPartial(object: DeepPartial): BeamReview_BeamReviewProductReview_Product { + const message = { ...baseBeamReview_BeamReviewProductReview_Product } as BeamReview_BeamReviewProductReview_Product; + message.brands = []; + if (object.name !== undefined && object.name !== null) { + message.name = object.name; + } else { + message.name = ''; + } + if (object.url !== undefined && object.url !== null) { + message.url = object.url; + } else { + message.url = ''; + } + if (object.brands !== undefined && object.brands !== null) { + for (const e of object.brands) { + message.brands.push(e); + } + } + if (object.ids !== undefined && object.ids !== null) { + message.ids = BeamReview_BeamReviewProductReview_Product_ProductIds.fromPartial(object.ids); + } else { + message.ids = undefined; + } + return message; + }, +}; + +const baseBeamReview_BeamReviewProductReview_Product_ProductIds: object = { gtins: '', mpns: '', skus: '', asins: '' }; + +export const BeamReview_BeamReviewProductReview_Product_ProductIds = { + encode(message: BeamReview_BeamReviewProductReview_Product_ProductIds, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.gtins) { + writer.uint32(10).string(v!); + } + for (const v of message.mpns) { + writer.uint32(18).string(v!); + } + for (const v of message.skus) { + writer.uint32(26).string(v!); + } + for (const v of message.asins) { + writer.uint32(34).string(v!); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BeamReview_BeamReviewProductReview_Product_ProductIds { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeamReview_BeamReviewProductReview_Product_ProductIds } as BeamReview_BeamReviewProductReview_Product_ProductIds; + message.gtins = []; + message.mpns = []; + message.skus = []; + message.asins = []; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.gtins.push(reader.string()); + break; + case 2: + message.mpns.push(reader.string()); + break; + case 3: + message.skus.push(reader.string()); + break; + case 4: + message.asins.push(reader.string()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): BeamReview_BeamReviewProductReview_Product_ProductIds { + const message = { ...baseBeamReview_BeamReviewProductReview_Product_ProductIds } as BeamReview_BeamReviewProductReview_Product_ProductIds; + message.gtins = []; + message.mpns = []; + message.skus = []; + message.asins = []; + if (object.gtins !== undefined && object.gtins !== null) { + for (const e of object.gtins) { + message.gtins.push(String(e)); + } + } + if (object.mpns !== undefined && object.mpns !== null) { + for (const e of object.mpns) { + message.mpns.push(String(e)); + } + } + if (object.skus !== undefined && object.skus !== null) { + for (const e of object.skus) { + message.skus.push(String(e)); + } + } + if (object.asins !== undefined && object.asins !== null) { + for (const e of object.asins) { + message.asins.push(String(e)); + } + } + return message; + }, + + toJSON(message: BeamReview_BeamReviewProductReview_Product_ProductIds): unknown { + const obj: any = {}; + if (message.gtins) { + obj.gtins = message.gtins.map((e) => e); + } else { + obj.gtins = []; + } + if (message.mpns) { + obj.mpns = message.mpns.map((e) => e); + } else { + obj.mpns = []; + } + if (message.skus) { + obj.skus = message.skus.map((e) => e); + } else { + obj.skus = []; + } + if (message.asins) { + obj.asins = message.asins.map((e) => e); + } else { + obj.asins = []; + } + return obj; + }, + + fromPartial(object: DeepPartial): BeamReview_BeamReviewProductReview_Product_ProductIds { + const message = { ...baseBeamReview_BeamReviewProductReview_Product_ProductIds } as BeamReview_BeamReviewProductReview_Product_ProductIds; + message.gtins = []; + message.mpns = []; + message.skus = []; + message.asins = []; + if (object.gtins !== undefined && object.gtins !== null) { + for (const e of object.gtins) { + message.gtins.push(e); + } + } + if (object.mpns !== undefined && object.mpns !== null) { + for (const e of object.mpns) { + message.mpns.push(e); + } + } + if (object.skus !== undefined && object.skus !== null) { + for (const e of object.skus) { + message.skus.push(e); + } + } + if (object.asins !== undefined && object.asins !== null) { + for (const e of object.asins) { + message.asins.push(e); + } + } + return message; + }, +}; + +const baseBeamReview_BeamReviewProductReview_RatingsEntry: object = { key: '', value: Long.ZERO }; + +export const BeamReview_BeamReviewProductReview_RatingsEntry = { + encode(message: BeamReview_BeamReviewProductReview_RatingsEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.key !== '') { + writer.uint32(10).string(message.key); + } + if (!message.value.isZero()) { + writer.uint32(16).int64(message.value); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BeamReview_BeamReviewProductReview_RatingsEntry { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeamReview_BeamReviewProductReview_RatingsEntry } as BeamReview_BeamReviewProductReview_RatingsEntry; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.key = reader.string(); + break; + case 2: + message.value = reader.int64() as Long; + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): BeamReview_BeamReviewProductReview_RatingsEntry { + const message = { ...baseBeamReview_BeamReviewProductReview_RatingsEntry } as BeamReview_BeamReviewProductReview_RatingsEntry; + if (object.key !== undefined && object.key !== null) { + message.key = String(object.key); + } else { + message.key = ''; + } + if (object.value !== undefined && object.value !== null) { + message.value = Long.fromString(object.value); + } else { + message.value = Long.ZERO; + } + return message; + }, + + toJSON(message: BeamReview_BeamReviewProductReview_RatingsEntry): unknown { + const obj: any = {}; + message.key !== undefined && (obj.key = message.key); + message.value !== undefined && (obj.value = (message.value || Long.ZERO).toString()); + return obj; + }, + + fromPartial(object: DeepPartial): BeamReview_BeamReviewProductReview_RatingsEntry { + const message = { ...baseBeamReview_BeamReviewProductReview_RatingsEntry } as BeamReview_BeamReviewProductReview_RatingsEntry; + if (object.key !== undefined && object.key !== null) { + message.key = object.key; + } else { + message.key = ''; + } + if (object.value !== undefined && object.value !== null) { + message.value = object.value as Long; + } else { + message.value = Long.ZERO; + } + return message; + }, +}; + +const baseBeamReview_BeamReviewProductReview_ContentEntry: object = { key: '', value: '' }; + +export const BeamReview_BeamReviewProductReview_ContentEntry = { + encode(message: BeamReview_BeamReviewProductReview_ContentEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.key !== '') { + writer.uint32(10).string(message.key); + } + if (message.value !== '') { + writer.uint32(18).string(message.value); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BeamReview_BeamReviewProductReview_ContentEntry { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeamReview_BeamReviewProductReview_ContentEntry } as BeamReview_BeamReviewProductReview_ContentEntry; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.key = reader.string(); + break; + case 2: + message.value = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): BeamReview_BeamReviewProductReview_ContentEntry { + const message = { ...baseBeamReview_BeamReviewProductReview_ContentEntry } as BeamReview_BeamReviewProductReview_ContentEntry; + if (object.key !== undefined && object.key !== null) { + message.key = String(object.key); + } else { + message.key = ''; + } + if (object.value !== undefined && object.value !== null) { + message.value = String(object.value); + } else { + message.value = ''; + } + return message; + }, + + toJSON(message: BeamReview_BeamReviewProductReview_ContentEntry): unknown { + const obj: any = {}; + message.key !== undefined && (obj.key = message.key); + message.value !== undefined && (obj.value = message.value); + return obj; + }, + + fromPartial(object: DeepPartial): BeamReview_BeamReviewProductReview_ContentEntry { + const message = { ...baseBeamReview_BeamReviewProductReview_ContentEntry } as BeamReview_BeamReviewProductReview_ContentEntry; + if (object.key !== undefined && object.key !== null) { + message.key = object.key; + } else { + message.key = ''; + } + if (object.value !== undefined && object.value !== null) { + message.value = object.value; + } else { + message.value = ''; + } + return message; + }, +}; + +const baseBeam: object = { creator: '', id: '', amount: Long.ZERO, status: '', secret: '', schema: '' }; + +export const Beam = { + encode(message: Beam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.creator !== '') { + writer.uint32(10).string(message.creator); + } + if (message.id !== '') { + writer.uint32(18).string(message.id); + } + if (!message.amount.isZero()) { + writer.uint32(24).int64(message.amount); + } + if (message.status !== '') { + writer.uint32(34).string(message.status); + } + if (message.secret !== '') { + writer.uint32(42).string(message.secret); + } + if (message.schema !== '') { + writer.uint32(50).string(message.schema); + } + if (message.reward !== undefined) { + BeamReward.encode(message.reward, writer.uint32(58).fork()).ldelim(); + } + if (message.review !== undefined) { + BeamReview.encode(message.review, writer.uint32(66).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Beam { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseBeam } as Beam; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.creator = reader.string(); + break; + case 2: + message.id = reader.string(); + break; + case 3: + message.amount = reader.int64() as Long; + break; + case 4: + message.status = reader.string(); + break; + case 5: + message.secret = reader.string(); + break; + case 6: + message.schema = reader.string(); + break; + case 7: + message.reward = BeamReward.decode(reader, reader.uint32()); + break; + case 8: + message.review = BeamReview.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): Beam { + const message = { ...baseBeam } as Beam; + if (object.creator !== undefined && object.creator !== null) { + message.creator = String(object.creator); + } else { + message.creator = ''; + } + if (object.id !== undefined && object.id !== null) { + message.id = String(object.id); + } else { + message.id = ''; + } + if (object.amount !== undefined && object.amount !== null) { + message.amount = Long.fromString(object.amount); + } else { + message.amount = Long.ZERO; + } + if (object.status !== undefined && object.status !== null) { + message.status = String(object.status); + } else { + message.status = ''; + } + if (object.secret !== undefined && object.secret !== null) { + message.secret = String(object.secret); + } else { + message.secret = ''; + } + if (object.schema !== undefined && object.schema !== null) { + message.schema = String(object.schema); + } else { + message.schema = ''; + } + if (object.reward !== undefined && object.reward !== null) { + message.reward = BeamReward.fromJSON(object.reward); + } else { + message.reward = undefined; + } + if (object.review !== undefined && object.review !== null) { + message.review = BeamReview.fromJSON(object.review); + } else { + message.review = undefined; + } + return message; + }, + + toJSON(message: Beam): unknown { + const obj: any = {}; + message.creator !== undefined && (obj.creator = message.creator); + message.id !== undefined && (obj.id = message.id); + message.amount !== undefined && (obj.amount = (message.amount || Long.ZERO).toString()); + message.status !== undefined && (obj.status = message.status); + message.secret !== undefined && (obj.secret = message.secret); + message.schema !== undefined && (obj.schema = message.schema); + message.reward !== undefined && (obj.reward = message.reward ? BeamReward.toJSON(message.reward) : undefined); + message.review !== undefined && (obj.review = message.review ? BeamReview.toJSON(message.review) : undefined); + return obj; + }, + + fromPartial(object: DeepPartial): Beam { + const message = { ...baseBeam } as Beam; + if (object.creator !== undefined && object.creator !== null) { + message.creator = object.creator; + } else { + message.creator = ''; + } + if (object.id !== undefined && object.id !== null) { + message.id = object.id; + } else { + message.id = ''; + } + if (object.amount !== undefined && object.amount !== null) { + message.amount = object.amount as Long; + } else { + message.amount = Long.ZERO; + } + if (object.status !== undefined && object.status !== null) { + message.status = object.status; + } else { + message.status = ''; + } + if (object.secret !== undefined && object.secret !== null) { + message.secret = object.secret; + } else { + message.secret = ''; + } + if (object.schema !== undefined && object.schema !== null) { + message.schema = object.schema; + } else { + message.schema = ''; + } + if (object.reward !== undefined && object.reward !== null) { + message.reward = BeamReward.fromPartial(object.reward); + } else { + message.reward = undefined; + } + if (object.review !== undefined && object.review !== null) { + message.review = BeamReview.fromPartial(object.review); + } else { + message.review = undefined; + } + return message; + }, +}; + +const baseMsgOpenBeam: object = { id: '', creator: '', amount: Long.ZERO, secret: '' }; + +export const MsgOpenBeam = { + encode(message: MsgOpenBeam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.id !== '') { + writer.uint32(10).string(message.id); + } + if (message.creator !== '') { + writer.uint32(18).string(message.creator); + } + if (!message.amount.isZero()) { + writer.uint32(24).int64(message.amount); + } + if (message.secret !== '') { + writer.uint32(34).string(message.secret); + } + if (message.reward !== undefined) { + BeamReward.encode(message.reward, writer.uint32(42).fork()).ldelim(); + } + if (message.review !== undefined) { + BeamReview.encode(message.review, writer.uint32(50).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MsgOpenBeam { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseMsgOpenBeam } as MsgOpenBeam; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.string(); + break; + case 2: + message.creator = reader.string(); + break; + case 3: + message.amount = reader.int64() as Long; + break; + case 4: + message.secret = reader.string(); + break; + case 5: + message.reward = BeamReward.decode(reader, reader.uint32()); + break; + case 6: + message.review = BeamReview.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): MsgOpenBeam { + const message = { ...baseMsgOpenBeam } as MsgOpenBeam; + if (object.id !== undefined && object.id !== null) { + message.id = String(object.id); + } else { + message.id = ''; + } + if (object.creator !== undefined && object.creator !== null) { + message.creator = String(object.creator); + } else { + message.creator = ''; + } + if (object.amount !== undefined && object.amount !== null) { + message.amount = Long.fromString(object.amount); + } else { + message.amount = Long.ZERO; + } + if (object.secret !== undefined && object.secret !== null) { + message.secret = String(object.secret); + } else { + message.secret = ''; + } + if (object.reward !== undefined && object.reward !== null) { + message.reward = BeamReward.fromJSON(object.reward); + } else { + message.reward = undefined; + } + if (object.review !== undefined && object.review !== null) { + message.review = BeamReview.fromJSON(object.review); + } else { + message.review = undefined; + } + return message; + }, + + toJSON(message: MsgOpenBeam): unknown { + const obj: any = {}; + message.id !== undefined && (obj.id = message.id); + message.creator !== undefined && (obj.creator = message.creator); + message.amount !== undefined && (obj.amount = (message.amount || Long.ZERO).toString()); + message.secret !== undefined && (obj.secret = message.secret); + message.reward !== undefined && (obj.reward = message.reward ? BeamReward.toJSON(message.reward) : undefined); + message.review !== undefined && (obj.review = message.review ? BeamReview.toJSON(message.review) : undefined); + return obj; + }, + + fromPartial(object: DeepPartial): MsgOpenBeam { + const message = { ...baseMsgOpenBeam } as MsgOpenBeam; + if (object.id !== undefined && object.id !== null) { + message.id = object.id; + } else { + message.id = ''; + } + if (object.creator !== undefined && object.creator !== null) { + message.creator = object.creator; + } else { + message.creator = ''; + } + if (object.amount !== undefined && object.amount !== null) { + message.amount = object.amount as Long; + } else { + message.amount = Long.ZERO; + } + if (object.secret !== undefined && object.secret !== null) { + message.secret = object.secret; + } else { + message.secret = ''; + } + if (object.reward !== undefined && object.reward !== null) { + message.reward = BeamReward.fromPartial(object.reward); + } else { + message.reward = undefined; + } + if (object.review !== undefined && object.review !== null) { + message.review = BeamReview.fromPartial(object.review); + } else { + message.review = undefined; + } + return message; + }, +}; + +const baseMsgUpdateBeam: object = { updater: '', id: '', amount: Long.ZERO }; + +export const MsgUpdateBeam = { + encode(message: MsgUpdateBeam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.updater !== '') { + writer.uint32(10).string(message.updater); + } + if (message.id !== '') { + writer.uint32(18).string(message.id); + } + if (!message.amount.isZero()) { + writer.uint32(24).int64(message.amount); + } + if (message.reward !== undefined) { + BeamReward.encode(message.reward, writer.uint32(34).fork()).ldelim(); + } + if (message.review !== undefined) { + BeamReview.encode(message.review, writer.uint32(42).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MsgUpdateBeam { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseMsgUpdateBeam } as MsgUpdateBeam; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.updater = reader.string(); + break; + case 2: + message.id = reader.string(); + break; + case 3: + message.amount = reader.int64() as Long; + break; + case 4: + message.reward = BeamReward.decode(reader, reader.uint32()); + break; + case 5: + message.review = BeamReview.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): MsgUpdateBeam { + const message = { ...baseMsgUpdateBeam } as MsgUpdateBeam; + if (object.updater !== undefined && object.updater !== null) { + message.updater = String(object.updater); + } else { + message.updater = ''; + } + if (object.id !== undefined && object.id !== null) { + message.id = String(object.id); + } else { + message.id = ''; + } + if (object.amount !== undefined && object.amount !== null) { + message.amount = Long.fromString(object.amount); + } else { + message.amount = Long.ZERO; + } + if (object.reward !== undefined && object.reward !== null) { + message.reward = BeamReward.fromJSON(object.reward); + } else { + message.reward = undefined; + } + if (object.review !== undefined && object.review !== null) { + message.review = BeamReview.fromJSON(object.review); + } else { + message.review = undefined; + } + return message; + }, + + toJSON(message: MsgUpdateBeam): unknown { + const obj: any = {}; + message.updater !== undefined && (obj.updater = message.updater); + message.id !== undefined && (obj.id = message.id); + message.amount !== undefined && (obj.amount = (message.amount || Long.ZERO).toString()); + message.reward !== undefined && (obj.reward = message.reward ? BeamReward.toJSON(message.reward) : undefined); + message.review !== undefined && (obj.review = message.review ? BeamReview.toJSON(message.review) : undefined); + return obj; + }, + + fromPartial(object: DeepPartial): MsgUpdateBeam { + const message = { ...baseMsgUpdateBeam } as MsgUpdateBeam; + if (object.updater !== undefined && object.updater !== null) { + message.updater = object.updater; + } else { + message.updater = ''; + } + if (object.id !== undefined && object.id !== null) { + message.id = object.id; + } else { + message.id = ''; + } + if (object.amount !== undefined && object.amount !== null) { + message.amount = object.amount as Long; + } else { + message.amount = Long.ZERO; + } + if (object.reward !== undefined && object.reward !== null) { + message.reward = BeamReward.fromPartial(object.reward); + } else { + message.reward = undefined; + } + if (object.review !== undefined && object.review !== null) { + message.review = BeamReview.fromPartial(object.review); + } else { + message.review = undefined; + } + return message; + }, +}; + +const baseMsgCancelBeam: object = { updater: '', id: '' }; + +export const MsgCancelBeam = { + encode(message: MsgCancelBeam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.updater !== '') { + writer.uint32(10).string(message.updater); + } + if (message.id !== '') { + writer.uint32(18).string(message.id); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MsgCancelBeam { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseMsgCancelBeam } as MsgCancelBeam; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.updater = reader.string(); + break; + case 2: + message.id = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): MsgCancelBeam { + const message = { ...baseMsgCancelBeam } as MsgCancelBeam; + if (object.updater !== undefined && object.updater !== null) { + message.updater = String(object.updater); + } else { + message.updater = ''; + } + if (object.id !== undefined && object.id !== null) { + message.id = String(object.id); + } else { + message.id = ''; + } + return message; + }, + + toJSON(message: MsgCancelBeam): unknown { + const obj: any = {}; + message.updater !== undefined && (obj.updater = message.updater); + message.id !== undefined && (obj.id = message.id); + return obj; + }, + + fromPartial(object: DeepPartial): MsgCancelBeam { + const message = { ...baseMsgCancelBeam } as MsgCancelBeam; + if (object.updater !== undefined && object.updater !== null) { + message.updater = object.updater; + } else { + message.updater = ''; + } + if (object.id !== undefined && object.id !== null) { + message.id = object.id; + } else { + message.id = ''; + } + return message; + }, +}; + +const baseMsgCloseBeam: object = { updater: '', id: '' }; + +export const MsgCloseBeam = { + encode(message: MsgCloseBeam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.updater !== '') { + writer.uint32(10).string(message.updater); + } + if (message.id !== '') { + writer.uint32(18).string(message.id); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MsgCloseBeam { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseMsgCloseBeam } as MsgCloseBeam; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.updater = reader.string(); + break; + case 2: + message.id = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): MsgCloseBeam { + const message = { ...baseMsgCloseBeam } as MsgCloseBeam; + if (object.updater !== undefined && object.updater !== null) { + message.updater = String(object.updater); + } else { + message.updater = ''; + } + if (object.id !== undefined && object.id !== null) { + message.id = String(object.id); + } else { + message.id = ''; + } + return message; + }, + + toJSON(message: MsgCloseBeam): unknown { + const obj: any = {}; + message.updater !== undefined && (obj.updater = message.updater); + message.id !== undefined && (obj.id = message.id); + return obj; + }, + + fromPartial(object: DeepPartial): MsgCloseBeam { + const message = { ...baseMsgCloseBeam } as MsgCloseBeam; + if (object.updater !== undefined && object.updater !== null) { + message.updater = object.updater; + } else { + message.updater = ''; + } + if (object.id !== undefined && object.id !== null) { + message.id = object.id; + } else { + message.id = ''; + } + return message; + }, +}; + +const baseMsgClaimBeam: object = { claimer: '', id: '', secret: '' }; + +export const MsgClaimBeam = { + encode(message: MsgClaimBeam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.claimer !== '') { + writer.uint32(10).string(message.claimer); + } + if (message.id !== '') { + writer.uint32(18).string(message.id); + } + if (message.secret !== '') { + writer.uint32(26).string(message.secret); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MsgClaimBeam { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseMsgClaimBeam } as MsgClaimBeam; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.claimer = reader.string(); + break; + case 2: + message.id = reader.string(); + break; + case 3: + message.secret = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromJSON(object: any): MsgClaimBeam { + const message = { ...baseMsgClaimBeam } as MsgClaimBeam; + if (object.claimer !== undefined && object.claimer !== null) { + message.claimer = String(object.claimer); + } else { + message.claimer = ''; + } + if (object.id !== undefined && object.id !== null) { + message.id = String(object.id); + } else { + message.id = ''; + } + if (object.secret !== undefined && object.secret !== null) { + message.secret = String(object.secret); + } else { + message.secret = ''; + } + return message; + }, + + toJSON(message: MsgClaimBeam): unknown { + const obj: any = {}; + message.claimer !== undefined && (obj.claimer = message.claimer); + message.id !== undefined && (obj.id = message.id); + message.secret !== undefined && (obj.secret = message.secret); + return obj; + }, + + fromPartial(object: DeepPartial): MsgClaimBeam { + const message = { ...baseMsgClaimBeam } as MsgClaimBeam; + if (object.claimer !== undefined && object.claimer !== null) { + message.claimer = object.claimer; + } else { + message.claimer = ''; + } + if (object.id !== undefined && object.id !== null) { + message.id = object.id; + } else { + message.id = ''; + } + if (object.secret !== undefined && object.secret !== null) { + message.secret = object.secret; + } else { + message.secret = ''; + } + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined | Long; +export type DeepPartial = T extends Builtin + ? T + : T extends Array + ? Array> + : T extends ReadonlyArray + ? ReadonlyArray> + : T extends {} + ? { [K in keyof T]?: DeepPartial } + : Partial; + +if (_m0.util.Long !== Long) { + _m0.util.Long = Long as any; + _m0.configure(); +} diff --git a/src/messages/bank/MsgMultiSend.ts b/src/messages/bank/MsgMultiSend.ts index 29ee9de..2efd291 100644 --- a/src/messages/bank/MsgMultiSend.ts +++ b/src/messages/bank/MsgMultiSend.ts @@ -1,20 +1,15 @@ import { Message } from '../Message'; -import { Coin } from '../../types'; +import { MsgMultiSend } from '../../codec/cosmos/bank/v1beta1/tx'; +import { Input, Output } from '../../codec/cosmos/bank/v1beta1/bank'; export const MsgMultiSendUrl = '/cosmos.bank.v1beta1.MsgMultiSend'; -/** MsgMultiSend represents an arbitrary multi-in, multi-out send message. */ -export interface MsgMultiSend { - input: { address: string; coins: Coin[] }[]; - output: { address: string; coins: Coin[] }[]; -} - -export const BuildMsgMultiSend = (input: { address: string; coins: Coin[] }[], output: { address: string; coins: Coin[] }[]): Message => { +export const BuildMsgMultiSend = (inputs: Input[], outputs: Output[]): Message => { return { typeUrl: MsgMultiSendUrl, value: { - input, - output, + inputs, + outputs, } as MsgMultiSend, }; }; diff --git a/src/messages/bank/MsgSend.ts b/src/messages/bank/MsgSend.ts index fd04976..0dcac8a 100644 --- a/src/messages/bank/MsgSend.ts +++ b/src/messages/bank/MsgSend.ts @@ -1,15 +1,9 @@ import { Message } from '../Message'; import { Coin } from '../../types'; +import { MsgSend } from '../../codec/cosmos/bank/v1beta1/tx'; export const MsgSendUrl = '/cosmos.bank.v1beta1.MsgSend'; -/** MsgSend represents a message to send coins from one account to another. */ -export interface MsgSend { - fromAddress: string; - toAddress: string; - amount: Coin[]; -} - export const BuildMsgSend = (fromAddress: string, toAddress: string, amount: Coin[]): Message => { return { typeUrl: MsgSendUrl, diff --git a/src/messages/beam/MsgCancelBeam.ts b/src/messages/beam/MsgCancelBeam.ts new file mode 100644 index 0000000..ce536fa --- /dev/null +++ b/src/messages/beam/MsgCancelBeam.ts @@ -0,0 +1,14 @@ +import { Message } from '../Message'; +import { MsgCancelBeam } from '../../codec/chain/beam/beam'; + +export const MsgCancelBeamUrl = '/lum.network.beam.MsgCancelBeam'; + +export const BuildMsgCancelBeam = (updater: string, id: string): Message => { + return { + typeUrl: MsgCancelBeamUrl, + value: { + updater, + id, + } as MsgCancelBeam, + }; +}; diff --git a/src/messages/beam/MsgClaimBeam.ts b/src/messages/beam/MsgClaimBeam.ts new file mode 100644 index 0000000..a473e90 --- /dev/null +++ b/src/messages/beam/MsgClaimBeam.ts @@ -0,0 +1,15 @@ +import { Message } from '../Message'; +import { MsgClaimBeam } from '../../codec/chain/beam/beam'; + +export const MsgClaimBeamUrl = '/lum.network.beam.MsgClaimBeam'; + +export const BuildMsgClaimBeam = (claimer: string, id: string, secret: string): Message => { + return { + typeUrl: MsgClaimBeamUrl, + value: { + claimer, + id, + secret, + } as MsgClaimBeam, + }; +}; diff --git a/src/messages/beam/MsgOpenBeam.ts b/src/messages/beam/MsgOpenBeam.ts new file mode 100644 index 0000000..9377443 --- /dev/null +++ b/src/messages/beam/MsgOpenBeam.ts @@ -0,0 +1,19 @@ +import { Message } from '../Message'; +import { BeamReview, BeamReward, MsgOpenBeam } from '../../codec/chain/beam/beam'; +import Long from 'long'; + +export const MsgOpenBeamUrl = '/lum.network.beam.MsgOpenBeam'; + +export const BuildMsgOpenBeam = (id: string, creator: string, amount: Long, secret: string, reward?: BeamReward, review?: BeamReview): Message => { + return { + typeUrl: MsgOpenBeamUrl, + value: { + id, + creator, + amount, + secret, + reward, + review, + } as MsgOpenBeam, + }; +}; diff --git a/src/messages/beam/MsgUpdateBeam.ts b/src/messages/beam/MsgUpdateBeam.ts new file mode 100644 index 0000000..b93944e --- /dev/null +++ b/src/messages/beam/MsgUpdateBeam.ts @@ -0,0 +1,18 @@ +import { Message } from '../Message'; +import { BeamReview, BeamReward, MsgUpdateBeam } from '../../codec/chain/beam/beam'; +import Long from 'long'; + +export const MsgUpdateBeamUrl = '/lum.network.beam.MsgUpdateBeam'; + +export const BuildMsgUpdateBeam = (updater: string, id: string, amount: Long, reward?: BeamReward, review?: BeamReview): Message => { + return { + typeUrl: MsgUpdateBeamUrl, + value: { + updater, + id, + amount, + reward, + review, + } as MsgUpdateBeam, + }; +}; diff --git a/src/messages/beam/index.ts b/src/messages/beam/index.ts new file mode 100644 index 0000000..7c72ab6 --- /dev/null +++ b/src/messages/beam/index.ts @@ -0,0 +1,4 @@ +export * from './MsgCancelBeam'; +export * from './MsgClaimBeam'; +export * from './MsgOpenBeam'; +export * from './MsgUpdateBeam'; diff --git a/src/messages/distribution/MsgFundCommunityPool.ts b/src/messages/distribution/MsgFundCommunityPool.ts index 5f518aa..9f4167f 100644 --- a/src/messages/distribution/MsgFundCommunityPool.ts +++ b/src/messages/distribution/MsgFundCommunityPool.ts @@ -1,17 +1,9 @@ import { Message } from '../Message'; import { Coin } from '../../types'; +import { MsgFundCommunityPool } from '../../codec/cosmos/distribution/v1beta1/tx'; export const MsgFundCommunityPoolUrl = '/cosmos.distribution.v1beta1.MsgFundCommunityPool'; -/** - * MsgFundCommunityPool allows an account to directly - * fund the community pool. - */ -export interface MsgFundCommunityPool { - amount: Coin[]; - depositor: string; -} - export const BuildMsgFundCommunityPool = (depositor: string, amount: Coin[]): Message => { return { typeUrl: MsgFundCommunityPoolUrl, diff --git a/src/messages/distribution/MsgSetWithdrawAddress.ts b/src/messages/distribution/MsgSetWithdrawAddress.ts index 13ebea2..09e16fe 100644 --- a/src/messages/distribution/MsgSetWithdrawAddress.ts +++ b/src/messages/distribution/MsgSetWithdrawAddress.ts @@ -1,16 +1,8 @@ import { Message } from '../Message'; +import { MsgSetWithdrawAddress } from '../../codec/cosmos/distribution/v1beta1/tx'; export const MsgSetWithdrawAddressUrl = '/cosmos.distribution.v1beta1.MsgSetWithdrawAddress'; -/** - * MsgSetWithdrawAddress sets the withdraw address for - * a delegator (or validator self-delegation). - */ -export interface MsgSetWithdrawAddress { - delegatorAddress: string; - withdrawAddress: string; -} - export const BuildMsgSetWithdrawAddress = (delegatorAddress: string, withdrawAddress: string): Message => { return { typeUrl: MsgSetWithdrawAddressUrl, diff --git a/src/messages/distribution/MsgWithdrawDelegatorReward.ts b/src/messages/distribution/MsgWithdrawDelegatorReward.ts index 72990ab..4c36d85 100644 --- a/src/messages/distribution/MsgWithdrawDelegatorReward.ts +++ b/src/messages/distribution/MsgWithdrawDelegatorReward.ts @@ -1,16 +1,8 @@ import { Message } from '../Message'; +import { MsgWithdrawDelegatorReward } from '../../codec/cosmos/distribution/v1beta1/tx'; export const MsgWithdrawDelegatorRewardUrl = '/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward'; -/** - * MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator - * from a single validator. - */ -export interface MsgWithdrawDelegatorReward { - delegatorAddress: string; - validatorAddress: string; -} - export const BuildMsgWithdrawDelegatorReward = (delegatorAddress: string, validatorAddress: string): Message => { return { typeUrl: MsgWithdrawDelegatorRewardUrl, diff --git a/src/messages/distribution/MsgWithdrawValidatorCommission.ts b/src/messages/distribution/MsgWithdrawValidatorCommission.ts index f6538df..6363b83 100644 --- a/src/messages/distribution/MsgWithdrawValidatorCommission.ts +++ b/src/messages/distribution/MsgWithdrawValidatorCommission.ts @@ -1,15 +1,8 @@ import { Message } from '../Message'; +import { MsgWithdrawValidatorCommission } from '../../codec/cosmos/distribution/v1beta1/tx'; export const MsgWithdrawValidatorCommissionUrl = '/cosmos.bank.v1beta1.MsgSend'; -/** - * MsgWithdrawValidatorCommission withdraws the full commission to the validator - * address. - */ -export interface MsgWithdrawValidatorCommission { - validatorAddress: string; -} - export const BuildMsgWithdrawValidatorCommission = (validatorAddress: string): Message => { return { typeUrl: MsgWithdrawValidatorCommissionUrl, diff --git a/src/messages/faucet/MsgMintAndSend.ts b/src/messages/faucet/MsgMintAndSend.ts deleted file mode 100644 index 81ed074..0000000 --- a/src/messages/faucet/MsgMintAndSend.ts +++ /dev/null @@ -1,21 +0,0 @@ -export const MsgMintAndSendUrl = '/lum.network.faucet.MsgMintAndSend'; - -/** - * MsgMintAndSend defines a SDK message asking the faucet module to send you - * a set of coins, for testing purposes only. - * This module is ONLY enabled in testnet - */ -export interface MsgMintAndSend { - minter: string; - mintTime: Date; -} - -export const BuildMsgMintAndSend = (minter: string, mintTime: Date) => { - return { - typeUrl: MsgMintAndSendUrl, - value: { - minter, - mintTime, - } as MsgMintAndSend, - }; -}; diff --git a/src/messages/faucet/index.ts b/src/messages/faucet/index.ts deleted file mode 100644 index b85e870..0000000 --- a/src/messages/faucet/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './MsgMintAndSend'; diff --git a/src/messages/index.ts b/src/messages/index.ts index c4df29d..5e959c8 100644 --- a/src/messages/index.ts +++ b/src/messages/index.ts @@ -1,5 +1,5 @@ export * from './Message'; export * from './bank'; +export * from './beam'; export * from './distribution'; export * from './staking'; -export * from './faucet'; diff --git a/src/messages/staking/MsgBeginRedelegate.ts b/src/messages/staking/MsgBeginRedelegate.ts index ed18eac..7e063b4 100644 --- a/src/messages/staking/MsgBeginRedelegate.ts +++ b/src/messages/staking/MsgBeginRedelegate.ts @@ -1,19 +1,9 @@ import { Message } from '../Message'; import { Coin } from '../../types'; +import { MsgBeginRedelegate } from '../../codec/cosmos/staking/v1beta1/tx'; export const MsgBeginRedelegateUrl = '/cosmos.staking.v1beta1.MsgBeginRedelegate'; -/** - * MsgBeginRedelegate defines a SDK message for performing a redelegation - * of coins from a delegator and source validator to a destination validator. - */ -export interface MsgBeginRedelegate { - delegatorAddress: string; - validatorSrcAddress: string; - validatorDstAddress: string; - amount?: Coin; -} - export const BuildMsgBeginRedelegate = (delegatorAddress: string, validatorSrcAddress: string, validatorDstAddress: string, amount?: Coin): Message => { return { typeUrl: MsgBeginRedelegateUrl, diff --git a/src/messages/staking/MsgCreateValidator.ts b/src/messages/staking/MsgCreateValidator.ts index 2922602..f0e7f1c 100644 --- a/src/messages/staking/MsgCreateValidator.ts +++ b/src/messages/staking/MsgCreateValidator.ts @@ -1,20 +1,10 @@ import { Message } from '../Message'; import { Coin, Description, CommissionRates } from '../../types'; import { Any } from '../../codec/google/protobuf/any'; +import { MsgCreateValidator } from '../../codec/cosmos/staking/v1beta1/tx'; export const MsgCreateValidatorUrl = '/cosmos.staking.v1beta1.MsgCreateValidator'; -/** MsgCreateValidator defines a SDK message for creating a new validator. */ -export interface MsgCreateValidator { - description?: Description; - commission?: CommissionRates; - minSelfDelegation: string; - delegatorAddress: string; - validatorAddress: string; - pubkey?: Any; - value?: Coin; -} - export const BuildMsgCreateValidator = ( validatorAddress: string, delegatorAddress: string, diff --git a/src/messages/staking/MsgDelegate.ts b/src/messages/staking/MsgDelegate.ts index 1c85f0d..8e5dd32 100644 --- a/src/messages/staking/MsgDelegate.ts +++ b/src/messages/staking/MsgDelegate.ts @@ -1,18 +1,9 @@ import { Message } from '../Message'; import { Coin } from '../../types'; +import { MsgDelegate } from '../../codec/cosmos/staking/v1beta1/tx'; export const MsgDelegateUrl = '/cosmos.staking.v1beta1.MsgDelegate'; -/** - * MsgDelegate defines a SDK message for performing a delegation of coins - * from a delegator to a validator. - */ -export interface MsgDelegate { - delegatorAddress: string; - validatorAddress: string; - amount?: Coin; -} - export const BuildMsgDelegate = (delegatorAddress: string, validatorAddress: string, amount?: Coin): Message => { return { typeUrl: MsgDelegateUrl, diff --git a/src/messages/staking/MsgEditValidator.ts b/src/messages/staking/MsgEditValidator.ts index e850af0..c919820 100644 --- a/src/messages/staking/MsgEditValidator.ts +++ b/src/messages/staking/MsgEditValidator.ts @@ -1,21 +1,9 @@ import { Message } from '../Message'; import { Description } from '../../types'; +import { MsgEditValidator } from '../../codec/cosmos/staking/v1beta1/tx'; export const MsgEditValidatorUrl = '/cosmos.staking.v1beta1.MsgEditValidator'; -/** MsgEditValidator defines a SDK message for editing an existing validator. */ -export interface MsgEditValidator { - description?: Description; - validatorAddress: string; - /** - * We pass a reference to the new commission rate and min self delegation as - * it's not mandatory to update. If not updated, the deserialized rate will be - * zero with no way to distinguish if an update was intended. - * REF: #2373 - */ - commissionRate: string; - minSelfDelegation: string; -} export const BuildMsgEditValidator = (validatorAddress: string, commissionRate: string, minSelfDelegation: string, description?: Description): Message => { return { typeUrl: MsgEditValidatorUrl, diff --git a/src/messages/staking/MsgUndelegate.ts b/src/messages/staking/MsgUndelegate.ts index fdf240d..f04a167 100644 --- a/src/messages/staking/MsgUndelegate.ts +++ b/src/messages/staking/MsgUndelegate.ts @@ -1,18 +1,9 @@ import { Message } from '../Message'; import { Coin } from '../../types'; +import { MsgUndelegate } from '../../codec/cosmos/staking/v1beta1/tx'; export const MsgUndelegateUrl = '/cosmos.staking.v1beta1.MsgUndelegate'; -/** - * MsgUndelegate defines a SDK message for performing an undelegation from a - * delegate and a validator. - */ -export interface MsgUndelegate { - delegatorAddress: string; - validatorAddress: string; - amount?: Coin; -} - export const BuildMsgUndelegate = (delegatorAddress: string, validatorAddress: string, amount?: Coin): Message => { return { typeUrl: MsgUndelegateUrl, diff --git a/src/registry/index.ts b/src/registry/index.ts index 32cb9f6..4f4c4a0 100644 --- a/src/registry/index.ts +++ b/src/registry/index.ts @@ -6,6 +6,7 @@ import { PubKey } from '../codec/cosmos/crypto/secp256k1/keys'; import { MsgSend, MsgMultiSend } from '../codec/cosmos/bank/v1beta1/tx'; import { MsgFundCommunityPool, MsgSetWithdrawAddress, MsgWithdrawDelegatorReward, MsgWithdrawValidatorCommission } from '../codec/cosmos/distribution/v1beta1/tx'; import { MsgBeginRedelegate, MsgCreateValidator, MsgDelegate, MsgEditValidator, MsgUndelegate } from '../codec/cosmos/staking/v1beta1/tx'; +import { MsgCancelBeam, MsgClaimBeam, MsgOpenBeam, MsgUpdateBeam } from '../codec/chain/beam/beam'; const registryTypes: Iterable<[string, GeneratedType]> = [ ['/cosmos.crypto.ed25519.PubKey', PubKey as GeneratedType], @@ -20,6 +21,10 @@ const registryTypes: Iterable<[string, GeneratedType]> = [ ['/cosmos.staking.v1beta1.MsgDelegate', MsgDelegate as GeneratedType], ['/cosmos.staking.v1beta1.MsgEditValidator', MsgEditValidator as GeneratedType], ['/cosmos.staking.v1beta1.MsgUndelegate', MsgUndelegate as GeneratedType], + ['/lum.network.beam.MsgOpenBeam', MsgOpenBeam as GeneratedType], + ['/lum.network.beam.MsgUpdateBeam', MsgUpdateBeam as GeneratedType], + ['/lum.network.beam.MsgCancelBeam', MsgCancelBeam as GeneratedType], + ['/lum.network.beam.MsgClaimBeam', MsgClaimBeam as GeneratedType], ]; class ExtendedRegistry extends Registry { @@ -27,5 +32,6 @@ class ExtendedRegistry extends Registry { return Tx.decode(tx); }; } + export const LumAminoRegistry = new AminoTypes(); export const LumRegistry = new ExtendedRegistry(registryTypes); diff --git a/tests/client.test.ts b/tests/client.test.ts index de2233b..c3d9d85 100644 --- a/tests/client.test.ts +++ b/tests/client.test.ts @@ -1,29 +1,78 @@ -import { LumWallet, LumWalletFactory, LumClient, LumUtils, LumConstants, LumRegistry, LumTypes } from '../src'; +import { LumWallet, LumWalletFactory, LumClient, LumUtils, LumConstants, LumRegistry, LumTypes, LumMessages } from "../src"; +import axios from "axios"; +import Long from "long"; -describe('LumClient', () => { +const sleep = (millis: number): Promise => { + return new Promise(resolve => setTimeout(resolve, millis)); +}; + +const randomString = (): string => { + return Math.random().toString(36).substring(7); +} + +describe("LumClient", () => { let clt: LumClient; let w1: LumWallet; let w2: LumWallet; beforeAll(async () => { - clt = await LumClient.connect('http://node0.testnet.lum.network/rpc'); + clt = await LumClient.connect("http://node0.testnet.lum.network/rpc"); + + // Prepare the wallets w1 = await LumWalletFactory.fromMnemonic(LumUtils.generateMnemonic()); w2 = await LumWalletFactory.fromMnemonic(LumUtils.generateMnemonic()); expect(w1.getAddress()).not.toEqual(w2.getAddress()); + + // Seed them with faucet coins each + await axios.get(`https://bridge.testnet.lum.network/faucet/${w1.getAddress()}`); + await axios.get(`https://bridge.testnet.lum.network/faucet/${w2.getAddress()}`); }); afterAll(async () => { await expect(clt.disconnect()).resolves.toBeTruthy(); }); - it('Should expose basic information', async () => { + it("Should be able to use beam features", async () => { + const beamId = randomString(); + + // Here we wait until the faucet transaction get dispatched and the account finally exists on the blockchain + // This should be improved since... you know... + let acc: LumTypes.Account = null; + while(acc === null){ + acc = await clt.getAccount(w1.getAddress()); + await sleep(1000); + } + expect(acc).toBeTruthy(); + + const chainId = await clt.getChainId(); + + const openBeamMsg = LumMessages.BuildMsgOpenBeam(beamId, w1.getAddress(), new Long(100), "test", null, null); + + const fee = { + amount: [{ denom: LumConstants.MicroLumDenom, amount: '1' }], + gas: '100000', + }; + const doc = { + accountNumber: acc.accountNumber, + chainId, + fee: fee, + memo: 'Just a open beam transaction', + messages: [openBeamMsg], + sequence: acc.sequence, + }; + + const tx = await clt.signAndBroadcastTx(w1, doc); + expect(tx.deliverTx.code).toBe(0); + }) + + it("Should expose basic information", async () => { const height = (await clt.getBlockHeight()) - 1; - expect(clt.getChainId()).resolves.toEqual('lumnetwork-testnet'); + expect(clt.getChainId()).resolves.toEqual("lumnetwork-testnet"); expect(height).toBeGreaterThan(0); expect(clt.getBlock(height)).resolves.toBeTruthy(); }); - it('should expose tendermint rpcs', async () => { + it("should expose tendermint rpcs", async () => { const height = (await clt.getBlockHeight()) - 1; expect(height).toBeGreaterThan(0); expect(clt.tmClient.health()).resolves.toBeNull(); @@ -36,7 +85,7 @@ describe('LumClient', () => { expect(clt.tmClient.validatorsAll(height)).resolves.toBeTruthy(); }); - it('Should expose bank module', async () => { + it("Should expose bank module", async () => { const supplies = await clt.queryClient.bank.unverified.totalSupply(); expect(supplies).toBeTruthy(); expect(supplies.length).toBeGreaterThan(0); @@ -45,7 +94,7 @@ describe('LumClient', () => { expect(parseFloat(lumSupply.amount)).toBeGreaterThan(0); }); - it('Should expose staking module', async () => { + it("Should expose staking module", async () => { const validators = await clt.tmClient.validatorsAll(); expect(validators.validators.length).toBeGreaterThanOrEqual(1); const block = await clt.getBlock(); @@ -67,7 +116,7 @@ describe('LumClient', () => { expect(bootVal).toBeTruthy(); // Get staking validator by matching it using pubkeys - const stakers = await clt.queryClient.staking.unverified.validators('BOND_STATUS_BONDED'); + const stakers = await clt.queryClient.staking.unverified.validators("BOND_STATUS_BONDED"); const bootStak = stakers.validators.filter((s) => LumUtils.toHex((LumRegistry.decode(s.consensusPubkey) as LumTypes.PubKey).key) === LumUtils.toHex(bootVal.pubkey.data))[0]; expect(bootVal).toBeTruthy(); @@ -85,7 +134,7 @@ describe('LumClient', () => { expect(parseFloat(lumBalance.amount)).toBeGreaterThan(0); }); - it('Should expose distribution module', async () => { + it("Should expose distribution module", async () => { // Get validators const validators = await clt.tmClient.validatorsAll(); expect(validators.validators.length).toBeGreaterThanOrEqual(1); @@ -98,7 +147,7 @@ describe('LumClient', () => { expect(bootVal).toBeTruthy(); // Get genesis validator account address - const stakers = await clt.queryClient.staking.unverified.validators('BOND_STATUS_BONDED'); + const stakers = await clt.queryClient.staking.unverified.validators("BOND_STATUS_BONDED"); const bootStak = stakers.validators.filter((s) => LumUtils.toHex((LumRegistry.decode(s.consensusPubkey) as LumTypes.PubKey).key) === LumUtils.toHex(bootVal.pubkey.data))[0]; expect(bootVal).toBeTruthy(); @@ -114,4 +163,8 @@ describe('LumClient', () => { expect(delegValidators).toBeTruthy(); expect(delegValidators.validators.length).toBeGreaterThan(0); }); + + it("Should open a beam", async () => { + + }); }); diff --git a/tests/faucet.test.ts b/tests/faucet.test.ts deleted file mode 100644 index acf7c1a..0000000 --- a/tests/faucet.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { LumClient, LumUtils, LumWallet, LumWalletFactory } from '../src'; - -describe('Faucet', () => { - let clt: LumClient; - let w1: LumWallet; - - beforeAll(async () => { - clt = await LumClient.connect('http://node0.testnet.lum.network/rpc'); - w1 = await LumWalletFactory.fromMnemonic(LumUtils.generateMnemonic()); - }); - - afterAll(async () => { - await expect(clt.disconnect()).resolves.toBeTruthy(); - }); - - it('Should build and dispatch a mint message', async () => { - // WIP - // const mintMsg = LumMessages.BuildMsgMintAndSend(w1.getAddress(), new Date()); - // const fee = { - // amount: [{ denom: LumConstants.MicroLumDenom, amount: '0' }], - // gas: '100000', - // }; - // const chainId = await clt.getChainId(); - // const acc = await clt.getAccount(w1.getAddress()); - // const doc = { - // accountNumber: acc.accountNumber, - // chainId, - // fee: fee, - // memo: 'I need a dollar!', - // messages: [mintMsg], - // sequence: acc.sequence, - // }; - // const broadcastResult = await clt.signAndBroadcastTx(w1, doc); - // expect(LumUtils.broadcastTxCommitSuccess(broadcastResult)).toBeTruthy(); - }); -}); diff --git a/yarn.lock b/yarn.lock index 45efd73..7549336 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6245,24 +6245,25 @@ ts-poet@^4.5.0: lodash "^4.17.15" prettier "^2.0.2" -ts-proto-descriptors@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-proto-descriptors/-/ts-proto-descriptors-1.2.0.tgz#47fdef5dc640d2c87fbe0c010678f009e79f63bc" - integrity sha512-0t2WITzCiQ/3H6zPuFrFFOj2jhH6xZNu7agS7aKecKrz7tjRMW9VrmlBlJXslTTC3K7/4phV4qlsP5fOfLxuDg== +ts-proto-descriptors@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ts-proto-descriptors/-/ts-proto-descriptors-1.2.1.tgz#3ff4e2bfcabaf1a59e8faff6f0518cd5d25fa16e" + integrity sha512-iSHiQAaovi9sBwjiSCca/E089uv0IMt9Cfe0wV5AJwZppGa47yfih97Q+1006bdSLWkxf5Pk3VDQnt1yRTMV8w== dependencies: + long "^4.0.0" protobufjs "^6.8.8" -ts-proto@^1.67.0: - version "1.67.0" - resolved "https://registry.yarnpkg.com/ts-proto/-/ts-proto-1.67.0.tgz#27c45852e5640daa260750a91341026e49dfce40" - integrity sha512-+a7zleIP3EuZucu8B/HgSqzZarYHSeZ9z2KYK0/P9K8meSuLKBFB5yipYU0VK78FxAdX+u//ZTGvwe2Pzq1XfA== +ts-proto@^1.79.7: + version "1.79.7" + resolved "https://registry.yarnpkg.com/ts-proto/-/ts-proto-1.79.7.tgz#48d96f8cfb891da57b07f3f0dd9f0231801069d1" + integrity sha512-r6tO0XjGXb0zLckAPmxCaw1jaG0hPqiIoXLuXtToezY3vlkOs/FGn26RyVY8RtgqwEPDo7SnY1CS6G0O03VHfA== dependencies: "@types/object-hash" "^1.3.0" dataloader "^1.4.0" object-hash "^1.3.1" protobufjs "^6.8.8" ts-poet "^4.5.0" - ts-proto-descriptors "^1.2.0" + ts-proto-descriptors "^1.2.1" tslib@^1.8.1, tslib@^1.9.0: version "1.14.1"