import BaseError from "../../../core/error/BaseError";
import EvmAddress from "../contract/EvmAddress";
import BigDecimal from "../shared/BigDecimal";
import { HederaId } from "../shared/HederaId";
import { SecurityType } from "../factory/SecurityType";
import { Regulation } from "../factory/Regulation";
import { RegulationSubType, RegulationType } from "../factory/RegulationType";
import ValidatedDomain from "../../../core/validation/ValidatedArgs";
export interface SecurityProps {
    name: string;
    symbol: string;
    isin: string;
    type?: SecurityType;
    decimals: number;
    isWhiteList: boolean;
    erc20VotesActivated: boolean;
    isControllable: boolean;
    arePartitionsProtected: boolean;
    clearingActive: boolean;
    internalKycActivated: boolean;
    isMultiPartition: boolean;
    isIssuable?: boolean;
    totalSupply?: BigDecimal;
    maxSupply?: BigDecimal;
    diamondAddress?: HederaId;
    evmDiamondAddress?: EvmAddress;
    paused?: boolean;
    regulationType?: RegulationType;
    regulationsubType?: RegulationSubType;
    regulation?: Regulation;
    isCountryControlListWhiteList: boolean;
    countries?: string;
    info?: string;
}
export declare class Security extends ValidatedDomain<Security> implements SecurityProps {
    name: string;
    symbol: string;
    isin: string;
    type?: SecurityType;
    decimals: number;
    isWhiteList: boolean;
    erc20VotesActivated: boolean;
    isControllable: boolean;
    isMultiPartition: boolean;
    arePartitionsProtected: boolean;
    clearingActive: boolean;
    internalKycActivated: boolean;
    isIssuable?: boolean;
    totalSupply?: BigDecimal;
    maxSupply?: BigDecimal;
    diamondAddress?: HederaId;
    evmDiamondAddress?: EvmAddress;
    paused?: boolean;
    regulationType?: RegulationType;
    regulationsubType?: RegulationSubType;
    regulation?: Regulation;
    isCountryControlListWhiteList: boolean;
    countries?: string;
    info?: string;
    constructor(params: SecurityProps);
    static checkName(value: string): BaseError[];
    static checkSymbol(value: string): BaseError[];
    static checkISIN(value: string): BaseError[];
    static checkDecimals(value: number): BaseError[];
    static checkInteger(value: number): BaseError[];
    getDecimalOperator(): number;
    fromInteger(amount: number): number;
    isValidAmount(amount: number): boolean;
    static checkSupply(totalSupply: BigDecimal, maxSupply: BigDecimal): BaseError[];
}
