import {
ChipiProofProvider,
derivePoolKeypair,
deriveCompanionKeypair,
deriveCompanionAddress,
requestGasFunding,
waitForFunding,
execShield,
GAS_FUND_STRK,
} from "@chipi-stack/core";
import { RpcProvider } from "starknet";
const pool = await derivePoolKeypair({ anchorSecret, seedDomainTag: wallet.address });
const companion = await deriveCompanionKeypair(anchorSecret);
const companionAddress = deriveCompanionAddress({
publicKey: companion.publicKey,
classHash: COMPANION_CLASS_HASH,
});
const provider = new RpcProvider({ nodeUrl: "https://api.cartridge.gg/x/starknet/mainnet" });
await requestGasFunding(companionAddress, {
baseUrl: "https://api.chipipay.com/v1",
apiKey: apiPublicKey,
getBearerToken: () => getToken(),
});
await waitForFunding(provider, companionAddress, { strk: GAS_FUND_STRK });
const result = await execShield(
{
provider,
chainId: "0x534e5f4d41494e",
companionAddress,
companionKey: companion.privateKey,
classHash: COMPANION_CLASS_HASH,
poolKey: BigInt(pool.privateKey),
provingProvider: new ChipiProofProvider({
baseUrl: "https://api.chipipay.com/v1",
apiKey: apiPublicKey,
getBearerToken: () => getToken(),
chainId: "0x534e5f4d41494e",
}),
},
USDC_ADDRESS,
1_000_000n,
);