mirror of
https://github.com/cosmos/cosmjs.git
synced 2025-03-10 21:49:15 +00:00
Implement MsgSend using decorators
This commit is contained in:
parent
1e4122f8d3
commit
d1a069e94e
@ -41,6 +41,7 @@
|
||||
"protobufjs": "~6.9.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@cosmjs/encoding": "^0.20.0",
|
||||
"@cosmjs/utils": "^0.20.0"
|
||||
}
|
||||
}
|
||||
|
37
packages/demo-protobuf/src/msgs.spec.ts
Normal file
37
packages/demo-protobuf/src/msgs.spec.ts
Normal file
@ -0,0 +1,37 @@
|
||||
/* eslint-disable @typescript-eslint/camelcase */
|
||||
import { fromHex } from "@cosmjs/encoding";
|
||||
|
||||
import { cosmos_sdk as cosmosSdk } from "./generated/codecimpl";
|
||||
import { Coin, MsgSend } from "./msgs";
|
||||
|
||||
describe("msgs", () => {
|
||||
it("encodes decorated MsgSend equally to static code", () => {
|
||||
const alice = fromHex("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||
const bob = fromHex("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB");
|
||||
const amount = [
|
||||
new Coin({ denom: "utoken", amount: "123" }),
|
||||
new Coin({ denom: "ustake", amount: "654" }),
|
||||
];
|
||||
const donation = new MsgSend({ from_address: alice, to_address: bob, amount });
|
||||
|
||||
const expected = cosmosSdk.x.bank.v1.MsgSend.encode(
|
||||
cosmosSdk.x.bank.v1.MsgSend.create({
|
||||
fromAddress: alice,
|
||||
toAddress: bob,
|
||||
amount: [
|
||||
cosmosSdk.v1.Coin.create({
|
||||
denom: "utoken",
|
||||
amount: "123",
|
||||
}),
|
||||
cosmosSdk.v1.Coin.create({
|
||||
denom: "ustake",
|
||||
amount: "654",
|
||||
}),
|
||||
],
|
||||
}),
|
||||
).finish();
|
||||
|
||||
const encoded = MsgSend.encode(donation).finish();
|
||||
expect(encoded).toEqual(expected);
|
||||
});
|
||||
});
|
27
packages/demo-protobuf/src/msgs.ts
Normal file
27
packages/demo-protobuf/src/msgs.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import { Message } from "protobufjs";
|
||||
|
||||
import { cosmosField, cosmosMessage } from "./decorator";
|
||||
import { Registry } from "./registry";
|
||||
|
||||
export const defaultRegistry = new Registry();
|
||||
|
||||
@cosmosMessage(defaultRegistry, "/cosmos.Coin")
|
||||
export class Coin extends Message<{}> {
|
||||
@cosmosField.string(1)
|
||||
public readonly denom?: string;
|
||||
|
||||
@cosmosField.string(2)
|
||||
public readonly amount?: string;
|
||||
}
|
||||
|
||||
@cosmosMessage(defaultRegistry, "/cosmos.bank.MsgSend")
|
||||
export class MsgSend extends Message<{}> {
|
||||
@cosmosField.bytes(1)
|
||||
public readonly from_address?: Uint8Array;
|
||||
|
||||
@cosmosField.bytes(2)
|
||||
public readonly to_address?: Uint8Array;
|
||||
|
||||
@cosmosField.repeatedNested(3, Coin)
|
||||
public readonly amount?: readonly Coin[];
|
||||
}
|
12
packages/demo-protobuf/types/msgs.d.ts
vendored
Normal file
12
packages/demo-protobuf/types/msgs.d.ts
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
import { Message } from "protobufjs";
|
||||
import { Registry } from "./registry";
|
||||
export declare const defaultRegistry: Registry;
|
||||
export declare class Coin extends Message<{}> {
|
||||
readonly denom?: string;
|
||||
readonly amount?: string;
|
||||
}
|
||||
export declare class MsgSend extends Message<{}> {
|
||||
readonly from_address?: Uint8Array;
|
||||
readonly to_address?: Uint8Array;
|
||||
readonly amount?: readonly Coin[];
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user