From aefa4cd8fd91d859a1d9964a9d9b8f8b1f50e7fd Mon Sep 17 00:00:00 2001
From: Kozer4
Date: Fri, 3 May 2024 11:11:25 +0300
Subject: [PATCH 1/6] fix(examples/srb): after restore tx check update sendTx
---
examples/src/examples/bridge/srb/srb-send-full-example.ts | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/examples/src/examples/bridge/srb/srb-send-full-example.ts b/examples/src/examples/bridge/srb/srb-send-full-example.ts
index 4ecf801..a8ac78e 100644
--- a/examples/src/examples/bridge/srb/srb-send-full-example.ts
+++ b/examples/src/examples/bridge/srb/srb-send-full-example.ts
@@ -50,7 +50,7 @@ const main = async () => {
const srbKeypair = Keypair.fromSecret(privateKey);
const transaction = TransactionBuilder.fromXDR(xdrTx, mainnet.sorobanNetworkPassphrase);
transaction.sign(srbKeypair);
- const signedTx = transaction.toXDR();
+ let signedTx = transaction.toXDR();
const restoreXdrTx = await sdk.utils.srb.simulateAndCheckRestoreTxRequiredSoroban(signedTx, fromAddress);
if (restoreXdrTx) {
@@ -69,6 +69,11 @@ const main = async () => {
} else {
console.log(`Transaction Restore Confirmed. Hash: ${sentRestoreXdrTx.hash}`);
}
+ //get new tx with updated sequences
+ const xdrTx2 = (await sdk.bridge.rawTxBuilder.send(sendParams)) as string;
+ const transaction2 = TransactionBuilder.fromXDR(xdrTx2, mainnet.sorobanNetworkPassphrase);
+ transaction2.sign(srbKeypair);
+ signedTx = transaction2.toXDR();
}
const sent = await sdk.utils.srb.sendTransactionSoroban(signedTx);
From bbe8c98ccf6a8889094f52c2bc014af8bf889715 Mon Sep 17 00:00:00 2001
From: Kozer4
Date: Thu, 9 May 2024 11:18:01 +0300
Subject: [PATCH 2/6] feat(Celo): add CEL enum
---
.cspell.json | 3 ++-
src/chains/index.ts | 11 +++++++++++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/.cspell.json b/.cspell.json
index b4c427c..3e6660f 100644
--- a/.cspell.json
+++ b/.cspell.json
@@ -45,7 +45,8 @@
"Typepoint",
"futurenet",
"Vals",
- "Amoy"
+ "Amoy",
+ "Celo"
],
"flagWords": [],
"ignorePaths": [
diff --git a/src/chains/index.ts b/src/chains/index.ts
index 6f39c15..a697539 100644
--- a/src/chains/index.ts
+++ b/src/chains/index.ts
@@ -63,6 +63,11 @@ export enum ChainSymbol {
*/
ARB = "ARB",
+ /**
+ * The Celo network.
+ */
+ CEL = "CEL",
+
/**
* The Avalanche main network.
*/
@@ -150,6 +155,12 @@ export const chainProperties: Record = {
name: "Avalanche",
chainType: ChainType.EVM,
},
+ [ChainSymbol.CEL]: {
+ chainSymbol: ChainSymbol.CEL,
+ chainId: "0xa4ec",
+ name: "Celo",
+ chainType: ChainType.EVM,
+ },
[ChainSymbol.POL]: {
chainSymbol: ChainSymbol.POL,
chainId: "0x89",
From 6d5849f4dec2542cfe07405202687e32424a2d65 Mon Sep 17 00:00:00 2001
From: Kozer4
Date: Mon, 20 May 2024 16:17:07 +0300
Subject: [PATCH 3/6] fix
---
src/models/index.ts | 4 ++--
src/services/bridge/utils.ts | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/models/index.ts b/src/models/index.ts
index 927d5b3..cae8f7f 100644
--- a/src/models/index.ts
+++ b/src/models/index.ts
@@ -114,9 +114,9 @@ export enum AmountFormat {
/**
* Describes the same amount in two variation formats.
*
- * For {@link AmountFormat.INT} value contains the amount in tokens denomination
+ * For {@link AmountFormat.INT} value contains the amount in the smallest denomination
*
- * For {@link AmountFormat.FLOAT} value contains the amount in the smallest denomination
+ * For {@link AmountFormat.FLOAT} value contains the amount in tokens denomination
*/
export type AmountFormatted = {
[key in AmountFormat]: string;
diff --git a/src/services/bridge/utils.ts b/src/services/bridge/utils.ts
index 6151034..a2e6bef 100644
--- a/src/services/bridge/utils.ts
+++ b/src/services/bridge/utils.ts
@@ -292,7 +292,7 @@ export async function getGasFeeOptions(
}
async function validateExtraGasNotExceeded(
- extraGasInInt: string,
+ extraGasInt: string,
gasFeePaymentMethod: FeePaymentMethod,
sourceToken: TokenWithChainDetails,
destinationToken: TokenWithChainDetails,
@@ -304,9 +304,9 @@ async function validateExtraGasNotExceeded(
throw new InvalidGasFeePaymentOptionError(`Impossible to pay extra gas by '${gasFeePaymentMethod}' payment method`);
}
const extraGasMaxIntLimit = extraGasMaxLimit[AmountFormat.INT];
- if (Big(extraGasInInt).gt(extraGasMaxIntLimit)) {
+ if (Big(extraGasInt).gt(extraGasMaxIntLimit)) {
throw new ExtraGasMaxLimitExceededError(
- `Extra gas ${extraGasInInt} in int format, exceeded limit ${extraGasMaxIntLimit} for '${gasFeePaymentMethod}' payment method`
+ `Extra gas ${extraGasInt} in int format, exceeded limit ${extraGasMaxIntLimit} for '${gasFeePaymentMethod}' payment method`
);
}
}
From 0f8298827ae8dd649e346ebaf9f1be9601372e21 Mon Sep 17 00:00:00 2001
From: Kozer4
Date: Thu, 23 May 2024 11:34:51 +0300
Subject: [PATCH 4/6] fix(examples): update
---
README.md | 134 ++++++++++--------
documentation/browser/evm.md | 86 +++++++++++
documentation/browser/solana.md | 59 ++++++++
documentation/browser/stellar.md | 102 +++++++++++++
documentation/browser/tron.md | 55 +++++++
examples/package.json | 20 +--
examples/pnpm-lock.yaml | 130 ++++-------------
...lculate-amount.ts => calculate-amounts.ts} | 8 +-
...pprove-and-send-tx-gas-fee-with-stables.ts | 81 -----------
.../evm/evm-build-approve-and-send-tx.ts | 64 ---------
.../evm-build-send-tx-gas-fee-with-stables.ts | 73 ++++++++++
.../examples/bridge/evm/evm-build-send-tx.ts | 62 ++++++++
.../examples/bridge/evm/evm-build-swap-tx.ts | 53 ++++---
.../bridge/evm/evm-check-allowance.ts | 68 ---------
.../bridge/evm/evm-send-full-example.ts | 63 --------
.../examples/bridge/evm/evm-send-tokens.ts | 54 -------
.../bridge/get-average-transfer-time.ts | 4 +-
.../bridge/get-extra-gas-max-limits.ts | 4 +-
.../src/examples/bridge/get-fee-percent.ts | 34 -----
.../examples/bridge/get-transfer-status.ts | 4 +-
examples/src/examples/bridge/send-by-cctp.ts | 33 ++---
.../bridge/solana/sol-build-send-tx.ts | 47 +++---
.../bridge/solana/sol-build-swap-tx.ts | 25 ++--
.../bridge/srb/srb-send-full-example.ts | 10 +-
...pprove-and-send-tx-gas-fee-with-stables.ts | 92 ------------
.../trx/trx-build-approve-and-send-tx.ts | 74 ----------
.../trx-build-send-tx-gas-fee-with-stables.ts | 75 ++++++++++
.../examples/bridge/trx/trx-build-send-tx.ts | 56 ++++++++
.../examples/bridge/trx/trx-build-swap-tx.ts | 55 +++----
.../examples/bridge/trx/trx-send-tokens.ts | 55 -------
.../general/evm/bsc/bsc-approve-tokens.ts | 34 -----
.../general/evm/bsc/bsc-get-token-balance.ts | 42 ------
.../general/evm/evm-approve-tokens.ts | 21 ++-
.../general/evm/evm-get-token-balance.ts | 14 +-
.../general/evm/pol/pol-approve-tokens.ts | 34 -----
.../general/evm/pol/pol-get-token-balance.ts | 43 ------
.../general/solana/sol-get-token-balance.ts | 4 +-
.../general/trx/trx-approve-tokens.ts | 35 -----
.../general/trx/trx-get-token-balance.ts | 41 ------
examples/src/examples/get-tokens-info.ts | 4 +-
.../evm/evm-build-claim-rewards-tx.ts | 28 ++--
.../evm/evm-build-deposit-tx.ts | 30 ++--
.../evm/evm-build-withdraw-tx.ts | 30 ++--
.../evm/get-amount-to-be-withdrawn.ts | 14 +-
.../evm/get-liquidity-balance.ts | 17 +--
.../evm/get-lp-amount-on-deposit.ts | 14 +-
.../solana/get-amount-to-be-withdrawn.ts | 4 +-
.../solana/get-liquidity-balance.ts | 6 +-
.../solana/get-lp-amount-on-deposit.ts | 4 +-
.../solana/sol-build-claim-rewards-tx.ts | 6 +-
.../solana/sol-build-deposit-tx.ts | 6 +-
.../solana/sol-build-withdraw-tx.ts | 6 +-
.../trx/get-amount-to-be-withdrawn.ts | 13 +-
.../trx/get-liquidity-balance.ts | 16 +--
.../trx/get-lp-amount-on-deposit.ts | 12 +-
.../trx/trx-build-claim-rewards-tx.ts | 41 ++----
.../trx/trx-build-deposit-tx.ts | 43 ++----
.../trx/trx-build-withdraw-tx.ts | 42 ++----
examples/src/utils/tronWeb.ts | 21 +++
examples/src/utils/web3.ts | 13 +-
60 files changed, 946 insertions(+), 1372 deletions(-)
create mode 100644 documentation/browser/evm.md
create mode 100644 documentation/browser/solana.md
create mode 100644 documentation/browser/stellar.md
create mode 100644 documentation/browser/tron.md
rename examples/src/examples/bridge/{calculate-amount.ts => calculate-amounts.ts} (95%)
delete mode 100644 examples/src/examples/bridge/evm/evm-build-approve-and-send-tx-gas-fee-with-stables.ts
delete mode 100644 examples/src/examples/bridge/evm/evm-build-approve-and-send-tx.ts
create mode 100644 examples/src/examples/bridge/evm/evm-build-send-tx-gas-fee-with-stables.ts
create mode 100644 examples/src/examples/bridge/evm/evm-build-send-tx.ts
delete mode 100644 examples/src/examples/bridge/evm/evm-check-allowance.ts
delete mode 100644 examples/src/examples/bridge/evm/evm-send-full-example.ts
delete mode 100644 examples/src/examples/bridge/evm/evm-send-tokens.ts
delete mode 100644 examples/src/examples/bridge/get-fee-percent.ts
delete mode 100644 examples/src/examples/bridge/trx/trx-build-approve-and-send-tx-gas-fee-with-stables.ts
delete mode 100644 examples/src/examples/bridge/trx/trx-build-approve-and-send-tx.ts
create mode 100644 examples/src/examples/bridge/trx/trx-build-send-tx-gas-fee-with-stables.ts
create mode 100644 examples/src/examples/bridge/trx/trx-build-send-tx.ts
delete mode 100644 examples/src/examples/bridge/trx/trx-send-tokens.ts
delete mode 100644 examples/src/examples/general/evm/bsc/bsc-approve-tokens.ts
delete mode 100644 examples/src/examples/general/evm/bsc/bsc-get-token-balance.ts
delete mode 100644 examples/src/examples/general/evm/pol/pol-approve-tokens.ts
delete mode 100644 examples/src/examples/general/evm/pol/pol-get-token-balance.ts
delete mode 100644 examples/src/examples/general/trx/trx-approve-tokens.ts
delete mode 100644 examples/src/examples/general/trx/trx-get-token-balance.ts
create mode 100644 examples/src/utils/tronWeb.ts
diff --git a/README.md b/README.md
index 25d4927..1267adb 100644
--- a/README.md
+++ b/README.md
@@ -45,23 +45,36 @@ $ npm install @allbridge/bridge-core-sdk
## How to use
+### Find out how to integrate Allbridge Core SDK and Browser Extension Wallet
+
+[***Evm***](https://github.com/allbridge-io/allbridge-core-js-sdk/tree/main/documentation/browser/evm.md)
+[***Solana***](https://github.com/allbridge-io/allbridge-core-js-sdk/tree/main/documentation/browser/solana.md)
+[***Stellar***](https://github.com/allbridge-io/allbridge-core-js-sdk/tree/main/documentation/browser/stellar.md)
+[***Tron***](https://github.com/allbridge-io/allbridge-core-js-sdk/tree/main/documentation/browser/tron.md)
+
### 1. Initialize SDK
-#### 1.1 Initialize SDK instance with your node Rpc urls (RECOMMENDED)
+
+#### 1) Initialize SDK instance with your node Rpc urls (RECOMMENDED)
+
```ts
-import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
+import {AllbridgeCoreSdk, nodeRpcUrlsDefault} from "@allbridge/bridge-core-sdk";
// Connections to blockchains will be made through your rpc-urls passed during initialization
const sdk = new AllbridgeCoreSdk({
...nodeRpcUrlsDefault,
TRX: "your trx-rpc-url",
ETH: "your eth-rpc-url"
});
-// The Provider parameter may not be passed in methods where it is present, for example:
+// Sdk will be using your rpc url for fetch data from blockchain to create tx
const rawTx = await sdk.bridge.rawTxBuilder.send(sendParams);
```
-#### 1.2 Initialize SDK instance (using passed provider for blockchains connections)
+#### 2) Initialize SDK instance (using passed provider for blockchains connections)
+
+@Deprecated use the approach described above
+
```ts
-import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
+import {AllbridgeCoreSdk, nodeRpcUrlsDefault} from "@allbridge/bridge-core-sdk";
+
const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
// The Provider parameter must be passed in order for it to be used to connect to the blockchain, for example:
const rawTx = await sdk.bridge.rawTxBuilder.send(sendParams, provider);
@@ -79,16 +92,16 @@ const {bridgeAddress, tokens, chainId, name} = supportedChains[ChainSymbol.ETH];
const usdtOnEthToken = tokens.find(token => token.symbol === 'USDT');
```
-### 3.1 Approve the transfer of tokens
+### 3.1 Approve the transfer of tokens (only for Evm, Tron)
Before sending tokens, the bridge has to be authorized to use the tokens of the owner.
-This is done by calling the `approve` method on SDK instance.
+This is done by building the `approve` transaction with SDK instance.
For Ethereum USDT - due to specificity of the USDT contract:
If the current allowance is not 0,
this function will perform an additional transaction to set allowance to 0 before setting the new allowance value.
```ts
-const response = await sdk.bridge.approve(provider, {
+const rawTx = await sdk.bridge.rawTxBuilder.approve({
token: sourceToken,
owner: accountAddress
});
@@ -99,7 +112,7 @@ const response = await sdk.bridge.approve(provider, {
Initiate the transfer of tokens with `send` method on SDK instance.
```ts
-sdk.bridge.send(provider, {
+const rawTx = await sdk.bridge.rawTxBuilder.send({
amount: "1.01",
fromAccountAddress: fromAddress,
toAccountAddress: toAddress,
@@ -111,7 +124,7 @@ sdk.bridge.send(provider, {
### Full example
-Swap BUSD on BSC chain to USDT on TRX chain
+Swap USDC on ETH chain to USDC on POL chain
```ts
import {
@@ -121,50 +134,54 @@ import {
} from "@allbridge/bridge-core-sdk";
import Web3 from "web3";
import * as dotenv from "dotenv";
-dotenv.config({ path: ".env" });
+// Utils method
+// For more details, see Examples (https://github.com/allbridge-io/allbridge-core-js-sdk/tree/main/examples)
+// import { getEnvVar } from "../../../utils/env";
+// import { sendEvmRawTransaction } from "../../../utils/web3";
+// import { ensure } from "../../../utils/utils";
+
+dotenv.config({path: ".env"});
async function runExample() {
- // sender address
- const fromAddress = '0x01234567890abcdef01234567890abcdef012345';
- // recipient address
- const toAddress = 'AbcDefGHIJklmNoPQRStuvwXyz1aBcDefG';
-
- // configure web3
- const web3 = new Web3('https://bsc-dataseed1.binance.org:443');
- const account = web3.eth.accounts.privateKeyToAccount(process.env.PRIVATE_KEY);
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk({
- solanaRpcUrl: "your solana-rpc-url",
- tronRpcUrl: "your tron-rpc-url",
- });
-
- // fetch information about supported chains
- const chains = await sdk.chainDetailsMap();
-
- const bscChain = chains[ChainSymbol.BSC];
- const busdToken = bscChain.tokens.find(token => token.symbol === 'BUSD');
-
- const trxChain = chains[ChainSymbol.TRX];
- const usdtToken = trxChain.tokens.find(token => token.symbol === 'USDT');
-
- // authorize a transfer of tokens from sender's address
- await sdk.bridge.approve(web3, {
- token: busdToken,
- owner: fromAddress
- });
-
- // initiate transfer
- const response = await sdk.bridge.send(web3, {
- amount: "1.01",
- fromAccountAddress: fromAddress,
- toAccountAddress: toAddress,
- sourceToken: busdToken,
- destinationToken: usdtToken,
- messenger: Messenger.ALLBRIDGE,
- });
- console.log("Tokens sent:", response.txId);
-}
+ const fromAddress = getEnvVar("ETH_ACCOUNT_ADDRESS"); // sender address
+ const toAddress = getEnvVar("TRX_ACCOUNT_ADDRESS"); // recipient address
+
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: getEnvVar("WEB3_PROVIDER_URL") });
+
+ const chains = await sdk.chainDetailsMap();
+
+ const sourceChain = chains[ChainSymbol.ETH];
+ const sourceToken = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+
+ const destinationChain = chains[ChainSymbol.POL];
+ const destinationToken = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+
+ const amount = "1.01";
+
+ //check if sending tokens already approved
+ if (!(await sdk.bridge.checkAllowance({ token: sourceToken, owner: fromAddress, amount: amount }))) {
+ // authorize the bridge to transfer tokens from sender's address
+ const rawTransactionApprove = (await sdk.bridge.rawTxBuilder.approve({
+ token: sourceToken,
+ owner: fromAddress,
+ })) as RawEvmTransaction;
+ const approveTxReceipt = await sendEvmRawTransaction(rawTransactionApprove);
+ console.log("Approve tx id:", approveTxReceipt.transactionHash);
+ }
+
+ // initiate transfer
+ const rawTransactionTransfer = (await sdk.bridge.rawTxBuilder.send({
+ amount: amount,
+ fromAccountAddress: fromAddress,
+ toAccountAddress: toAddress,
+ sourceToken: sourceToken,
+ destinationToken: destinationToken,
+ messenger: Messenger.ALLBRIDGE,
+ })) as RawEvmTransaction;
+ console.log(`Sending ${amount} ${sourceToken.symbol}`);
+ const txReceipt = await sendEvmRawTransaction(rawTransactionTransfer);
+ console.log("tx id:", txReceipt.transactionHash);
+ }
runExample();
```
@@ -177,7 +194,8 @@ For more details, see [***Examples***](https://github.com/allbridge-io/allbridge
### Liquidity pools operations
SDK supports operation with **Liquidity Pools**
-For more details, see [***Examples***](https://github.com/allbridge-io/allbridge-core-js-sdk/tree/main/examples/src/examples/liquidity-pool)
+For more details, see [
+***Examples***](https://github.com/allbridge-io/allbridge-core-js-sdk/tree/main/examples/src/examples/liquidity-pool)
### Transaction builder
@@ -186,7 +204,7 @@ For more details, see [***Examples***](https://github.com/allbridge-io/allbridge
SDK method `bridge.rawTxBuilder.approve` can be used to create approve Transaction.
```ts
-const rawTransactionApprove = await sdk.bridge.rawTxBuilder.approve(provider, approveParams);
+const rawTransactionApprove = await sdk.bridge.rawTxBuilder.approve(approveParams);
```
#### Send Transaction
@@ -194,7 +212,7 @@ const rawTransactionApprove = await sdk.bridge.rawTxBuilder.approve(provider, ap
SDK method `bridge.rawTxBuilder.send` can be used to create send Transaction.
```ts
-const rawTransactionSend = await sdk.bridge.rawTxBuilder.send(sendParams, provider);
+const rawTransactionSend = await sdk.bridge.rawTxBuilder.send(sendParams);
```
**TIP:**
@@ -205,9 +223,9 @@ do not pass provider param
const transaction = await sdk.bridge.rawTxBuilder.send(sendParams);
```
-
***TIP:***
-For more details, see [***Example***](https://github.com/allbridge-io/allbridge-core-js-sdk/blob/main/examples/src/examples/bridge/solana/sol-build-send-tx.js)
+For more details, see [***Example
+***](https://github.com/allbridge-io/allbridge-core-js-sdk/blob/main/examples/src/examples/bridge/solana/sol-build-send-tx.js)
### Get information about sent transaction
@@ -257,7 +275,7 @@ The method returns an object with two properties:
If this property is not present, it indicates that the stablecoin payment method is not available.
```ts
-const { native, stablecoin } = await sdk.getGasFeeOptions(
+const {native, stablecoin} = await sdk.getGasFeeOptions(
usdtOnEthToken, // from ETH
usdtOnTrxToken, // to TRX
Messenger.ALLBRIDGE
diff --git a/documentation/browser/evm.md b/documentation/browser/evm.md
new file mode 100644
index 0000000..a68ffdc
--- /dev/null
+++ b/documentation/browser/evm.md
@@ -0,0 +1,86 @@
+
+# Integrating Allbridge Core SDK and Browser Extension Wallet with TypeScript
+
+## Introduction
+This documentation provides a step-by-step guide on integrating the Allbridge Core SDK and a browser extension wallet (MetaMask and WalletConnect) using TypeScript in a web project.
+
+## Prerequisites
+- TypeScript
+- Node.js
+- npm or yarn
+- Allbridge Core SDK package installed ([`@allbridge/bridge-core-sdk`](https://www.npmjs.com/package/@allbridge/bridge-core-sdk))
+- WalletConnect Provider (`@walletconnect/ethereum-provider`). [Docs](https://docs.walletconnect.com/)
+- Web3.js library (`web3, web3-core`)
+- MetaMask extension installed in the browser. [Docs](https://docs.metamask.io/)
+
+## Installation
+First, install the necessary packages:
+
+```bash
+npm install @allbridge/bridge-core-sdk @walletconnect/ethereum-provider web3
+```
+
+## Step-by-Step Integration
+
+### Step 1: Import Necessary Modules
+
+Import the required modules and initialize the Allbridge Core SDK:
+
+```typescript
+import {
+ AllbridgeCoreSdk,
+ NodeRpcUrls,
+ RawEvmTransaction,
+ SendParams,
+} from '@allbridge/bridge-core-sdk';
+import Web3 from 'web3';
+import { AbstractProvider } from 'web3-core';
+import EthereumProvider from '@walletconnect/ethereum-provider';
+```
+
+### Step 2: Define Node URLs and initialize SDK
+
+Specifying nodes for EVM networks is optional, but can be done according to the `NodeRpcUrls` type:
+
+```typescript
+const SDK_NODE_URLS: NodeRpcUrls = {};
+const sdk = new AllbridgeCoreSdk(SDK_NODE_URLS);
+```
+
+### Step 3: Define Web3
+
+Define Web3 if you are using the MetaMask wallet:
+
+```typescript
+const web3: Web3 = new Web3(window.ethereum);
+```
+
+Define Web3 if you are using the WalletConnect protocol:
+
+```typescript
+const provider = await EthereumProvider.init({
+ projectId: 'YOUR_WALLET_CONNECT_PROJECT_ID',
+ methods: ['eth_sendTransaction'],
+ optionalChains: [chainId],
+ showQrModal: true,
+});
+await provider.enable();
+const web3 = new Web3(provider as AbstractProvider);
+```
+
+### Step 4: Create, sign and send Allbridge raw transaction:
+
+```typescript
+const rawTransaction = (await sdk.bridge.rawTxBuilder.send(params)) as RawEvmTransaction;
+const gasLimit = await web3.eth.estimateGas(rawTransaction);
+const signedTx = await web3.eth.sendTransaction({
+ ...rawTransaction,
+ gas: gasLimit,
+});
+const txId = signedTx.transactionHash;
+console.log('txId', txId);
+```
+
+## Conclusion
+
+With this guide, you have set up the Allbridge Core SDK and MetaMask wallet or WalletConnect protocol integration on your web application using TypeScript. You can now securely send transactions and check their status on the explorer. For further customization and advanced usage, refer to the official documentation of the respective SDKs.
diff --git a/documentation/browser/solana.md b/documentation/browser/solana.md
new file mode 100644
index 0000000..8f90dc8
--- /dev/null
+++ b/documentation/browser/solana.md
@@ -0,0 +1,59 @@
+
+# Integrating Allbridge Core SDK and Browser Extension Wallet with TypeScript
+
+## Introduction
+This documentation provides a step-by-step guide on integrating the Allbridge Core SDK and a browser extension wallet (Phantom Wallet) using TypeScript in a web project.
+
+## Prerequisites
+- TypeScript
+- Node.js
+- npm or yarn
+- Allbridge Core SDK package installed ([`@allbridge/bridge-core-sdk`](https://www.npmjs.com/package/@allbridge/bridge-core-sdk))
+- Web3.js library (`@solana/web3.js`)
+- Phantom Wallet extension installed in the browser. [Docs](https://docs.phantom.app/)
+
+## Installation
+First, install the necessary packages:
+
+```bash
+npm install @allbridge/bridge-core-sdk @solana/web3.js
+```
+
+## Step-by-Step Integration
+
+### Step 1: Import Necessary Modules
+
+Import the required modules and initialize the Allbridge Core SDK:
+
+```typescript
+import {
+ AllbridgeCoreSdk,
+ ChainSymbol,
+ NodeRpcUrls,
+ SendParams,
+} from '@allbridge/bridge-core-sdk';
+import { VersionedTransaction } from '@solana/web3.js';
+```
+
+### Step 2: Define Node URLs and initialize SDK
+
+Set up the node URLs for the different chains and initialize the Allbridge Core SDK.
+
+```typescript
+const SDK_NODE_URLS: NodeRpcUrls = {
+ [ChainSymbol.SOL]: 'https://rpc.ankr.com/solana',
+};
+const sdk = new AllbridgeCoreSdk(SDK_NODE_URLS);
+```
+
+### Step 3: Create, sign and send Allbridge raw transaction:
+
+```typescript
+const rawTransaction = (await sdk.bridge.rawTxBuilder.send(params)) as VersionedTransaction;
+const { signature } = await window.solana.signAndSendTransaction(rawTransaction);
+console.log('txId', signature);
+```
+
+## Conclusion
+
+With this guide, you have set up the Allbridge Core SDK and Phantom wallet integration on your web application using TypeScript. You can now securely send transactions and check their status on the Solana blockchain. For further customization and advanced usage, refer to the official documentation of the respective SDKs.
diff --git a/documentation/browser/stellar.md b/documentation/browser/stellar.md
new file mode 100644
index 0000000..f41410a
--- /dev/null
+++ b/documentation/browser/stellar.md
@@ -0,0 +1,102 @@
+
+# Integrating Allbridge Core SDK and Browser Extension Wallet with TypeScript
+
+## Introduction
+This documentation provides a step-by-step guide on integrating the Allbridge Core SDK and a browser extension wallet (Freighter) using TypeScript in a web project.
+
+## Prerequisites
+- TypeScript
+- Node.js
+- npm or yarn
+- Allbridge Core SDK package installed ([`@allbridge/bridge-core-sdk`](https://www.npmjs.com/package/@allbridge/bridge-core-sdk))
+- Freighter API package installed (`@stellar/freighter-api`). [Docs](https://docs.freighter.app/docs/guide/introduction)
+- Freighter extension installed in the browser
+
+## Installation
+First, install the necessary packages:
+
+```bash
+npm install @allbridge/bridge-core-sdk @stellar/freighter-api
+```
+
+## Step-by-Step Integration
+
+### Step 1: Import Necessary Modules
+
+Import the required modules:
+
+```typescript
+import {
+ AllbridgeCoreSdk,
+ ChainSymbol,
+ NodeRpcUrls,
+ RawSorobanTransaction,
+ RawTransaction,
+ SendParams,
+ SrbUtils,
+} from '@allbridge/bridge-core-sdk';
+import freighter, { signTransaction } from '@stellar/freighter-api';
+```
+
+### Step 2: Define Node URLs and initialize SDK
+
+Set up the node URLs for the different chains and initialize the Allbridge Core SDK.
+
+```typescript
+const SDK_NODE_URLS: NodeRpcUrls = {
+ [ChainSymbol.SRB]: 'https://rpc.ankr.com/stellar_soroban',
+ [ChainSymbol.STLR]: 'https://horizon.stellar.org',
+};
+const sdk = new AllbridgeCoreSdk(SDK_NODE_URLS);
+```
+
+### Step 3: Create Send Raw Transaction
+
+Implement a function to send raw transactions using the Freighter wallet.
+
+```typescript
+async function sendRawTransaction(xdr: string): Promise {
+ const { networkPassphrase, networkUrl } = await freighter.getNetworkDetails();
+ const signedXdr = await signTransaction(xdr, {
+ network: networkUrl,
+ networkPassphrase: networkPassphrase,
+ });
+ const txRes = await sdk.utils.srb.sendTransactionSoroban(signedXdr);
+ if (txRes.status !== 'PENDING') {
+ throw new Error('Failed transaction');
+ }
+ return txRes.hash;
+}
+```
+
+### Step 4: Create, sign and send Allbridge raw transaction:
+
+```typescript
+let rawTransaction: RawSorobanTransaction = (await sdk.bridge.rawTxBuilder.send(params)) as RawSorobanTransaction;
+const isNeedNewRawTransaction = await checkAndCreateBump(params.fromAccountAddress, rawTransaction);
+if (isNeedNewRawTransaction) {
+ rawTransaction = (await sdk.bridge.rawTxBuilder.send(params)) as RawSorobanTransaction;
+}
+const txId = await sendRawTransaction(rawTransaction);
+console.log('txId', txId);
+```
+
+### Step 5: Check and Create Bump Transaction
+
+Implement a function to check if a bump transaction is needed and create it if necessary.
+
+```typescript
+async function checkAndCreateBump(account: string, xdr: RawTransaction): Promise {
+ const bumpXdr = await sdk.utils.srb.simulateAndCheckRestoreTxRequiredSoroban(xdr as RawSorobanTransaction, account);
+ if (bumpXdr) {
+ await sendRawTransaction(bumpXdr);
+ return true;
+ } else {
+ return false;
+ }
+}
+```
+
+## Conclusion
+
+With this guide, you have set up the Allbridge Core SDK and Freighter wallet integration on your web application using TypeScript. You can now securely send transactions and check their status on the Soroban blockchain. For further customization and advanced usage, refer to the official documentation of the respective SDKs.
diff --git a/documentation/browser/tron.md b/documentation/browser/tron.md
new file mode 100644
index 0000000..80c99c1
--- /dev/null
+++ b/documentation/browser/tron.md
@@ -0,0 +1,55 @@
+
+# Integrating Allbridge Core SDK and Browser Extension Wallet with TypeScript
+
+## Introduction
+This documentation provides a step-by-step guide on integrating the Allbridge Core SDK and a browser extension wallet (TronLink) using TypeScript in a web project.
+
+## Prerequisites
+- TypeScript
+- Node.js
+- npm or yarn
+- Allbridge Core SDK package installed ([`@allbridge/bridge-core-sdk`](https://www.npmjs.com/package/@allbridge/bridge-core-sdk))
+- TronLink extension installed in the browser. [Docs](https://docs.tronlink.org/)
+
+## Installation
+First, install the necessary packages:
+
+```bash
+npm install @allbridge/bridge-core-sdk
+```
+
+## Step-by-Step Integration
+
+### Step 1: Import Necessary Modules
+Import the required modules:
+
+```typescript
+import {
+ AllbridgeCoreSdk,
+ ChainSymbol,
+ NodeRpcUrls,
+ SendParams,
+} from '@allbridge/bridge-core-sdk';
+```
+### Step 2: Define Node URLs, SDK and tronWeb wallet
+Set up the node URLs for the different chains. Initialize the Allbridge Core SDK and the tronWeb instance:
+
+```typescript
+const SDK_NODE_URLS: NodeRpcUrls = {
+ [ChainSymbol.TRX]: 'https://api.trongrid.io',
+};
+const sdk = new AllbridgeCoreSdk(SDK_NODE_URLS);
+const tronWeb = window.tronLink.tronWeb;
+```
+
+### Step 3: Create, sign and send Allbridge raw transaction:
+
+```typescript
+const rawTransaction = await sdk.bridge.rawTxBuilder.send(params, tronWeb);
+const signedTx = await tronWeb.trx.sign(rawTransaction);
+const txId = await tronWeb.trx.sendRawTransaction(signedTx);
+console.log('txId', txId);
+```
+
+## Conclusion
+With this guide, you have set up the Allbridge Core SDK and TronLink wallet integration on your web application using TypeScript. You can now securely send transactions and check their status on the Tron blockchain. For further customization and advanced usage, refer to the official documentation of the respective SDKs.
diff --git a/examples/package.json b/examples/package.json
index e4896a2..f82f1d2 100644
--- a/examples/package.json
+++ b/examples/package.json
@@ -12,33 +12,23 @@
"run:getTokensInfo": "ts-node src/examples/get-tokens-info.ts",
- "run:bridge:evm:approveAndSend": "ts-node src/examples/bridge/evm/evm-build-approve-and-send-tx.ts",
- "run:bridge:evm:approveAndSendWithStables": "ts-node src/examples/bridge/evm/evm-build-approve-and-send-tx-gas-fee-with-stables.ts",
+ "run:bridge:evm:send": "ts-node src/examples/bridge/evm/evm-build-send-tx.ts",
+ "run:bridge:evm:sendWithStables": "ts-node src/examples/bridge/evm/evm-build-send-tx-gas-fee-with-stables.ts",
"run:bridge:evm:swap": "ts-node src/examples/bridge/evm/evm-build-swap-tx.ts",
- "run:bridge:evm:checkAllowance": "ts-node src/examples/bridge/evm/evm-check-allowance.ts",
- "run:bridge:evm:fullExample": "ts-node src/examples/bridge/evm/evm-send-full-example.ts",
- "run:bridge:evm:sendTokens": "ts-node src/examples/bridge/evm/evm-send-tokens.ts",
"run:bridge:solana:send": "ts-node src/examples/bridge/solana/sol-build-send-tx.ts",
"run:bridge:solana:swap": "ts-node src/examples/bridge/solana/sol-build-swap-tx.ts",
"run:bridge:srb:fullExample": "ts-node src/examples/bridge/srb/srb-send-full-example.ts",
- "run:bridge:trx:approveAndSend": "ts-node src/examples/bridge/trx/trx-build-approve-and-send-tx.ts",
- "run:bridge:trx:approveAndSendWithStables": "ts-node src/examples/bridge/trx/trx-build-approve-and-send-tx-gas-fee-with-stables.ts",
+ "run:bridge:trx:send": "ts-node src/examples/bridge/trx/trx-build-send-tx.ts",
+ "run:bridge:trx:sendWithStables": "ts-node src/examples/bridge/trx/trx-build-send-tx-gas-fee-with-stables.ts",
"run:bridge:trx:swap": "ts-node src/examples/bridge/trx/trx-build-swap-tx.ts",
- "run:bridge:trx:send": "ts-node src/examples/bridge/trx/trx-send-tokens.ts",
- "run:bridge:calculateAmount": "ts-node src/examples/bridge/calculate-amount.ts",
+ "run:bridge:calculateAmount": "ts-node src/examples/bridge/calculate-amounts.ts",
"run:bridge:getAvetageTransferTime": "ts-node src/examples/bridge/get-average-transfer-time.ts",
"run:bridge:getFeePercent": "ts-node src/examples/bridge/get-fee-percent.ts",
"run:bridge:getTransferStatus": "ts-node src/examples/bridge/get-transfer-status.ts",
"run:bridge:getExtraGasMaxLimits": "ts-node src/examples/bridge/get-extra-gas-max-limits.ts",
- "run:general:evm:bsc:approveTokens": "ts-node src/examples/general/evm/bsc/bsc-approve-tokens.ts",
- "run:general:evm:bsc:getTokenBalance": "ts-node src/examples/general/evm/bsc/bsc-get-token-balance.ts",
- "run:general:evm:pol:approveTokens": "ts-node src/examples/general/evm/pol/pol-approve-tokens.ts",
- "run:general:evm:pol:getTokenBalance": "ts-node src/examples/general/evm/pol/pol-get-token-balance.ts",
"run:general:evm:approveTokens": "ts-node src/examples/general/evm/evm-approve-tokens.ts",
"run:general:evm:getTokenBalance": "ts-node src/examples/general/evm/evm-get-token-balance.ts",
"run:general:solana:getTokenBalance": "ts-node src/examples/general/solana/sol-get-token-balance.ts",
- "run:general:trx:approveTokens": "ts-node src/examples/general/trx/trx-approve-tokens.ts",
- "run:general:trx:getTokenBalance": "ts-node src/examples/general/trx/trx-get-token-balance.ts",
"run:liquidity-pool:evm:claimRewards": "ts-node src/examples/liquidity-pool/evm/evm-build-claim-rewards-tx.ts",
"run:liquidity-pool:evm:deposit": "ts-node src/examples/liquidity-pool/evm/evm-build-deposit-tx.ts",
diff --git a/examples/pnpm-lock.yaml b/examples/pnpm-lock.yaml
index a8bc224..aeffa87 100644
--- a/examples/pnpm-lock.yaml
+++ b/examples/pnpm-lock.yaml
@@ -598,6 +598,23 @@ packages:
resolution: {integrity: sha512-XvPO+XgEbkeP0VhP0U1edOkds+rGS28+y8GRGbCVXeZ9ZslbWqRFQoETAdX8IXGuykk2ib/aPokiLc5ZaWYP7w==}
dev: false
+ /@stellar/js-xdr@3.1.1:
+ resolution: {integrity: sha512-3gnPjAz78htgqsNEDkEsKHKosV2BF2iZkoHCNxpmZwUxiPsw+2VaXMed8RRMe0rGk3d5GZe7RrSba8zV80J3Ag==}
+ dev: false
+
+ /@stellar/stellar-base@10.0.1:
+ resolution: {integrity: sha512-BDbx7VHOEQh+4J3Q+gStNXgPaNckVFmD4aOlBBGwxlF6vPFmVnW8IoJdkX7T58zpX55eWI6DXvEhDBlrqTlhAQ==}
+ dependencies:
+ '@stellar/js-xdr': 3.1.1
+ base32.js: 0.1.0
+ bignumber.js: 9.1.2
+ buffer: 6.0.3
+ sha.js: 2.4.11
+ tweetnacl: 1.0.3
+ optionalDependencies:
+ sodium-native: 4.0.4
+ dev: false
+
/@szmarczak/http-timer@4.0.6:
resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==}
engines: {node: '>=10'}
@@ -637,10 +654,6 @@ packages:
'@types/node': 20.6.0
dev: false
- /@types/eventsource@1.1.15:
- resolution: {integrity: sha512-XQmGcbnxUNa06HR3VBVkc9+A2Vpi9ZyLJcdS5dwaQQ/4ZMWFO+5c90FnMUpbtMZwB/FChoYHwuVg8TvkECacTA==}
- dev: false
-
/@types/http-cache-semantics@4.0.1:
resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==}
dev: false
@@ -669,12 +682,6 @@ packages:
'@types/node': 20.6.0
dev: false
- /@types/randombytes@2.0.3:
- resolution: {integrity: sha512-+NRgihTfuURllWCiIAhm1wsJqzsocnqXM77V/CalsdJIYSRGEHMnritxh+6EsBklshC+clo1KgnN14qgSGeQdw==}
- dependencies:
- '@types/node': 20.6.0
- dev: false
-
/@types/responselike@1.0.0:
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
dependencies:
@@ -691,10 +698,6 @@ packages:
resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==}
dev: true
- /@types/urijs@1.19.25:
- resolution: {integrity: sha512-XOfUup9r3Y06nFAZh3WvO0rBU4OtlfPB/vgxpjg+NRdGU6CN6djdc6OEiH+PcqHCY6eFLo9Ista73uarf4gnBg==}
- dev: false
-
/@types/ws@7.4.7:
resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==}
dependencies:
@@ -951,14 +954,6 @@ packages:
resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==}
dev: false
- /axios@0.25.0:
- resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==}
- dependencies:
- follow-redirects: 1.15.2
- transitivePeerDependencies:
- - debug
- dev: false
-
/axios@0.26.1:
resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==}
dependencies:
@@ -1032,10 +1027,6 @@ packages:
bindings: 1.5.0
dev: false
- /bignumber.js@4.1.0:
- resolution: {integrity: sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==}
- dev: false
-
/bignumber.js@9.1.2:
resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==}
dev: false
@@ -1361,12 +1352,6 @@ packages:
hasBin: true
dev: false
- /crc@3.8.0:
- resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==}
- dependencies:
- buffer: 5.7.1
- dev: false
-
/create-hash@1.2.0:
resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==}
dependencies:
@@ -1503,10 +1488,6 @@ packages:
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
dev: false
- /detect-node@2.1.0:
- resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
- dev: false
-
/dir-glob@3.0.1:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
@@ -1901,9 +1882,9 @@ packages:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
dev: false
- /eventsource@1.1.2:
- resolution: {integrity: sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==}
- engines: {node: '>=0.12.0'}
+ /eventsource@2.0.2:
+ resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==}
+ engines: {node: '>=12.0.0'}
dev: false
/evp_bytestokey@1.0.3:
@@ -2561,14 +2542,6 @@ packages:
resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==}
dev: false
- /js-xdr@1.3.0:
- resolution: {integrity: sha512-fjLTm2uBtFvWsE3l2J14VjTuuB8vJfeTtYuNS7LiLHDWIX2kt0l1pqq9334F8kODUkKPMuULjEcbGbkFFwhx5g==}
- deprecated: ⚠️ This package has moved to @stellar/js-xdr! 🚚
- dependencies:
- lodash: 4.17.21
- long: 2.4.0
- dev: false
-
/js-xdr@3.0.1:
resolution: {integrity: sha512-U+myFf2xdgeXsCE4iKwt/j14BLvU0F/YZv9LJwJrQgqtKKwyetYP7LwJKbc9qUYYAsa6ixy57CrDMtg2x+01cA==}
dev: false
@@ -2661,11 +2634,6 @@ packages:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
dev: false
- /long@2.4.0:
- resolution: {integrity: sha512-ijUtjmO/n2A5PaosNG9ZGDsQ3vxJg7ZW8vsY8Kp0f2yIZWhSJvjmegV7t+9RPQKxKrvj8yKGehhS+po14hPLGQ==}
- engines: {node: '>=0.6'}
- dev: false
-
/lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
dependencies:
@@ -3447,14 +3415,6 @@ packages:
tslib: 2.6.2
dev: false
- /sodium-native@3.4.1:
- resolution: {integrity: sha512-PaNN/roiFWzVVTL6OqjzYct38NSXewdl2wz8SRB51Br/MLIJPrbM3XexhVWkq7D3UWMysfrhKVf1v1phZq6MeQ==}
- requiresBuild: true
- dependencies:
- node-gyp-build: 4.6.1
- dev: false
- optional: true
-
/sodium-native@4.0.4:
resolution: {integrity: sha512-faqOKw4WQKK7r/ybn6Lqo1F9+L5T6NlBJJYvpxbZPetpWylUVqz449mvlwIBKBqxEHbWakWuOlUt8J3Qpc4sWw==}
requiresBuild: true
@@ -3509,39 +3469,17 @@ packages:
sodium-native: 4.0.4
dev: false
- /stellar-base@8.2.2:
- resolution: {integrity: sha512-YVCIuJXU1bPn+vU0ded+g0D99DcpYXH9CEXfpYEDc4Gf04h65YjOVhGojQBm1hqVHq3rKT7m1tgfNACkU84FTA==}
+ /stellar-sdk@11.1.0:
+ resolution: {integrity: sha512-fIdo77ogpU+ecHgs59pk9velpXd4F/ch0DzOI4QZw8zVZApc3oeNWP3+X6ui7BWpeRHAGsP2CHQzBLxm0JTIgg==}
+ deprecated: ⚠️ This package has moved to @stellar/stellar-sdk! 🚚
dependencies:
- base32.js: 0.1.0
- bignumber.js: 4.1.0
- crc: 3.8.0
- js-xdr: 1.3.0
- lodash: 4.17.21
- sha.js: 2.4.11
- tweetnacl: 1.0.3
- optionalDependencies:
- sodium-native: 3.4.1
- dev: false
-
- /stellar-sdk@10.4.1:
- resolution: {integrity: sha512-Wdm2UoLuN9SNrSEHO0R/I+iZuRwUkfny1xg4akhGCpO8LQZw8QzuMTJvbEoMT3sHT4/eWYiteVLp7ND21xZf5A==}
- dependencies:
- '@types/eventsource': 1.1.15
- '@types/node': 20.6.0
- '@types/randombytes': 2.0.3
- '@types/urijs': 1.19.25
- axios: 0.25.0
- bignumber.js: 4.1.0
- detect-node: 2.1.0
- es6-promise: 4.2.8
- eventsource: 1.1.2
- lodash: 4.17.21
+ '@stellar/stellar-base': 10.0.1
+ axios: 1.6.2
+ bignumber.js: 9.1.2
+ eventsource: 2.0.2
randombytes: 2.1.0
- stellar-base: 8.2.2
- toml: 2.3.6
- tslib: 1.14.1
+ toml: 3.0.0
urijs: 1.19.11
- utility-types: 3.10.0
transitivePeerDependencies:
- debug
dev: false
@@ -3657,10 +3595,6 @@ packages:
engines: {node: '>=0.6'}
dev: false
- /toml@2.3.6:
- resolution: {integrity: sha512-gVweAectJU3ebq//Ferr2JUY4WKSDe5N+z0FvjDncLGyHmIDoxgY/2Ie4qfEIDm4IS7OA6Rmdm7pdEEdMcV/xQ==}
- dev: false
-
/toml@3.0.0:
resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==}
dev: false
@@ -3698,6 +3632,7 @@ packages:
/tslib@1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+ dev: true
/tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
@@ -3820,11 +3755,6 @@ packages:
which-typed-array: 1.1.11
dev: false
- /utility-types@3.10.0:
- resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==}
- engines: {node: '>= 4'}
- dev: false
-
/utils-merge@1.0.1:
resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
engines: {node: '>= 0.4.0'}
@@ -4316,7 +4246,7 @@ packages:
querystring: 0.2.1
randombytes: 2.1.0
soroban-client: 1.0.0-beta.4
- stellar-sdk: 10.4.1
+ stellar-sdk: 11.1.0
timed-cache: 2.0.0
tronweb: 4.4.0
web3: 1.9.0
diff --git a/examples/src/examples/bridge/calculate-amount.ts b/examples/src/examples/bridge/calculate-amounts.ts
similarity index 95%
rename from examples/src/examples/bridge/calculate-amount.ts
rename to examples/src/examples/bridge/calculate-amounts.ts
index 032da74..fee34aa 100644
--- a/examples/src/examples/bridge/calculate-amount.ts
+++ b/examples/src/examples/bridge/calculate-amounts.ts
@@ -1,8 +1,8 @@
-import { AllbridgeCoreSdk, Messenger, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, Messenger, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../utils/utils";
async function runExampleCalculateAmounts() {
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokens = await sdk.tokens();
const sourceToken = ensure(tokens.find((token) => token.chainSymbol === "POL" && token.symbol === "USDC"));
@@ -70,7 +70,7 @@ async function runExampleCalculateAmounts() {
}
async function runExampleGetAmountToBeReceivedAndGasFeeOptions() {
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokens = await sdk.tokens();
const sourceToken = ensure(tokens.find((token) => token.chainSymbol === "POL" && token.symbol === "USDC"));
@@ -113,7 +113,7 @@ async function runExampleGetAmountToBeReceivedAndGasFeeOptions() {
}
async function runExampleGetAmountToSendAndGasFeeOptions() {
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokens = await sdk.tokens();
const sourceToken = ensure(tokens.find((token) => token.chainSymbol === "POL" && token.symbol === "USDC"));
diff --git a/examples/src/examples/bridge/evm/evm-build-approve-and-send-tx-gas-fee-with-stables.ts b/examples/src/examples/bridge/evm/evm-build-approve-and-send-tx-gas-fee-with-stables.ts
deleted file mode 100644
index 92b681e..0000000
--- a/examples/src/examples/bridge/evm/evm-build-approve-and-send-tx-gas-fee-with-stables.ts
+++ /dev/null
@@ -1,81 +0,0 @@
-import {
- AllbridgeCoreSdk,
- ChainSymbol,
- FeePaymentMethod,
- Messenger,
- nodeUrlsDefault,
-} from "@allbridge/bridge-core-sdk";
-import Web3 from "web3";
-import * as dotenv from "dotenv";
-import { getEnvVar } from "../../../utils/env";
-import { sendRawTransaction } from "../../../utils/web3";
-import Big from "big.js";
-import { ensure } from "../../../utils/utils";
-import { TransactionConfig } from "web3-core";
-dotenv.config({ path: ".env" });
-
-const main = async () => {
- // sender address
- const fromAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
- // recipient address
- const toAddress = getEnvVar("POL_ACCOUNT_ADDRESS");
-
- // configure web3
- const web3 = new Web3(getEnvVar("GRL_WEB3_PROVIDER_URL"));
- const account = web3.eth.accounts.privateKeyToAccount(getEnvVar("ETH_PRIVATE_KEY"));
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
-
- const chains = await sdk.chainDetailsMap();
-
- const sourceChain = chains[ChainSymbol.ETH];
- const sourceTokenInfo = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
-
- const destinationChain = chains[ChainSymbol.POL];
- const destinationTokenInfo = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
-
- const amountToSendFloat = "5";
- const gasFeeOptions = await sdk.getGasFeeOptions(sourceTokenInfo, destinationTokenInfo, Messenger.ALLBRIDGE);
- const gasFeeAmount = ensure(gasFeeOptions[FeePaymentMethod.WITH_STABLECOIN]);
-
- // authorize the bridge to transfer tokens from sender's address
- const rawTransactionApprove = await sdk.bridge.rawTxBuilder.approve(web3, {
- token: sourceTokenInfo,
- owner: fromAddress,
- });
- const approveTxReceipt = await sendRawTransaction(web3, rawTransactionApprove as TransactionConfig);
- console.log("approve tx id:", approveTxReceipt.transactionHash);
-
- const gasFeeAmountFloat = gasFeeAmount.float;
- const totalAmountFloat = new Big(amountToSendFloat).add(gasFeeAmountFloat).toFixed();
- console.log(
- `Sending ${amountToSendFloat} ${sourceTokenInfo.symbol} (gas fee ${gasFeeAmountFloat} ${sourceTokenInfo.symbol}). Total amount: ${totalAmountFloat} ${sourceTokenInfo.symbol}`
- );
-
- // initiate transfer
- const rawTransactionTransfer = await sdk.bridge.rawTxBuilder.send(
- {
- amount: totalAmountFloat,
- fromAccountAddress: fromAddress,
- toAccountAddress: toAddress,
- sourceToken: sourceTokenInfo,
- destinationToken: destinationTokenInfo,
- messenger: Messenger.ALLBRIDGE,
- gasFeePaymentMethod: FeePaymentMethod.WITH_STABLECOIN,
- fee: gasFeeAmount.int,
- },
- web3
- );
-
- const txReceipt = await sendRawTransaction(web3, rawTransactionTransfer as TransactionConfig);
- console.log("tx id:", txReceipt.transactionHash);
-};
-
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/bridge/evm/evm-build-approve-and-send-tx.ts b/examples/src/examples/bridge/evm/evm-build-approve-and-send-tx.ts
deleted file mode 100644
index bd3c44a..0000000
--- a/examples/src/examples/bridge/evm/evm-build-approve-and-send-tx.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import { AllbridgeCoreSdk, ChainSymbol, Messenger, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
-import Web3 from "web3";
-import * as dotenv from "dotenv";
-import { getEnvVar } from "../../../utils/env";
-import { sendRawTransaction } from "../../../utils/web3";
-import { ensure } from "../../../utils/utils";
-import { TransactionConfig } from "web3-core";
-
-dotenv.config({ path: ".env" });
-const main = async () => {
- // sender address
- const fromAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
- // recipient address
- const toAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
-
- // configure web3
- const web3 = new Web3(getEnvVar("WEB3_PROVIDER_URL"));
- const account = web3.eth.accounts.privateKeyToAccount(getEnvVar("ETH_PRIVATE_KEY"));
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
-
- const chains = await sdk.chainDetailsMap();
-
- const sourceChain = chains[ChainSymbol.ETH];
- const sourceTokenInfo = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
-
- const destinationChain = chains[ChainSymbol.POL];
- const destinationTokenInfo = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
-
- const amount = "1.01";
-
- // authorize the bridge to transfer tokens from sender's address
- const rawTransactionApprove = await sdk.bridge.rawTxBuilder.approve(web3, {
- token: sourceTokenInfo,
- owner: fromAddress,
- });
- const approveTxReceipt = await sendRawTransaction(web3, rawTransactionApprove as TransactionConfig);
- console.log("approve tx id:", approveTxReceipt.transactionHash);
-
- // initiate transfer
- const rawTransactionTransfer = await sdk.bridge.rawTxBuilder.send(
- {
- amount: amount,
- fromAccountAddress: fromAddress,
- toAccountAddress: toAddress,
- sourceToken: sourceTokenInfo,
- destinationToken: destinationTokenInfo,
- messenger: Messenger.ALLBRIDGE,
- },
- web3
- );
- console.log(`Sending ${amount} ${sourceTokenInfo.symbol}`);
- const txReceipt = await sendRawTransaction(web3, rawTransactionTransfer as TransactionConfig);
- console.log("tx id:", txReceipt.transactionHash);
-};
-
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/bridge/evm/evm-build-send-tx-gas-fee-with-stables.ts b/examples/src/examples/bridge/evm/evm-build-send-tx-gas-fee-with-stables.ts
new file mode 100644
index 0000000..89156f4
--- /dev/null
+++ b/examples/src/examples/bridge/evm/evm-build-send-tx-gas-fee-with-stables.ts
@@ -0,0 +1,73 @@
+import {
+ AllbridgeCoreSdk,
+ ChainSymbol,
+ FeePaymentMethod,
+ Messenger,
+ nodeRpcUrlsDefault,
+ RawEvmTransaction,
+} from "@allbridge/bridge-core-sdk";
+import * as dotenv from "dotenv";
+import { getEnvVar } from "../../../utils/env";
+import { sendEvmRawTransaction } from "../../../utils/web3";
+import Big from "big.js";
+import { ensure } from "../../../utils/utils";
+
+dotenv.config({ path: ".env" });
+
+const main = async () => {
+ const fromAddress = getEnvVar("ETH_ACCOUNT_ADDRESS"); // sender address
+ const toAddress = getEnvVar("POL_ACCOUNT_ADDRESS"); // recipient address
+
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: getEnvVar("WEB3_PROVIDER_URL") });
+
+ const chains = await sdk.chainDetailsMap();
+
+ const sourceChain = chains[ChainSymbol.ETH];
+ const sourceToken = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+
+ const destinationChain = chains[ChainSymbol.POL];
+ const destinationToken = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+
+ const amount = "5.05";
+ const gasFeeOptions = await sdk.getGasFeeOptions(sourceToken, destinationToken, Messenger.ALLBRIDGE);
+ const gasFeeAmount = ensure(gasFeeOptions[FeePaymentMethod.WITH_STABLECOIN]);
+
+ const gasFeeAmountFloat = gasFeeAmount.float;
+ const totalAmountFloat = new Big(amount).add(gasFeeAmountFloat).toFixed();
+
+ //check if sending tokens already approved
+ if (!(await sdk.bridge.checkAllowance({ token: sourceToken, owner: fromAddress, amount: totalAmountFloat }))) {
+ // authorize the bridge to transfer tokens from sender's address
+ const rawTransactionApprove = (await sdk.bridge.rawTxBuilder.approve({
+ token: sourceToken,
+ owner: fromAddress,
+ })) as RawEvmTransaction;
+ const approveTxReceipt = await sendEvmRawTransaction(rawTransactionApprove);
+ console.log("approve tx id:", approveTxReceipt.transactionHash);
+ }
+
+ // initiate transfer
+ const rawTransactionTransfer = (await sdk.bridge.rawTxBuilder.send({
+ amount: totalAmountFloat,
+ fromAccountAddress: fromAddress,
+ toAccountAddress: toAddress,
+ sourceToken: sourceToken,
+ destinationToken: destinationToken,
+ messenger: Messenger.ALLBRIDGE,
+ gasFeePaymentMethod: FeePaymentMethod.WITH_STABLECOIN,
+ fee: gasFeeAmount.int,
+ })) as RawEvmTransaction;
+ console.log(
+ `Sending ${amount} ${sourceToken.symbol} (gas fee ${gasFeeAmountFloat} ${sourceToken.symbol}). Total amount: ${totalAmountFloat} ${sourceToken.symbol}`
+ );
+ const txReceipt = await sendEvmRawTransaction(rawTransactionTransfer);
+ console.log("tx id:", txReceipt.transactionHash);
+};
+
+main()
+ .then(() => {
+ console.log("Done");
+ })
+ .catch((e) => {
+ console.error(e);
+ });
diff --git a/examples/src/examples/bridge/evm/evm-build-send-tx.ts b/examples/src/examples/bridge/evm/evm-build-send-tx.ts
new file mode 100644
index 0000000..a4d597c
--- /dev/null
+++ b/examples/src/examples/bridge/evm/evm-build-send-tx.ts
@@ -0,0 +1,62 @@
+import {
+ AllbridgeCoreSdk,
+ ChainSymbol,
+ Messenger,
+ nodeRpcUrlsDefault,
+ RawEvmTransaction,
+} from "@allbridge/bridge-core-sdk";
+import * as dotenv from "dotenv";
+import { getEnvVar } from "../../../utils/env";
+import { sendEvmRawTransaction } from "../../../utils/web3";
+import { ensure } from "../../../utils/utils";
+
+dotenv.config({ path: ".env" });
+
+const main = async () => {
+ const fromAddress = getEnvVar("ETH_ACCOUNT_ADDRESS"); // sender address
+ const toAddress = getEnvVar("TRX_ACCOUNT_ADDRESS"); // recipient address
+
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: getEnvVar("WEB3_PROVIDER_URL") });
+
+ const chains = await sdk.chainDetailsMap();
+
+ const sourceChain = chains[ChainSymbol.ETH];
+ const sourceToken = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+
+ const destinationChain = chains[ChainSymbol.POL];
+ const destinationToken = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+
+ const amount = "1.01";
+
+ //check if sending tokens already approved
+ if (!(await sdk.bridge.checkAllowance({ token: sourceToken, owner: fromAddress, amount: amount }))) {
+ // authorize the bridge to transfer tokens from sender's address
+ const rawTransactionApprove = (await sdk.bridge.rawTxBuilder.approve({
+ token: sourceToken,
+ owner: fromAddress,
+ })) as RawEvmTransaction;
+ const approveTxReceipt = await sendEvmRawTransaction(rawTransactionApprove);
+ console.log("Approve tx id:", approveTxReceipt.transactionHash);
+ }
+
+ // initiate transfer
+ const rawTransactionTransfer = (await sdk.bridge.rawTxBuilder.send({
+ amount: amount,
+ fromAccountAddress: fromAddress,
+ toAccountAddress: toAddress,
+ sourceToken: sourceToken,
+ destinationToken: destinationToken,
+ messenger: Messenger.ALLBRIDGE,
+ })) as RawEvmTransaction;
+ console.log(`Sending ${amount} ${sourceToken.symbol}`);
+ const txReceipt = await sendEvmRawTransaction(rawTransactionTransfer);
+ console.log("tx id:", txReceipt.transactionHash);
+};
+
+main()
+ .then(() => {
+ console.log("Done");
+ })
+ .catch((e) => {
+ console.error(e);
+ });
diff --git a/examples/src/examples/bridge/evm/evm-build-swap-tx.ts b/examples/src/examples/bridge/evm/evm-build-swap-tx.ts
index e87ef03..5a0d7cd 100644
--- a/examples/src/examples/bridge/evm/evm-build-swap-tx.ts
+++ b/examples/src/examples/bridge/evm/evm-build-swap-tx.ts
@@ -1,48 +1,57 @@
-import { AllbridgeCoreSdk, ChainSymbol, nodeUrlsDefault, SwapParams } from "@allbridge/bridge-core-sdk";
-import Web3 from "web3";
+import {
+ AllbridgeCoreSdk,
+ ChainSymbol,
+ nodeRpcUrlsDefault,
+ RawEvmTransaction,
+ SwapParams,
+} from "@allbridge/bridge-core-sdk";
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { sendRawTransaction } from "../../../utils/web3";
+import { sendEvmRawTransaction } from "../../../utils/web3";
import { ensure } from "../../../utils/utils";
-import { TransactionConfig } from "web3-core";
dotenv.config({ path: ".env" });
-const main = async () => {
- // sender address
- const fromAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
- // recipient address
- const toAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
- // configure web3
- const web3 = new Web3(getEnvVar("WEB3_PROVIDER_URL"));
- const account = web3.eth.accounts.privateKeyToAccount(getEnvVar("ETH_PRIVATE_KEY"));
- web3.eth.accounts.wallet.add(account);
+const main = async () => {
+ const fromAddress = getEnvVar("ETH_ACCOUNT_ADDRESS"); // sender address
+ const toAddress = getEnvVar("ETH_ACCOUNT_ADDRESS"); // recipient address
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: getEnvVar("WEB3_PROVIDER_URL") });
const chains = await sdk.chainDetailsMap();
const sourceChain = chains[ChainSymbol.ETH];
- const sourceTokenInfo = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+ const sourceToken = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
const destinationChain = chains[ChainSymbol.ETH];
- const destinationTokenInfo = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+ const destinationToken = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
const amount = "10";
+ //check if sending tokens already approved
+ if (!(await sdk.bridge.checkAllowance({ token: sourceToken, owner: fromAddress, amount: amount }))) {
+ // authorize the bridge to transfer tokens from sender's address
+ const rawTransactionApprove = (await sdk.bridge.rawTxBuilder.approve({
+ token: sourceToken,
+ owner: fromAddress,
+ })) as RawEvmTransaction;
+ const approveTxReceipt = await sendEvmRawTransaction(rawTransactionApprove);
+ console.log("approve tx id:", approveTxReceipt.transactionHash);
+ }
+
// initiate transfer
const swapParams: SwapParams = {
amount: amount,
fromAccountAddress: fromAddress,
toAccountAddress: toAddress,
- sourceToken: sourceTokenInfo,
- destinationToken: destinationTokenInfo,
- minimumReceiveAmount: await sdk.getAmountToBeReceived(amount, sourceTokenInfo, destinationTokenInfo),
+ sourceToken: sourceToken,
+ destinationToken: destinationToken,
+ minimumReceiveAmount: await sdk.getAmountToBeReceived(amount, sourceToken, destinationToken),
};
- const rawTransactionTransfer = await sdk.bridge.rawTxBuilder.send(swapParams, web3);
+ const rawTransactionTransfer = (await sdk.bridge.rawTxBuilder.send(swapParams)) as RawEvmTransaction;
- console.log(`Swaping ${amount} ${sourceTokenInfo.symbol}`);
- const txReceipt = await sendRawTransaction(web3, rawTransactionTransfer as TransactionConfig);
+ console.log(`Swaping ${amount} ${sourceToken.symbol}`);
+ const txReceipt = await sendEvmRawTransaction(rawTransactionTransfer);
console.log("tx id:", txReceipt.transactionHash);
};
diff --git a/examples/src/examples/bridge/evm/evm-check-allowance.ts b/examples/src/examples/bridge/evm/evm-check-allowance.ts
deleted file mode 100644
index b910418..0000000
--- a/examples/src/examples/bridge/evm/evm-check-allowance.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-import {
- AllbridgeCoreSdk,
- ChainSymbol,
- FeePaymentMethod,
- Messenger,
- nodeUrlsDefault,
-} from "@allbridge/bridge-core-sdk";
-import Web3 from "web3";
-import * as dotenv from "dotenv";
-import { getEnvVar } from "../../../utils/env";
-import { ensure } from "../../../utils/utils";
-import Big from "big.js";
-
-dotenv.config({ path: ".env" });
-const main = async () => {
- // sender address
- const fromAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
-
- // configure web3
- const web3 = new Web3(getEnvVar("WEB3_PROVIDER_URL"));
- const account = web3.eth.accounts.privateKeyToAccount(getEnvVar("ETH_PRIVATE_KEY"));
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
- const chains = await sdk.chainDetailsMap();
- const sourceChain = chains[ChainSymbol.ETH];
- const sourceTokenInfo = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "YARO"));
- const destinationChain = chains[ChainSymbol.TRX];
- const destinationTokenInfo = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "YARO"));
- const amountFloat = new Big("1.01");
-
- const gasFeePaymentMethod = FeePaymentMethod.WITH_STABLECOIN;
- // const gasFeePaymentMethod = FeePaymentMethod.WITH_NATIVE_CURRENCY;
-
- let totalAmountFloat;
- if (gasFeePaymentMethod === FeePaymentMethod.WITH_STABLECOIN) {
- const gasFeeOptions = await sdk.getGasFeeOptions(sourceTokenInfo, destinationTokenInfo, Messenger.ALLBRIDGE);
- const gasFeeAmount = ensure(gasFeeOptions[FeePaymentMethod.WITH_STABLECOIN]);
- const gasFeeAmountFloat = gasFeeAmount.float;
- // checking allowance for amount + gas fee
- totalAmountFloat = amountFloat.add(gasFeeAmountFloat);
- } else {
- // checking allowance for just amount
- totalAmountFloat = amountFloat;
- }
-
- if (
- // check if tokens already approved
- await sdk.bridge.checkAllowance(web3, {
- token: sourceTokenInfo,
- owner: fromAddress,
- gasFeePaymentMethod: gasFeePaymentMethod,
- amount: totalAmountFloat,
- })
- ) {
- console.log("The granted allowance is enough for the transaction");
- } else {
- console.log("The granted allowance is NOT enough for the transaction");
- }
-};
-
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/bridge/evm/evm-send-full-example.ts b/examples/src/examples/bridge/evm/evm-send-full-example.ts
deleted file mode 100644
index f100e0b..0000000
--- a/examples/src/examples/bridge/evm/evm-send-full-example.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import { AllbridgeCoreSdk, ChainSymbol, Messenger, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
-import Web3 from "web3";
-import * as dotenv from "dotenv";
-import { getEnvVar } from "../../../utils/env";
-import { ensure } from "../../../utils/utils";
-
-dotenv.config({ path: ".env" });
-const main = async () => {
- // sender address
- const fromAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
- // recipient address
- const toAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
-
- // configure web3
- const web3 = new Web3(getEnvVar("WEB3_PROVIDER_URL"));
- const account = web3.eth.accounts.privateKeyToAccount(getEnvVar("ETH_PRIVATE_KEY"));
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
-
- // fetch information about supported chains
- const chains = await sdk.chainDetailsMap();
-
- const sourceChain = chains[ChainSymbol.BSC];
- const sourceTokenInfo = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "BUSD"));
-
- const destinationChain = chains[ChainSymbol.TRX];
- const destinationTokenInfo = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDT"));
-
- if (
- //check if sending tokens already approved
- !(await sdk.bridge.checkAllowance(web3, {
- token: sourceTokenInfo,
- owner: fromAddress,
- amount: "1.01",
- }))
- ) {
- // authorize a transfer of tokens from sender's address
- await sdk.bridge.approve(web3, {
- token: sourceTokenInfo,
- owner: fromAddress,
- });
- }
-
- // initiate transfer
- const response = await sdk.bridge.send(web3, {
- amount: "1.01",
- fromAccountAddress: fromAddress,
- toAccountAddress: toAddress,
- sourceToken: sourceTokenInfo,
- destinationToken: destinationTokenInfo,
- messenger: Messenger.ALLBRIDGE,
- });
- console.log("Tokens sent:", response.txId);
-};
-
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/bridge/evm/evm-send-tokens.ts b/examples/src/examples/bridge/evm/evm-send-tokens.ts
deleted file mode 100644
index 4a1bb5b..0000000
--- a/examples/src/examples/bridge/evm/evm-send-tokens.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { AllbridgeCoreSdk, ChainSymbol, Messenger, nodeUrlsDefault, SendParams } from "@allbridge/bridge-core-sdk";
-import Web3 from "web3";
-import * as dotenv from "dotenv";
-import { getEnvVar } from "../../../utils/env";
-import { ensure } from "../../../utils/utils";
-
-dotenv.config({ path: ".env" });
-const main = async () => {
- const providerUrl = getEnvVar("WEB3_PROVIDER_URL");
- const accountAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
- const toAccountAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
- const tokenAddress = getEnvVar("ETH_TOKEN_ADDRESS");
- const receiveTokenAddress = getEnvVar("TRX_TOKEN_ADDRESS");
- const privateKey = getEnvVar("ETH_PRIVATE_KEY");
-
- const web3 = new Web3(providerUrl);
- const account = web3.eth.accounts.privateKeyToAccount(privateKey);
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
-
- const chains = await sdk.chainDetailsMap();
-
- const sourceChain = chains[ChainSymbol.ETH];
- const sourceTokenInfo = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
-
- const destinationChain = chains[ChainSymbol.TRX];
- const destinationTokenInfo = ensure(
- destinationChain.tokens.find((tokenInfo) => tokenInfo.tokenAddress === receiveTokenAddress)
- );
-
- const sendParams: SendParams = {
- amount: "1.33",
- fromAccountAddress: accountAddress,
- toAccountAddress: toAccountAddress,
- sourceToken: sourceTokenInfo,
- destinationToken: destinationTokenInfo,
- messenger: Messenger.ALLBRIDGE,
-
- // fee: 2000000000000000, //0.002 Ether - optional param
- // fee: 20000000000000000, //0.02 Ether - optional param
- };
-
- const response = await sdk.bridge.send(web3, sendParams);
- console.log("evmSend response: ", response);
-};
-
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/bridge/get-average-transfer-time.ts b/examples/src/examples/bridge/get-average-transfer-time.ts
index 2f67df7..acf7595 100644
--- a/examples/src/examples/bridge/get-average-transfer-time.ts
+++ b/examples/src/examples/bridge/get-average-transfer-time.ts
@@ -1,4 +1,4 @@
-import { AllbridgeCoreSdk, Messenger, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, Messenger, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../utils/utils";
function msToTime(ms: number) {
@@ -12,7 +12,7 @@ function msToTime(ms: number) {
}
const main = async () => {
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokens = await sdk.tokens();
const sourceToken = ensure(tokens.find((token) => token.chainSymbol === "ETH" && token.symbol === "USDT"));
diff --git a/examples/src/examples/bridge/get-extra-gas-max-limits.ts b/examples/src/examples/bridge/get-extra-gas-max-limits.ts
index c39f58a..f9a7fc0 100644
--- a/examples/src/examples/bridge/get-extra-gas-max-limits.ts
+++ b/examples/src/examples/bridge/get-extra-gas-max-limits.ts
@@ -1,8 +1,8 @@
-import { AllbridgeCoreSdk, ChainSymbol, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, ChainSymbol, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../utils/utils";
const main = async () => {
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const chainDetailsMap = await sdk.chainDetailsMap();
diff --git a/examples/src/examples/bridge/get-fee-percent.ts b/examples/src/examples/bridge/get-fee-percent.ts
deleted file mode 100644
index dc6f2db..0000000
--- a/examples/src/examples/bridge/get-fee-percent.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
-import { ensure } from "../../utils/utils";
-
-const main = async () => {
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
-
- const tokens = await sdk.tokens();
- const sourceToken = ensure(tokens.find((token) => token.chainSymbol === "ETH" && token.symbol === "USDT"));
- const destinationToken = ensure(tokens.find((token) => token.chainSymbol === "TRX" && token.symbol === "USDT"));
- const amount = "100.5";
-
- console.log(
- "%d %s on %s to %s on %s",
- amount,
- sourceToken.symbol,
- sourceToken.chainSymbol,
- destinationToken.symbol,
- destinationToken.chainSymbol
- );
-
- const sourceFeePercent = await sdk.calculateFeePercentOnSourceChain(amount, sourceToken);
- console.log("Fee on the source chain = %s%", sourceFeePercent.toFixed(2));
-
- const destinationFeePercent = await sdk.calculateFeePercentOnDestinationChain(amount, sourceToken, destinationToken);
- console.log("Fee on the destination chain = %s%", destinationFeePercent.toFixed(2));
-};
-
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/bridge/get-transfer-status.ts b/examples/src/examples/bridge/get-transfer-status.ts
index ef9a1b7..1e12856 100644
--- a/examples/src/examples/bridge/get-transfer-status.ts
+++ b/examples/src/examples/bridge/get-transfer-status.ts
@@ -1,4 +1,4 @@
-import { AllbridgeCoreSdk, ChainSymbol, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, ChainSymbol, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { getEnvVar } from "../../utils/env";
import * as dotenv from "dotenv";
dotenv.config({ path: ".env" });
@@ -7,7 +7,7 @@ const main = async () => {
const txId = getEnvVar("SENT_TX_ID");
const chainSymbol = ChainSymbol.TRX; // example, must correspond to SENT_TX_ID blockchain
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const sendStatus = await sdk.getTransferStatus(chainSymbol, txId);
diff --git a/examples/src/examples/bridge/send-by-cctp.ts b/examples/src/examples/bridge/send-by-cctp.ts
index 42e29d1..5666cfd 100644
--- a/examples/src/examples/bridge/send-by-cctp.ts
+++ b/examples/src/examples/bridge/send-by-cctp.ts
@@ -1,24 +1,21 @@
-import { AllbridgeCoreSdk, ChainSymbol, Messenger, nodeRpcUrlsDefault, SendParams } from "@allbridge/bridge-core-sdk";
-import { TransactionConfig } from "web3-core";
-import Web3 from "web3";
-import { sendRawTransaction } from "../../utils/web3";
+import {
+ AllbridgeCoreSdk,
+ ChainSymbol,
+ Messenger,
+ nodeRpcUrlsDefault,
+ RawEvmTransaction,
+ SendParams,
+} from "@allbridge/bridge-core-sdk";
+import { sendEvmRawTransaction } from "../../utils/web3";
import { ensure } from "../../utils/utils";
import { getEnvVar } from "../../utils/env";
const ETH_NODE_RPC_URL = getEnvVar("ETH_NODE_RPC_URL");
-const privateKey = getEnvVar("ETH_PRIVATE_KEY");
const fromAccountAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
const toAccountAddress = getEnvVar("ARB_ACCOUNT_ADDRESS");
-const web3 = new Web3(ETH_NODE_RPC_URL);
-const account = web3.eth.accounts.privateKeyToAccount(privateKey);
-web3.eth.accounts.wallet.add(account);
-
const main = async () => {
- const sdk = new AllbridgeCoreSdk({
- ...nodeRpcUrlsDefault,
- ETH: ETH_NODE_RPC_URL,
- });
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: ETH_NODE_RPC_URL });
const chainDetailsMap = await sdk.chainDetailsMap();
const sourceToken = ensure(chainDetailsMap[ChainSymbol.ETH].tokens.find((t) => t.symbol == "USDC"));
const destinationToken = ensure(chainDetailsMap[ChainSymbol.ARB].tokens.find((t) => t.symbol == "USDC"));
@@ -33,14 +30,14 @@ const main = async () => {
messenger: Messenger.CCTP,
});
console.log("checkAllowance", checkAllowance);
- if (checkAllowance == false) {
+ if (!checkAllowance) {
const approveParams = {
token: sourceToken,
owner: fromAccountAddress,
messenger: Messenger.CCTP,
};
- const tx = await sdk.bridge.rawTxBuilder.approve(approveParams);
- const txReceipt = await sendRawTransaction(web3, tx as TransactionConfig);
+ const tx = (await sdk.bridge.rawTxBuilder.approve(approveParams)) as RawEvmTransaction;
+ const txReceipt = await sendEvmRawTransaction(tx);
console.log("approve tx id:", txReceipt.transactionHash);
}
const willBeReceived = await sdk.getAmountToBeReceived(amount, destinationToken, sourceToken, Messenger.CCTP);
@@ -53,9 +50,9 @@ const main = async () => {
sourceToken,
messenger: Messenger.CCTP,
};
- const tx = await sdk.bridge.rawTxBuilder.send(sendParams);
+ const tx = (await sdk.bridge.rawTxBuilder.send(sendParams)) as RawEvmTransaction;
//sign and send raw Tx
- const txReceipt = await sendRawTransaction(web3, tx as TransactionConfig);
+ const txReceipt = await sendEvmRawTransaction(tx);
console.log("tx id:", txReceipt.transactionHash);
}
};
diff --git a/examples/src/examples/bridge/solana/sol-build-send-tx.ts b/examples/src/examples/bridge/solana/sol-build-send-tx.ts
index 957fb43..d8a0c76 100644
--- a/examples/src/examples/bridge/solana/sol-build-send-tx.ts
+++ b/examples/src/examples/bridge/solana/sol-build-send-tx.ts
@@ -2,7 +2,7 @@ import {
AllbridgeCoreSdk,
ChainSymbol,
Messenger,
- nodeUrlsDefault,
+ nodeRpcUrlsDefault,
RawBridgeSolanaTransaction,
SolanaAutoTxFee,
} from "@allbridge/bridge-core-sdk";
@@ -16,67 +16,68 @@ dotenv.config({ path: ".env" });
const fromAddress = getEnvVar("SOL_ACCOUNT_ADDRESS");
const privateKey = getEnvVar("SOL_PRIVATE_KEY");
-const toAddressPol = getEnvVar("POL_ACCOUNT_ADDRESS");
+const toAddress = getEnvVar("POL_ACCOUNT_ADDRESS");
const exampleViaWormhole = async () => {
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const chains = await sdk.chainDetailsMap();
const sourceChain = chains[ChainSymbol.SOL];
- const sourceTokenInfo = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+ const sourceToken = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
- const destinationChainPol = chains[ChainSymbol.POL];
- const destinationTokenInfoPol = ensure(destinationChainPol.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+ const destinationChain = chains[ChainSymbol.POL];
+ const destinationToken = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
// initiate transfer using Messenger.WORMHOLE
const transaction = (await sdk.bridge.rawTxBuilder.send({
amount: "0.2",
fromAccountAddress: fromAddress,
- toAccountAddress: toAddressPol,
- sourceToken: sourceTokenInfo,
- destinationToken: destinationTokenInfoPol,
+ toAccountAddress: toAddress,
+ sourceToken: sourceToken,
+ destinationToken: destinationToken,
messenger: Messenger.WORMHOLE,
+ //Optional add solana fee for a faster and more convincing transaction
txFeeParams: {
- solana: SolanaAutoTxFee,
+ solana: SolanaAutoTxFee, // look SolanaTxFee for details
},
})) as RawBridgeSolanaTransaction;
const keypair = solanaWeb3.Keypair.fromSecretKey(bs58.decode(privateKey));
transaction.sign([keypair]);
- const connection = new solanaWeb3.Connection(nodeUrlsDefault.solanaRpcUrl, "confirmed");
- const txid = await connection.sendTransaction(transaction);
- console.log(`https://explorer.solana.com/tx/${txid}`);
+ const connection = new solanaWeb3.Connection(ensure(nodeRpcUrlsDefault.SOL), "confirmed");
+ const txId = await connection.sendTransaction(transaction);
+ console.log(`https://explorer.solana.com/tx/${txId}`);
};
const exampleViaAllbridge = async () => {
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const chains = await sdk.chainDetailsMap();
const sourceChain = chains[ChainSymbol.SOL];
- const sourceTokenInfo = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+ const sourceToken = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
- const destinationChainPol = chains[ChainSymbol.POL];
- const destinationTokenInfoPol = ensure(destinationChainPol.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+ const destinationChain = chains[ChainSymbol.POL];
+ const destinationToken = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
// initiate transfer using Messenger.ALLBRIDGE
const transaction = (await sdk.bridge.rawTxBuilder.send({
amount: "0.2",
fromAccountAddress: fromAddress,
- toAccountAddress: toAddressPol,
- sourceToken: sourceTokenInfo,
- destinationToken: destinationTokenInfoPol,
+ toAccountAddress: toAddress,
+ sourceToken: sourceToken,
+ destinationToken: destinationToken,
messenger: Messenger.ALLBRIDGE,
})) as RawBridgeSolanaTransaction;
const keypair = solanaWeb3.Keypair.fromSecretKey(bs58.decode(privateKey));
transaction.sign([keypair]);
- const connection = new solanaWeb3.Connection(nodeUrlsDefault.solanaRpcUrl, "confirmed");
- const txid = await connection.sendTransaction(transaction);
- console.log(`https://explorer.solana.com/tx/${txid}`);
+ const connection = new solanaWeb3.Connection(ensure(nodeRpcUrlsDefault.SOL), "confirmed");
+ const txId = await connection.sendTransaction(transaction);
+ console.log(`https://explorer.solana.com/tx/${txId}`);
};
exampleViaWormhole()
diff --git a/examples/src/examples/bridge/solana/sol-build-swap-tx.ts b/examples/src/examples/bridge/solana/sol-build-swap-tx.ts
index f8fa9d5..77416a3 100644
--- a/examples/src/examples/bridge/solana/sol-build-swap-tx.ts
+++ b/examples/src/examples/bridge/solana/sol-build-swap-tx.ts
@@ -1,4 +1,9 @@
-import { AllbridgeCoreSdk, ChainSymbol, nodeUrlsDefault, RawSolanaTransaction } from "@allbridge/bridge-core-sdk";
+import {
+ AllbridgeCoreSdk,
+ ChainSymbol,
+ nodeRpcUrlsDefault,
+ RawBridgeSolanaTransaction,
+} from "@allbridge/bridge-core-sdk";
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
import { ensure } from "../../../utils/utils";
@@ -11,15 +16,15 @@ const accountAddress = getEnvVar("SOL_ACCOUNT_ADDRESS");
const privateKey = getEnvVar("SOL_PRIVATE_KEY");
const example = async () => {
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const chains = await sdk.chainDetailsMap();
const sourceChain = chains[ChainSymbol.SOL];
- const sourceTokenInfo = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+ const sourceToken = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
- const destinationChainPol = chains[ChainSymbol.SOL];
- const destinationTokenInfo = ensure(destinationChainPol.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+ const destinationChain = chains[ChainSymbol.SOL];
+ const destinationToken = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
// initiate transfer using Messenger.WORMHOLE
const amount = "10";
@@ -27,15 +32,15 @@ const example = async () => {
amount: amount,
fromAccountAddress: accountAddress,
toAccountAddress: accountAddress,
- sourceToken: sourceTokenInfo,
- destinationToken: destinationTokenInfo,
- minimumReceiveAmount: await sdk.getAmountToBeReceived(amount, sourceTokenInfo, destinationTokenInfo),
- })) as RawSolanaTransaction;
+ sourceToken: sourceToken,
+ destinationToken: destinationToken,
+ minimumReceiveAmount: await sdk.getAmountToBeReceived(amount, sourceToken, destinationToken),
+ })) as RawBridgeSolanaTransaction;
const keypair = solanaWeb3.Keypair.fromSecretKey(bs58.decode(privateKey));
transaction.sign([keypair]);
- const connection = new solanaWeb3.Connection(nodeUrlsDefault.solanaRpcUrl, "confirmed");
+ const connection = new solanaWeb3.Connection(ensure(nodeRpcUrlsDefault.SOL), "confirmed");
const txid = await connection.sendTransaction(transaction);
console.log(`https://explorer.solana.com/tx/${txid}`);
};
diff --git a/examples/src/examples/bridge/srb/srb-send-full-example.ts b/examples/src/examples/bridge/srb/srb-send-full-example.ts
index a8ac78e..48f6203 100644
--- a/examples/src/examples/bridge/srb/srb-send-full-example.ts
+++ b/examples/src/examples/bridge/srb/srb-send-full-example.ts
@@ -27,12 +27,15 @@ const privateKey = getEnvVar("SRB_PRIVATE_KEY");
const toAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
const main = async () => {
- const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, SRB: getEnvVar("SRB_PROVIDER_URL") });
const chainDetailsMap = await sdk.chainDetailsMap();
+
const sourceToken = ensure(chainDetailsMap[ChainSymbol.SRB].tokens.find((t) => t.symbol == "USDT"));
const destinationToken = ensure(chainDetailsMap[ChainSymbol.ETH].tokens.find((t) => t.symbol == "USDT"));
+
const amount = "2";
+
const sendParams: SendParams = {
amount,
fromAccountAddress: fromAddress,
@@ -54,8 +57,9 @@ const main = async () => {
const restoreXdrTx = await sdk.utils.srb.simulateAndCheckRestoreTxRequiredSoroban(signedTx, fromAddress);
if (restoreXdrTx) {
- restoreXdrTx.sign(srbKeypair);
- const signedRestoreXdrTx = restoreXdrTx.toXDR();
+ const restoreTx = TransactionBuilder.fromXDR(restoreXdrTx, mainnet.sorobanNetworkPassphrase);
+ restoreTx.sign(srbKeypair);
+ const signedRestoreXdrTx = restoreTx.toXDR();
const sentRestoreXdrTx = await sdk.utils.srb.sendTransactionSoroban(signedRestoreXdrTx);
const confirmRestoreXdrTx = await sdk.utils.srb.confirmTx(sentRestoreXdrTx.hash);
if (confirmRestoreXdrTx.status === SorobanRpc.Api.GetTransactionStatus.NOT_FOUND) {
diff --git a/examples/src/examples/bridge/trx/trx-build-approve-and-send-tx-gas-fee-with-stables.ts b/examples/src/examples/bridge/trx/trx-build-approve-and-send-tx-gas-fee-with-stables.ts
deleted file mode 100644
index df74ffa..0000000
--- a/examples/src/examples/bridge/trx/trx-build-approve-and-send-tx-gas-fee-with-stables.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import {
- AllbridgeCoreSdk,
- ChainSymbol,
- FeePaymentMethod,
- Messenger,
- nodeUrlsDefault,
- RawTransaction,
-} from "@allbridge/bridge-core-sdk";
-import * as dotenv from "dotenv";
-import { getEnvVar } from "../../../utils/env";
-import { ensure } from "../../../utils/utils";
-// @ts-expect-error import tron
-import TronWeb from "tronweb";
-import Big from "big.js";
-
-dotenv.config({ path: ".env" });
-const main = async () => {
- // sender address
- const fromAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
- // recipient address
- const toAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
-
- // configure TronWeb
- const tronWeb = new TronWeb(
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRX_PRIVATE_KEY")
- );
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
-
- const chains = await sdk.chainDetailsMap();
-
- const sourceChain = chains[ChainSymbol.TRX];
- const sourceTokenInfo = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDT"));
-
- const destinationChain = chains[ChainSymbol.ETH];
- const destinationTokenInfo = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDT"));
-
- // authorize the bridge to transfer tokens from sender's address
- const rawTransactionApprove = await sdk.bridge.rawTxBuilder.approve(tronWeb, {
- token: sourceTokenInfo,
- owner: fromAddress,
- });
- const approveReceipt = await sendRawTransaction(tronWeb, rawTransactionApprove);
- console.log("Approve transaction receipt", JSON.stringify(approveReceipt, null, 2));
-
- const amountToSendFloat = "17";
- const gasFeeOptions = await sdk.getGasFeeOptions(sourceTokenInfo, destinationTokenInfo, Messenger.ALLBRIDGE);
- console.log("gasFeeOptions", gasFeeOptions);
- const gasFeeAmount = ensure(gasFeeOptions[FeePaymentMethod.WITH_STABLECOIN]);
- const gasFeeAmountFloat = gasFeeAmount.float;
- const totalAmountFloat = new Big(amountToSendFloat).add(gasFeeAmountFloat).toFixed();
- console.log(
- `Sending ${amountToSendFloat} ${sourceTokenInfo.symbol} (gas fee ${gasFeeAmountFloat} ${sourceTokenInfo.symbol}). Total amount: ${totalAmountFloat} ${sourceTokenInfo.symbol}`
- );
-
- // initiate transfer
- const params = {
- amount: totalAmountFloat,
- fromAccountAddress: fromAddress,
- toAccountAddress: toAddress,
- sourceToken: sourceTokenInfo,
- destinationToken: destinationTokenInfo,
- messenger: Messenger.ALLBRIDGE,
- gasFeePaymentMethod: FeePaymentMethod.WITH_STABLECOIN,
- fee: gasFeeAmount.int,
- };
- const rawTransactionTransfer = await sdk.bridge.rawTxBuilder.send(params, tronWeb);
-
- const transferReceipt = await sendRawTransaction(tronWeb, rawTransactionTransfer);
- console.log("Transfer tokens transaction receipt:", transferReceipt);
-};
-
-async function sendRawTransaction(tronWeb: TronWeb, rawTransaction: RawTransaction) {
- const signedTx = await tronWeb.trx.sign(rawTransaction);
-
- if (!signedTx.signature) {
- throw Error("Transaction was not signed properly");
- }
-
- // Broadcasting the transaction
- return await tronWeb.trx.sendRawTransaction(signedTx);
-}
-
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/bridge/trx/trx-build-approve-and-send-tx.ts b/examples/src/examples/bridge/trx/trx-build-approve-and-send-tx.ts
deleted file mode 100644
index 2a00828..0000000
--- a/examples/src/examples/bridge/trx/trx-build-approve-and-send-tx.ts
+++ /dev/null
@@ -1,74 +0,0 @@
-import { AllbridgeCoreSdk, ChainSymbol, Messenger, nodeUrlsDefault, RawTransaction } from "@allbridge/bridge-core-sdk";
-import * as dotenv from "dotenv";
-import { getEnvVar } from "../../../utils/env";
-import { ensure } from "../../../utils/utils";
-// @ts-expect-error import tron
-import TronWeb from "tronweb";
-
-dotenv.config({ path: ".env" });
-const main = async () => {
- // sender address
- const fromAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
- // recipient address
- const toAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
-
- // configure TronWeb
- const tronWeb = new TronWeb(
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRX_PRIVATE_KEY")
- );
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
-
- const chains = await sdk.chainDetailsMap();
-
- const sourceChain = chains[ChainSymbol.TRX];
- const sourceTokenInfo = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDT"));
-
- const destinationChain = chains[ChainSymbol.ETH];
- const destinationTokenInfo = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
-
- // authorize the bridge to transfer tokens from sender's address
- const rawTransactionApprove = await sdk.bridge.rawTxBuilder.approve(tronWeb, {
- token: sourceTokenInfo,
- owner: fromAddress,
- });
- const approveReceipt = await sendRawTransaction(tronWeb, rawTransactionApprove);
- console.log("Approve transaction receipt", JSON.stringify(approveReceipt, null, 2));
-
- // initiate transfer
- const rawTransactionTransfer = await sdk.bridge.rawTxBuilder.send(
- {
- amount: "17",
- fromAccountAddress: fromAddress,
- toAccountAddress: toAddress,
- sourceToken: sourceTokenInfo,
- destinationToken: destinationTokenInfo,
- messenger: Messenger.ALLBRIDGE,
- },
- tronWeb
- );
-
- const transferReceipt = await sendRawTransaction(tronWeb, rawTransactionTransfer);
- console.log("Transfer tokens transaction receipt:", transferReceipt);
-};
-
-async function sendRawTransaction(tronWeb: TronWeb, rawTransaction: RawTransaction) {
- const signedTx = await tronWeb.trx.sign(rawTransaction);
-
- if (!signedTx.signature) {
- throw Error("Transaction was not signed properly");
- }
-
- // Broadcasting the transaction
- return await tronWeb.trx.sendRawTransaction(signedTx);
-}
-
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/bridge/trx/trx-build-send-tx-gas-fee-with-stables.ts b/examples/src/examples/bridge/trx/trx-build-send-tx-gas-fee-with-stables.ts
new file mode 100644
index 0000000..20b48db
--- /dev/null
+++ b/examples/src/examples/bridge/trx/trx-build-send-tx-gas-fee-with-stables.ts
@@ -0,0 +1,75 @@
+import {
+ AllbridgeCoreSdk,
+ ChainSymbol,
+ FeePaymentMethod,
+ Messenger,
+ nodeRpcUrlsDefault,
+} from "@allbridge/bridge-core-sdk";
+import { getEnvVar } from "../../../utils/env";
+import { ensure } from "../../../utils/utils";
+import Big from "big.js";
+import { sendTrxRawTransaction } from "../../../utils/tronWeb";
+import * as dotenv from "dotenv";
+
+dotenv.config({ path: ".env" });
+
+const main = async () => {
+ const fromAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
+ const toAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
+
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
+
+ const chains = await sdk.chainDetailsMap();
+
+ const sourceChain = chains[ChainSymbol.TRX];
+ const sourceToken = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDT"));
+
+ const destinationChain = chains[ChainSymbol.ETH];
+ const destinationToken = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDT"));
+
+ const amountToSendFloat = "17.187";
+
+ //check if sending tokens already approved
+ if (!(await sdk.bridge.checkAllowance({ token: sourceToken, owner: fromAddress, amount: amountToSendFloat }))) {
+ // authorize the bridge to transfer tokens from sender's address
+ const rawTransactionApprove = await sdk.bridge.rawTxBuilder.approve({
+ token: sourceToken,
+ owner: fromAddress,
+ });
+ const approveReceipt = await sendTrxRawTransaction(rawTransactionApprove);
+ console.log("Approve transaction receipt", JSON.stringify(approveReceipt, null, 2));
+ }
+
+ const gasFeeOptions = await sdk.getGasFeeOptions(sourceToken, destinationToken, Messenger.ALLBRIDGE);
+ console.log("gasFeeOptions", gasFeeOptions);
+ const gasFeeAmount = ensure(gasFeeOptions[FeePaymentMethod.WITH_STABLECOIN]);
+ const gasFeeAmountFloat = gasFeeAmount.float;
+ const totalAmountFloat = new Big(amountToSendFloat).add(gasFeeAmountFloat).toFixed();
+ console.log(
+ `Sending ${amountToSendFloat} ${sourceToken.symbol} (gas fee ${gasFeeAmountFloat} ${sourceToken.symbol}). Total amount: ${totalAmountFloat} ${sourceToken.symbol}`
+ );
+
+ // initiate transfer
+ const params = {
+ amount: totalAmountFloat,
+ fromAccountAddress: fromAddress,
+ toAccountAddress: toAddress,
+ sourceToken: sourceToken,
+ destinationToken: destinationToken,
+ messenger: Messenger.ALLBRIDGE,
+ gasFeePaymentMethod: FeePaymentMethod.WITH_STABLECOIN,
+ fee: gasFeeAmount.int,
+ };
+ const rawTransactionTransfer = await sdk.bridge.rawTxBuilder.send(params);
+
+ const transferReceipt = await sendTrxRawTransaction(rawTransactionTransfer);
+ console.log("Transfer tokens transaction receipt:", transferReceipt);
+};
+
+main()
+ .then(() => {
+ console.log("Done");
+ })
+ .catch((e) => {
+ console.error(e);
+ });
diff --git a/examples/src/examples/bridge/trx/trx-build-send-tx.ts b/examples/src/examples/bridge/trx/trx-build-send-tx.ts
new file mode 100644
index 0000000..f9535d4
--- /dev/null
+++ b/examples/src/examples/bridge/trx/trx-build-send-tx.ts
@@ -0,0 +1,56 @@
+import { AllbridgeCoreSdk, ChainSymbol, Messenger, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
+import * as dotenv from "dotenv";
+import { getEnvVar } from "../../../utils/env";
+import { ensure } from "../../../utils/utils";
+import { sendTrxRawTransaction } from "../../../utils/tronWeb";
+
+dotenv.config({ path: ".env" });
+
+const main = async () => {
+ const fromAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
+ const toAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
+
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
+
+ const chains = await sdk.chainDetailsMap();
+
+ const sourceChain = chains[ChainSymbol.TRX];
+ const sourceToken = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDT"));
+
+ const destinationChain = chains[ChainSymbol.ETH];
+ const destinationToken = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+
+ const amount = "17.17";
+
+ //check if sending tokens already approved
+ if (!(await sdk.bridge.checkAllowance({ token: sourceToken, owner: fromAddress, amount: amount }))) {
+ // authorize the bridge to transfer tokens from sender's address
+ const rawTransactionApprove = await sdk.bridge.rawTxBuilder.approve({
+ token: sourceToken,
+ owner: fromAddress,
+ });
+ const approveReceipt = await sendTrxRawTransaction(rawTransactionApprove);
+ console.log("Approve transaction receipt", JSON.stringify(approveReceipt, null, 2));
+ }
+
+ // initiate transfer
+ const rawTransactionTransfer = await sdk.bridge.rawTxBuilder.send({
+ amount: amount,
+ fromAccountAddress: fromAddress,
+ toAccountAddress: toAddress,
+ sourceToken: sourceToken,
+ destinationToken: destinationToken,
+ messenger: Messenger.ALLBRIDGE,
+ });
+
+ const transferReceipt = await sendTrxRawTransaction(rawTransactionTransfer);
+ console.log("Transfer tokens transaction receipt:", transferReceipt);
+};
+
+main()
+ .then(() => {
+ console.log("Done");
+ })
+ .catch((e) => {
+ console.error(e);
+ });
diff --git a/examples/src/examples/bridge/trx/trx-build-swap-tx.ts b/examples/src/examples/bridge/trx/trx-build-swap-tx.ts
index bac0287..d525ab8 100644
--- a/examples/src/examples/bridge/trx/trx-build-swap-tx.ts
+++ b/examples/src/examples/bridge/trx/trx-build-swap-tx.ts
@@ -1,63 +1,54 @@
-import { RawTransaction, AllbridgeCoreSdk, ChainSymbol, SwapParams, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, ChainSymbol, SwapParams, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
import { ensure } from "../../../utils/utils";
-import { TransactionConfig } from "web3-core";
-// @ts-expect-error import tron
-import TronWeb from "tronweb";
+import { sendTrxRawTransaction } from "../../../utils/tronWeb";
dotenv.config({ path: ".env" });
+
const main = async () => {
- // sender address
const fromAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
- // recipient address
const toAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
- // configure TronWeb
- const tronWeb = new TronWeb(
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRX_PRIVATE_KEY")
- );
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const chains = await sdk.chainDetailsMap();
const sourceChain = chains[ChainSymbol.TRX];
- const sourceTokenInfo = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+ const sourceToken = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
const destinationChain = chains[ChainSymbol.TRX];
- const destinationTokenInfo = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
+ const destinationToken = ensure(destinationChain.tokens.find((tokenInfo) => tokenInfo.symbol === "USDC"));
const amount = "10";
+ //check if sending tokens already approved
+ if (!(await sdk.bridge.checkAllowance({ token: sourceToken, owner: fromAddress, amount: amount }))) {
+ // authorize the bridge to transfer tokens from sender's address
+ const rawTransactionApprove = await sdk.bridge.rawTxBuilder.approve({
+ token: sourceToken,
+ owner: fromAddress,
+ });
+ const approveReceipt = await sendTrxRawTransaction(rawTransactionApprove);
+ console.log("Approve transaction receipt", JSON.stringify(approveReceipt, null, 2));
+ }
+
// initiate transfer
const swapParams: SwapParams = {
amount: amount,
fromAccountAddress: fromAddress,
toAccountAddress: toAddress,
- sourceToken: sourceTokenInfo,
- destinationToken: destinationTokenInfo,
- minimumReceiveAmount: await sdk.getAmountToBeReceived(amount, sourceTokenInfo, destinationTokenInfo),
+ sourceToken: sourceToken,
+ destinationToken: destinationToken,
+ minimumReceiveAmount: await sdk.getAmountToBeReceived(amount, sourceToken, destinationToken),
};
- const rawTransactionTransfer = await sdk.bridge.rawTxBuilder.send(swapParams, tronWeb);
+ const rawTransactionTransfer = await sdk.bridge.rawTxBuilder.send(swapParams);
- console.log(`Sending ${amount} ${sourceTokenInfo.symbol}`);
- const txReceipt = await sendRawTransaction(tronWeb, rawTransactionTransfer as TransactionConfig);
+ console.log(`Sending ${amount} ${sourceToken.symbol}`);
+ const txReceipt = await sendTrxRawTransaction(rawTransactionTransfer);
console.log("tx id:", txReceipt.txid);
};
-async function sendRawTransaction(tronWeb: TronWeb, rawTransaction: RawTransaction) {
- const signedTx = await tronWeb.trx.sign(rawTransaction);
-
- if (!signedTx.signature) {
- throw Error("Transaction was not signed properly");
- }
- // Broadcasting the transaction
- return await tronWeb.trx.sendRawTransaction(signedTx);
-}
main()
.then(() => {
console.log("Done");
diff --git a/examples/src/examples/bridge/trx/trx-send-tokens.ts b/examples/src/examples/bridge/trx/trx-send-tokens.ts
deleted file mode 100644
index c3ba1b0..0000000
--- a/examples/src/examples/bridge/trx/trx-send-tokens.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { AllbridgeCoreSdk, ChainSymbol, Messenger, nodeUrlsDefault, SendParams } from "@allbridge/bridge-core-sdk";
-import * as dotenv from "dotenv";
-import { getEnvVar } from "../../../utils/env";
-import { ensure } from "../../../utils/utils";
-// @ts-expect-error import tron
-import TronWeb from "tronweb";
-
-dotenv.config({ path: ".env" });
-const main = async () => {
- const providerUrl = getEnvVar("TRONWEB_PROVIDER_URL");
- const accountAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
- const toAccountAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
- const tokenAddress = getEnvVar("TRX_TOKEN_ADDRESS");
- const receiveTokenAddress = getEnvVar("ETH_TOKEN_ADDRESS");
- const privateKey = getEnvVar("TRX_PRIVATE_KEY");
-
- const tronWeb = new TronWeb(providerUrl, providerUrl, providerUrl, privateKey);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
-
- const chains = await sdk.chainDetailsMap();
-
- const sourceChain = chains[ChainSymbol.ETH];
- const sourceTokenInfo = ensure(sourceChain.tokens.find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
-
- const destinationChain = chains[ChainSymbol.TRX];
- const destinationTokenInfo = ensure(
- destinationChain.tokens.find((tokenInfo) => tokenInfo.tokenAddress === receiveTokenAddress)
- );
-
- const sendParams: SendParams = {
- amount: "0.7",
-
- sourceToken: sourceTokenInfo,
- fromAccountAddress: accountAddress,
-
- destinationToken: destinationTokenInfo,
- toAccountAddress: toAccountAddress,
-
- messenger: Messenger.ALLBRIDGE,
- // fee: 2000000000000000, //0.002 Ether - optional param
- // fee: 20000000000000000, //0.02 Ether - optional param
- };
-
- const response = await sdk.bridge.send(tronWeb, sendParams);
- console.log("tron send response: ", response);
-};
-
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/general/evm/bsc/bsc-approve-tokens.ts b/examples/src/examples/general/evm/bsc/bsc-approve-tokens.ts
deleted file mode 100644
index 8a9dcf6..0000000
--- a/examples/src/examples/general/evm/bsc/bsc-approve-tokens.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { AllbridgeCoreSdk, BridgeApproveParams, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
-import Web3 from "web3";
-import * as dotenv from "dotenv";
-dotenv.config({ path: ".env" });
-import { getEnvVar } from "../../../../utils/env";
-import { ensure } from "../../../../utils/utils";
-
-dotenv.config({ path: ".env" });
-const main = async () => {
- const providerUrl = getEnvVar("BSC_WEB3_PROVIDER_URL");
- const privateKey = getEnvVar("BSC_PRIVATE_KEY");
- const tokenAddress = getEnvVar("BSC_TOKEN_ADDRESS");
- const accountAddress = getEnvVar("BSC_ACCOUNT_ADDRESS");
-
- const web3 = new Web3(providerUrl);
- const account = web3.eth.accounts.privateKeyToAccount(privateKey);
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
- const tokenInfo = ensure((await sdk.tokens()).find((t) => t.tokenAddress === tokenAddress));
- const approveData: BridgeApproveParams = {
- token: tokenInfo,
- owner: accountAddress,
- };
- const approveResponse = await sdk.bridge.approve(web3, approveData);
- console.log("approve response: ", approveResponse);
-};
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/general/evm/bsc/bsc-get-token-balance.ts b/examples/src/examples/general/evm/bsc/bsc-get-token-balance.ts
deleted file mode 100644
index a810cc5..0000000
--- a/examples/src/examples/general/evm/bsc/bsc-get-token-balance.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import * as dotenv from "dotenv";
-import Web3 from "web3";
-import { getEnvVar } from "../../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
-import { ensure } from "../../../../utils/utils";
-dotenv.config({ path: ".env" });
-
-const main = async () => {
- const providerUrl = getEnvVar("BSC_WEB3_PROVIDER_URL");
- const privateKey = getEnvVar("BSC_PRIVATE_KEY");
- const tokenAddress = getEnvVar("BSC_TOKEN_ADDRESS");
- const accountAddress = getEnvVar("BSC_ACCOUNT_ADDRESS");
-
- const web3 = new Web3(providerUrl);
- const account = web3.eth.accounts.privateKeyToAccount(privateKey);
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
- const token = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
-
- const tokenBalanceData = {
- account: accountAddress,
- token: token,
- };
- const tokenBalance = await sdk.getTokenBalance(tokenBalanceData, web3);
- console.log("Token Balance: ", tokenBalance);
-
- const tokenBalanceWithPrecisionData = {
- account: accountAddress,
- token: token,
- };
- const tokenBalanceWithPrecision = await sdk.getTokenBalance(tokenBalanceWithPrecisionData, web3);
- console.log("With precision:", tokenBalanceWithPrecision);
-};
-
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/general/evm/evm-approve-tokens.ts b/examples/src/examples/general/evm/evm-approve-tokens.ts
index a76e1b5..378199f 100644
--- a/examples/src/examples/general/evm/evm-approve-tokens.ts
+++ b/examples/src/examples/general/evm/evm-approve-tokens.ts
@@ -1,29 +1,24 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault, RawEvmTransaction } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
-import Web3 from "web3";
+import { sendEvmRawTransaction } from "../../../utils/web3";
dotenv.config({ path: ".env" });
const main = async () => {
- const providerUrl = getEnvVar("WEB3_PROVIDER_URL");
- const privateKey = getEnvVar("ETH_PRIVATE_KEY");
const tokenAddress = getEnvVar("ETH_TOKEN_ADDRESS");
const accountAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
- const web3 = new Web3(providerUrl);
- const account = web3.eth.accounts.privateKeyToAccount(privateKey);
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: getEnvVar("WEB3_PROVIDER_URL") });
const tokenInfo = ensure((await sdk.tokens()).find((t) => t.tokenAddress === tokenAddress));
- const approveData = {
+ // authorize the bridge to transfer tokens from sender's address
+ const rawTransactionApprove = (await sdk.bridge.rawTxBuilder.approve({
token: tokenInfo,
owner: accountAddress,
- };
- const approveResponse = await sdk.bridge.approve(web3, approveData);
- console.log("approve response: ", approveResponse);
+ })) as RawEvmTransaction;
+ const approveTxReceipt = await sendEvmRawTransaction(rawTransactionApprove);
+ console.log("approve tx id:", approveTxReceipt.transactionHash);
};
main()
diff --git a/examples/src/examples/general/evm/evm-get-token-balance.ts b/examples/src/examples/general/evm/evm-get-token-balance.ts
index 5ca598e..8f00c26 100644
--- a/examples/src/examples/general/evm/evm-get-token-balance.ts
+++ b/examples/src/examples/general/evm/evm-get-token-balance.ts
@@ -1,35 +1,29 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
-import Web3 from "web3";
dotenv.config({ path: ".env" });
const main = async () => {
- const providerUrl = getEnvVar("WEB3_PROVIDER_URL");
- const privateKey = getEnvVar("ETH_PRIVATE_KEY");
const tokenAddress = getEnvVar("ETH_TOKEN_ADDRESS");
const accountAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
- const web3 = new Web3(providerUrl);
- const account = web3.eth.accounts.privateKeyToAccount(privateKey);
- web3.eth.accounts.wallet.add(account);
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: getEnvVar("WEB3_PROVIDER_URL") });
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const tokenBalanceData = {
account: accountAddress,
token: tokenInfo,
};
- const tokenBalance = await sdk.getTokenBalance(tokenBalanceData, web3);
+ const tokenBalance = await sdk.getTokenBalance(tokenBalanceData);
console.log("Token Balance: ", tokenBalance);
const tokenBalanceWithPrecisionData = {
account: accountAddress,
token: tokenInfo,
};
- const tokenBalanceWithPrecision = await sdk.getTokenBalance(tokenBalanceWithPrecisionData, web3);
+ const tokenBalanceWithPrecision = await sdk.getTokenBalance(tokenBalanceWithPrecisionData);
console.log("With precision:", tokenBalanceWithPrecision);
};
diff --git a/examples/src/examples/general/evm/pol/pol-approve-tokens.ts b/examples/src/examples/general/evm/pol/pol-approve-tokens.ts
deleted file mode 100644
index ed5da5f..0000000
--- a/examples/src/examples/general/evm/pol/pol-approve-tokens.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
-import Web3 from "web3";
-
-import * as dotenv from "dotenv";
-import { getEnvVar } from "../../../../utils/env";
-import { ensure } from "../../../../utils/utils";
-dotenv.config({ path: ".env" });
-
-const main = async () => {
- const providerUrl = getEnvVar("POL_WEB3_PROVIDER_URL");
- const privateKey = getEnvVar("POL_PRIVATE_KEY");
- const tokenAddress = getEnvVar("POL_TOKEN_ADDRESS");
- const accountAddress = getEnvVar("POL_ACCOUNT_ADDRESS");
-
- const web3 = new Web3(providerUrl);
- const account = web3.eth.accounts.privateKeyToAccount(privateKey);
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
- const tokenInfo = ensure((await sdk.tokens()).find((t) => t.tokenAddress === tokenAddress));
- const approveData = {
- token: tokenInfo,
- owner: accountAddress,
- };
- const approveResponse = await sdk.bridge.approve(web3, approveData);
- console.log("approve response: ", approveResponse);
-};
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/general/evm/pol/pol-get-token-balance.ts b/examples/src/examples/general/evm/pol/pol-get-token-balance.ts
deleted file mode 100644
index abffb5a..0000000
--- a/examples/src/examples/general/evm/pol/pol-get-token-balance.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
-import Web3 from "web3";
-
-import * as dotenv from "dotenv";
-import { getEnvVar } from "../../../../utils/env";
-import { ensure } from "../../../../utils/utils";
-dotenv.config({ path: ".env" });
-
-const main = async () => {
- const providerUrl = getEnvVar("POL_WEB3_PROVIDER_URL");
- const privateKey = getEnvVar("POL_PRIVATE_KEY");
- const tokenAddress = getEnvVar("POL_TOKEN_ADDRESS");
- const accountAddress = getEnvVar("POL_ACCOUNT_ADDRESS");
-
- const web3 = new Web3(providerUrl);
- const account = web3.eth.accounts.privateKeyToAccount(privateKey);
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
- const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
-
- const tokenBalanceData = {
- account: accountAddress,
- token: tokenInfo,
- };
- const tokenBalance = await sdk.getTokenBalance(tokenBalanceData, web3);
- console.log("Token Balance: ", tokenBalance);
-
- const tokenBalanceWithPrecisionData = {
- account: accountAddress,
- token: tokenInfo,
- };
- const tokenBalanceWithPrecision = await sdk.getTokenBalance(tokenBalanceWithPrecisionData, web3);
- console.log("With precision:", tokenBalanceWithPrecision);
-};
-
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/general/solana/sol-get-token-balance.ts b/examples/src/examples/general/solana/sol-get-token-balance.ts
index 606068e..fba7394 100644
--- a/examples/src/examples/general/solana/sol-get-token-balance.ts
+++ b/examples/src/examples/general/solana/sol-get-token-balance.ts
@@ -1,6 +1,6 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
dotenv.config({ path: ".env" });
@@ -8,7 +8,7 @@ const main = async () => {
const tokenAddress = getEnvVar("SOL_TOKEN_ADDRESS");
const accountAddress = getEnvVar("SOL_ACCOUNT_ADDRESS");
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const tokenBalanceData = {
diff --git a/examples/src/examples/general/trx/trx-approve-tokens.ts b/examples/src/examples/general/trx/trx-approve-tokens.ts
deleted file mode 100644
index ec07a97..0000000
--- a/examples/src/examples/general/trx/trx-approve-tokens.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import * as dotenv from "dotenv";
-import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
-// @ts-expect-error import tron
-import TronWeb from "tronweb";
-
-import { ensure } from "../../../utils/utils";
-dotenv.config({ path: ".env" });
-
-const main = async () => {
- const providerUrl = getEnvVar("TRONWEB_PROVIDER_URL");
- const privateKey = getEnvVar("TRX_PRIVATE_KEY");
- const tokenAddress = getEnvVar("TRX_TOKEN_ADDRESS");
- const accountAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
-
- const tronWeb = new TronWeb(providerUrl, providerUrl, providerUrl, privateKey);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
- const tokenInfo = ensure((await sdk.tokens()).find((t) => t.tokenAddress === tokenAddress));
-
- const approveData = {
- token: tokenInfo,
- owner: accountAddress,
- };
- const approveResponse = await sdk.bridge.approve(tronWeb, approveData);
- console.log("approve response: ", approveResponse);
-};
-
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/general/trx/trx-get-token-balance.ts b/examples/src/examples/general/trx/trx-get-token-balance.ts
deleted file mode 100644
index 9e02b1e..0000000
--- a/examples/src/examples/general/trx/trx-get-token-balance.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import * as dotenv from "dotenv";
-import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
-import { ensure } from "../../../utils/utils";
-// @ts-expect-error import tron
-import TronWeb from "tronweb";
-dotenv.config({ path: ".env" });
-
-const main = async () => {
- const providerUrl = getEnvVar("TRONWEB_PROVIDER_URL");
- const privateKey = getEnvVar("TRX_PRIVATE_KEY");
- const tokenAddress = getEnvVar("TRX_TOKEN_ADDRESS");
- const accountAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
-
- const tronWeb = new TronWeb(providerUrl, providerUrl, providerUrl, privateKey);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
- const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
-
- const tokenBalanceData = {
- account: accountAddress,
- token: tokenInfo,
- };
- const tokenBalance = await sdk.getTokenBalance(tokenBalanceData, tronWeb);
- console.log("Token Balance: ", tokenBalance);
-
- const tokenBalanceWithPrecisionData = {
- account: accountAddress,
- token: tokenInfo,
- };
- const tokenBalanceWithPrecision = await sdk.getTokenBalance(tokenBalanceWithPrecisionData, tronWeb);
- console.log("With precision:", tokenBalanceWithPrecision);
-};
-
-main()
- .then(() => {
- console.log("Done");
- })
- .catch((e) => {
- console.error(e);
- });
diff --git a/examples/src/examples/get-tokens-info.ts b/examples/src/examples/get-tokens-info.ts
index d9f83e9..50d7057 100644
--- a/examples/src/examples/get-tokens-info.ts
+++ b/examples/src/examples/get-tokens-info.ts
@@ -1,7 +1,7 @@
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
const main = async () => {
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const chainDetailsMap = await sdk.chainDetailsMap();
console.log("Chain details map =", JSON.stringify(chainDetailsMap, null, 2));
diff --git a/examples/src/examples/liquidity-pool/evm/evm-build-claim-rewards-tx.ts b/examples/src/examples/liquidity-pool/evm/evm-build-claim-rewards-tx.ts
index 7a45bd0..be634e6 100644
--- a/examples/src/examples/liquidity-pool/evm/evm-build-claim-rewards-tx.ts
+++ b/examples/src/examples/liquidity-pool/evm/evm-build-claim-rewards-tx.ts
@@ -1,10 +1,9 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
-import Web3 from "web3";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault, RawEvmTransaction } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
-import { sendRawTransaction } from "../../../utils/web3";
-import { TransactionConfig } from "web3-core";
+import { sendEvmRawTransaction } from "../../../utils/web3";
+
dotenv.config({ path: ".env" });
const main = async () => {
@@ -12,25 +11,16 @@ const main = async () => {
const accountAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
const tokenAddress = getEnvVar("ETH_TOKEN_ADDRESS");
- // configure web3
- const web3 = new Web3(getEnvVar("WEB3_PROVIDER_URL"));
- const account = web3.eth.accounts.privateKeyToAccount(getEnvVar("ETH_PRIVATE_KEY"));
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: getEnvVar("WEB3_PROVIDER_URL") });
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
// create claim rewards raw transaction
- const rawTransactionDeposit = await sdk.pool.rawTxBuilder.claimRewards(
- {
- accountAddress: accountAddress,
- token: tokenInfo,
- },
- web3
- );
-
- const txReceipt = await sendRawTransaction(web3, rawTransactionDeposit as TransactionConfig);
+ const rawTransactionDeposit = (await sdk.pool.rawTxBuilder.claimRewards({
+ accountAddress: accountAddress,
+ token: tokenInfo,
+ })) as RawEvmTransaction;
+ const txReceipt = await sendEvmRawTransaction(rawTransactionDeposit);
console.log("Token claim rewards:", txReceipt.transactionHash);
};
diff --git a/examples/src/examples/liquidity-pool/evm/evm-build-deposit-tx.ts b/examples/src/examples/liquidity-pool/evm/evm-build-deposit-tx.ts
index dd38cb3..9943c6e 100644
--- a/examples/src/examples/liquidity-pool/evm/evm-build-deposit-tx.ts
+++ b/examples/src/examples/liquidity-pool/evm/evm-build-deposit-tx.ts
@@ -1,10 +1,9 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
-import Web3 from "web3";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault, RawEvmTransaction } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
-import { sendRawTransaction } from "../../../utils/web3";
-import { TransactionConfig } from "web3-core";
+import { sendEvmRawTransaction } from "../../../utils/web3";
+
dotenv.config({ path: ".env" });
const main = async () => {
@@ -12,27 +11,18 @@ const main = async () => {
const accountAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
const tokenAddress = getEnvVar("ETH_TOKEN_ADDRESS");
- // configure web3
- const web3 = new Web3(getEnvVar("WEB3_PROVIDER_URL"));
- const account = web3.eth.accounts.privateKeyToAccount(getEnvVar("ETH_PRIVATE_KEY"));
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: getEnvVar("WEB3_PROVIDER_URL") });
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const oneToken = "1";
// create deposit raw transaction
- const rawTransactionDeposit = await sdk.pool.rawTxBuilder.deposit(
- {
- amount: oneToken,
- accountAddress: accountAddress,
- token: tokenInfo,
- },
- web3
- );
-
- const txReceipt = await sendRawTransaction(web3, rawTransactionDeposit as TransactionConfig);
+ const rawTransactionDeposit = (await sdk.pool.rawTxBuilder.deposit({
+ amount: oneToken,
+ accountAddress: accountAddress,
+ token: tokenInfo,
+ })) as RawEvmTransaction;
+ const txReceipt = await sendEvmRawTransaction(rawTransactionDeposit);
console.log("Token deposit:", txReceipt.transactionHash);
};
diff --git a/examples/src/examples/liquidity-pool/evm/evm-build-withdraw-tx.ts b/examples/src/examples/liquidity-pool/evm/evm-build-withdraw-tx.ts
index a6dcbf9..55564b7 100644
--- a/examples/src/examples/liquidity-pool/evm/evm-build-withdraw-tx.ts
+++ b/examples/src/examples/liquidity-pool/evm/evm-build-withdraw-tx.ts
@@ -1,10 +1,9 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault, RawEvmTransaction } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
-import { sendRawTransaction } from "../../../utils/web3";
-import Web3 from "web3";
-import { TransactionConfig } from "web3-core";
+import { sendEvmRawTransaction } from "../../../utils/web3";
+
dotenv.config({ path: ".env" });
const main = async () => {
@@ -12,27 +11,18 @@ const main = async () => {
const accountAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
const tokenAddress = getEnvVar("ETH_TOKEN_ADDRESS");
- // configure web3
- const web3 = new Web3(getEnvVar("WEB3_PROVIDER_URL"));
- const account = web3.eth.accounts.privateKeyToAccount(getEnvVar("ETH_PRIVATE_KEY"));
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: getEnvVar("WEB3_PROVIDER_URL") });
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const halfToken = "0.5";
// create withdraw raw transaction
- const rawTransactionDeposit = await sdk.pool.rawTxBuilder.withdraw(
- {
- amount: halfToken,
- accountAddress: accountAddress,
- token: tokenInfo,
- },
- web3
- );
-
- const txReceipt = await sendRawTransaction(web3, rawTransactionDeposit as TransactionConfig);
+ const rawTransactionDeposit = (await sdk.pool.rawTxBuilder.withdraw({
+ amount: halfToken,
+ accountAddress: accountAddress,
+ token: tokenInfo,
+ })) as RawEvmTransaction;
+ const txReceipt = await sendEvmRawTransaction(rawTransactionDeposit);
console.log("Token withdraw:", txReceipt.transactionHash);
};
diff --git a/examples/src/examples/liquidity-pool/evm/get-amount-to-be-withdrawn.ts b/examples/src/examples/liquidity-pool/evm/get-amount-to-be-withdrawn.ts
index fecf3b0..f5ae153 100644
--- a/examples/src/examples/liquidity-pool/evm/get-amount-to-be-withdrawn.ts
+++ b/examples/src/examples/liquidity-pool/evm/get-amount-to-be-withdrawn.ts
@@ -1,26 +1,18 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import Web3 from "web3";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
dotenv.config({ path: ".env" });
const main = async () => {
- const providerUrl = getEnvVar("WEB3_PROVIDER_URL");
- const privateKey = getEnvVar("ETH_PRIVATE_KEY");
const tokenAddress = getEnvVar("ETH_TOKEN_ADDRESS");
const accountAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
- const web3 = new Web3(providerUrl);
- const account = web3.eth.accounts.privateKeyToAccount(privateKey);
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: getEnvVar("WEB3_PROVIDER_URL") });
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const halfToken = "0.5";
- const estimatedAmount = await sdk.pool.getAmountToBeWithdrawn(halfToken, accountAddress, tokenInfo, web3);
-
+ const estimatedAmount = await sdk.pool.getAmountToBeWithdrawn(halfToken, accountAddress, tokenInfo);
console.log("If you withdraw %d LP tokens, then %d will be received", halfToken, estimatedAmount);
};
diff --git a/examples/src/examples/liquidity-pool/evm/get-liquidity-balance.ts b/examples/src/examples/liquidity-pool/evm/get-liquidity-balance.ts
index 2fdd741..081b6e0 100644
--- a/examples/src/examples/liquidity-pool/evm/get-liquidity-balance.ts
+++ b/examples/src/examples/liquidity-pool/evm/get-liquidity-balance.ts
@@ -1,29 +1,22 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import Web3 from "web3";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
dotenv.config({ path: ".env" });
const main = async () => {
- const providerUrl = getEnvVar("WEB3_PROVIDER_URL");
- const privateKey = getEnvVar("ETH_PRIVATE_KEY");
const tokenAddress = getEnvVar("ETH_TOKEN_ADDRESS");
const accountAddress = getEnvVar("ETH_ACCOUNT_ADDRESS");
- const web3 = new Web3(providerUrl);
- const account = web3.eth.accounts.privateKeyToAccount(privateKey);
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: getEnvVar("WEB3_PROVIDER_URL") });
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
- const userBalanceInfo = await sdk.pool.getUserBalanceInfo(accountAddress, tokenInfo, web3);
- const poolInfo = await sdk.pool.getPoolInfoFromChain(tokenInfo, web3);
+ const userBalanceInfo = await sdk.pool.getUserBalanceInfo(accountAddress, tokenInfo);
+ const poolInfo = await sdk.pool.getPoolInfoFromChain(tokenInfo);
console.log("Evm User balance: ", userBalanceInfo.userLiquidity);
console.log("Evm User rewards: ", userBalanceInfo.earned(poolInfo, tokenInfo.decimals));
- console.log("Evm PoolInfo APR: ", sdk.aprInPercents(tokenInfo.apr));
+ console.log("Evm PoolInfo APR: ", sdk.aprInPercents(tokenInfo.apr7d));
};
main()
diff --git a/examples/src/examples/liquidity-pool/evm/get-lp-amount-on-deposit.ts b/examples/src/examples/liquidity-pool/evm/get-lp-amount-on-deposit.ts
index f6bdfe2..c7ec7d5 100644
--- a/examples/src/examples/liquidity-pool/evm/get-lp-amount-on-deposit.ts
+++ b/examples/src/examples/liquidity-pool/evm/get-lp-amount-on-deposit.ts
@@ -1,24 +1,18 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import Web3 from "web3";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
+
dotenv.config({ path: ".env" });
const main = async () => {
- const providerUrl = getEnvVar("WEB3_PROVIDER_URL");
- const privateKey = getEnvVar("ETH_PRIVATE_KEY");
const tokenAddress = getEnvVar("ETH_TOKEN_ADDRESS");
- const web3 = new Web3(providerUrl);
- const account = web3.eth.accounts.privateKeyToAccount(privateKey);
- web3.eth.accounts.wallet.add(account);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk({ ...nodeRpcUrlsDefault, ETH: getEnvVar("WEB3_PROVIDER_URL") });
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const oneToken = "1";
- const estimatedAmount = await sdk.pool.getAmountToBeDeposited(oneToken, tokenInfo, web3);
+ const estimatedAmount = await sdk.pool.getAmountToBeDeposited(oneToken, tokenInfo);
console.log("If you send %d , then %d of LP tokens will be deposited", oneToken, estimatedAmount);
};
diff --git a/examples/src/examples/liquidity-pool/solana/get-amount-to-be-withdrawn.ts b/examples/src/examples/liquidity-pool/solana/get-amount-to-be-withdrawn.ts
index f99358d..ae6cdc3 100644
--- a/examples/src/examples/liquidity-pool/solana/get-amount-to-be-withdrawn.ts
+++ b/examples/src/examples/liquidity-pool/solana/get-amount-to-be-withdrawn.ts
@@ -1,6 +1,6 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
dotenv.config({ path: ".env" });
@@ -8,7 +8,7 @@ const main = async () => {
const tokenAddress = getEnvVar("SOL_TOKEN_ADDRESS");
const accountAddress = getEnvVar("SOL_ACCOUNT_ADDRESS");
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const halfToken = "0.5";
diff --git a/examples/src/examples/liquidity-pool/solana/get-liquidity-balance.ts b/examples/src/examples/liquidity-pool/solana/get-liquidity-balance.ts
index 34092d2..06b94b9 100644
--- a/examples/src/examples/liquidity-pool/solana/get-liquidity-balance.ts
+++ b/examples/src/examples/liquidity-pool/solana/get-liquidity-balance.ts
@@ -1,6 +1,6 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
dotenv.config({ path: ".env" });
@@ -8,14 +8,14 @@ const main = async () => {
const tokenAddress = getEnvVar("SOL_TOKEN_ADDRESS");
const accountAddress = getEnvVar("SOL_ACCOUNT_ADDRESS");
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const userBalanceInfo = await sdk.pool.getUserBalanceInfo(accountAddress, tokenInfo);
const poolInfo = await sdk.pool.getPoolInfoFromChain(tokenInfo);
console.log("Solana User balance: ", userBalanceInfo.userLiquidity);
console.log("Solana User rewards: ", userBalanceInfo.earned(poolInfo, tokenInfo.decimals));
- console.log("Solana PoolInfo APR: ", sdk.aprInPercents(tokenInfo.apr));
+ console.log("Solana PoolInfo APR: ", sdk.aprInPercents(tokenInfo.apr7d));
};
main()
diff --git a/examples/src/examples/liquidity-pool/solana/get-lp-amount-on-deposit.ts b/examples/src/examples/liquidity-pool/solana/get-lp-amount-on-deposit.ts
index c46e2a0..562f7c6 100644
--- a/examples/src/examples/liquidity-pool/solana/get-lp-amount-on-deposit.ts
+++ b/examples/src/examples/liquidity-pool/solana/get-lp-amount-on-deposit.ts
@@ -1,13 +1,13 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
dotenv.config({ path: ".env" });
const main = async () => {
const tokenAddress = getEnvVar("SOL_TOKEN_ADDRESS");
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const oneToken = "1";
diff --git a/examples/src/examples/liquidity-pool/solana/sol-build-claim-rewards-tx.ts b/examples/src/examples/liquidity-pool/solana/sol-build-claim-rewards-tx.ts
index cf663da..170c69a 100644
--- a/examples/src/examples/liquidity-pool/solana/sol-build-claim-rewards-tx.ts
+++ b/examples/src/examples/liquidity-pool/solana/sol-build-claim-rewards-tx.ts
@@ -1,6 +1,6 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault, RawPoolSolanaTransaction } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault, RawPoolSolanaTransaction } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
import solanaWeb3, { sendAndConfirmTransaction, Transaction } from "@solana/web3.js";
import bs58 from "bs58";
@@ -13,7 +13,7 @@ const main = async () => {
const privateKey = getEnvVar("SOL_PRIVATE_KEY");
const tokenAddress = getEnvVar("SOL_TOKEN_ADDRESS");
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
// create claim rewards raw transaction
@@ -22,7 +22,7 @@ const main = async () => {
token: tokenInfo,
})) as RawPoolSolanaTransaction;
- const tx = await sendRawTransaction(transaction, privateKey, nodeUrlsDefault.solanaRpcUrl);
+ const tx = await sendRawTransaction(transaction, privateKey, ensure(nodeRpcUrlsDefault.SOL));
console.log("Token claim rewards:", tx);
};
diff --git a/examples/src/examples/liquidity-pool/solana/sol-build-deposit-tx.ts b/examples/src/examples/liquidity-pool/solana/sol-build-deposit-tx.ts
index e9b079c..1d2b5a0 100644
--- a/examples/src/examples/liquidity-pool/solana/sol-build-deposit-tx.ts
+++ b/examples/src/examples/liquidity-pool/solana/sol-build-deposit-tx.ts
@@ -1,6 +1,6 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault, RawPoolSolanaTransaction } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault, RawPoolSolanaTransaction } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
import solanaWeb3, { sendAndConfirmTransaction, Transaction } from "@solana/web3.js";
import bs58 from "bs58";
@@ -13,7 +13,7 @@ const main = async () => {
const privateKey = getEnvVar("SOL_PRIVATE_KEY");
const tokenAddress = getEnvVar("SOL_TOKEN_ADDRESS");
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const oneToken = "1";
@@ -24,7 +24,7 @@ const main = async () => {
token: tokenInfo,
})) as RawPoolSolanaTransaction;
- const tx = await sendRawTransaction(transaction, privateKey, nodeUrlsDefault.solanaRpcUrl);
+ const tx = await sendRawTransaction(transaction, privateKey, ensure(nodeRpcUrlsDefault.SOL));
console.log("Token deposit:", tx);
};
diff --git a/examples/src/examples/liquidity-pool/solana/sol-build-withdraw-tx.ts b/examples/src/examples/liquidity-pool/solana/sol-build-withdraw-tx.ts
index 77d8b8a..a2597fa 100644
--- a/examples/src/examples/liquidity-pool/solana/sol-build-withdraw-tx.ts
+++ b/examples/src/examples/liquidity-pool/solana/sol-build-withdraw-tx.ts
@@ -1,6 +1,6 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault, RawPoolSolanaTransaction } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault, RawPoolSolanaTransaction } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
import solanaWeb3, { sendAndConfirmTransaction, Transaction } from "@solana/web3.js";
import bs58 from "bs58";
@@ -12,7 +12,7 @@ const main = async () => {
const privateKey = getEnvVar("SOL_PRIVATE_KEY");
const tokenAddress = getEnvVar("SOL_TOKEN_ADDRESS");
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const halfToken = "0.5";
@@ -23,7 +23,7 @@ const main = async () => {
token: tokenInfo,
})) as RawPoolSolanaTransaction;
- const tx = await sendRawTransaction(transaction, privateKey, nodeUrlsDefault.solanaRpcUrl);
+ const tx = await sendRawTransaction(transaction, privateKey, ensure(nodeRpcUrlsDefault.SOL));
console.log("Token withdraw:", tx);
};
diff --git a/examples/src/examples/liquidity-pool/trx/get-amount-to-be-withdrawn.ts b/examples/src/examples/liquidity-pool/trx/get-amount-to-be-withdrawn.ts
index 73586a5..0f9f8b9 100644
--- a/examples/src/examples/liquidity-pool/trx/get-amount-to-be-withdrawn.ts
+++ b/examples/src/examples/liquidity-pool/trx/get-amount-to-be-withdrawn.ts
@@ -1,25 +1,18 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
-// @ts-expect-error import tron
-import TronWeb from "tronweb";
dotenv.config({ path: ".env" });
const main = async () => {
- const providerUrl = getEnvVar("TRONWEB_PROVIDER_URL");
- const privateKey = getEnvVar("TRX_PRIVATE_KEY");
const tokenAddress = getEnvVar("TRX_TOKEN_ADDRESS");
const accountAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
- const tronWeb = new TronWeb(providerUrl, providerUrl, providerUrl, privateKey);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const halfToken = "0.5";
- const estimatedAmount = await sdk.pool.getAmountToBeWithdrawn(halfToken, accountAddress, tokenInfo, tronWeb);
-
+ const estimatedAmount = await sdk.pool.getAmountToBeWithdrawn(halfToken, accountAddress, tokenInfo);
console.log("If you withdraw %d LP tokens, then %d will be received", halfToken, estimatedAmount);
};
diff --git a/examples/src/examples/liquidity-pool/trx/get-liquidity-balance.ts b/examples/src/examples/liquidity-pool/trx/get-liquidity-balance.ts
index a559d4e..9bbe032 100644
--- a/examples/src/examples/liquidity-pool/trx/get-liquidity-balance.ts
+++ b/examples/src/examples/liquidity-pool/trx/get-liquidity-balance.ts
@@ -1,29 +1,23 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-// @ts-expect-error import tron
-import TronWeb from "tronweb";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
dotenv.config({ path: ".env" });
const main = async () => {
- const providerUrl = getEnvVar("TRONWEB_PROVIDER_URL");
- const privateKey = getEnvVar("TRX_PRIVATE_KEY");
const tokenAddress = getEnvVar("TRX_TOKEN_ADDRESS");
const accountAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
- const tronWeb = new TronWeb(providerUrl, providerUrl, providerUrl, privateKey);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
- const userBalanceInfo = await sdk.pool.getUserBalanceInfo(accountAddress, tokenInfo, tronWeb);
- const poolInfo = await sdk.pool.getPoolInfoFromChain(tokenInfo, tronWeb);
+ const userBalanceInfo = await sdk.pool.getUserBalanceInfo(accountAddress, tokenInfo);
+ const poolInfo = await sdk.pool.getPoolInfoFromChain(tokenInfo);
console.log("Tron User balance: ", userBalanceInfo.userLiquidity);
console.log("Tron User rewards: ", userBalanceInfo.earned(poolInfo, tokenInfo.decimals));
- console.log("Tron PoolInfo APR: ", sdk.aprInPercents(tokenInfo.apr));
+ console.log("Tron PoolInfo APR: ", sdk.aprInPercents(tokenInfo.apr7d));
};
main()
diff --git a/examples/src/examples/liquidity-pool/trx/get-lp-amount-on-deposit.ts b/examples/src/examples/liquidity-pool/trx/get-lp-amount-on-deposit.ts
index b9df304..9c307e6 100644
--- a/examples/src/examples/liquidity-pool/trx/get-lp-amount-on-deposit.ts
+++ b/examples/src/examples/liquidity-pool/trx/get-lp-amount-on-deposit.ts
@@ -1,23 +1,17 @@
import * as dotenv from "dotenv";
-// @ts-expect-error import tron
-import TronWeb from "tronweb";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
dotenv.config({ path: ".env" });
const main = async () => {
- const providerUrl = getEnvVar("TRONWEB_PROVIDER_URL");
- const privateKey = getEnvVar("TRX_PRIVATE_KEY");
const tokenAddress = getEnvVar("TRX_TOKEN_ADDRESS");
- const tronWeb = new TronWeb(providerUrl, providerUrl, providerUrl, privateKey);
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const oneToken = "1";
- const estimatedAmount = await sdk.pool.getAmountToBeDeposited(oneToken, tokenInfo, tronWeb);
+ const estimatedAmount = await sdk.pool.getAmountToBeDeposited(oneToken, tokenInfo);
console.log("If you send %d , then %d of LP tokens will be deposited", oneToken, estimatedAmount);
};
diff --git a/examples/src/examples/liquidity-pool/trx/trx-build-claim-rewards-tx.ts b/examples/src/examples/liquidity-pool/trx/trx-build-claim-rewards-tx.ts
index 8e00dec..a9f2bf4 100644
--- a/examples/src/examples/liquidity-pool/trx/trx-build-claim-rewards-tx.ts
+++ b/examples/src/examples/liquidity-pool/trx/trx-build-claim-rewards-tx.ts
@@ -1,9 +1,9 @@
-// @ts-expect-error import tron
-import TronWeb from "tronweb";
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault, RawTransaction } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault, RawTronTransaction } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
+import { sendTrxRawTransaction } from "../../../utils/tronWeb";
+
dotenv.config({ path: ".env" });
const main = async () => {
@@ -11,42 +11,19 @@ const main = async () => {
const accountAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
const tokenAddress = getEnvVar("TRX_TOKEN_ADDRESS");
- // configure TronWeb
- const tronWeb = new TronWeb(
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRX_PRIVATE_KEY")
- );
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
// create claim rewards raw transaction
- const rawTransactionDeposit = await sdk.pool.rawTxBuilder.claimRewards(
- {
- accountAddress: accountAddress,
- token: tokenInfo,
- },
- tronWeb
- );
-
- const txReceipt = await sendRawTransaction(tronWeb, rawTransactionDeposit);
+ const rawTransactionDeposit = (await sdk.pool.rawTxBuilder.claimRewards({
+ accountAddress: accountAddress,
+ token: tokenInfo,
+ })) as RawTronTransaction;
+ const txReceipt = await sendTrxRawTransaction(rawTransactionDeposit);
console.log("Token claim rewards:", txReceipt.txid);
};
-async function sendRawTransaction(tronWeb: TronWeb, rawTransaction: RawTransaction) {
- const signedTx = await tronWeb.trx.sign(rawTransaction);
-
- if (!signedTx.signature) {
- throw Error("Transaction was not signed properly");
- }
-
- // Broadcasting the transaction
- return tronWeb.trx.sendRawTransaction(signedTx);
-}
-
main()
.then(() => {
console.log("Done");
diff --git a/examples/src/examples/liquidity-pool/trx/trx-build-deposit-tx.ts b/examples/src/examples/liquidity-pool/trx/trx-build-deposit-tx.ts
index 3ac132a..ea9510f 100644
--- a/examples/src/examples/liquidity-pool/trx/trx-build-deposit-tx.ts
+++ b/examples/src/examples/liquidity-pool/trx/trx-build-deposit-tx.ts
@@ -1,9 +1,9 @@
import * as dotenv from "dotenv";
-// @ts-expect-error import tron
-import TronWeb from "tronweb";
import { getEnvVar } from "../../../utils/env";
-import { AllbridgeCoreSdk, nodeUrlsDefault, RawTransaction } from "@allbridge/bridge-core-sdk";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault, RawTronTransaction } from "@allbridge/bridge-core-sdk";
import { ensure } from "../../../utils/utils";
+import { sendTrxRawTransaction } from "../../../utils/tronWeb";
+
dotenv.config({ path: ".env" });
const main = async () => {
@@ -11,44 +11,21 @@ const main = async () => {
const accountAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
const tokenAddress = getEnvVar("TRX_TOKEN_ADDRESS");
- // configure TronWeb
- const tronWeb = new TronWeb(
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRX_PRIVATE_KEY")
- );
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const oneToken = "1";
// create deposit raw transaction
- const rawTransactionDeposit = await sdk.pool.rawTxBuilder.deposit(
- {
- amount: oneToken,
- accountAddress: accountAddress,
- token: tokenInfo,
- },
- tronWeb
- );
-
- const txReceipt = await sendRawTransaction(tronWeb, rawTransactionDeposit);
+ const rawTransactionDeposit = (await sdk.pool.rawTxBuilder.deposit({
+ amount: oneToken,
+ accountAddress: accountAddress,
+ token: tokenInfo,
+ })) as RawTronTransaction;
+ const txReceipt = await sendTrxRawTransaction(rawTransactionDeposit);
console.log("Token deposit:", txReceipt.txid);
};
-async function sendRawTransaction(tronWeb: TronWeb, rawTransaction: RawTransaction) {
- const signedTx = await tronWeb.trx.sign(rawTransaction);
-
- if (!signedTx.signature) {
- throw Error("Transaction was not signed properly");
- }
-
- // Broadcasting the transaction
- return tronWeb.trx.sendRawTransaction(signedTx);
-}
-
main()
.then(() => {
console.log("Done");
diff --git a/examples/src/examples/liquidity-pool/trx/trx-build-withdraw-tx.ts b/examples/src/examples/liquidity-pool/trx/trx-build-withdraw-tx.ts
index 8030b6e..5b08155 100644
--- a/examples/src/examples/liquidity-pool/trx/trx-build-withdraw-tx.ts
+++ b/examples/src/examples/liquidity-pool/trx/trx-build-withdraw-tx.ts
@@ -1,9 +1,8 @@
import * as dotenv from "dotenv";
import { getEnvVar } from "../../../utils/env";
import { ensure } from "../../../utils/utils";
-import { AllbridgeCoreSdk, nodeUrlsDefault, RawTransaction } from "@allbridge/bridge-core-sdk";
-// @ts-expect-error import tron
-import TronWeb from "tronweb";
+import { AllbridgeCoreSdk, nodeRpcUrlsDefault, RawTronTransaction } from "@allbridge/bridge-core-sdk";
+import { sendTrxRawTransaction } from "../../../utils/tronWeb";
dotenv.config({ path: ".env" });
@@ -12,44 +11,21 @@ const main = async () => {
const accountAddress = getEnvVar("TRX_ACCOUNT_ADDRESS");
const tokenAddress = getEnvVar("TRX_TOKEN_ADDRESS");
- // configure TronWeb
- const tronWeb = new TronWeb(
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRONWEB_PROVIDER_URL"),
- getEnvVar("TRX_PRIVATE_KEY")
- );
-
- const sdk = new AllbridgeCoreSdk(nodeUrlsDefault);
+ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const tokenInfo = ensure((await sdk.tokens()).find((tokenInfo) => tokenInfo.tokenAddress === tokenAddress));
const halfToken = "0.5";
// create withdraw raw transaction
- const rawTransactionDeposit = await sdk.pool.rawTxBuilder.withdraw(
- {
- amount: halfToken,
- accountAddress: accountAddress,
- token: tokenInfo,
- },
- tronWeb
- );
-
- const txReceipt = await sendRawTransaction(tronWeb, rawTransactionDeposit);
+ const rawTransactionDeposit = (await sdk.pool.rawTxBuilder.withdraw({
+ amount: halfToken,
+ accountAddress: accountAddress,
+ token: tokenInfo,
+ })) as RawTronTransaction;
+ const txReceipt = await sendTrxRawTransaction(rawTransactionDeposit);
console.log("Token withdraw:", txReceipt.txid);
};
-async function sendRawTransaction(tronWeb: TronWeb, rawTransaction: RawTransaction) {
- const signedTx = await tronWeb.trx.sign(rawTransaction);
-
- if (!signedTx.signature) {
- throw Error("Transaction was not signed properly");
- }
-
- // Broadcasting the transaction
- return tronWeb.trx.sendRawTransaction(signedTx);
-}
-
main()
.then(() => {
console.log("Done");
diff --git a/examples/src/utils/tronWeb.ts b/examples/src/utils/tronWeb.ts
new file mode 100644
index 0000000..88af18a
--- /dev/null
+++ b/examples/src/utils/tronWeb.ts
@@ -0,0 +1,21 @@
+import { RawTronTransaction } from "@allbridge/bridge-core-sdk";
+import { getEnvVar } from "./env";
+// @ts-expect-error import tron
+import TronWeb from "tronweb";
+
+export async function sendTrxRawTransaction(rawTransaction: RawTronTransaction) {
+ // configure TronWeb
+ const tronWeb = new TronWeb(
+ getEnvVar("TRONWEB_PROVIDER_URL"),
+ getEnvVar("TRONWEB_PROVIDER_URL"),
+ getEnvVar("TRONWEB_PROVIDER_URL"),
+ getEnvVar("TRX_PRIVATE_KEY")
+ );
+
+ const signedTx = await tronWeb.trx.sign(rawTransaction);
+ if (!signedTx.signature) {
+ throw Error("Transaction was not signed properly");
+ }
+ // Broadcasting the transaction
+ return tronWeb.trx.sendRawTransaction(signedTx);
+}
diff --git a/examples/src/utils/web3.ts b/examples/src/utils/web3.ts
index 59da792..50b9d6e 100644
--- a/examples/src/utils/web3.ts
+++ b/examples/src/utils/web3.ts
@@ -1,13 +1,18 @@
import Web3 from "web3";
-import { Account, TransactionConfig } from "web3-core";
+import { TransactionConfig } from "web3-core";
+import { getEnvVar } from "./env";
+
+export async function sendEvmRawTransaction(rawTransaction: TransactionConfig) {
+ // configure web3
+ const web3 = new Web3(getEnvVar("WEB3_PROVIDER_URL"));
+ const account = web3.eth.accounts.privateKeyToAccount(getEnvVar("ETH_PRIVATE_KEY"));
+ web3.eth.accounts.wallet.add(account);
-export async function sendRawTransaction(web3: Web3, rawTransaction: TransactionConfig) {
if (rawTransaction.from === undefined) {
throw Error("rawTransaction.from is undefined");
}
const gasLimit = await web3.eth.estimateGas(rawTransaction);
- // @ts-ignore
- const account: Account = web3.eth.accounts.wallet[rawTransaction.from];
+
const signedTx = await account.signTransaction({
...rawTransaction,
gas: gasLimit,
From 240c262f72d677266107bd5e30119ac0f521252f Mon Sep 17 00:00:00 2001
From: Kozer4
Date: Fri, 24 May 2024 13:01:21 +0300
Subject: [PATCH 5/6] fix(docs): update
---
src/models/index.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/models/index.ts b/src/models/index.ts
index cae8f7f..d984c64 100644
--- a/src/models/index.ts
+++ b/src/models/index.ts
@@ -9,6 +9,7 @@ export {
GetNativeTokenBalanceParams,
} from "../services/bridge/models/bridge.model";
export { BridgeService } from "../services/bridge/index";
+export { CctpParams, CctpDomains } from "../services/bridge/sol";
export { LiquidityPoolService } from "../services/liquidity-pool/index";
export {
Messenger,
From ab514e895a065c03bf37c7610e91af4387de7b72 Mon Sep 17 00:00:00 2001
From: Kozer4
Date: Tue, 28 May 2024 15:44:05 +0300
Subject: [PATCH 6/6] fix(docs): update
---
README.md | 18 +++---------------
src/index.ts | 2 +-
src/services/models/sol/index.ts | 2 +-
3 files changed, 5 insertions(+), 17 deletions(-)
diff --git a/README.md b/README.md
index 1267adb..1b49a0a 100644
--- a/README.md
+++ b/README.md
@@ -19,9 +19,9 @@ Provides an easy integration with the Allbridge Core ChainBridgeService for DApp
- [Installing](#installing)
- [How to use](#how-to-use)
- - [1. Initialize SDK instance](#1-initialize-sdk-instance)
+ - [1. Initialize SDK instance](#1-initialize-sdk)
- [2. Get the list of supported tokens](#2-get-the-list-of-supported-tokens)
- - [3.1 Approve the transfer of tokens](#31-approve-the-transfer-of-tokens)
+ - [3.1 Approve the transfer of tokens](#31-approve-the-transfer-of-tokens-only-for-evm-tron)
- [3.2 Send Tokens](#32-send-tokens)
- [Full example](#full-example)
- [Other operations](#other-operations)
@@ -29,13 +29,11 @@ Provides an easy integration with the Allbridge Core ChainBridgeService for DApp
- [Transaction builder](#transaction-builder)
- [Approve Transaction](#approve-transaction)
- [Send Transaction](#send-transaction)
- - [Solana Blockchain](#solana-blockchain)
- [Get information about sent transaction](#get-information-about-sent-transaction)
- [Calculating amount of tokens to be received after fee](#calculating-amount-of-tokens-to-be-received-after-fee)
- [Calculating amount of tokens to send](#calculating-amount-of-tokens-to-send)
- [Getting the amount of gas fee](#getting-the-amount-of-gas-fee)
- [Getting the average transfer time](#getting-the-average-transfer-time)
-- [Semver](#semver)
## Installing
@@ -70,8 +68,6 @@ const rawTx = await sdk.bridge.rawTxBuilder.send(sendParams);
#### 2) Initialize SDK instance (using passed provider for blockchains connections)
-@Deprecated use the approach described above
-
```ts
import {AllbridgeCoreSdk, nodeRpcUrlsDefault} from "@allbridge/bridge-core-sdk";
@@ -80,7 +76,7 @@ const sdk = new AllbridgeCoreSdk(nodeRpcUrlsDefault);
const rawTx = await sdk.bridge.rawTxBuilder.send(sendParams, provider);
```
-***TIP:*** Use 1.1 in case your provider differs from required by the SDK (Web3:v1.9.0, tronweb:v4.4.0)
+***TIP:*** tested and developed for (Web3:v1.9.0, tronweb:v4.4.0), in other case use approach 1)
### 2. Get the list of supported tokens
@@ -215,14 +211,6 @@ SDK method `bridge.rawTxBuilder.send` can be used to create send Transaction.
const rawTransactionSend = await sdk.bridge.rawTxBuilder.send(sendParams);
```
-**TIP:**
-To interact with the **Solana** blockchain:
-do not pass provider param
-
-```ts
-const transaction = await sdk.bridge.rawTxBuilder.send(sendParams);
-```
-
***TIP:***
For more details, see [***Example
***](https://github.com/allbridge-io/allbridge-core-js-sdk/blob/main/examples/src/examples/bridge/solana/sol-build-send-tx.js)
diff --git a/src/index.ts b/src/index.ts
index fdcd4a8..378274c 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -45,7 +45,7 @@ export interface AllbridgeCoreSdkOptions {
sorobanNetworkPassphrase: string;
/**
* Optional. Will be used in methods
- * {@link AllbridgeCoreSdk.pool.getPoolInfoFromChain} and {@link AllbridgeCoreSdk.pool.getAmountToBeWithdrawn}
+ * {@link LiquidityPoolService.getPoolInfoFromChain} and {@link LiquidityPoolService.getAmountToBeWithdrawn}
* to fetch information from the blockchain with fewer HTTP requests using JSON-RPC API
*/
tronJsonRpc?: string;
diff --git a/src/services/models/sol/index.ts b/src/services/models/sol/index.ts
index 5056472..642c905 100644
--- a/src/services/models/sol/index.ts
+++ b/src/services/models/sol/index.ts
@@ -5,7 +5,7 @@ import { CctpBridge as CctpBridgeType } from "./types/cctp_bridge";
export type SolanaTxFee = PricePerUnitInMicroLamports | ExtraFeeInLamports | typeof SolanaAutoTxFee;
/**
- * Priority Fee will be calculated based on {@link Connection#getRecentPrioritizationFees}
+ * Priority Fee will be calculated based on {@link @solana/web3.js:Connection.getRecentPrioritizationFees}
*/
export const SolanaAutoTxFee = "AUTO" as const;