Abstract Global Wallet
Library Integrations
Abstract Client
Wallet Actions
Session Keys
createSession
Function to create a session key for the connected Abstract Global Wallet.
The AbstractClient includes a createSession
method that can be used to create a session key for the connected Abstract Global Wallet.
Usage
// This example demonstrates how to create a session key for NFT minting on a specific contract.
// The session key:
// - Can only call the mint function on the specified NFT contract
// - Has a lifetime gas fee limit of 1 ETH
// - Expires after 24 hours
import { useAbstractClient } from "@abstract-foundation/agw-react";
import { LimitType } from "@abstract-foundation/agw-client/sessions";
import { toFunctionSelector, parseEther } from "viem";
import { privateKeyToAccount, generatePrivateKey } from "viem/accounts";
// Generate a new session key pair
const sessionPrivateKey = generatePrivateKey();
const sessionSigner = privateKeyToAccount(sessionPrivateKey);
export default function CreateSession() {
const { data: agwClient } = useAbstractClient();
async function createSession() {
if (!agwClient) return;
const { session } = await agwClient.createSession({
session: {
signer: sessionSigner.address,
expiresAt: BigInt(Math.floor(Date.now() / 1000) + 60 * 60 * 24),
feeLimit: {
limitType: LimitType.Lifetime,
limit: parseEther("1"),
period: BigInt(0),
},
callPolicies: [
{
target: "0xC4822AbB9F05646A9Ce44EFa6dDcda0Bf45595AA", // NFT contract
selector: toFunctionSelector("mint(address,uint256)"),
valueLimit: {
limitType: LimitType.Unlimited,
limit: BigInt(0),
period: BigInt(0),
},
maxValuePerUse: BigInt(0),
constraints: [],
}
],
transferPolicies: [],
},
});
}
}
Parameters
Configuration for the session key, including:
The address that will be allowed to sign transactions (session public key).
Unix timestamp when the session key expires.
Maximum gas fees that can be spent using this session key.
The type of limit to apply:
LimitType.Unlimited
(0): No limitLimitType.Lifetime
(1): Total limit over the session lifetimeLimitType.Allowance
(2): Limit per time period
The maximum amount allowed.
The time period in seconds for allowance limits. Set to 0 for Unlimited/Lifetime limits.
Array of policies defining which contract functions can be called.
The contract address that can be called.
The function selector that can be called on the target contract.
The limit on the amount of native tokens that can be sent with the call.
Maximum value that can be sent in a single transaction.
Array of constraints on function parameters.
The index of the parameter to constrain.
The type of constraint:
Unconstrained
(0)Equal
(1)Greater
(2)Less
(3)GreaterEqual
(4)LessEqual
(5)NotEqual
(6)
The reference value to compare against.
The limit to apply to this parameter.
Returns
The transaction hash if a transaction was needed to enable sessions.
The created session configuration.
Was this page helpful?