Skip to main content

Actions

Open Modal

// Open default view
AppKit.OpenModal();

// Open network selection view
AppKit.OpenModal(ViewType.NetworkSearch);

// Open account view
AppKit.OpenModal(ViewType.Account);

Close Modal

AppKit.CloseModal();

Chain Actions

Set active chain

Note: The chain must be added to the list of supported chains in the AppKit configuration.

Chain newChain = ChainConstants.Chains.Ethereum;
await AppKit.NetworkController.ChangeActiveChainAsync(newChain);

Get active chain

Chain activeChain = AppKit.NetworkController.ActiveChain;

Account Actions

Get active account

// Get active account in CAIP-10 format
Account account = AppKit.GetAccountAsync();

Debug.Log(account.Address); // e.g. '0x12345...'
Debug.Log(account.ChainId); // e.g. 'eip155:1'
Debug.Log(account.AccountId); // e.g. 'eip155:1:0x12345...'

Disconnect

await AppKit.DisconnectAsync();

EVM Actions

Get Balance

Get the native token balance for an address.

BigInteger balance = await AppKit.EVM.GetBalanceAsync("0x123...");

Sign Message

Sign a message with the active account's private key.

// Sign a string message
string signature = await AppKit.EVM.SignMessageAsync("Hello World");

// Sign raw bytes
byte[] rawMessage = System.Text.Encoding.UTF8.GetBytes("Hello World");
string signature = await AppKit.EVM.SignMessageAsync(rawMessage);

Sign Typed Data

Sign typed data following EIP-712 standard.

string typedData = "{ /* Your EIP-712 typed data structure */ }";
string signature = await AppKit.EVM.SignTypedDataAsync(typedData);

Verify Message Signature

Verify if a message was signed by a specific address.

bool isValid = await AppKit.EVM.VerifyMessageSignatureAsync(
"0x123...", // address
"Hello World", // original message
"0xabc..." // signature
);

Verify Typed Data Signature

Verify if typed data was signed by a specific address.

bool isValid = await AppKit.EVM.VerifyTypedDataSignatureAsync(
"0x123...", // address
"{ /* Your typed data */ }", // original typed data
"0xabc..." // signature
);

Read Contract

Read data from a smart contract (no gas required).

string contractAbi = "[ /* Your contract ABI */ ]";
string tokenSymbol = await AppKit.EVM.ReadContractAsync<string>(
"0x123...", // contract address
contractAbi,
"symbol" // method name
);

Write Contract

Write data to a smart contract (requires gas).

string contractAbi = "[ /* Your contract ABI */ ]";

// Basic write
string txHash = await AppKit.EVM.WriteContractAsync(
"0x123...", // contract address
contractAbi,
"transfer", // method name
"0x456...", // recipient
1000 // amount
);

// Write with custom gas
string txHash = await AppKit.EVM.WriteContractAsync(
"0x123...", // contract address
contractAbi,
"transfer", // method name
gas: 100000, // custom gas limit
"0x456...", // recipient
1000 // amount
);

// Write with value and gas
string txHash = await AppKit.EVM.WriteContractAsync(
"0x123...", // contract address
contractAbi,
"stake", // method name
value: 1000000000000000000, // 1 ETH in wei
gas: 100000,
true // other arguments
);

Send Transaction

Send a native token transaction.

string txHash = await AppKit.EVM.SendTransactionAsync(
"0x123...", // recipient address
1000000000000000000, // 1 ETH in wei
"0x" // optional data
);

Send Raw Transaction

Send a pre-signed transaction.

string txHash = await AppKit.EVM.SendRawTransactionAsync(
"0x123..." // signed transaction data
);

Estimate Gas

Estimate gas required for a transaction.

// Estimate for native token transfer
BigInteger gasLimit = await AppKit.EVM.EstimateGasAsync(
"0x123...", // recipient address
1000000000000000000 // 1 ETH in wei
);

// Estimate for contract interaction
string contractAbi = "[ /* Your contract ABI */ ]";
BigInteger gasLimit = await AppKit.EVM.EstimateGasAsync(
"0x123...", // contract address
contractAbi,
"transfer", // method name
0, // value in wei
"0x456...", // method arguments
1000
);

Get Gas Price

Get the current gas price in wei.

BigInteger gasPrice = await AppKit.EVM.GetGasPriceAsync();