@sei-js/cosmjs
Version:
TypeScript library for CosmJS interactions on the Sei blockchain
149 lines (148 loc) • 5.67 kB
TypeScript
import type { HttpEndpoint } from '@cosmjs/cosmwasm-stargate';
import { type OfflineSigner, Registry } from '@cosmjs/proto-signing';
import { AminoTypes, SigningStargateClient, type SigningStargateClientOptions, StargateClient, type StargateClientOptions } from '@cosmjs/stargate';
/**
* Creates a Registry object that maps CosmWasm and Sei protobuf type identifiers to their actual implementations.
*
* @example
* ```tsx
* import { Registry } from "@cosmjs/proto-signing";
* import { defaultRegistryTypes } from "@cosmjs/stargate";
* import { getSigningStargateClient } from '@sei-js/cosmjs';
* import { seiProtoRegistry } from '@sei-js/cosmos/encoding';
*
* ...
*
* // Set up Sei proto registry
* const registry = createSeiRegistry();
*
* // Create a client with registry
* const signingClient = await getSigningStargateClient(RPC_URL, offlineSigner, { registry });
* ```
*
* @returns A Registry object that maps CosmWasm and Sei protobuf type identifiers to their actual implementations.
* @category Config
*/
export declare const createSeiRegistry: () => Registry;
/**
* Creates a mapping of stargate message types to Sei Amino types.
*
* @example
* ```tsx
* import { Registry } from "@cosmjs/proto-signing";
* import { defaultRegistryTypes } from "@cosmjs/stargate";
* import { getSigningStargateClient } from '@sei-js/cosmjs';
* import { createSeiRegistry, createSeiAminoTypes } from "@sei-js/cosmos/encoding";
*
* ...
*
* // Create a client with registry
* const signingClient = await getSigningStargateClient(RPC_URL, offlineSigner, { registry: createSeiRegistry(), aminoTypes: createSeiAminoTypes() });
* ```
*
* @returns A mapping of stargate message types to Sei Amino types.
* @category Config
*/
export declare const createSeiAminoTypes: () => AminoTypes;
/**
* Gets a @cosmjs/stargate client used to interact with the Sei chain.
*
* @example
* With custom registry and amino types
* ```tsx
* import { getStargateClient } from '@sei-js/cosmjs';
*
* ...
*
* // Create a client with registry
* const signingClient = await getStargateClient(RPC_URL);
* ```
*
* @param rpcEndpoint The endpoint of the RPC node used to interact to the Sei chain.
* @param options A StargateClientOptions object used to configure the stargate client.
* @returns A StargateClient object used to interact with the Sei chain.
* @category Clients
*/
export declare const getStargateClient: (rpcEndpoint: string | HttpEndpoint, options?: StargateClientOptions) => Promise<StargateClient>;
/**
* Gets a @cosmjs/stargate client used to sign transactions on the Sei chain.
*
* @example
* Standard usage
* ```tsx
* import { getSigningStargateClient } from '@sei-js/cosmjs';
*
* // Don't forget to connect if using a wallet extension
* // or create a wallet from a mnemonic (See above)
* await window.compass.connect(chainId);
*
* const offlineSigner = await window.compass.getOfflineSigner(chainId);
*
* const signingClient = await getSigningStargateClient(RPC_URL, offlineSigner);
* ```
*
* @example
* With custom registry and amino types
* ```tsx
* import { Registry } from "@cosmjs/proto-signing";
* import { defaultRegistryTypes } from "@cosmjs/stargate";
* import { getSigningStargateClient } from '@sei-js/cosmjs';
* import { aminoConverters, seiProtoRegistry } from "@sei-js/cosmos/encoding";
*
* ...
*
* // Set up Sei proto registry
* const registry = new Registry([
* ...defaultRegistryTypes,
* ...seiProtoRegistry,
* ]);
*
* // Create Amino Types
* const aminoTypes = new AminoTypes(aminoConverters);
*
* const offlineSigner = await window.compass.getOfflineSigner(chainId);
*
* // Create a client with registry
* const signingClient = await getSigningStargateClient(RPC_URL, offlineSigner, { registry, aminoTypes });
* ```
*
* @example
* Transfer tokens (Bank send):
* ```tsx
* import { calculateFee } from '@cosmjs/stargate';
* import { getSigningStargateClient } from '@sei-js/cosmjs';
*
* const fee = calculateFee(100000, "0.1usei");
* const amount = { amount: SEND_AMOUNT, denom: TOKEN_DENOM };
*
* const offlineSigner = await window.compass.getOfflineSigner(chainId);
*
* const signingClient = await getSigningStargateClient(RPC_URL, offlineSigner);
* const sendResponse = await signingClient.sendTokens(SENDER_ADDRESS, DESTINATION_ADDRESS, [amount], fee);
* ```
*
* @example
* IBC Transfer:
* ```tsx
* import { calculateFee } from '@cosmjs/stargate';
* import { Encoder } from '@sei-js/cosmos/encoding';
*
* const amount = { amount: SEND_AMOUNT, denom: TOKEN_DENOM };
*
* const ibcResponse = await signingClient.sendIbcTokens(SENDER_ADDRESS, DESTINATION_ADDRESS, amount, 'transfer', CHANNEL_ID, undefined, undefined, fee)
*
* // Create message to place an order
* const msg = Encoder.cosmos.bank.v1beta1.MsgSend.fromPartial({ contractAddr, creator, funds, orders });
* const fee = calculateFee(150000, "0.1usei");
*
* // Sign and broadcast the message
* const response = signingClient.signAndBroadcast(firstAccount.address, [msg], fee);
* ```
*
* @param rpcEndpoint The endpoint of the RPC node used to interact to the Sei chain.
* @param signer An OfflineAminoSigner or OfflineDirectSigner from @cosmjs/amino containing info about the signer.
* @param options A SigningStargateClientOptions object used to configure the stargate client.
* @returns A SigningStargateClient object used to sign transactions on the Sei chain.
* @category Clients
*/
export declare const getSigningStargateClient: (rpcEndpoint: string | HttpEndpoint, signer: OfflineSigner, options?: SigningStargateClientOptions) => Promise<SigningStargateClient>;