5.7 KiB
Smart Accounts API Reference
Date: 2026-01-26
Network: ChainID 138 (SMOM-DBIS-138)
Overview
Complete API reference for Smart Accounts Kit integration.
SmartAccountsKit Class
Constructor
new SmartAccountsKit(options: SmartAccountsKitOptions)
Options:
interface SmartAccountsKitOptions {
chainId: number;
rpcUrl: string;
entryPointAddress: string;
accountFactoryAddress: string;
paymasterAddress?: string;
}
Example:
const kit = new SmartAccountsKit({
chainId: 138,
rpcUrl: 'https://rpc.d-bis.org',
entryPointAddress: '0x...',
accountFactoryAddress: '0x...',
});
Methods
createAccount()
Creates a new Smart Account.
createAccount(options: CreateAccountOptions): Promise<SmartAccount>
Options:
interface CreateAccountOptions {
owner: string;
salt?: string;
}
Returns: Promise<SmartAccount>
Example:
const account = await kit.createAccount({
owner: userAddress,
});
requestDelegation()
Requests delegation from user.
requestDelegation(options: DelegationOptions): Promise<DelegationResult>
Options:
interface DelegationOptions {
target: string;
permissions: string[];
expiry: number;
rules?: DelegationRules;
}
Returns: Promise<DelegationResult>
Example:
const delegation = await kit.requestDelegation({
target: dAppAddress,
permissions: ['execute_transactions'],
expiry: Date.now() + 86400000,
});
getDelegationStatus()
Gets delegation status.
getDelegationStatus(options: DelegationStatusOptions): Promise<DelegationStatus>
Options:
interface DelegationStatusOptions {
target: string;
account: string;
}
Returns: Promise<DelegationStatus>
Example:
const status = await kit.getDelegationStatus({
target: dAppAddress,
account: smartAccountAddress,
});
revokeDelegation()
Revokes delegation.
revokeDelegation(options: RevokeDelegationOptions): Promise<void>
Options:
interface RevokeDelegationOptions {
target: string;
account: string;
}
Example:
await kit.revokeDelegation({
target: dAppAddress,
account: smartAccountAddress,
});
requestAdvancedPermission()
Requests Advanced Permission (ERC-7715).
requestAdvancedPermission(options: PermissionOptions): Promise<PermissionResult>
Options:
interface PermissionOptions {
target: string;
functionSelector: string;
allowed: boolean;
conditions?: PermissionConditions;
}
Returns: Promise<PermissionResult>
Example:
const permission = await kit.requestAdvancedPermission({
target: contractAddress,
functionSelector: '0xa9059cbb',
allowed: true,
});
hasPermission()
Checks if permission is granted.
hasPermission(options: CheckPermissionOptions): Promise<boolean>
Options:
interface CheckPermissionOptions {
account: string;
target: string;
functionSelector: string;
}
Returns: Promise<boolean>
Example:
const hasPermission = await kit.hasPermission({
account: smartAccountAddress,
target: contractAddress,
functionSelector: '0xa9059cbb',
});
batchUserOperations()
Creates batch of user operations.
batchUserOperations(operations: UserOperation[]): Promise<UserOperation[]>
Operations:
interface UserOperation {
to: string;
data: string;
value: string;
}
Returns: Promise<UserOperation[]>
Example:
const userOps = await kit.batchUserOperations([
{
to: tokenAddress,
data: transferData,
value: '0',
},
]);
executeBatch()
Executes batch of user operations.
executeBatch(userOps: UserOperation[]): Promise<TransactionResult>
Returns: Promise<TransactionResult>
Example:
const result = await kit.executeBatch(userOps);
console.log('Transaction hash:', result.hash);
AccountWalletRegistryExtended Contract
linkSmartAccount()
Links Smart Account to fiat account.
function linkSmartAccount(
bytes32 accountRefId,
address smartAccount,
bytes32 provider
) external onlyRole(ACCOUNT_MANAGER_ROLE)
Parameters:
accountRefId: Hashed account reference IDsmartAccount: Smart Account addressprovider: Provider identifier (e.g., "METAMASK_SMART_ACCOUNT")
Events:
SmartAccountLinked(accountRefId, smartAccount, provider)
isSmartAccount()
Checks if wallet is Smart Account.
function isSmartAccount(bytes32 walletRefId) external view returns (bool)
Parameters:
walletRefId: Hashed wallet reference ID
Returns: bool
isSmartAccountAddress()
Checks if address is Smart Account.
function isSmartAccountAddress(address accountAddress) external view returns (bool)
Parameters:
accountAddress: Account address to check
Returns: bool
Error Handling
Common Errors
USER_REJECTED:
- User rejected transaction
- Handle gracefully
INSUFFICIENT_FUNDS:
- Insufficient ETH for gas
- Prompt user to add funds
PERMISSION_DENIED:
- Permission not granted
- Request permission first
DELEGATION_EXPIRED:
- Delegation has expired
- Request new delegation
Resources
Last Updated: 2026-01-26