aarc-sdk v0.2.0-beta.5
Aarc SDK
The Aarc SDK is a TypeScript library that makes it easy for developers to transfer assets from Externally Owned Accounts (EOA) to any destination address. It simplifies the asset transfer process by supporting various token standards, such as ERC20 and ERC721, and offering custom flows like batched transactions, gasless transactions, and paying gas fees with the same asset being moved. Additionally, it enables custom contract interaction within the same transaction using permit2(), allowing for direct swaps and bridge functionality.
Features of the SDK
- Batch transactions on EoA with Uniswap’s Permit2 contract.
- ERC20Permit support for streamlined token approvals.
- Gasless transactions using Relayers (EIP2771).
Getting Started
Prerequisites
- Node.js (v12.x or later)
- Basic understanding of Ethereum and smart contracts.
Installation
Install ethers.js and Aarc SDK using npm:
npm install ethers@5.7.2 aarc-sdk
Get the API Key
To use Aarc SDK, an API key is required. Get the API Key from the Dashboard. You can learn about getting the API Key from here.
!NOTE We only accept funds on Polygon Mainnet & Polygon Mumbai Testnet. However, these funds can be transacted on any supported mainnet or testnet.
Initialise the SDK
Import and initialise the Aarc SDK in your project.
import { AarcSDK } from "aarc-sdk";
let aarcSDK = new AarcSDK({
rpcUrl: rpcUrl,
chainId: chainId,
apiKey: "YOUR_API_KEY",
});
Usage
- Fetching Token Balances
- Migrate Assets
- Migrate Assets [With Gasless Flow]
- Migrate Assets [Pay Gas with Stables]
Fetching Token Balances
Retrieve balances of all tokens in an EOA wallet:
let balances = await aarcSDK.fetchBalances(
eoaAddress: string,
fetchBalancesOnly: true,
tokenAddress: string[] // Optional: Array of specific token addresses
);
Migrate Assets
Transfer tokens from EOA to any receiver wallet address:
await aarcSDK.executeMigration({
senderSigner: signer, // ethers.signer object
receiverAddress:'RECEIVER_WALLET_ADDRESS',
transferTokenDetails: // Optional. If not passed, the SDK will migrate all the tokens of the wallet
[
{
tokenAddress:TOKEN1_ADDRESS,
amount?:TOKEN1_AMOUNT.toString(16), // Vaule in HEX as String
tokenIds?: string[] // tokenIds for nfts
},
...
]
})
// Returns the response given below
Output:
[
{
tokenAddress: string;
taskId?: string;
amount?: string;
message: string;
txHash?: string;
tokenId?: string;
},
]
Migrate Assets With Gasless Flow
Transfer tokens from EOA to any receiver wallet address without paying gas fees.
await aarcSDK.executeMigrationGasless({
senderSigner: signer, // ethers.signer object
receiverAddress:RECEIVER_WALLET_ADDRESS,
transferTokenDetails: // Optional. If not passed, the SDK will migrate all the tokens of the wallet
[
{
tokenAddress:TOKEN1_ADDRESS,
amount?:TOKEN1_AMOUNT.toString(16), // Vaule in HEX as String
tokenIds?: string[] // tokenIds for nfts
},
...
]
})
// Returns the response given below
Output:
[
{
tokenAddress: string;
taskId?: string;
amount?: string;
message: string;
txHash?: string;
tokenId?: string;
},
]
Migrate Assets Pay Gas with Stables
Transfer tokens from EOA to any receiver wallet address by paying gas in Stable Coins.
await aarcSDK.executeForwardTransaction({
senderSigner: signer,
receiverAddress:"0x786E6045eacb96cAe0259cd761e151b68B85bdA7"
});
!NOTE AARC SDK currently supports a few of the Stable Tokens on different networks. You can check about them here.
Smart Wallet Integration
The Aarc SDK seamlessly integrates with different smart wallets.
Aarc SDk currently supports the following Smart Wallet Providers:
- Safe
- Biconomy
- Alchemy
- ZeroDev
enum WALLET_TYPE {
BICONOMY,
SAFE,
ALCHEMY,
ZERODEV,
}
Smart Wallet Deployment
You have the capability to deploy Smart Wallets by utilizing the provided code snippets.
The code snippet below showcases how to deploy a wallet using the AarcSDK. It involves specifying essential parameters such as the owner's address (EOA_ADDRESS
), the type of wallet (WALLET_TYPE
) to deploy, the signer
(ethers.signer object), and an optional index for deploying multiple wallets under the same EOA.
!NOTE If the wallet corresponding to the provided owner address (
EOA_ADDRESS
) and index (deploymentWalletIndex
) is already deployed, the deployment process will not occur.
import { WALLET_TYPE } from "aarc-sdk/dist/utils/AarcTypes";
await aarcSDK.deployWallet({
owner: EOA_ADDRESS,
walletType: WALLET_TYPE.SAFE, // Smart Contract Wallet Provider.SAFE, // Smart Contract Wallet Provider
signer: signer, // ethers.signer object
deploymentWalletIndex: 0 // Optional -- Number: Since an EOA, can be used to deploy multiple wallets. you can supply any index and it will deploy wallet for you
})
Get Smart Wallet Address
To get the address of your Smart Wallet you can use the following code snippet:
The code snippet below showcases how to get a smart wallet address using the AarcSDK. It involves specifying essential parameters such as the owner's address (EOA_ADDRESS
) and the type of wallet (WALLET_TYPE
).
import { WALLET_TYPE } from "aarc-sdk/dist/utils/AarcTypes";
await aarcSDK.getSmartWalletAddresses({
walletType: WALLET_TYPE.SAFE, // Smart Contract Wallet Provider
owner: OWNER_ADDRESS // Smart Wallet Owner's address
});
Migrate Native Tokens and Wallet Deployment
The following code snippet demonstrates a method to transfer native tokens while simultaneously deploying a wallet using the aarcSDK.
This code snippet illustrates a process to transfer native tokens and deploy a wallet concurrently using the aarcSDK
. Essential parameters such as the owner's address (EOA_ADDRESS
), the type of wallet to deploy (WALLET_TYPE
), the signer
(ethers.signer object), the receiver's wallet address (RECEIVER_WALLET_ADDRESS
), an optional amount of tokens to transfer (amount
), and an index for deploying multiple wallets under the same EOA (deploymentWalletIndex
) are included.
- If the wallet corresponding to the provided owner address (
EOA_ADDRESS
) and index (deploymentWalletIndex
) is already deployed, the deployment process will not occur, and only the token transfer will be executed.- Get the
receiverAddress
for Smart Wallet for the owner address using the getSmartWalletAddresses.- If
amount
not mentioned, then sdk will transfer 80% of the balance to the receiverAddress.
import { WALLET_TYPE } from "aarc-sdk/dist/utils/AarcTypes";
await aarcSDK.transferNativeAndDeploy({
owner: EOA_ADDRESS,
walletType: WALLET_TYPE, // Smart Contract Wallet Provider
signer: signer, // ethers.signer object
receiverAddress: RECEIVER_WALLET_ADDRESS,
amount?: TOKEN_AMOUNT.toString(16), // Optional. Vaule in HEX as String. If not paseed 80% of native tokens will get transferred.
deploymentWalletIndex: 0 // Optional -- Number: Since an EOA, can be used to deploy multiple wallets. you can supply any index and it will deploy wallet for you
})
// Returns the response given below
More coming soon 👀
License
This project is licensed under the MIT License - see the LICENSE for details.
Support and Feedback
For support or to share feedback, please schedule a call with us here. You can also share your ideas and feedback on our community forum.
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago