Skip to main content

Usage

const bearerToken = await getBearerToken(); // Your auth implementation

const result = await browserClient.callAnyContract({
  params: {
    encryptKey: "user-secure-pin",
    wallet: {
      publicKey: "0x123...yourPublicKeyHere",
      encryptedPrivateKey: "encrypted:key:data"
    },
    calls: [
      {
        contractAddress: "0x...", // Target contract address
        entrypoint: "methodName", 
        calldata: ["param1", "param2"] 
      }
    ],
  },
  bearerToken: bearerToken,
});

Parameters

  • encryptKey (string): User’s decryption PIN
  • wallet (WalletData): Wallet credentials with publicKey and encryptedPrivateKey
  • calls (array): Array of contract calls to execute
    • contractAddress (string): Target contract address
    • entrypoint (string): Contract method name
    • calldata (any[]): Arguments for the contract method
  • bearerToken (string): Bearer token for authentication

Return Value

Returns a Promise that resolves to a transaction hash string.

Example Implementation

import { ChipiBrowserSDK } from "@chipi-stack/backend";

const browserClient = new ChipiBrowserSDK({
  apiPublicKey: process.env.VITE_CHIPI_PUBLIC_KEY, // or your framework's env var
});

async function executeContractCall(
  wallet: { publicKey: string; encryptedPrivateKey: string },
  contractAddress: string,
  methodName: string,
  parameters: any[],
  userPin: string
) {
  try {
    const bearerToken = await getBearerToken(); // Your auth implementation
    
    const result = await browserClient.callAnyContract({
      params: {
        encryptKey: userPin,
        wallet: wallet,
        calls: [
          {
            contractAddress: contractAddress,
            entrypoint: methodName,
            calldata: parameters,
          }
        ],
      },
      bearerToken: bearerToken,
    });

    console.log('Contract call successful!');
    console.log('Transaction hash:', result);
    
    return result;
  } catch (error) {
    console.error('Contract call failed:', error);
    throw error;
  }
}

// Usage example - Approve tokens for spending
async function approveTokenSpending(
  userId: string,
  tokenContract: string,
  spenderAddress: string,
  amount: string,
  pin: string
) {
  const bearerToken = await getBearerToken();
  
  // Get user's wallet
  const wallet = await browserClient.getWallet({
    externalUserId: userId,
    bearerToken: bearerToken,
  });

  // Call the approve method on the token contract
  const txHash = await executeContractCall(
    wallet,
    tokenContract,
    "approve",
    [spenderAddress, amount, "0"], // StarkNet uses felt252 for amounts
    pin
  );

  console.log(`Approved ${amount} tokens for ${spenderAddress}`);
  return txHash;
}
  • transfer - For simple token transfers
  • getWallet - Get wallet information before contract calls
I