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 codegenerateSubgraph
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;
}