import { RefParams, TypeParams } from 'ajv';
import { AddrRecord, BaseAddrPair, WalletsRecords } from './BaseTypes';
export declare class BaseSchemaField implements TypeParams {
    readonly type: string;
    readonly description?: string;
    readonly required?: Array<string>;
    readonly additionalProperties?: boolean;
    constructor(type?: string, description?: string, required?: Array<string>, additionalProperties?: boolean);
}
export declare class BaseSchemaFieldObject implements RefParams {
    readonly ref: string;
    constructor(ref: string);
}
export declare class BaseSchemaFieldArray extends BaseSchemaField {
    readonly items: BaseSchemaFieldObject;
    readonly minItems: number;
    readonly uniqueItems: boolean;
    constructor(itemDefinition: string, minItems: number, uniqueItems: boolean);
}
export declare class BaseSchemaAddPairProps {
    readonly baseID: BaseSchemaField;
    readonly ethAddr: BaseSchemaField;
}
export declare class BaseSchemaAddPair extends BaseSchemaField {
    readonly properties: BaseSchemaAddPairProps;
    constructor();
}
export declare class BaseSchemaAddRecordDefinitions {
    readonly recordPair: BaseSchemaAddPair;
    constructor(recordPair: BaseSchemaAddPair);
}
export declare class BaseSchemaAddRecordProps {
    readonly data: BaseSchemaFieldObject;
    readonly sig: BaseSchemaField;
}
export declare class BaseSchemaAddRecord extends BaseSchemaField {
    readonly definitions: BaseSchemaAddRecordDefinitions;
    readonly properties: BaseSchemaAddRecordProps;
    constructor(definitions: BaseSchemaAddRecordDefinitions);
}
export declare class BaseSchemaEthWalletProps {
    readonly data: BaseSchemaFieldArray;
    sig: BaseSchemaField;
}
export declare class BaseSchemaEthWalletDefinitions {
    readonly recordPair: BaseSchemaAddPair;
    readonly ethAddress: BaseSchemaAddRecord;
    constructor(ethAddress: BaseSchemaAddRecord, recordPair: BaseSchemaAddPair);
}
export declare class BaseSchemaEthWallet extends BaseSchemaField {
    readonly definitions: BaseSchemaEthWalletDefinitions;
    readonly description: string;
    readonly properties: BaseSchemaEthWalletProps;
    constructor(definitions: BaseSchemaEthWalletDefinitions);
}
export declare class BaseSchemaCombineDefinitions {
    readonly ethAddress: BaseSchemaAddRecord;
    readonly recordPair: BaseSchemaAddPair;
    readonly ethWallets: BaseSchemaEthWallet;
    constructor(ethAddress: BaseSchemaAddRecord, recordPair: BaseSchemaAddPair, ethWallets: BaseSchemaEthWallet);
}
export declare class BaseSchemaCombineProps {
    readonly baseID: BaseSchemaField;
    readonly email: BaseSchemaField;
    readonly wealth: BaseSchemaField;
    readonly eth_wallets: BaseSchemaFieldObject;
}
export declare class BaseSchemaCombine extends BaseSchemaField {
    readonly definitions: BaseSchemaCombineDefinitions;
    readonly properties: BaseSchemaCombineProps;
    constructor(definitions: BaseSchemaCombineDefinitions);
}
export declare class BaseSchema {
    static EthBaseAddrPair: BaseSchemaAddPair;
    static EthAddrRecord: BaseSchemaAddRecord;
    static EthWallets: BaseSchemaEthWallet;
    static All: BaseSchemaCombine;
    private readonly ajvValidateAddr;
    private readonly ajvValidateBaseAddrPair;
    private readonly ajvValidateWallets;
    constructor();
    validateAddr(addrRecord: AddrRecord): boolean;
    validateWallets(walletsRecords: WalletsRecords): boolean;
    validateBaseAddrPair(baseAddrPair: BaseAddrPair): boolean;
}
