Skip to content

Types

All TypeScript types exported by @smartagentkit/sdk, organized by category.

Configuration

SmartAgentKitConfig

typescript
interface SmartAgentKitConfig {
  chain: Chain;
  rpcUrl: string;
  bundlerUrl: string;
  paymasterUrl?: string;
  moduleAddresses?: ModuleAddresses;
}

ModuleAddresses

typescript
interface ModuleAddresses {
  spendingLimitHook: Address;
  allowlistHook: Address;
  emergencyPauseHook: Address;
  automationExecutor?: Address;
  customModules?: Record<string, Address>; // Plugin ID -> address
}

Credentials

SignerKey

typescript
type SignerKey = Hex | MnemonicCredential;

MnemonicCredential

typescript
interface MnemonicCredential {
  mnemonic: string;
  addressIndex?: number;
}

Wallet

AgentWallet

typescript
interface AgentWallet {
  address: Address;
  owner: Address;
  chain: Chain;
  isDeployed: boolean;
  policies: InstalledPolicy[];
  sessions: ActiveSession[];
}

CreateWalletParams

typescript
interface CreateWalletParams {
  owner: Address;
  ownerPrivateKey?: Hex;
  ownerMnemonic?: string;
  addressIndex?: number;
  policies?: PolicyConfig[];
  preset?: PresetName;
  presetParams?: Record<string, unknown>;
  salt?: bigint;
}

Policies

PresetName

typescript
type PresetName = "defi-trader" | "treasury-agent" | "payment-agent" | "minimal";

PolicyConfig

typescript
type PolicyConfig =
  | SpendingLimitPolicy
  | AllowlistPolicy
  | EmergencyPausePolicy
  | AutomationPolicy;

SpendingLimitPolicy

typescript
interface SpendingLimitPolicy {
  type: "spending-limit";
  limits: TokenLimit[];
}

TokenLimit

typescript
interface TokenLimit {
  token: Address;
  limit: bigint;
  window: number;
}

AllowlistPolicy

typescript
interface AllowlistPolicy {
  type: "allowlist";
  mode: "allow" | "block";
  targets: TargetPermission[];
  protectedAddresses?: Address[];
}

TargetPermission

typescript
interface TargetPermission {
  address: Address;
  selector?: Hex;
}

EmergencyPausePolicy

typescript
interface EmergencyPausePolicy {
  type: "emergency-pause";
  guardian: Address;
  autoUnpauseAfter?: number;
}

AutomationPolicy

typescript
interface AutomationPolicy {
  type: "automation";
  tasks: AutomationTask[];
}

AutomationTask

typescript
interface AutomationTask {
  id: string;
  caller: Address;
  target: Address;
  value?: bigint;
  calldata: Hex;
  cooldown: number;
  maxExecutions?: number;
}

InstalledPolicy

typescript
interface InstalledPolicy {
  moduleAddress: Address;
  moduleType: number;
  name: string;
  config: PolicyConfig;
}

Execution

ExecuteParams

typescript
interface ExecuteParams {
  target: Address;
  value?: bigint;
  data?: Hex;
  sessionKey?: Hex;
}

ExecuteBatchParams

typescript
interface ExecuteBatchParams {
  calls: ExecuteParams[];
  sessionKey?: Hex;
}

Sessions

CreateSessionParams

typescript
interface CreateSessionParams {
  sessionKey: Address;
  actions: SessionAction[];
  expiresAt: number;
  spendingLimits?: TokenLimit[];
}

SessionAction

typescript
interface SessionAction {
  target: Address;
  selector: Hex;
  rules?: SessionRule[];
}

SessionRule

typescript
interface SessionRule {
  offset: bigint;
  condition: "equal" | "greater" | "less" | "notEqual";
  value: Hex;
}

ActiveSession

typescript
interface ActiveSession {
  sessionKey: Address;
  actions: SessionAction[];
  expiresAt: number;
  isActive: boolean;
}

Plugin Types

PolicyPlugin<TConfig>

See Policies API for full documentation.

ModuleType

typescript
type ModuleType = "hook" | "executor" | "validator" | "fallback";

InstallPolicyParams

typescript
interface InstallPolicyParams {
  plugin: PolicyPlugin | string; // Plugin object or registered ID
  hookAddress?: Address;          // Override the hook address
  config: unknown;                // Plugin-specific config
}

InstallRawParams

typescript
interface InstallRawParams {
  hookAddress: Address;
  moduleType: "hook" | "executor" | "validator" | "fallback";
  initData: Hex;
  abi?: readonly Record<string, unknown>[];
}

Client Interface

ISmartAgentKitClient

The full interface implemented by both SmartAgentKitClient and MockSmartAgentKitClient.

typescript
interface ISmartAgentKitClient {
  createWallet(params: CreateWalletParams): Promise<AgentWallet>;
  connectWallet(walletAddress: Address, ownerKey: SignerKey): Promise<void>;
  execute(wallet: AgentWallet, params: ExecuteParams): Promise<Hex>;
  executeBatch(wallet: AgentWallet, params: ExecuteBatchParams): Promise<Hex>;
  getRemainingAllowance(walletAddress: Address, token: Address): Promise<bigint>;
  isPaused(walletAddress: Address): Promise<boolean>;
  getBalances(
    walletAddress: Address
  ): Promise<{
    eth: bigint;
    tokens: Array<{ address: Address; balance: bigint }>;
  }>;
  pause(walletAddress: Address, guardianKey: SignerKey): Promise<Hex>;
  unpause(walletAddress: Address, guardianKey: SignerKey): Promise<Hex>;
  createSession(
    wallet: AgentWallet,
    params: CreateSessionParams,
    ownerKey: SignerKey
  ): Promise<{ sessionKey: Address; privateKey: Hex; permissionId: Hex }>;
  revokeSession(
    wallet: AgentWallet,
    permissionId: Hex,
    ownerKey: SignerKey
  ): Promise<void>;
  getActiveSessions(walletAddress: Address): ActiveSession[];
}

Released under the MIT License.