@entangle-labs/uip-sdk
v0.0.30
Published
Developer Kit for UIP
Readme
UIP SDK Documentation
Utilities for UIP.
Table of Contents
Installation
Using npm:
npm install @entangle-labs/uip-sdkAPI
Currently SDK include Fees module for fees calculation and
network activity checks. Also it is possible to calculate
message hash from source network transaction
EVM
Main method for estimation:
public async estimateExecutionWithGas({
srcChainId: bigint,
destChainId: bigint,
gasLimit: bigint
})Solana method for estimation:
public async estimateExecutionSolana(
input: SimulateExecuteLiteInput
)
export type SimulateExecuteLiteInput = {
connection: Connection;
payload: Buffer;
srcChain: bigint;
senderAddr: Buffer;
destChain: bigint;
destAddr: PublicKey;
accounts: AccountMeta[];
payerOverride?: PublicKey;
computeUnits?: number;
};Examples
Mode
SDK is made for both testnet and mainnet usage. Default mode set is mainnet.
If you want to switch to testnet mode, use:
const provider = new UIPProvider("https://json-rpc.entangle.fi")
const feesEvm = new FeesEvm(provider)
feesEvm.mode = "testnet"
feesEvm.EIBName = "teib"For switch to mainnet:
const provider = new UIPProvider("https://evm-testnet.entangle.fi")
const feesEvm = new FeesEvm(provider)
feesEvm.mode = "mainnet"
feesEvm.EIBName = "eib"Network config
SDK use public RPC providers by default. If you want to use your own personal config, redefine config with:
const feesSdkConfigured = new FeesEvm(provider, config as Chain[])Where config is array of Chain objects:
{
id: BigInt(11155111),
name: "ethereum_sepolia",
hexId: "0xAA36A7",
type: "evm",
mode: "testnet",
rpcUrl: "https://ethereum-sepolia-rpc.publicnode.com",
nativeCurrency: {
name: "Sepolia Ether",
symbol: "ETH",
decimals: 18,
},
blockExplorerUrl: "https://sepolia.etherscan.io",
}EVM usage
import { FeesEvm, FeesSolana, UIPProvider } from "@entangle-labs/uip-sdk"
const provider = new UIPProvider("https://json-rpc.entangle.fi")
const feesEvm = new FeesEvm(provider)
async function getDstChainFee() {
const fee = await feesSdk.estimateExecutionWithGas({
srcChainId: 11155111n,
destChainId: 33133n,
gasLimit: 200000n,
});
console.log("Estimated price:", fee)
} import { generateReceiptHash } from "@entangle-labs/uip-sdk"
// ... get receipt
const msgHash = await generateReceiptHash(BigInt(33133), receipt)Solana usage
import { FeesSolana } from "@entangle-labs/uip-sdk"
const feesSolana = new FeesSolana()
fee = await feesSolana.estimateExecutionSolana({
connection: new Connection(srcChain.rpcUrl),
payload: Buffer.from(payloadOriginal),
srcChain: BigInt(srcChainId),
senderAddr: Buffer.from(senderContractAddr),
destChain: BigInt(dstChainId),
destAddr: new PublicKey(destAddr),
accounts: [
// Provide the accounts required for execution on the destination address
],
})