@robertprp/intents-sdk
Version:
Shogun Network Intent-based cross-chain swaps SDK
37 lines (27 loc) • 1.1 kB
text/typescript
import { isValidSuiAddress, normalizeSuiAddress } from '@mysten/sui/utils';
import { MAX_UINT_64 } from '../../constants.js';
import { BaseValidator } from '../../utils/base-validator.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();
}
}