import { KeyClient, WalletClient } from "@shinami/clients/aptos";
const walletClient = new WalletClient({{walletServicesAccessKey}});
const keyClient = new KeyClient({{walletServicesAccessKey}});
let sessionToken = await keyClient.createSession({{walletSecret}});
await walletClient.executeGaslessTransaction(
{{walletID}},
sessionToken,
{{transaction}}
);
import { KeyClient, WalletClient } from "@shinami/clients/sui";
const keyClient = new KeyClient({{walletServicesAccessKey}});
const walletClient = new WalletClient({{walletServicesAccessKey}});
const sessionToken = await keyClient.createSession({{walletSecret}});
// Execute a Sui transaction and cover the small gas fee for your user. For example,
// upgrading a NFT that represents an in-game item as they level it up.
const response = await walletClient.executeGaslessTransaction(
{{walletId}},
sessionToken,
{{gaslessTransaction}}
);
import { ZkProverClient, ZkWalletClient } from "@shinami/clients/sui";
const zkw = new ZkWalletClient({{walletServicesAccessKey}});
const zkp = new ZkProverClient({{walletServicesAccessKey}});
// Prepare a nonce according to the zkLogin requirements.
// Obtain a valid jwt with that nonce from a supported OpenID provider.
const { salt, address } = await zkw.getOrCreateZkLoginWallet({{jwt}});
const { zkProof } = await zkp.createZkLoginProof(
{{jwt}},
{{maxEpoch}},
{{ephemeralPublicKey}},
{{jwtRandomness}},
salt
);
// Now you can sign transaction blocks with the ephemeralPrivateKey,
// and assemble the zkLogin signature using the zkProof.
Frictionless for your users
Eliminate Seed Phrases
Help your users manage wallet security and recovery.
Waive Gas Fees
Customize where and when to sponsor transactions for your users.