import { QueryBus } from "../../../core/query/QueryBus";
import Service from "../Service";
import { Security } from "../../../domain/context/security/Security";
import BigDecimal from "../../../domain/context/shared/BigDecimal";
import { SignedCredential } from "@terminal3/vc_core";
import EvmAddress from "../../../domain/context/contract/EvmAddress";
export default class ValidationService extends Service {
    queryBus: QueryBus;
    constructor();
    checkIssuer(securityId: string, issuer: string): Promise<void>;
    checkKycAddresses(securityId: string, addresses: string[], kycStatus: number): Promise<void>;
    checkClearingActivated(securityId: string): Promise<void>;
    checkClearingDeactivated(securityId: string): Promise<void>;
    checkOperator(securityId: string, partitionId: string, operatorId: string, targetId: string): Promise<void>;
    checkRole(role: string, accountId: string, securityId: string): Promise<void>;
    checkAnyRole(roles: string[], accountId: string, securityId: string): Promise<void>;
    checkPause(securityId: string): Promise<void>;
    checkUnpause(securityId: string): Promise<void>;
    checkProtectedPartitions(security: Security): Promise<void>;
    checkUnprotectedPartitions(security: Security): Promise<void>;
    checkCanTransfer(securityId: string, targetId: string, amount: string, operatorId: string, sourceId?: string, partitionId?: string): Promise<void>;
    checkCanRedeem(securityId: string, sourceId: string, amount: string, partitionId: string): Promise<void>;
    checkMaxSupply(securityId: string, amount: BigDecimal, security: Security, partitionId?: string): Promise<void>;
    checkDecimals(security: Security, amount: string): Promise<void>;
    checkProtectedPartitionRole(partitionId: string, accountId: string, securityId: string): Promise<void>;
    checkValidNounce(securityId: string, targetId: string, nounce: number): Promise<void>;
    checkAccountInControlList(securityId: string, targetId: string, add: boolean): Promise<void>;
    checkAccountInIssuersList(securityId: string, targetId: string, add: boolean): Promise<void>;
    checkHoldBalance(securityId: string, partitionId: string, sourceId: string, holdId: number, amount: BigDecimal): Promise<void>;
    checkBalance(securityId: string, accountId: string, amount: BigDecimal): Promise<void>;
    checkControlList(securityId: string, sourceEvmAddress?: string, targetEvmAddress?: string): Promise<void>;
    checkMultiPartition(security: Security, partitionId?: string): Promise<void>;
    checkIssuable(security: Security): Promise<void>;
    checkValidVc(signedCredential: SignedCredential, targetEvmAddress: EvmAddress, securityId: string): Promise<[string, SignedCredential]>;
    checkMaturityDate(securityId: string, maturityDate: string): Promise<void>;
    checkTrexTokenSaltExists(factory: string, salt: string): Promise<void>;
    private checkUserInControlList;
    private isMaxSupplyExceeded;
    private validateAddressKyc;
    private checkInternalKyc;
    checkIsProceedRecipient(securityId: string, proceedRecipient: string): Promise<boolean>;
    checkIsNotProceedRecipient(securityId: string, proceedRecipient: string): Promise<boolean>;
}
