UNPKG

@robertprp/intents-sdk

Version:

Shogun Network Intent-based cross-chain swaps SDK

42 lines (31 loc) 1.3 kB
import { isValidSuiAddress, normalizeSuiAddress } from '@mysten/sui/utils'; import { MAX_UINT_64 } from '../../constants.js'; import { BaseValidator } from '../../utils/base-validator.js'; import { ValidationError } from '../../errors/index.js'; const SUI_TOKEN_ADDRESS_REGEX = /^0x[a-fA-F0-9]{64}::\w+::\w+$/; export class SuiValidator extends BaseValidator { isValidAddress(address: string): boolean { return isValidSuiAddress(normalizeSuiAddress(address)); } isValidTokenAddress(tokenAddress: string): boolean { const [address] = tokenAddress.split('::'); const isValidAddress = address !== undefined ? this.isValidAddress(address) : false; return isValidAddress && SUI_TOKEN_ADDRESS_REGEX.test(tokenAddress); } isValidAmount(amount: bigint): boolean { return amount > 0n && amount < MAX_UINT_64; } protected getChainName(): string { return 'Sui'; } public async validateCrossChainOrderFeasability(): Promise<void> { // No chain-specific validation implemented for now for Sui return; } override validateSingleChainOrderFeasability(): Promise<void> { return Promise.resolve(); } override validateDcaSingleChainOrderFeasability(): Promise<void> { throw new ValidationError('DCA orders are not supported on Sui'); } }