xcare-lib
v0.0.3
Published
A library for interacting with XCare contracts and on-chain infrastructure
Readme
@xcare/lib
A library for interacting with XCare contracts and on-chain infrastructure.
Installation
npm install @xcare/lib
# or
yarn add @xcare/libUsage
Account Abstraction
import { deriveWalletFromPassword, executeUserOp, getSimpleAccount } from '@xcare/lib';
// Derive a wallet from password and email
const wallet = await deriveWalletFromPassword(password, email);
// Get a simple account
const account = await getSimpleAccount(
email,
password,
walletName,
provider,
factoryAddress,
entryPointAddress,
chainId,
answer
);
// Execute a user operation
await executeUserOp({
wallet,
provider,
entryPointAddress,
factoryAddress,
txRequest: {
target: contractAddress,
data: txData,
value: 0
},
chainId
});Send Tokens
import { prepareSend, prepareSendToken } from '@xcare/lib';
// Prepare ETH send transaction
const txRequest = await prepareSend({
provider,
recipient: "0x...",
amountInEth: "0.1"
});
// Prepare ERC20 token send transaction
const txRequest = await prepareSendToken({
provider,
tokenAddress: "0x...",
recipient: "0x...",
amount: ethers.utils.parseUnits("1", 18)
});Swap Tokens
import { prepareSwap, approveToken } from '@xcare/lib';
// Approve token for swap
const approveTx = await approveToken(
provider,
tokenAddress,
amount
);
// Prepare swap transaction
const swapTx = await prepareSwap({
provider,
inputToken: "0x...",
outputToken: "0x...",
amountIn: ethers.utils.parseUnits("1", 18),
deadline: Math.floor(Date.now() / 1000) + 3600 // 1 hour
});API Reference
Account Abstraction
deriveWalletFromPassword(password: string, email: string): Promise<Wallet>executeUserOp(params: ExecuteUserOpParams): Promise<void>getSimpleAccount(params: GetSimpleAccountParams): Promise<SimpleAccountAPI>rotateOwner(params: RotateOwnerParams): Promise<string>PimlicoPaymasterAPIclass
Send
prepareSend(params: PrepareSendArgs): Promise<ethers.providers.TransactionRequest>prepareSendToken(params: PrepareSendTokenArgs): Promise<ethers.providers.TransactionRequest>prepareSendUpdate(params: PrepareSendUpdateArgs): Promise<ethers.providers.TransactionRequest>
Swap
prepareSwap(params: PrepareSwapArgs): Promise<ethers.providers.TransactionRequest>getSwapWithFeeContract(provider: ethers.providers.Web3Provider): Promise<ethers.Contract>approveToken(provider: ethers.providers.Web3Provider, tokenAddress: string, amount: ethers.BigNumberish): Promise<ethers.providers.TransactionRequest>
License
MIT
