import { NetworkSymbols } from '../../../basedauth/src/networks';
import { Document, Schema } from 'mongoose';
export declare enum NotificationTypes {
    FOLLOW = "FOLLOW",
    UNFOLLOW = "UNFOLLOW",
    BID = "BID",
    ACCEPT_BID = "ACCEPT_BID",
    REJECT_BID = "REJECT_BID"
}
export interface INotification extends Document {
    recipient: {
        network: NetworkSymbols;
        address: string;
    };
    actor: {
        network: NetworkSymbols;
        address: string;
        name?: string;
        image?: string;
    };
    type: NotificationTypes;
    read: boolean;
    data: Record<string, any>;
    formatMessage(): string;
    createdAt: Date;
    updatedAt: Date;
}
export interface IWallet {
    _id: string;
    network: NetworkSymbols;
    address: string;
}
export interface IMetaInfo {
    website: string;
    twitter: string;
    telegram: string;
    discord: string;
}
export interface ICommentContent {
    type: "text" | "image";
    data: string;
}
export interface IComment extends Document {
    _id: string;
    chainId: number;
    address: string;
    account: string;
    content: ICommentContent[];
    timestamp: number;
    updatedAt: number | null;
    likedBy: string[];
    dislikedBy: string[];
    parentId: string | null;
    isEdited: boolean;
    score: number;
    getChildren(): Promise<IComment[]>;
}
export interface ITransaction extends Document {
    _id: string;
    chainId: number;
    address: string;
    account: string;
    time: number;
    currentPrice: Schema.Types.Decimal128;
    isBought: boolean;
    signature: string;
    decimals: number;
    reserveETH: Schema.Types.Decimal128;
    reserveToken: Schema.Types.Decimal128;
    amountETH: Schema.Types.Decimal128;
    amountToken: Schema.Types.Decimal128;
    amountOwnerFee: Schema.Types.Decimal128;
    amountSubBoardFee: Schema.Types.Decimal128;
    amountTokenOwnerFee: Schema.Types.Decimal128;
    amountReferralFee: Schema.Types.Decimal128;
}
export interface IOwner extends Document {
    _id: string;
    chainId: number;
    treasury: string;
    lock: string;
    mainRouter: string;
}
export interface IFollower {
    _id: string;
    chainId: number;
    address: string;
}
export interface IProtocol extends Document {
    _id: string;
    chainId: number;
    account: string;
    title: string;
    seo: string;
    logo: string;
    banner: string;
    description: string;
    fees: Schema.Types.Decimal128[];
    isAllowed: boolean;
    followers: IFollower[];
    createdAt: Date;
    updatedAt: Date;
}
export interface IBlock extends Document {
    chainId: number;
    contract: string;
    block: number;
    signature: string;
}
export interface IPreset extends Document {
    chainId: number;
    packageIndex: number;
    presetIndex: number;
    totalSupply: Schema.Types.Decimal128;
    decimals: number;
    liquidity: Schema.Types.Decimal128;
    marketCap: Schema.Types.Decimal128;
    reserveETH: Schema.Types.Decimal128;
    reserveToken: Schema.Types.Decimal128;
}
export interface ITokenImp extends Document {
    chainId: number;
    packageIndex: number;
    address: string;
    isUniswapV3Compatible: boolean;
}
export interface IMods extends Document {
    chainId: number;
    account: string;
    role: "admin" | "mods";
    isAllowed: boolean;
}
export interface IAnnouncement extends Document {
    _id: string;
    chainId: number;
    message: string;
    isActive: boolean;
    account: string;
    createdAt: Date;
    updatedAt: Date;
}
