ADVANCED

API REFERENCE

Reference documentation for MantleDevKit packages.

@mantle/ai

AI-powered contract and UI generation.

AIClient
import { AIClient } from '@mantle/ai';

const client = new AIClient({
  provider: 'gemini' | 'openai' | 'claude',
  apiKey: 'your-api-key',
  model?: 'optional-model-name'
});

// Generate a smart contract
const contract = await client.generateContract(prompt);
// Returns: { code: string, explanation: string, name: string }

// Generate UI for a contract
const ui = await client.generateUI(abi, address, stylePrompt?);
// Returns: { code: string }

@mantle/compiler

Solidity compilation, templates, and verification.

SolidityCompiler
import { SolidityCompiler } from '@mantle/compiler';

const compiler = new SolidityCompiler();

const result = await compiler.compile(sourceCode, filename?);
// Returns: {
//   bytecode: string,
//   abi: any[],
//   contractName?: string,
//   errors?: CompilationError[]
// }
Templates
import {
  ERC20TokenTemplate,
  ERC721NFTTemplate,
  ERC1155Template,
  GovernanceTemplate,
  StakingTemplate,
  MultisigTemplate,
  TimelockTemplate
} from '@mantle/compiler';

// Each template is a string containing Solidity code
generateSubgraph
import { generateSubgraph } from '@mantle/compiler';

const files = generateSubgraph(
  contractName,
  contractAddress,
  abi,
  network? // default: 'mantle-sepolia'
);
// Returns: Record<string, string>
// Keys: 'schema.graphql', 'subgraph.yaml', etc.
verifyContract
import { verifyContract, checkVerificationStatus } from '@mantle/compiler';

const result = await verifyContract(chainId, {
  contractAddress: '0x...',
  sourceCode: 'pragma solidity...',
  contractName: 'MyContract',
  compilerVersion: 'v0.8.20+commit.a1b79de6',
  optimizationUsed: false,
  constructorArguments?: '0x...',
});
// Returns: { success: boolean, message: string, guid?: string }

// Check status if pending
const status = await checkVerificationStatus(chainId, guid);

@mantle/storage

Local storage for projects and settings.

StorageManager
import { StorageManager } from '@mantle/storage';

const storage = new StorageManager(useLocalStorage?: boolean);

// Projects
await storage.saveProject(project);
const projects = await storage.getProjects();

// Settings
await storage.saveSettings(settings);
const settings = await storage.getSettings();

// Quests
await storage.completeQuest(questId);
const completed = storage.getCompletedQuests();

TYPES

// AI Types
type AIProvider = 'gemini' | 'openai' | 'claude';

interface AIConfig {
  provider: AIProvider;
  apiKey: string;
  model?: string;
}

// Compiler Types
interface CompilationResult {
  bytecode: string;
  abi: any[];
  errors?: any[];
  contractName?: string;
}

// Storage Types
interface Project {
  id?: number;
  name: string;
  contractCode: string;
  abi: any[];
  address?: string;
  createdAt: Date;
}

interface UserSettings {
  id?: number;
  aiProvider: AIProvider;
  geminiKey?: string;
  openaiKey?: string;
  claudeKey?: string;
}