@kyve/sdk-beta
Version:
<p align="center"> <a href="https://kyve.network"> <img src="https://user-images.githubusercontent.com/62398724/137493477-63868209-a19b-4efa-9413-f06d41197d6d.png" style="border-radius: 50%" height="96"> </a> <h3 align="center"><code>@kyve/sdk</
73 lines (64 loc) • 1.87 kB
text/typescript
import { StdFee } from "@cosmjs/amino/build/signdoc";
import { AccountData } from "@cosmjs/amino/build/signer";
import { coins, SigningStargateClient } from "@cosmjs/stargate";
import BigNumber from "bignumber.js";
import { DENOM } from "../../../../../constants";
import { signTx, TxPromise } from "../../../../../utils/helper";
export default class KyveBaseMsg {
private nativeClient: SigningStargateClient;
public readonly account: AccountData;
constructor(client: SigningStargateClient, account: AccountData) {
this.account = account;
this.nativeClient = client;
}
async transfer(
recipient: string,
amount: string,
options?: {
fee?: StdFee | "auto" | number;
memo?: string;
}
) {
const tx = {
typeUrl: "/cosmos.bank.v1beta1.MsgSend",
value: {
fromAddress: this.account.address,
toAddress: recipient,
amount: coins(amount, DENOM),
},
};
return new TxPromise(
this.nativeClient,
await signTx(this.nativeClient, this.account.address, tx, options)
);
}
async multiTransfer(recipient: string[], amount: string) {
const allAmount = new BigNumber(amount).multipliedBy(recipient.length);
const tx = {
typeUrl: "/cosmos.bank.v1beta1.MsgMultiSend",
value: {
inputs: [
{
address: this.account.address,
coins: coins(allAmount.toString(), DENOM),
},
],
outputs: recipient.map((address) => ({
address,
coins: coins(amount, DENOM),
})),
},
};
return new TxPromise(
this.nativeClient,
await signTx(this.nativeClient, this.account.address, tx)
);
}
async getKyveBalance() {
const data = await this.nativeClient.getBalance(
this.account.address,
DENOM
);
return data.amount;
}
}