Merge pull request #1081 from cosmos/remove-default-aminotypes
Remove default types from AminoTypes
This commit is contained in:
@@ -44,6 +44,7 @@ and this project adheres to
|
|||||||
dependencies. This should also reduce the bundle size as only the English
|
dependencies. This should also reduce the bundle size as only the English
|
||||||
wordlist is shipped. ([#966])
|
wordlist is shipped. ([#966])
|
||||||
- @cosmjs/cli: Rename binary `cosmwasm-cli` to `cosmjs-cli` ([#1033]).
|
- @cosmjs/cli: Rename binary `cosmwasm-cli` to `cosmjs-cli` ([#1033]).
|
||||||
|
- @cosmjs/stargate & @cosmjs/cosmwasm-stargate: Removed default types from AminoTypes. ([1079])
|
||||||
|
|
||||||
[#927]: https://github.com/cosmos/cosmjs/issues/927
|
[#927]: https://github.com/cosmos/cosmjs/issues/927
|
||||||
[#955]: https://github.com/cosmos/cosmjs/issues/955
|
[#955]: https://github.com/cosmos/cosmjs/issues/955
|
||||||
@@ -55,6 +56,7 @@ and this project adheres to
|
|||||||
[#1026]: https://github.com/cosmos/cosmjs/issues/1026
|
[#1026]: https://github.com/cosmos/cosmjs/issues/1026
|
||||||
[#1033]: https://github.com/cosmos/cosmjs/issues/1033
|
[#1033]: https://github.com/cosmos/cosmjs/issues/1033
|
||||||
[#1053]: https://github.com/cosmos/cosmjs/issues/1053
|
[#1053]: https://github.com/cosmos/cosmjs/issues/1053
|
||||||
|
[#1079]: https://github.com/cosmos/cosmjs/issues/1079
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ describe("AminoTypes", () => {
|
|||||||
wasmByteCode: fromBase64("WUVMTE9XIFNVQk1BUklORQ=="),
|
wasmByteCode: fromBase64("WUVMTE9XIFNVQk1BUklORQ=="),
|
||||||
instantiatePermission: undefined,
|
instantiatePermission: undefined,
|
||||||
};
|
};
|
||||||
const aminoMsg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).toAmino({
|
const aminoMsg = new AminoTypes(createWasmAminoConverters()).toAmino({
|
||||||
typeUrl: "/cosmwasm.wasm.v1.MsgStoreCode",
|
typeUrl: "/cosmwasm.wasm.v1.MsgStoreCode",
|
||||||
value: msg,
|
value: msg,
|
||||||
});
|
});
|
||||||
@@ -54,12 +54,10 @@ describe("AminoTypes", () => {
|
|||||||
funds: coins(1234, "ucosm"),
|
funds: coins(1234, "ucosm"),
|
||||||
admin: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
admin: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
};
|
};
|
||||||
const aminoMsg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).toAmino(
|
const aminoMsg = new AminoTypes(createWasmAminoConverters()).toAmino({
|
||||||
{
|
typeUrl: "/cosmwasm.wasm.v1.MsgInstantiateContract",
|
||||||
typeUrl: "/cosmwasm.wasm.v1.MsgInstantiateContract",
|
value: msg,
|
||||||
value: msg,
|
});
|
||||||
},
|
|
||||||
);
|
|
||||||
const expected: AminoMsgInstantiateContract = {
|
const expected: AminoMsgInstantiateContract = {
|
||||||
type: "wasm/MsgInstantiateContract",
|
type: "wasm/MsgInstantiateContract",
|
||||||
value: {
|
value: {
|
||||||
@@ -84,12 +82,10 @@ describe("AminoTypes", () => {
|
|||||||
funds: coins(1234, "ucosm"),
|
funds: coins(1234, "ucosm"),
|
||||||
admin: "",
|
admin: "",
|
||||||
};
|
};
|
||||||
const aminoMsg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).toAmino(
|
const aminoMsg = new AminoTypes(createWasmAminoConverters()).toAmino({
|
||||||
{
|
typeUrl: "/cosmwasm.wasm.v1.MsgInstantiateContract",
|
||||||
typeUrl: "/cosmwasm.wasm.v1.MsgInstantiateContract",
|
value: msg,
|
||||||
value: msg,
|
});
|
||||||
},
|
|
||||||
);
|
|
||||||
const expected: AminoMsgInstantiateContract = {
|
const expected: AminoMsgInstantiateContract = {
|
||||||
type: "wasm/MsgInstantiateContract",
|
type: "wasm/MsgInstantiateContract",
|
||||||
value: {
|
value: {
|
||||||
@@ -111,7 +107,7 @@ describe("AminoTypes", () => {
|
|||||||
newAdmin: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
newAdmin: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
};
|
};
|
||||||
const aminoMsg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).toAmino({
|
const aminoMsg = new AminoTypes(createWasmAminoConverters()).toAmino({
|
||||||
typeUrl: "/cosmwasm.wasm.v1.MsgUpdateAdmin",
|
typeUrl: "/cosmwasm.wasm.v1.MsgUpdateAdmin",
|
||||||
value: msg,
|
value: msg,
|
||||||
});
|
});
|
||||||
@@ -131,7 +127,7 @@ describe("AminoTypes", () => {
|
|||||||
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
};
|
};
|
||||||
const aminoMsg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).toAmino({
|
const aminoMsg = new AminoTypes(createWasmAminoConverters()).toAmino({
|
||||||
typeUrl: "/cosmwasm.wasm.v1.MsgClearAdmin",
|
typeUrl: "/cosmwasm.wasm.v1.MsgClearAdmin",
|
||||||
value: msg,
|
value: msg,
|
||||||
});
|
});
|
||||||
@@ -152,7 +148,7 @@ describe("AminoTypes", () => {
|
|||||||
msg: toUtf8(`{"foo":"bar"}`),
|
msg: toUtf8(`{"foo":"bar"}`),
|
||||||
funds: coins(1234, "ucosm"),
|
funds: coins(1234, "ucosm"),
|
||||||
};
|
};
|
||||||
const aminoMsg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).toAmino({
|
const aminoMsg = new AminoTypes(createWasmAminoConverters()).toAmino({
|
||||||
typeUrl: "/cosmwasm.wasm.v1.MsgExecuteContract",
|
typeUrl: "/cosmwasm.wasm.v1.MsgExecuteContract",
|
||||||
value: msg,
|
value: msg,
|
||||||
});
|
});
|
||||||
@@ -175,7 +171,7 @@ describe("AminoTypes", () => {
|
|||||||
codeId: Long.fromString("98765"),
|
codeId: Long.fromString("98765"),
|
||||||
msg: toUtf8(`{"foo":"bar"}`),
|
msg: toUtf8(`{"foo":"bar"}`),
|
||||||
};
|
};
|
||||||
const aminoMsg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).toAmino({
|
const aminoMsg = new AminoTypes(createWasmAminoConverters()).toAmino({
|
||||||
typeUrl: "/cosmwasm.wasm.v1.MsgMigrateContract",
|
typeUrl: "/cosmwasm.wasm.v1.MsgMigrateContract",
|
||||||
value: msg,
|
value: msg,
|
||||||
});
|
});
|
||||||
@@ -201,9 +197,7 @@ describe("AminoTypes", () => {
|
|||||||
wasm_byte_code: "WUVMTE9XIFNVQk1BUklORQ==",
|
wasm_byte_code: "WUVMTE9XIFNVQk1BUklORQ==",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const msg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).fromAmino(
|
const msg = new AminoTypes(createWasmAminoConverters()).fromAmino(aminoMsg);
|
||||||
aminoMsg,
|
|
||||||
);
|
|
||||||
const expectedValue: MsgStoreCode = {
|
const expectedValue: MsgStoreCode = {
|
||||||
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
wasmByteCode: fromBase64("WUVMTE9XIFNVQk1BUklORQ=="),
|
wasmByteCode: fromBase64("WUVMTE9XIFNVQk1BUklORQ=="),
|
||||||
@@ -229,9 +223,7 @@ describe("AminoTypes", () => {
|
|||||||
admin: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
admin: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const msg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).fromAmino(
|
const msg = new AminoTypes(createWasmAminoConverters()).fromAmino(aminoMsg);
|
||||||
aminoMsg,
|
|
||||||
);
|
|
||||||
const expectedValue: MsgInstantiateContract = {
|
const expectedValue: MsgInstantiateContract = {
|
||||||
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
codeId: Long.fromString("12345"),
|
codeId: Long.fromString("12345"),
|
||||||
@@ -258,9 +250,7 @@ describe("AminoTypes", () => {
|
|||||||
funds: coins(1234, "ucosm"),
|
funds: coins(1234, "ucosm"),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const msg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).fromAmino(
|
const msg = new AminoTypes(createWasmAminoConverters()).fromAmino(aminoMsg);
|
||||||
aminoMsg,
|
|
||||||
);
|
|
||||||
const expectedValue: MsgInstantiateContract = {
|
const expectedValue: MsgInstantiateContract = {
|
||||||
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
codeId: Long.fromString("12345"),
|
codeId: Long.fromString("12345"),
|
||||||
@@ -285,9 +275,7 @@ describe("AminoTypes", () => {
|
|||||||
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const msg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).fromAmino(
|
const msg = new AminoTypes(createWasmAminoConverters()).fromAmino(aminoMsg);
|
||||||
aminoMsg,
|
|
||||||
);
|
|
||||||
const expectedValue: MsgUpdateAdmin = {
|
const expectedValue: MsgUpdateAdmin = {
|
||||||
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
newAdmin: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
newAdmin: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
@@ -307,9 +295,7 @@ describe("AminoTypes", () => {
|
|||||||
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const msg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).fromAmino(
|
const msg = new AminoTypes(createWasmAminoConverters()).fromAmino(aminoMsg);
|
||||||
aminoMsg,
|
|
||||||
);
|
|
||||||
const expectedValue: MsgClearAdmin = {
|
const expectedValue: MsgClearAdmin = {
|
||||||
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
@@ -330,9 +316,7 @@ describe("AminoTypes", () => {
|
|||||||
funds: coins(1234, "ucosm"),
|
funds: coins(1234, "ucosm"),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const msg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).fromAmino(
|
const msg = new AminoTypes(createWasmAminoConverters()).fromAmino(aminoMsg);
|
||||||
aminoMsg,
|
|
||||||
);
|
|
||||||
const expectedValue: MsgExecuteContract = {
|
const expectedValue: MsgExecuteContract = {
|
||||||
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
@@ -355,9 +339,7 @@ describe("AminoTypes", () => {
|
|||||||
msg: { foo: "bar" },
|
msg: { foo: "bar" },
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const msg = new AminoTypes({ prefix: "cosmos", additions: createWasmAminoConverters() }).fromAmino(
|
const msg = new AminoTypes(createWasmAminoConverters()).fromAmino(aminoMsg);
|
||||||
aminoMsg,
|
|
||||||
);
|
|
||||||
const expectedValue: MsgMigrateContract = {
|
const expectedValue: MsgMigrateContract = {
|
||||||
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
contract: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import {
|
|||||||
assertIsDeliverTxSuccess,
|
assertIsDeliverTxSuccess,
|
||||||
coin,
|
coin,
|
||||||
coins,
|
coins,
|
||||||
|
createStakingAminoConverters,
|
||||||
MsgDelegateEncodeObject,
|
MsgDelegateEncodeObject,
|
||||||
MsgSendEncodeObject,
|
MsgSendEncodeObject,
|
||||||
} from "@cosmjs/stargate";
|
} from "@cosmjs/stargate";
|
||||||
@@ -736,6 +737,7 @@ describe("SigningCosmWasmClient", () => {
|
|||||||
const wallet = await Secp256k1HdWallet.fromMnemonic(alice.mnemonic, { prefix: wasmd.prefix });
|
const wallet = await Secp256k1HdWallet.fromMnemonic(alice.mnemonic, { prefix: wasmd.prefix });
|
||||||
const client = await SigningCosmWasmClient.connectWithSigner(wasmd.endpoint, wallet, {
|
const client = await SigningCosmWasmClient.connectWithSigner(wasmd.endpoint, wallet, {
|
||||||
...defaultSigningClientOptions,
|
...defaultSigningClientOptions,
|
||||||
|
aminoTypes: new AminoTypes(createStakingAminoConverters(wasmd.prefix)),
|
||||||
prefix: wasmd.prefix,
|
prefix: wasmd.prefix,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -851,39 +853,36 @@ describe("SigningCosmWasmClient", () => {
|
|||||||
};
|
};
|
||||||
customRegistry.register(msgDelegateTypeUrl, CustomMsgDelegate);
|
customRegistry.register(msgDelegateTypeUrl, CustomMsgDelegate);
|
||||||
const customAminoTypes = new AminoTypes({
|
const customAminoTypes = new AminoTypes({
|
||||||
prefix: "cosmos",
|
"/cosmos.staking.v1beta1.MsgDelegate": {
|
||||||
additions: {
|
aminoType: "cosmos-sdk/MsgDelegate",
|
||||||
"/cosmos.staking.v1beta1.MsgDelegate": {
|
toAmino: ({
|
||||||
aminoType: "cosmos-sdk/MsgDelegate",
|
customDelegatorAddress,
|
||||||
toAmino: ({
|
customValidatorAddress,
|
||||||
customDelegatorAddress,
|
customAmount,
|
||||||
customValidatorAddress,
|
}: CustomMsgDelegate): AminoMsgDelegate["value"] => {
|
||||||
customAmount,
|
assert(customDelegatorAddress, "missing customDelegatorAddress");
|
||||||
}: CustomMsgDelegate): AminoMsgDelegate["value"] => {
|
assert(customValidatorAddress, "missing validatorAddress");
|
||||||
assert(customDelegatorAddress, "missing customDelegatorAddress");
|
assert(customAmount, "missing amount");
|
||||||
assert(customValidatorAddress, "missing validatorAddress");
|
assert(customAmount.amount, "missing amount.amount");
|
||||||
assert(customAmount, "missing amount");
|
assert(customAmount.denom, "missing amount.denom");
|
||||||
assert(customAmount.amount, "missing amount.amount");
|
return {
|
||||||
assert(customAmount.denom, "missing amount.denom");
|
delegator_address: customDelegatorAddress,
|
||||||
return {
|
validator_address: customValidatorAddress,
|
||||||
delegator_address: customDelegatorAddress,
|
amount: {
|
||||||
validator_address: customValidatorAddress,
|
amount: customAmount.amount,
|
||||||
amount: {
|
denom: customAmount.denom,
|
||||||
amount: customAmount.amount,
|
},
|
||||||
denom: customAmount.denom,
|
};
|
||||||
},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
fromAmino: ({
|
|
||||||
delegator_address,
|
|
||||||
validator_address,
|
|
||||||
amount,
|
|
||||||
}: AminoMsgDelegate["value"]): CustomMsgDelegate => ({
|
|
||||||
customDelegatorAddress: delegator_address,
|
|
||||||
customValidatorAddress: validator_address,
|
|
||||||
customAmount: Coin.fromPartial(amount),
|
|
||||||
}),
|
|
||||||
},
|
},
|
||||||
|
fromAmino: ({
|
||||||
|
delegator_address,
|
||||||
|
validator_address,
|
||||||
|
amount,
|
||||||
|
}: AminoMsgDelegate["value"]): CustomMsgDelegate => ({
|
||||||
|
customDelegatorAddress: delegator_address,
|
||||||
|
customValidatorAddress: validator_address,
|
||||||
|
customAmount: Coin.fromPartial(amount),
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const options = {
|
const options = {
|
||||||
@@ -921,6 +920,7 @@ describe("SigningCosmWasmClient", () => {
|
|||||||
});
|
});
|
||||||
const client = await SigningCosmWasmClient.connectWithSigner(wasmd.endpoint, wallet, {
|
const client = await SigningCosmWasmClient.connectWithSigner(wasmd.endpoint, wallet, {
|
||||||
...defaultSigningClientOptions,
|
...defaultSigningClientOptions,
|
||||||
|
aminoTypes: new AminoTypes(createStakingAminoConverters(wasmd.prefix)),
|
||||||
prefix: wasmd.prefix,
|
prefix: wasmd.prefix,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1067,6 +1067,7 @@ describe("SigningCosmWasmClient", () => {
|
|||||||
const wallet = await Secp256k1HdWallet.fromMnemonic(alice.mnemonic, { prefix: wasmd.prefix });
|
const wallet = await Secp256k1HdWallet.fromMnemonic(alice.mnemonic, { prefix: wasmd.prefix });
|
||||||
const client = await SigningCosmWasmClient.connectWithSigner(wasmd.endpoint, wallet, {
|
const client = await SigningCosmWasmClient.connectWithSigner(wasmd.endpoint, wallet, {
|
||||||
...defaultSigningClientOptions,
|
...defaultSigningClientOptions,
|
||||||
|
aminoTypes: new AminoTypes(createStakingAminoConverters(wasmd.prefix)),
|
||||||
prefix: wasmd.prefix,
|
prefix: wasmd.prefix,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1156,37 +1157,34 @@ describe("SigningCosmWasmClient", () => {
|
|||||||
};
|
};
|
||||||
customRegistry.register(msgDelegateTypeUrl, CustomMsgDelegate);
|
customRegistry.register(msgDelegateTypeUrl, CustomMsgDelegate);
|
||||||
const customAminoTypes = new AminoTypes({
|
const customAminoTypes = new AminoTypes({
|
||||||
prefix: "cosmos",
|
"/cosmos.staking.v1beta1.MsgDelegate": {
|
||||||
additions: {
|
aminoType: "cosmos-sdk/MsgDelegate",
|
||||||
"/cosmos.staking.v1beta1.MsgDelegate": {
|
toAmino: ({
|
||||||
aminoType: "cosmos-sdk/MsgDelegate",
|
customDelegatorAddress,
|
||||||
toAmino: ({
|
customValidatorAddress,
|
||||||
customDelegatorAddress,
|
customAmount,
|
||||||
customValidatorAddress,
|
}: CustomMsgDelegate): AminoMsgDelegate["value"] => {
|
||||||
customAmount,
|
assert(customDelegatorAddress, "missing customDelegatorAddress");
|
||||||
}: CustomMsgDelegate): AminoMsgDelegate["value"] => {
|
assert(customValidatorAddress, "missing validatorAddress");
|
||||||
assert(customDelegatorAddress, "missing customDelegatorAddress");
|
assert(customAmount, "missing amount");
|
||||||
assert(customValidatorAddress, "missing validatorAddress");
|
return {
|
||||||
assert(customAmount, "missing amount");
|
delegator_address: customDelegatorAddress,
|
||||||
return {
|
validator_address: customValidatorAddress,
|
||||||
delegator_address: customDelegatorAddress,
|
amount: {
|
||||||
validator_address: customValidatorAddress,
|
amount: customAmount.amount,
|
||||||
amount: {
|
denom: customAmount.denom,
|
||||||
amount: customAmount.amount,
|
},
|
||||||
denom: customAmount.denom,
|
};
|
||||||
},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
fromAmino: ({
|
|
||||||
delegator_address,
|
|
||||||
validator_address,
|
|
||||||
amount,
|
|
||||||
}: AminoMsgDelegate["value"]): CustomMsgDelegate => ({
|
|
||||||
customDelegatorAddress: delegator_address,
|
|
||||||
customValidatorAddress: validator_address,
|
|
||||||
customAmount: Coin.fromPartial(amount),
|
|
||||||
}),
|
|
||||||
},
|
},
|
||||||
|
fromAmino: ({
|
||||||
|
delegator_address,
|
||||||
|
validator_address,
|
||||||
|
amount,
|
||||||
|
}: AminoMsgDelegate["value"]): CustomMsgDelegate => ({
|
||||||
|
customDelegatorAddress: delegator_address,
|
||||||
|
customValidatorAddress: validator_address,
|
||||||
|
customAmount: Coin.fromPartial(amount),
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const options = {
|
const options = {
|
||||||
@@ -1226,6 +1224,7 @@ describe("SigningCosmWasmClient", () => {
|
|||||||
});
|
});
|
||||||
const client = await SigningCosmWasmClient.connectWithSigner(wasmd.endpoint, wallet, {
|
const client = await SigningCosmWasmClient.connectWithSigner(wasmd.endpoint, wallet, {
|
||||||
...defaultSigningClientOptions,
|
...defaultSigningClientOptions,
|
||||||
|
aminoTypes: new AminoTypes(createStakingAminoConverters(wasmd.prefix)),
|
||||||
prefix: wasmd.prefix,
|
prefix: wasmd.prefix,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import {
|
|||||||
AminoTypes,
|
AminoTypes,
|
||||||
calculateFee,
|
calculateFee,
|
||||||
Coin,
|
Coin,
|
||||||
|
createBankAminoConverters,
|
||||||
defaultRegistryTypes as defaultStargateTypes,
|
defaultRegistryTypes as defaultStargateTypes,
|
||||||
DeliverTxResponse,
|
DeliverTxResponse,
|
||||||
GasPrice,
|
GasPrice,
|
||||||
@@ -201,11 +202,9 @@ export class SigningCosmWasmClient extends CosmWasmClient {
|
|||||||
options: SigningCosmWasmClientOptions,
|
options: SigningCosmWasmClientOptions,
|
||||||
) {
|
) {
|
||||||
super(tmClient);
|
super(tmClient);
|
||||||
// TODO: do we really want to set a default here? Ideally we could get it from the signer such that users only have to set it once.
|
|
||||||
const prefix = options.prefix ?? "cosmos";
|
|
||||||
const {
|
const {
|
||||||
registry = createDefaultRegistry(),
|
registry = createDefaultRegistry(),
|
||||||
aminoTypes = new AminoTypes({ prefix, additions: createWasmAminoConverters() }),
|
aminoTypes = new AminoTypes({ ...createWasmAminoConverters(), ...createBankAminoConverters() }),
|
||||||
} = options;
|
} = options;
|
||||||
this.registry = registry;
|
this.registry = registry;
|
||||||
this.aminoTypes = aminoTypes;
|
this.aminoTypes = aminoTypes;
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
export interface AminoConverter {
|
|
||||||
readonly aminoType: string;
|
|
||||||
readonly toAmino: (value: any) => any;
|
|
||||||
readonly fromAmino: (value: any) => any;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** A map from protobuf type URL to the AminoConverter implementation if supported on chain */
|
|
||||||
export type AminoConverters = Record<string, AminoConverter | "not_supported_by_chain">;
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -2,36 +2,14 @@
|
|||||||
import { AminoMsg } from "@cosmjs/amino";
|
import { AminoMsg } from "@cosmjs/amino";
|
||||||
import { EncodeObject } from "@cosmjs/proto-signing";
|
import { EncodeObject } from "@cosmjs/proto-signing";
|
||||||
|
|
||||||
import { AminoConverter, AminoConverters } from "./aminoconverters";
|
export interface AminoConverter {
|
||||||
import {
|
readonly aminoType: string;
|
||||||
createAuthzAminoConverters,
|
readonly toAmino: (value: any) => any;
|
||||||
createBankAminoConverters,
|
readonly fromAmino: (value: any) => any;
|
||||||
createDistributionAminoConverters,
|
|
||||||
createFreegrantAminoConverters,
|
|
||||||
createGovAminoConverters,
|
|
||||||
createIbcAminoConverters,
|
|
||||||
createStakingAminoConverters,
|
|
||||||
} from "./modules";
|
|
||||||
|
|
||||||
function createDefaultTypes(prefix: string): AminoConverters {
|
|
||||||
return {
|
|
||||||
...createAuthzAminoConverters(),
|
|
||||||
...createBankAminoConverters(),
|
|
||||||
...createDistributionAminoConverters(),
|
|
||||||
...createGovAminoConverters(),
|
|
||||||
...createStakingAminoConverters(prefix),
|
|
||||||
...createIbcAminoConverters(),
|
|
||||||
...createFreegrantAminoConverters(),
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface AminoTypesOptions {
|
/** A map from protobuf type URL to the AminoConverter implementation if supported on chain */
|
||||||
/**
|
export type AminoConverters = Record<string, AminoConverter | "not_supported_by_chain">;
|
||||||
* The Bech32 address prefix of the chain you work with (also called Bech32 human-readable part).
|
|
||||||
*/
|
|
||||||
readonly prefix: string;
|
|
||||||
readonly additions?: AminoConverters;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isAminoConverter(
|
function isAminoConverter(
|
||||||
converter: [string, AminoConverter | "not_supported_by_chain"],
|
converter: [string, AminoConverter | "not_supported_by_chain"],
|
||||||
@@ -50,9 +28,8 @@ export class AminoTypes {
|
|||||||
// there is no overlap when fromAmino is called.
|
// there is no overlap when fromAmino is called.
|
||||||
private readonly register: Record<string, AminoConverter | "not_supported_by_chain">;
|
private readonly register: Record<string, AminoConverter | "not_supported_by_chain">;
|
||||||
|
|
||||||
public constructor({ prefix, additions = {} }: AminoTypesOptions) {
|
public constructor(types: AminoConverters) {
|
||||||
const defaultTypes = createDefaultTypes(prefix);
|
this.register = types;
|
||||||
this.register = { ...defaultTypes, ...additions };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public toAmino({ typeUrl, value }: EncodeObject): AminoMsg {
|
public toAmino({ typeUrl, value }: EncodeObject): AminoMsg {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
export { Account, accountFromAny } from "./accounts";
|
export { Account, accountFromAny } from "./accounts";
|
||||||
export { AminoConverter, AminoConverters } from "./aminoconverters";
|
export { AminoConverter, AminoConverters, AminoTypes } from "./aminotypes";
|
||||||
export { AminoTypes, AminoTypesOptions } from "./aminotypes";
|
|
||||||
export { calculateFee, GasPrice } from "./fee";
|
export { calculateFee, GasPrice } from "./fee";
|
||||||
export * as logs from "./logs";
|
export * as logs from "./logs";
|
||||||
export {
|
export {
|
||||||
@@ -74,6 +73,15 @@ export {
|
|||||||
StakingExtension,
|
StakingExtension,
|
||||||
TxExtension,
|
TxExtension,
|
||||||
} from "./modules";
|
} from "./modules";
|
||||||
|
export {
|
||||||
|
createAuthzAminoConverters,
|
||||||
|
createBankAminoConverters,
|
||||||
|
createDistributionAminoConverters,
|
||||||
|
createFreegrantAminoConverters,
|
||||||
|
createGovAminoConverters,
|
||||||
|
createIbcAminoConverters,
|
||||||
|
createStakingAminoConverters,
|
||||||
|
} from "./modules";
|
||||||
export { makeMultisignedTx } from "./multisignature";
|
export { makeMultisignedTx } from "./multisignature";
|
||||||
export {
|
export {
|
||||||
createPagination,
|
createPagination,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { AminoConverters } from "../../aminoconverters";
|
import { AminoConverters } from "../../aminotypes";
|
||||||
|
|
||||||
export function createAuthzAminoConverters(): AminoConverters {
|
export function createAuthzAminoConverters(): AminoConverters {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -0,0 +1,118 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
import { coins } from "@cosmjs/proto-signing";
|
||||||
|
import { MsgMultiSend, MsgSend } from "cosmjs-types/cosmos/bank/v1beta1/tx";
|
||||||
|
|
||||||
|
import { AminoTypes } from "../../aminotypes";
|
||||||
|
import { AminoMsgMultiSend, AminoMsgSend, createBankAminoConverters } from "./aminomessages";
|
||||||
|
|
||||||
|
describe("AminoTypes", () => {
|
||||||
|
describe("toAmino", () => {
|
||||||
|
it("works for MsgSend", () => {
|
||||||
|
const msg: MsgSend = {
|
||||||
|
fromAddress: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
toAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
amount: coins(1234, "ucosm"),
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createBankAminoConverters());
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.bank.v1beta1.MsgSend",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgSend = {
|
||||||
|
type: "cosmos-sdk/MsgSend",
|
||||||
|
value: {
|
||||||
|
from_address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
to_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
amount: coins(1234, "ucosm"),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgMultiSend", () => {
|
||||||
|
const msg: MsgMultiSend = {
|
||||||
|
inputs: [
|
||||||
|
{ address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6", coins: coins(1234, "ucosm") },
|
||||||
|
{ address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5", coins: coins(5678, "ucosm") },
|
||||||
|
],
|
||||||
|
outputs: [
|
||||||
|
{ address: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k", coins: coins(6000, "ucosm") },
|
||||||
|
{ address: "cosmos142u9fgcjdlycfcez3lw8x6x5h7rfjlnfhpw2lx", coins: coins(912, "ucosm") },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createBankAminoConverters());
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.bank.v1beta1.MsgMultiSend",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgMultiSend = {
|
||||||
|
type: "cosmos-sdk/MsgMultiSend",
|
||||||
|
value: {
|
||||||
|
inputs: [
|
||||||
|
{ address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6", coins: coins(1234, "ucosm") },
|
||||||
|
{ address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5", coins: coins(5678, "ucosm") },
|
||||||
|
],
|
||||||
|
outputs: [
|
||||||
|
{ address: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k", coins: coins(6000, "ucosm") },
|
||||||
|
{ address: "cosmos142u9fgcjdlycfcez3lw8x6x5h7rfjlnfhpw2lx", coins: coins(912, "ucosm") },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("fromAmino", () => {
|
||||||
|
it("works for MsgSend", () => {
|
||||||
|
const aminoMsg: AminoMsgSend = {
|
||||||
|
type: "cosmos-sdk/MsgSend",
|
||||||
|
value: {
|
||||||
|
from_address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
to_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
amount: coins(1234, "ucosm"),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const msg = new AminoTypes(createBankAminoConverters()).fromAmino(aminoMsg);
|
||||||
|
const expectedValue: MsgSend = {
|
||||||
|
fromAddress: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
toAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
amount: coins(1234, "ucosm"),
|
||||||
|
};
|
||||||
|
expect(msg).toEqual({
|
||||||
|
typeUrl: "/cosmos.bank.v1beta1.MsgSend",
|
||||||
|
value: expectedValue,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgMultiSend", () => {
|
||||||
|
const aminoMsg: AminoMsgMultiSend = {
|
||||||
|
type: "cosmos-sdk/MsgMultiSend",
|
||||||
|
value: {
|
||||||
|
inputs: [
|
||||||
|
{ address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6", coins: coins(1234, "ucosm") },
|
||||||
|
{ address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5", coins: coins(5678, "ucosm") },
|
||||||
|
],
|
||||||
|
outputs: [
|
||||||
|
{ address: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k", coins: coins(6000, "ucosm") },
|
||||||
|
{ address: "cosmos142u9fgcjdlycfcez3lw8x6x5h7rfjlnfhpw2lx", coins: coins(912, "ucosm") },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const msg = new AminoTypes(createBankAminoConverters()).fromAmino(aminoMsg);
|
||||||
|
const expectedValue: MsgMultiSend = {
|
||||||
|
inputs: [
|
||||||
|
{ address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6", coins: coins(1234, "ucosm") },
|
||||||
|
{ address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5", coins: coins(5678, "ucosm") },
|
||||||
|
],
|
||||||
|
outputs: [
|
||||||
|
{ address: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k", coins: coins(6000, "ucosm") },
|
||||||
|
{ address: "cosmos142u9fgcjdlycfcez3lw8x6x5h7rfjlnfhpw2lx", coins: coins(912, "ucosm") },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
expect(msg).toEqual({
|
||||||
|
typeUrl: "/cosmos.bank.v1beta1.MsgMultiSend",
|
||||||
|
value: expectedValue,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -3,7 +3,7 @@ import { AminoMsg, Coin } from "@cosmjs/amino";
|
|||||||
import { MsgMultiSend, MsgSend } from "cosmjs-types/cosmos/bank/v1beta1/tx";
|
import { MsgMultiSend, MsgSend } from "cosmjs-types/cosmos/bank/v1beta1/tx";
|
||||||
|
|
||||||
// eslint-disable-next-line import/no-cycle
|
// eslint-disable-next-line import/no-cycle
|
||||||
import { AminoConverters } from "../../aminoconverters";
|
import { AminoConverters } from "../../aminotypes";
|
||||||
|
|
||||||
/** A high level transaction of the coin module */
|
/** A high level transaction of the coin module */
|
||||||
export interface AminoMsgSend extends AminoMsg {
|
export interface AminoMsgSend extends AminoMsg {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* eslint-disable @typescript-eslint/naming-convention */
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
import { AminoMsg } from "@cosmjs/amino";
|
import { AminoMsg } from "@cosmjs/amino";
|
||||||
|
|
||||||
import { AminoConverters } from "../../aminoconverters";
|
import { AminoConverters } from "../../aminotypes";
|
||||||
|
|
||||||
// See https://github.com/cosmos/cosmos-sdk/blob/v0.45.1/proto/cosmos/crisis/v1beta1/tx.proto
|
// See https://github.com/cosmos/cosmos-sdk/blob/v0.45.1/proto/cosmos/crisis/v1beta1/tx.proto
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,106 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
import { coins } from "@cosmjs/proto-signing";
|
||||||
|
import {
|
||||||
|
MsgFundCommunityPool,
|
||||||
|
MsgSetWithdrawAddress,
|
||||||
|
MsgWithdrawDelegatorReward,
|
||||||
|
MsgWithdrawValidatorCommission,
|
||||||
|
} from "cosmjs-types/cosmos/distribution/v1beta1/tx";
|
||||||
|
|
||||||
|
import { AminoTypes } from "../../aminotypes";
|
||||||
|
import {
|
||||||
|
AminoMsgFundCommunityPool,
|
||||||
|
AminoMsgSetWithdrawAddress,
|
||||||
|
AminoMsgWithdrawDelegatorReward,
|
||||||
|
AminoMsgWithdrawValidatorCommission,
|
||||||
|
createDistributionAminoConverters,
|
||||||
|
} from "./aminomessages";
|
||||||
|
|
||||||
|
describe("AminoTypes", () => {
|
||||||
|
describe("toAmino", () => {
|
||||||
|
it("works for MsgFundCommunityPool", async () => {
|
||||||
|
const msg: MsgFundCommunityPool = {
|
||||||
|
amount: coins(1234, "ucosm"),
|
||||||
|
depositor: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createDistributionAminoConverters());
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.distribution.v1beta1.MsgFundCommunityPool",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgFundCommunityPool = {
|
||||||
|
type: "cosmos-sdk/MsgFundCommunityPool",
|
||||||
|
value: {
|
||||||
|
amount: coins(1234, "ucosm"),
|
||||||
|
depositor: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgSetWithdrawAddress", async () => {
|
||||||
|
const msg: MsgSetWithdrawAddress = {
|
||||||
|
delegatorAddress: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
withdrawAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createDistributionAminoConverters());
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.distribution.v1beta1.MsgSetWithdrawAddress",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgSetWithdrawAddress = {
|
||||||
|
type: "cosmos-sdk/MsgModifyWithdrawAddress",
|
||||||
|
value: {
|
||||||
|
delegator_address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
withdraw_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgWithdrawDelegatorReward", async () => {
|
||||||
|
const msg: MsgWithdrawDelegatorReward = {
|
||||||
|
delegatorAddress: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validatorAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createDistributionAminoConverters());
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgWithdrawDelegatorReward = {
|
||||||
|
type: "cosmos-sdk/MsgWithdrawDelegationReward",
|
||||||
|
value: {
|
||||||
|
delegator_address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validator_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgWithdrawValidatorCommission", async () => {
|
||||||
|
const msg: MsgWithdrawValidatorCommission = {
|
||||||
|
validatorAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createDistributionAminoConverters());
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgWithdrawValidatorCommission = {
|
||||||
|
type: "cosmos-sdk/MsgWithdrawValidatorCommission",
|
||||||
|
value: {
|
||||||
|
validator_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("fromAmino", () => {
|
||||||
|
// TODO: MsgFundCommunityPool
|
||||||
|
// TODO: MsgSetWithdrawAddress
|
||||||
|
// TODO: MsgWithdrawDelegatorReward
|
||||||
|
// TODO: MsgWithdrawValidatorCommission
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/* eslint-disable @typescript-eslint/naming-convention */
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
import { AminoMsg } from "@cosmjs/amino";
|
import { AminoMsg } from "@cosmjs/amino";
|
||||||
|
|
||||||
import { AminoConverters } from "../../aminoconverters";
|
import { AminoConverters } from "../../aminotypes";
|
||||||
|
|
||||||
// See https://github.com/cosmos/cosmos-sdk/blob/v0.45.1/proto/cosmos/evidence/v1beta1/tx.proto
|
// See https://github.com/cosmos/cosmos-sdk/blob/v0.45.1/proto/cosmos/evidence/v1beta1/tx.proto
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { AminoConverters } from "../../aminoconverters";
|
import { AminoConverters } from "../../aminotypes";
|
||||||
|
|
||||||
export function createFreegrantAminoConverters(): AminoConverters {
|
export function createFreegrantAminoConverters(): AminoConverters {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -0,0 +1,171 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
import { TextProposal, VoteOption } from "cosmjs-types/cosmos/gov/v1beta1/gov";
|
||||||
|
import { MsgDeposit, MsgSubmitProposal, MsgVote } from "cosmjs-types/cosmos/gov/v1beta1/tx";
|
||||||
|
import Long from "long";
|
||||||
|
|
||||||
|
import { AminoTypes } from "../../aminotypes";
|
||||||
|
import {
|
||||||
|
AminoMsgDeposit,
|
||||||
|
AminoMsgSubmitProposal,
|
||||||
|
AminoMsgVote,
|
||||||
|
createGovAminoConverters,
|
||||||
|
} from "./aminomessages";
|
||||||
|
|
||||||
|
describe("AminoTypes", () => {
|
||||||
|
describe("toAmino", () => {
|
||||||
|
it("works for MsgDeposit", () => {
|
||||||
|
const msg: MsgDeposit = {
|
||||||
|
amount: [{ amount: "12300000", denom: "ustake" }],
|
||||||
|
depositor: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
proposalId: Long.fromNumber(5),
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createGovAminoConverters());
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.gov.v1beta1.MsgDeposit",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgDeposit = {
|
||||||
|
type: "cosmos-sdk/MsgDeposit",
|
||||||
|
value: {
|
||||||
|
amount: [{ amount: "12300000", denom: "ustake" }],
|
||||||
|
depositor: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
proposal_id: "5",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgSubmitProposal", () => {
|
||||||
|
const msg: MsgSubmitProposal = {
|
||||||
|
initialDeposit: [{ amount: "12300000", denom: "ustake" }],
|
||||||
|
proposer: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
content: {
|
||||||
|
typeUrl: "/cosmos.gov.v1beta1.TextProposal",
|
||||||
|
value: TextProposal.encode({
|
||||||
|
description: "This proposal proposes to test whether this proposal passes",
|
||||||
|
title: "Test Proposal",
|
||||||
|
}).finish(),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createGovAminoConverters());
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.gov.v1beta1.MsgSubmitProposal",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgSubmitProposal = {
|
||||||
|
type: "cosmos-sdk/MsgSubmitProposal",
|
||||||
|
value: {
|
||||||
|
initial_deposit: [{ amount: "12300000", denom: "ustake" }],
|
||||||
|
proposer: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
content: {
|
||||||
|
type: "cosmos-sdk/TextProposal",
|
||||||
|
value: {
|
||||||
|
description: "This proposal proposes to test whether this proposal passes",
|
||||||
|
title: "Test Proposal",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgVote", () => {
|
||||||
|
const msg: MsgVote = {
|
||||||
|
option: VoteOption.VOTE_OPTION_NO_WITH_VETO,
|
||||||
|
proposalId: Long.fromNumber(5),
|
||||||
|
voter: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createGovAminoConverters());
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.gov.v1beta1.MsgVote",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgVote = {
|
||||||
|
type: "cosmos-sdk/MsgVote",
|
||||||
|
value: {
|
||||||
|
option: 4,
|
||||||
|
proposal_id: "5",
|
||||||
|
voter: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("fromAmino", () => {
|
||||||
|
it("works for MsgDeposit", () => {
|
||||||
|
const aminoMsg: AminoMsgDeposit = {
|
||||||
|
type: "cosmos-sdk/MsgDeposit",
|
||||||
|
value: {
|
||||||
|
amount: [{ amount: "12300000", denom: "ustake" }],
|
||||||
|
depositor: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
proposal_id: "5",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const msg = new AminoTypes(createGovAminoConverters()).fromAmino(aminoMsg);
|
||||||
|
const expectedValue: MsgDeposit = {
|
||||||
|
amount: [{ amount: "12300000", denom: "ustake" }],
|
||||||
|
depositor: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
proposalId: Long.fromNumber(5),
|
||||||
|
};
|
||||||
|
expect(msg).toEqual({
|
||||||
|
typeUrl: "/cosmos.gov.v1beta1.MsgDeposit",
|
||||||
|
value: expectedValue,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgSubmitProposal", () => {
|
||||||
|
const aminoMsg: AminoMsgSubmitProposal = {
|
||||||
|
type: "cosmos-sdk/MsgSubmitProposal",
|
||||||
|
value: {
|
||||||
|
initial_deposit: [{ amount: "12300000", denom: "ustake" }],
|
||||||
|
proposer: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
content: {
|
||||||
|
type: "cosmos-sdk/TextProposal",
|
||||||
|
value: {
|
||||||
|
description: "This proposal proposes to test whether this proposal passes",
|
||||||
|
title: "Test Proposal",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const msg = new AminoTypes(createGovAminoConverters()).fromAmino(aminoMsg);
|
||||||
|
const expectedValue: MsgSubmitProposal = {
|
||||||
|
initialDeposit: [{ amount: "12300000", denom: "ustake" }],
|
||||||
|
proposer: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
content: {
|
||||||
|
typeUrl: "/cosmos.gov.v1beta1.TextProposal",
|
||||||
|
value: TextProposal.encode({
|
||||||
|
description: "This proposal proposes to test whether this proposal passes",
|
||||||
|
title: "Test Proposal",
|
||||||
|
}).finish(),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(msg).toEqual({
|
||||||
|
typeUrl: "/cosmos.gov.v1beta1.MsgSubmitProposal",
|
||||||
|
value: expectedValue,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgVote", () => {
|
||||||
|
const aminoMsg: AminoMsgVote = {
|
||||||
|
type: "cosmos-sdk/MsgVote",
|
||||||
|
value: {
|
||||||
|
option: 4,
|
||||||
|
proposal_id: "5",
|
||||||
|
voter: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const msg = new AminoTypes(createGovAminoConverters()).fromAmino(aminoMsg);
|
||||||
|
const expectedValue: MsgVote = {
|
||||||
|
option: VoteOption.VOTE_OPTION_NO_WITH_VETO,
|
||||||
|
proposalId: Long.fromNumber(5),
|
||||||
|
voter: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
|
};
|
||||||
|
expect(msg).toEqual({
|
||||||
|
typeUrl: "/cosmos.gov.v1beta1.MsgVote",
|
||||||
|
value: expectedValue,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -6,7 +6,7 @@ import { MsgDeposit, MsgSubmitProposal, MsgVote } from "cosmjs-types/cosmos/gov/
|
|||||||
import { Any } from "cosmjs-types/google/protobuf/any";
|
import { Any } from "cosmjs-types/google/protobuf/any";
|
||||||
import Long from "long";
|
import Long from "long";
|
||||||
|
|
||||||
import { AminoConverters } from "../../aminoconverters";
|
import { AminoConverters } from "../../aminotypes";
|
||||||
|
|
||||||
/** Supports submitting arbitrary proposal content. */
|
/** Supports submitting arbitrary proposal content. */
|
||||||
export interface AminoMsgSubmitProposal extends AminoMsg {
|
export interface AminoMsgSubmitProposal extends AminoMsg {
|
||||||
|
|||||||
@@ -0,0 +1,184 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
import { coin } from "@cosmjs/proto-signing";
|
||||||
|
import { MsgTransfer } from "cosmjs-types/ibc/applications/transfer/v1/tx";
|
||||||
|
import Long from "long";
|
||||||
|
|
||||||
|
import { AminoTypes } from "../../aminotypes";
|
||||||
|
import { AminoMsgTransfer, createIbcAminoConverters } from "./aminomessages";
|
||||||
|
|
||||||
|
describe("AminoTypes", () => {
|
||||||
|
describe("toAmino", () => {
|
||||||
|
it("works for MsgTransfer", () => {
|
||||||
|
const msg: MsgTransfer = {
|
||||||
|
sourcePort: "testport",
|
||||||
|
sourceChannel: "testchannel",
|
||||||
|
token: coin(1234, "utest"),
|
||||||
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
timeoutHeight: {
|
||||||
|
revisionHeight: Long.fromString("123", true),
|
||||||
|
revisionNumber: Long.fromString("456", true),
|
||||||
|
},
|
||||||
|
timeoutTimestamp: Long.fromString("789", true),
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createIbcAminoConverters());
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/ibc.applications.transfer.v1.MsgTransfer",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgTransfer = {
|
||||||
|
type: "cosmos-sdk/MsgTransfer",
|
||||||
|
value: {
|
||||||
|
source_port: "testport",
|
||||||
|
source_channel: "testchannel",
|
||||||
|
token: coin(1234, "utest"),
|
||||||
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
timeout_height: {
|
||||||
|
revision_height: "123",
|
||||||
|
revision_number: "456",
|
||||||
|
},
|
||||||
|
timeout_timestamp: "789",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgTransfer with empty values", () => {
|
||||||
|
const msg: MsgTransfer = {
|
||||||
|
sourcePort: "testport",
|
||||||
|
sourceChannel: "testchannel",
|
||||||
|
token: coin(1234, "utest"),
|
||||||
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
timeoutHeight: {
|
||||||
|
revisionHeight: Long.UZERO,
|
||||||
|
revisionNumber: Long.UZERO,
|
||||||
|
},
|
||||||
|
timeoutTimestamp: Long.UZERO,
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createIbcAminoConverters());
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/ibc.applications.transfer.v1.MsgTransfer",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgTransfer = {
|
||||||
|
type: "cosmos-sdk/MsgTransfer",
|
||||||
|
value: {
|
||||||
|
source_port: "testport",
|
||||||
|
source_channel: "testchannel",
|
||||||
|
token: coin(1234, "utest"),
|
||||||
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
timeout_height: {
|
||||||
|
revision_height: undefined,
|
||||||
|
revision_number: undefined,
|
||||||
|
},
|
||||||
|
timeout_timestamp: undefined,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgTransfer with no height timeout", () => {
|
||||||
|
const msg: MsgTransfer = {
|
||||||
|
sourcePort: "testport",
|
||||||
|
sourceChannel: "testchannel",
|
||||||
|
token: coin(1234, "utest"),
|
||||||
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
timeoutHeight: undefined,
|
||||||
|
timeoutTimestamp: Long.UZERO,
|
||||||
|
};
|
||||||
|
const aminoMsg = new AminoTypes(createIbcAminoConverters()).toAmino({
|
||||||
|
typeUrl: "/ibc.applications.transfer.v1.MsgTransfer",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgTransfer = {
|
||||||
|
type: "cosmos-sdk/MsgTransfer",
|
||||||
|
value: {
|
||||||
|
source_port: "testport",
|
||||||
|
source_channel: "testchannel",
|
||||||
|
token: coin(1234, "utest"),
|
||||||
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
timeout_height: {},
|
||||||
|
timeout_timestamp: undefined,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("fromAmino", () => {
|
||||||
|
it("works for MsgTransfer", () => {
|
||||||
|
const aminoMsg: AminoMsgTransfer = {
|
||||||
|
type: "cosmos-sdk/MsgTransfer",
|
||||||
|
value: {
|
||||||
|
source_port: "testport",
|
||||||
|
source_channel: "testchannel",
|
||||||
|
token: coin(1234, "utest"),
|
||||||
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
timeout_height: {
|
||||||
|
revision_height: "123",
|
||||||
|
revision_number: "456",
|
||||||
|
},
|
||||||
|
timeout_timestamp: "789",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const msg = new AminoTypes(createIbcAminoConverters()).fromAmino(aminoMsg);
|
||||||
|
const expectedValue: MsgTransfer = {
|
||||||
|
sourcePort: "testport",
|
||||||
|
sourceChannel: "testchannel",
|
||||||
|
token: coin(1234, "utest"),
|
||||||
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
timeoutHeight: {
|
||||||
|
revisionHeight: Long.fromString("123", true),
|
||||||
|
revisionNumber: Long.fromString("456", true),
|
||||||
|
},
|
||||||
|
timeoutTimestamp: Long.fromString("789", true),
|
||||||
|
};
|
||||||
|
expect(msg).toEqual({
|
||||||
|
typeUrl: "/ibc.applications.transfer.v1.MsgTransfer",
|
||||||
|
value: expectedValue,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgTransfer with default values", () => {
|
||||||
|
const aminoMsg: AminoMsgTransfer = {
|
||||||
|
type: "cosmos-sdk/MsgTransfer",
|
||||||
|
value: {
|
||||||
|
source_port: "testport",
|
||||||
|
source_channel: "testchannel",
|
||||||
|
token: coin(1234, "utest"),
|
||||||
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
timeout_height: {
|
||||||
|
// revision_height omitted
|
||||||
|
// revision_number omitted
|
||||||
|
},
|
||||||
|
// timeout_timestamp omitted
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const msg = new AminoTypes(createIbcAminoConverters()).fromAmino(aminoMsg);
|
||||||
|
const expectedValue: MsgTransfer = {
|
||||||
|
sourcePort: "testport",
|
||||||
|
sourceChannel: "testchannel",
|
||||||
|
token: coin(1234, "utest"),
|
||||||
|
sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
timeoutHeight: {
|
||||||
|
revisionHeight: Long.UZERO,
|
||||||
|
revisionNumber: Long.UZERO,
|
||||||
|
},
|
||||||
|
timeoutTimestamp: Long.UZERO,
|
||||||
|
};
|
||||||
|
expect(msg).toEqual({
|
||||||
|
typeUrl: "/ibc.applications.transfer.v1.MsgTransfer",
|
||||||
|
value: expectedValue,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -3,7 +3,7 @@ import { AminoMsg, Coin } from "@cosmjs/amino";
|
|||||||
import { MsgTransfer } from "cosmjs-types/ibc/applications/transfer/v1/tx";
|
import { MsgTransfer } from "cosmjs-types/ibc/applications/transfer/v1/tx";
|
||||||
import Long from "long";
|
import Long from "long";
|
||||||
|
|
||||||
import { AminoConverters } from "../../aminoconverters";
|
import { AminoConverters } from "../../aminotypes";
|
||||||
|
|
||||||
// https://github.com/cosmos/ibc-go/blob/07b6a97b67d17fd214a83764cbdb2c2c3daef445/modules/core/02-client/types/client.pb.go#L297-L312
|
// https://github.com/cosmos/ibc-go/blob/07b6a97b67d17fd214a83764cbdb2c2c3daef445/modules/core/02-client/types/client.pb.go#L297-L312
|
||||||
interface AminoHeight {
|
interface AminoHeight {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* eslint-disable @typescript-eslint/naming-convention */
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
import { AminoMsg } from "@cosmjs/amino";
|
import { AminoMsg } from "@cosmjs/amino";
|
||||||
|
|
||||||
import { AminoConverters } from "../../aminoconverters";
|
import { AminoConverters } from "../../aminotypes";
|
||||||
|
|
||||||
// See https://github.com/cosmos/cosmos-sdk/blob/v0.45.1/proto/cosmos/slashing/v1beta1/tx.proto
|
// See https://github.com/cosmos/cosmos-sdk/blob/v0.45.1/proto/cosmos/slashing/v1beta1/tx.proto
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,342 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
import { encodeBech32Pubkey } from "@cosmjs/amino";
|
||||||
|
import { fromBase64 } from "@cosmjs/encoding";
|
||||||
|
import { coin } from "@cosmjs/proto-signing";
|
||||||
|
import {
|
||||||
|
MsgBeginRedelegate,
|
||||||
|
MsgCreateValidator,
|
||||||
|
MsgDelegate,
|
||||||
|
MsgEditValidator,
|
||||||
|
MsgUndelegate,
|
||||||
|
} from "cosmjs-types/cosmos/staking/v1beta1/tx";
|
||||||
|
|
||||||
|
import { AminoTypes } from "../../aminotypes";
|
||||||
|
import {
|
||||||
|
AminoMsgBeginRedelegate,
|
||||||
|
AminoMsgCreateValidator,
|
||||||
|
AminoMsgDelegate,
|
||||||
|
AminoMsgEditValidator,
|
||||||
|
AminoMsgUndelegate,
|
||||||
|
createStakingAminoConverters,
|
||||||
|
} from "./aminomessages";
|
||||||
|
|
||||||
|
describe("AminoTypes", () => {
|
||||||
|
describe("toAmino", () => {
|
||||||
|
it("works for MsgBeginRedelegate", () => {
|
||||||
|
const msg: MsgBeginRedelegate = {
|
||||||
|
delegatorAddress: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validatorSrcAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
validatorDstAddress: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
|
amount: coin(1234, "ucosm"),
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createStakingAminoConverters("cosmos"));
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.staking.v1beta1.MsgBeginRedelegate",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgBeginRedelegate = {
|
||||||
|
type: "cosmos-sdk/MsgBeginRedelegate",
|
||||||
|
value: {
|
||||||
|
delegator_address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validator_src_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
validator_dst_address: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
|
amount: coin(1234, "ucosm"),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgCreateValidator", () => {
|
||||||
|
const msg: MsgCreateValidator = {
|
||||||
|
description: {
|
||||||
|
moniker: "validator",
|
||||||
|
identity: "me",
|
||||||
|
website: "valid.com",
|
||||||
|
securityContact: "Hamburglar",
|
||||||
|
details: "...",
|
||||||
|
},
|
||||||
|
commission: {
|
||||||
|
rate: "0.2",
|
||||||
|
maxRate: "0.3",
|
||||||
|
maxChangeRate: "0.1",
|
||||||
|
},
|
||||||
|
minSelfDelegation: "123",
|
||||||
|
delegatorAddress: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validatorAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
pubkey: {
|
||||||
|
typeUrl: "/cosmos.crypto.secp256k1.PubKey",
|
||||||
|
value: fromBase64("A08EGB7ro1ORuFhjOnZcSgwYlpe0DSFjVNUIkNNQxwKQ"),
|
||||||
|
},
|
||||||
|
value: coin(1234, "ucosm"),
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createStakingAminoConverters("cosmos"));
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.staking.v1beta1.MsgCreateValidator",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgCreateValidator = {
|
||||||
|
type: "cosmos-sdk/MsgCreateValidator",
|
||||||
|
value: {
|
||||||
|
description: {
|
||||||
|
moniker: "validator",
|
||||||
|
identity: "me",
|
||||||
|
website: "valid.com",
|
||||||
|
security_contact: "Hamburglar",
|
||||||
|
details: "...",
|
||||||
|
},
|
||||||
|
commission: {
|
||||||
|
rate: "0.2",
|
||||||
|
max_rate: "0.3",
|
||||||
|
max_change_rate: "0.1",
|
||||||
|
},
|
||||||
|
min_self_delegation: "123",
|
||||||
|
delegator_address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validator_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
pubkey: encodeBech32Pubkey(
|
||||||
|
{ type: "tendermint/PubKeySecp256k1", value: "A08EGB7ro1ORuFhjOnZcSgwYlpe0DSFjVNUIkNNQxwKQ" },
|
||||||
|
"cosmos",
|
||||||
|
),
|
||||||
|
value: coin(1234, "ucosm"),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgDelegate", () => {
|
||||||
|
const msg: MsgDelegate = {
|
||||||
|
delegatorAddress: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validatorAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
amount: coin(1234, "ucosm"),
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createStakingAminoConverters("cosmos"));
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.staking.v1beta1.MsgDelegate",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgDelegate = {
|
||||||
|
type: "cosmos-sdk/MsgDelegate",
|
||||||
|
value: {
|
||||||
|
delegator_address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validator_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
amount: coin(1234, "ucosm"),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgEditValidator", () => {
|
||||||
|
const msg: MsgEditValidator = {
|
||||||
|
description: {
|
||||||
|
moniker: "validator",
|
||||||
|
identity: "me",
|
||||||
|
website: "valid.com",
|
||||||
|
securityContact: "Hamburglar",
|
||||||
|
details: "...",
|
||||||
|
},
|
||||||
|
commissionRate: "0.2",
|
||||||
|
minSelfDelegation: "123",
|
||||||
|
validatorAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createStakingAminoConverters("cosmos"));
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.staking.v1beta1.MsgEditValidator",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgEditValidator = {
|
||||||
|
type: "cosmos-sdk/MsgEditValidator",
|
||||||
|
value: {
|
||||||
|
description: {
|
||||||
|
moniker: "validator",
|
||||||
|
identity: "me",
|
||||||
|
website: "valid.com",
|
||||||
|
security_contact: "Hamburglar",
|
||||||
|
details: "...",
|
||||||
|
},
|
||||||
|
commission_rate: "0.2",
|
||||||
|
min_self_delegation: "123",
|
||||||
|
validator_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgUndelegate", () => {
|
||||||
|
const msg: MsgUndelegate = {
|
||||||
|
delegatorAddress: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validatorAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
amount: coin(1234, "ucosm"),
|
||||||
|
};
|
||||||
|
const aminoTypes = new AminoTypes(createStakingAminoConverters("cosmos"));
|
||||||
|
const aminoMsg = aminoTypes.toAmino({
|
||||||
|
typeUrl: "/cosmos.staking.v1beta1.MsgUndelegate",
|
||||||
|
value: msg,
|
||||||
|
});
|
||||||
|
const expected: AminoMsgUndelegate = {
|
||||||
|
type: "cosmos-sdk/MsgUndelegate",
|
||||||
|
value: {
|
||||||
|
delegator_address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validator_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
amount: coin(1234, "ucosm"),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(aminoMsg).toEqual(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("fromAmino", () => {
|
||||||
|
it("works for MsgBeginRedelegate", () => {
|
||||||
|
const aminoMsg: AminoMsgBeginRedelegate = {
|
||||||
|
type: "cosmos-sdk/MsgBeginRedelegate",
|
||||||
|
value: {
|
||||||
|
delegator_address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validator_src_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
validator_dst_address: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
|
amount: coin(1234, "ucosm"),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const msg = new AminoTypes(createStakingAminoConverters("cosmos")).fromAmino(aminoMsg);
|
||||||
|
const expectedValue: MsgBeginRedelegate = {
|
||||||
|
delegatorAddress: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validatorSrcAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
validatorDstAddress: "cosmos1xy4yqngt0nlkdcenxymg8tenrghmek4nmqm28k",
|
||||||
|
amount: coin(1234, "ucosm"),
|
||||||
|
};
|
||||||
|
expect(msg).toEqual({
|
||||||
|
typeUrl: "/cosmos.staking.v1beta1.MsgBeginRedelegate",
|
||||||
|
value: expectedValue,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgCreateValidator", () => {
|
||||||
|
const aminoMsg: AminoMsgCreateValidator = {
|
||||||
|
type: "cosmos-sdk/MsgCreateValidator",
|
||||||
|
value: {
|
||||||
|
description: {
|
||||||
|
moniker: "validator",
|
||||||
|
identity: "me",
|
||||||
|
website: "valid.com",
|
||||||
|
security_contact: "Hamburglar",
|
||||||
|
details: "...",
|
||||||
|
},
|
||||||
|
commission: {
|
||||||
|
rate: "0.2",
|
||||||
|
max_rate: "0.3",
|
||||||
|
max_change_rate: "0.1",
|
||||||
|
},
|
||||||
|
min_self_delegation: "123",
|
||||||
|
delegator_address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validator_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
pubkey: encodeBech32Pubkey(
|
||||||
|
{ type: "tendermint/PubKeySecp256k1", value: "A08EGB7ro1ORuFhjOnZcSgwYlpe0DSFjVNUIkNNQxwKQ" },
|
||||||
|
"cosmos",
|
||||||
|
),
|
||||||
|
value: coin(1234, "ucosm"),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const msg = new AminoTypes(createStakingAminoConverters("cosmos")).fromAmino(aminoMsg);
|
||||||
|
const expectedValue: MsgCreateValidator = {
|
||||||
|
description: {
|
||||||
|
moniker: "validator",
|
||||||
|
identity: "me",
|
||||||
|
website: "valid.com",
|
||||||
|
securityContact: "Hamburglar",
|
||||||
|
details: "...",
|
||||||
|
},
|
||||||
|
commission: {
|
||||||
|
rate: "0.2",
|
||||||
|
maxRate: "0.3",
|
||||||
|
maxChangeRate: "0.1",
|
||||||
|
},
|
||||||
|
minSelfDelegation: "123",
|
||||||
|
delegatorAddress: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validatorAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
pubkey: {
|
||||||
|
typeUrl: "/cosmos.crypto.secp256k1.PubKey",
|
||||||
|
value: fromBase64("A08EGB7ro1ORuFhjOnZcSgwYlpe0DSFjVNUIkNNQxwKQ"),
|
||||||
|
},
|
||||||
|
value: coin(1234, "ucosm"),
|
||||||
|
};
|
||||||
|
expect(msg).toEqual({
|
||||||
|
typeUrl: "/cosmos.staking.v1beta1.MsgCreateValidator",
|
||||||
|
value: expectedValue,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgDelegate", () => {
|
||||||
|
const aminoMsg: AminoMsgDelegate = {
|
||||||
|
type: "cosmos-sdk/MsgDelegate",
|
||||||
|
value: {
|
||||||
|
delegator_address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validator_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
amount: coin(1234, "ucosm"),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const msg = new AminoTypes(createStakingAminoConverters("cosmos")).fromAmino(aminoMsg);
|
||||||
|
const expectedValue: MsgDelegate = {
|
||||||
|
delegatorAddress: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validatorAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
amount: coin(1234, "ucosm"),
|
||||||
|
};
|
||||||
|
expect(msg).toEqual({
|
||||||
|
typeUrl: "/cosmos.staking.v1beta1.MsgDelegate",
|
||||||
|
value: expectedValue,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgEditValidator", () => {
|
||||||
|
const aminoMsg: AminoMsgEditValidator = {
|
||||||
|
type: "cosmos-sdk/MsgEditValidator",
|
||||||
|
value: {
|
||||||
|
description: {
|
||||||
|
moniker: "validator",
|
||||||
|
identity: "me",
|
||||||
|
website: "valid.com",
|
||||||
|
security_contact: "Hamburglar",
|
||||||
|
details: "...",
|
||||||
|
},
|
||||||
|
commission_rate: "0.2",
|
||||||
|
min_self_delegation: "123",
|
||||||
|
validator_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const msg = new AminoTypes(createStakingAminoConverters("cosmos")).fromAmino(aminoMsg);
|
||||||
|
const expectedValue: MsgEditValidator = {
|
||||||
|
description: {
|
||||||
|
moniker: "validator",
|
||||||
|
identity: "me",
|
||||||
|
website: "valid.com",
|
||||||
|
securityContact: "Hamburglar",
|
||||||
|
details: "...",
|
||||||
|
},
|
||||||
|
commissionRate: "0.2",
|
||||||
|
minSelfDelegation: "123",
|
||||||
|
validatorAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
};
|
||||||
|
expect(msg).toEqual({
|
||||||
|
typeUrl: "/cosmos.staking.v1beta1.MsgEditValidator",
|
||||||
|
value: expectedValue,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("works for MsgUndelegate", () => {
|
||||||
|
const aminoMsg: AminoMsgUndelegate = {
|
||||||
|
type: "cosmos-sdk/MsgUndelegate",
|
||||||
|
value: {
|
||||||
|
delegator_address: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validator_address: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
amount: coin(1234, "ucosm"),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const msg = new AminoTypes(createStakingAminoConverters("cosmos")).fromAmino(aminoMsg);
|
||||||
|
const expectedValue: MsgUndelegate = {
|
||||||
|
delegatorAddress: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6",
|
||||||
|
validatorAddress: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5",
|
||||||
|
amount: coin(1234, "ucosm"),
|
||||||
|
};
|
||||||
|
expect(msg).toEqual({
|
||||||
|
typeUrl: "/cosmos.staking.v1beta1.MsgUndelegate",
|
||||||
|
value: expectedValue,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -483,37 +483,34 @@ describe("SigningStargateClient", () => {
|
|||||||
};
|
};
|
||||||
customRegistry.register(msgDelegateTypeUrl, CustomMsgDelegate);
|
customRegistry.register(msgDelegateTypeUrl, CustomMsgDelegate);
|
||||||
const customAminoTypes = new AminoTypes({
|
const customAminoTypes = new AminoTypes({
|
||||||
prefix: "cosmos",
|
"/cosmos.staking.v1beta1.MsgDelegate": {
|
||||||
additions: {
|
aminoType: "cosmos-sdk/MsgDelegate",
|
||||||
"/cosmos.staking.v1beta1.MsgDelegate": {
|
toAmino: ({
|
||||||
aminoType: "cosmos-sdk/MsgDelegate",
|
customDelegatorAddress,
|
||||||
toAmino: ({
|
customValidatorAddress,
|
||||||
customDelegatorAddress,
|
customAmount,
|
||||||
customValidatorAddress,
|
}: CustomMsgDelegate): AminoMsgDelegate["value"] => {
|
||||||
customAmount,
|
assert(customDelegatorAddress, "missing customDelegatorAddress");
|
||||||
}: CustomMsgDelegate): AminoMsgDelegate["value"] => {
|
assert(customValidatorAddress, "missing validatorAddress");
|
||||||
assert(customDelegatorAddress, "missing customDelegatorAddress");
|
assert(customAmount, "missing amount");
|
||||||
assert(customValidatorAddress, "missing validatorAddress");
|
return {
|
||||||
assert(customAmount, "missing amount");
|
delegator_address: customDelegatorAddress,
|
||||||
return {
|
validator_address: customValidatorAddress,
|
||||||
delegator_address: customDelegatorAddress,
|
amount: {
|
||||||
validator_address: customValidatorAddress,
|
amount: customAmount.amount,
|
||||||
amount: {
|
denom: customAmount.denom,
|
||||||
amount: customAmount.amount,
|
},
|
||||||
denom: customAmount.denom,
|
};
|
||||||
},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
fromAmino: ({
|
|
||||||
delegator_address,
|
|
||||||
validator_address,
|
|
||||||
amount,
|
|
||||||
}: AminoMsgDelegate["value"]): CustomMsgDelegate => ({
|
|
||||||
customDelegatorAddress: delegator_address,
|
|
||||||
customValidatorAddress: validator_address,
|
|
||||||
customAmount: Coin.fromPartial(amount),
|
|
||||||
}),
|
|
||||||
},
|
},
|
||||||
|
fromAmino: ({
|
||||||
|
delegator_address,
|
||||||
|
validator_address,
|
||||||
|
amount,
|
||||||
|
}: AminoMsgDelegate["value"]): CustomMsgDelegate => ({
|
||||||
|
customDelegatorAddress: delegator_address,
|
||||||
|
customValidatorAddress: validator_address,
|
||||||
|
customAmount: Coin.fromPartial(amount),
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const options = {
|
const options = {
|
||||||
@@ -774,37 +771,34 @@ describe("SigningStargateClient", () => {
|
|||||||
};
|
};
|
||||||
customRegistry.register(msgDelegateTypeUrl, CustomMsgDelegate);
|
customRegistry.register(msgDelegateTypeUrl, CustomMsgDelegate);
|
||||||
const customAminoTypes = new AminoTypes({
|
const customAminoTypes = new AminoTypes({
|
||||||
prefix: "cosmos",
|
"/cosmos.staking.v1beta1.MsgDelegate": {
|
||||||
additions: {
|
aminoType: "cosmos-sdk/MsgDelegate",
|
||||||
"/cosmos.staking.v1beta1.MsgDelegate": {
|
toAmino: ({
|
||||||
aminoType: "cosmos-sdk/MsgDelegate",
|
customDelegatorAddress,
|
||||||
toAmino: ({
|
customValidatorAddress,
|
||||||
customDelegatorAddress,
|
customAmount,
|
||||||
customValidatorAddress,
|
}: CustomMsgDelegate): AminoMsgDelegate["value"] => {
|
||||||
customAmount,
|
assert(customDelegatorAddress, "missing customDelegatorAddress");
|
||||||
}: CustomMsgDelegate): AminoMsgDelegate["value"] => {
|
assert(customValidatorAddress, "missing validatorAddress");
|
||||||
assert(customDelegatorAddress, "missing customDelegatorAddress");
|
assert(customAmount, "missing amount");
|
||||||
assert(customValidatorAddress, "missing validatorAddress");
|
return {
|
||||||
assert(customAmount, "missing amount");
|
delegator_address: customDelegatorAddress,
|
||||||
return {
|
validator_address: customValidatorAddress,
|
||||||
delegator_address: customDelegatorAddress,
|
amount: {
|
||||||
validator_address: customValidatorAddress,
|
amount: customAmount.amount,
|
||||||
amount: {
|
denom: customAmount.denom,
|
||||||
amount: customAmount.amount,
|
},
|
||||||
denom: customAmount.denom,
|
};
|
||||||
},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
fromAmino: ({
|
|
||||||
delegator_address,
|
|
||||||
validator_address,
|
|
||||||
amount,
|
|
||||||
}: AminoMsgDelegate["value"]): CustomMsgDelegate => ({
|
|
||||||
customDelegatorAddress: delegator_address,
|
|
||||||
customValidatorAddress: validator_address,
|
|
||||||
customAmount: Coin.fromPartial(amount),
|
|
||||||
}),
|
|
||||||
},
|
},
|
||||||
|
fromAmino: ({
|
||||||
|
delegator_address,
|
||||||
|
validator_address,
|
||||||
|
amount,
|
||||||
|
}: AminoMsgDelegate["value"]): CustomMsgDelegate => ({
|
||||||
|
customDelegatorAddress: delegator_address,
|
||||||
|
customValidatorAddress: validator_address,
|
||||||
|
customAmount: Coin.fromPartial(amount),
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const options = {
|
const options = {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import { MsgTransfer } from "cosmjs-types/ibc/applications/transfer/v1/tx";
|
|||||||
import { Height } from "cosmjs-types/ibc/core/client/v1/client";
|
import { Height } from "cosmjs-types/ibc/core/client/v1/client";
|
||||||
import Long from "long";
|
import Long from "long";
|
||||||
|
|
||||||
import { AminoTypes } from "./aminotypes";
|
import { AminoConverters, AminoTypes } from "./aminotypes";
|
||||||
import { calculateFee, GasPrice } from "./fee";
|
import { calculateFee, GasPrice } from "./fee";
|
||||||
import {
|
import {
|
||||||
authzTypes,
|
authzTypes,
|
||||||
@@ -39,6 +39,15 @@ import {
|
|||||||
MsgWithdrawDelegatorRewardEncodeObject,
|
MsgWithdrawDelegatorRewardEncodeObject,
|
||||||
stakingTypes,
|
stakingTypes,
|
||||||
} from "./modules";
|
} from "./modules";
|
||||||
|
import {
|
||||||
|
createAuthzAminoConverters,
|
||||||
|
createBankAminoConverters,
|
||||||
|
createDistributionAminoConverters,
|
||||||
|
createFreegrantAminoConverters,
|
||||||
|
createGovAminoConverters,
|
||||||
|
createIbcAminoConverters,
|
||||||
|
createStakingAminoConverters,
|
||||||
|
} from "./modules";
|
||||||
import { DeliverTxResponse, StargateClient } from "./stargateclient";
|
import { DeliverTxResponse, StargateClient } from "./stargateclient";
|
||||||
|
|
||||||
export const defaultRegistryTypes: ReadonlyArray<[string, GeneratedType]> = [
|
export const defaultRegistryTypes: ReadonlyArray<[string, GeneratedType]> = [
|
||||||
@@ -81,6 +90,18 @@ export interface SigningStargateClientOptions {
|
|||||||
readonly gasPrice?: GasPrice;
|
readonly gasPrice?: GasPrice;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function createDefaultTypes(prefix: string): AminoConverters {
|
||||||
|
return {
|
||||||
|
...createAuthzAminoConverters(),
|
||||||
|
...createBankAminoConverters(),
|
||||||
|
...createDistributionAminoConverters(),
|
||||||
|
...createGovAminoConverters(),
|
||||||
|
...createStakingAminoConverters(prefix),
|
||||||
|
...createIbcAminoConverters(),
|
||||||
|
...createFreegrantAminoConverters(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export class SigningStargateClient extends StargateClient {
|
export class SigningStargateClient extends StargateClient {
|
||||||
public readonly registry: Registry;
|
public readonly registry: Registry;
|
||||||
public readonly broadcastTimeoutMs: number | undefined;
|
public readonly broadcastTimeoutMs: number | undefined;
|
||||||
@@ -123,7 +144,8 @@ export class SigningStargateClient extends StargateClient {
|
|||||||
super(tmClient);
|
super(tmClient);
|
||||||
// TODO: do we really want to set a default here? Ideally we could get it from the signer such that users only have to set it once.
|
// TODO: do we really want to set a default here? Ideally we could get it from the signer such that users only have to set it once.
|
||||||
const prefix = options.prefix ?? "cosmos";
|
const prefix = options.prefix ?? "cosmos";
|
||||||
const { registry = createDefaultRegistry(), aminoTypes = new AminoTypes({ prefix }) } = options;
|
const { registry = createDefaultRegistry(), aminoTypes = new AminoTypes(createDefaultTypes(prefix)) } =
|
||||||
|
options;
|
||||||
this.registry = registry;
|
this.registry = registry;
|
||||||
this.aminoTypes = aminoTypes;
|
this.aminoTypes = aminoTypes;
|
||||||
this.signer = signer;
|
this.signer = signer;
|
||||||
|
|||||||
Reference in New Issue
Block a user