@gala-chain/launchpad-mcp-server
Version:
MCP server for Gala Launchpad SDK with 55 tools + 14 slash commands - Production-grade AI agent integration with comprehensive validation, optimized performance, and 80%+ test coverage
162 lines • 5.53 kB
TypeScript
/**
* Validation Utilities for MCP Prompts
*
* Input validation functions for slash command arguments.
* Prevents malformed inputs and provides clear error messages.
*/
/**
* Validation error class for better error handling
*/
export declare class ValidationError extends Error {
field: string;
constructor(field: string, message: string);
}
/**
* Validate token name format
*
* Token names must be 2-20 characters, alphanumeric with hyphens and underscores.
*
* @param name - Token name to validate
* @param fieldName - Field name for error messages (default: 'tokenName')
* @throws {ValidationError} If token name is invalid
*
* @example
* ```typescript
* validateTokenName('anime'); // ✅ Valid
* validateTokenName('test-123'); // ✅ Valid
* validateTokenName('my_token'); // ✅ Valid
* validateTokenName('a'); // ❌ Throws: too short
* validateTokenName('token@#$'); // ❌ Throws: invalid characters
* ```
*/
export declare function validateTokenName(name: string, fieldName?: string): void;
/**
* Validate numeric amount
*
* Amounts must be positive numbers (integers or decimals).
*
* @param amount - Amount to validate (string or number)
* @param fieldName - Field name for error messages
* @throws {ValidationError} If amount is invalid
*
* @example
* ```typescript
* validateNumericAmount('100', 'galaAmount'); // ✅ Valid
* validateNumericAmount('99.5', 'tokenAmount'); // ✅ Valid
* validateNumericAmount('-5', 'amount'); // ❌ Throws: negative
* validateNumericAmount('abc', 'amount'); // ❌ Throws: not a number
* ```
*/
export declare function validateNumericAmount(amount: string | number, fieldName: string): void;
/**
* Validate slippage tolerance percentage
*
* Slippage must be between 0.01% and 100%.
*
* @param slippage - Slippage percentage to validate
* @param fieldName - Field name for error messages (default: 'slippage')
* @throws {ValidationError} If slippage is invalid
*
* @example
* ```typescript
* validateSlippage('1'); // ✅ Valid (1%)
* validateSlippage('0.5'); // ✅ Valid (0.5%)
* validateSlippage('50'); // ✅ Valid (50%)
* validateSlippage('0'); // ❌ Throws: too low
* validateSlippage('150'); // ❌ Throws: too high
* ```
*/
export declare function validateSlippage(slippage: string | number, fieldName?: string): void;
/**
* Validate wallet address format
*
* Supports both GalaChain format (eth|0x...) and standard Ethereum format (0x...).
*
* @param address - Wallet address to validate
* @param fieldName - Field name for error messages (default: 'address')
* @throws {ValidationError} If address is invalid
*
* @example
* ```typescript
* validateAddress('eth|0x1234567890abcdef1234567890abcdef12345678'); // ✅ Valid
* validateAddress('0x1234567890abcdef1234567890abcdef12345678'); // ✅ Valid
* validateAddress('invalid'); // ❌ Throws: invalid format
* ```
*/
export declare function validateAddress(address: string, fieldName?: string): void;
/**
* Validate token symbol format
*
* Symbols must be 1-8 uppercase letters.
*
* @param symbol - Token symbol to validate
* @param fieldName - Field name for error messages (default: 'symbol')
* @throws {ValidationError} If symbol is invalid
*
* @example
* ```typescript
* validateTokenSymbol('GALA'); // ✅ Valid
* validateTokenSymbol('TEST'); // ✅ Valid
* validateTokenSymbol('test'); // ❌ Throws: must be uppercase
* validateTokenSymbol('TOOLONG123'); // ❌ Throws: too long
* ```
*/
export declare function validateTokenSymbol(symbol: string, fieldName?: string): void;
/**
* Validate pagination limit
*
* Limits must be positive integers within reasonable range (1-100).
*
* @param limit - Pagination limit to validate
* @param max - Maximum allowed limit (default: 100)
* @param fieldName - Field name for error messages (default: 'limit')
* @throws {ValidationError} If limit is invalid
*
* @example
* ```typescript
* validatePaginationLimit('20'); // ✅ Valid
* validatePaginationLimit('1'); // ✅ Valid
* validatePaginationLimit('0'); // ❌ Throws: too low
* validatePaginationLimit('150'); // ❌ Throws: too high
* ```
*/
export declare function validatePaginationLimit(limit: string | number, max?: number, fieldName?: string): void;
/**
* Validate comma-separated token list
*
* For batch operations that accept multiple token names.
*
* @param tokens - Comma-separated token names
* @param fieldName - Field name for error messages (default: 'tokens')
* @throws {ValidationError} If token list is invalid
*
* @example
* ```typescript
* validateTokenList('anime,test,dragon'); // ✅ Valid
* validateTokenList('token1'); // ✅ Valid (single token)
* validateTokenList(''); // ❌ Throws: empty list
* validateTokenList('token1,invalid@#$'); // ❌ Throws: invalid token name
* ```
*/
export declare function validateTokenList(tokens: string, fieldName?: string): string[];
/**
* Safe validation wrapper that doesn't throw
*
* Useful for non-critical validation where you want to continue with a warning.
*
* @param validationFn - Validation function to execute
* @returns Object with success flag and optional error
*
* @example
* ```typescript
* const result = safeValidate(() => validateTokenName('anime'));
* if (!result.success) {
* console.warn('Validation warning:', result.error);
* }
* ```
*/
export declare function safeValidate(validationFn: () => void): {
success: boolean;
error?: string;
};
//# sourceMappingURL=validation.d.ts.map