Skip to content

Stride-Labs/stridejs

Repository files navigation

stridejs

⚠️ stridejs currently bundles in a specific version of cosmos-sdk (v0.45.16-ics-lsm-rc0) due to LSM. Carefully import the modules you need.

install

npm install stridejs

Connecting with Wallets and Signing Messages

⚡️ For web interfaces, we recommend using cosmos-kit. To sign and broadcast messages, you can create signers with a variety of options:

Initializing the Stargate Client

We recommend manually making the SigningStargateClient instance yourself by using getSigningStrideClientOptions:

import {
  getSigningStrideClientOptions,
  strideAccountParser,
} from "@stride/proto";

const { registry, aminoTypes } = getSigningStrideClientOptions();

const client = await SigningStargateClient.connectWithSigner(
  rpc,
  offlineSigner,
  {
    registry,
    aminoTypes,
    accountParser: strideAccountParser,
  },
);

Custom Account Parser

You are free to wrap stride account's parser depending on your use-case, take this as an example:

import { accountFromAny, Account } from "@cosmjs/stargate";

function accountParser(input: Any): Account {
  switch (input.typeUrl) {
    case '/injective.types.v1beta1.EthAccount': {
      return injectiveAccountParser(input)
    }

    case '/stride.vesting.StridePeriodicVestingAccount': {
      return strideAccountParser(input)
    }

    default: {
      return accountFromAny(input);
    }
  }
}

Usage

We strongly recommend that you check the generated files in src/codegen/stride and use it as source of truth for which functions you could use.

The rest of our documentation will cover only the tip of the iceberg — examples you can take ideas from.

RPC Client

import { stride } from "stridejs";

const client = await stride.ClienFactory.createRPCQueryClient({
  rpcEndpoint: RPC_ENDPOINT,
});

const balance = await client.cosmos.bank.v1beta1.allBalances({
  address: "stride1addresshere",
});

Composing & Broadcasting Stride Messages

import { stride } from "stridejs";

const msgClaimFreeAmount =
  stride.claim.MessageComposer.withTypeUrl.claimFreeAmount({
    user: "stride1addresshere",
  });

const fee = {
  amount: [
    {
      amount: "0",
      denom: "STRD",
    },
  ],
  gas: 250_000,
};

const tx = await strideAccount.client.signAndBroadcast(
  "stride1addresshere",
  [msgClaimFreeAmount],
  fee,
  "",
);

assertIsDeliverTxSuccess(tx);

If you're unfamiliar with Stargate, you can read their guide here.

Composing IBC Messages

import { ibc } from "stridejs";

const { transfer } =
  ibc.applications.transfer.v1.MessageComposer.withTypeUrl.transfer({
    // Redacted (check internal types for the message parameters)
  });

Developing & Publishing

pnpm install

Checkout Relevant Branches (Optional)

We currently bundle in a specific version of cosmos-sdk because of LSM. And sometimes we do the same for Stride too.

Open up scripts/clone_repos.ts, and find the rev (which corresponds to the branch to be used) field. Adjust as you see fit.

New Transaction Types (Optional)

If there are new public-facing transaction types on the Stride side, make sure to manually adjust its aminoType by opening scripts/codegen.js. Under options.aminoEncoding.exceptions, you'll find stuff like:

"/stride.stakeibc.MsgLiquidStake": {
  aminoType: "stakeibc/LiquidStake",
},
"/stride.stakeibc.MsgLSMLiquidStake": {
  aminoType: "stakeibc/LSMLiquidStake",
},

Make sure to add the new transaction types with the same pattern:

"/stride.module.MsgModuleName": {
  aminoType: "module/MsgModuleName",
},

Update the generated ts files:

pnpm run codegen

Build the module and types:

pnpm run build

Publishing

If you haven't logged to npm cli, run:

npm login

Update package.json version, then publish:

# Example: <version> = v0.4.1
git tag <version>
git push origin <version>
git push origin main
npm publish

Credits

🛠 Built by Cosmology — if you like our tools, please consider delegating to our validator ⚛️

Code built with the help of these related projects:

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •