/**
 * The Vesal API Class
 * @author Shahab Movahhedi
 * @see {@link https://shmovahhedi.com Shahab Movahhedi's Website}
 * @see {@link https://github.com/movahhedi/vesal vesal's Repository}
 * @license MIT
 */
export declare class Vesal {
    readonly apiUrl = "http://vesal.armaghan.net:8080/rest";
    private username;
    private password;
    private from;
    constructor(username: string, password: string, from: string);
    /**
     * Make an API request to the Vesal API
     * @private
     * @param {string} urlSuffix - The URL suffix for the API endpoint
     * @param {("GET"|"POST")} [method="GET"] - The HTTP method to use for the request
     * @param {object|null} [data=null] - The data to send with the request
     * @returns {Promise} The response from the API
     */
    private Api;
    Send({ recipients, messages, from, }: {
        recipients: string | string[];
        messages: string | string[];
        from?: string | string[];
    }): Promise<IVesalResponse_Send_WithCount>;
    GetMessageStatus(referencesIds: number[]): Promise<IVesalResponse_MessageState>;
    GetReceivedMessages(): Promise<IVesalResponse_ReceivedMessages>;
    GetReceivedMessagesCount(): Promise<IVesalResponse_ReceivedMessagesCount>;
    GetUserInfo(): Promise<IVesalResponse_UserInfo>;
}
export declare class VesalError extends Error {
    status: keyof typeof vesalErrors | undefined;
    constructor(statusParam: number | undefined, messageParam?: string);
}
interface IVesalResponse_Base {
    errorModel: {
        errorCode: number;
        timestamp: string | number | null;
    };
}
interface IVesalResponse_Send extends IVesalResponse_Base {
    references: (number | Omit<keyof typeof vesalErrors, 0>)[];
}
interface IVesalResponse_Send_WithCount extends IVesalResponse_Send {
    count: {
        success: number;
        fail: number;
    };
}
interface IVesalResponse_MessageState extends IVesalResponse_Base {
    states: {
        id: number;
        state: number;
    }[];
}
interface IVesalResponse_ReceivedMessages extends IVesalResponse_Base {
    messageModels: {
        originator: string;
        destination: string;
        content: string;
    }[];
}
interface IVesalResponse_ReceivedMessagesCount extends IVesalResponse_Base {
    count: number;
}
interface IVesalResponse_UserInfo extends IVesalResponse_Base {
    user: {
        credit: number;
        deliveryUrl: unknown;
        receiveUrl: unknown;
        iPs: string[];
        numbers: string[];
        id: number;
        username: string;
        password: unknown;
        firstName: unknown;
        lastName: unknown;
        mobile: unknown;
        email: unknown;
        nationalId: number;
        expirationDate: string;
        active: boolean;
        deleted: boolean;
        dbProxyStandalone: boolean;
        insertDate: unknown;
        updateDate: unknown;
        customer: unknown;
        roles: unknown;
    };
}
export declare function GetStatusText(status: number): any;
export declare const messageStates: {
    readonly 0: "پیامک در صف ارسال قرار دارد";
    readonly 1: "ارسال شده";
    readonly 2: "پیامک به موبایل گیرنده تحویل شده است";
    readonly 3: "پیامک به موبایل گیرنده تحویل نشده است";
    readonly 4: "وضعیت نامشخص";
    readonly 5: "پیامک توسط وب سرویس به شرکت ارمغان راه طلایی رسیده است";
    readonly 6: "پیام از سمت اپراتور لغو شده است";
    readonly 7: "پیام از سمت اپراتور منقضی شده است";
    readonly 8: "پیام از سمت اپراتور reject شده است";
};
export declare const vesalErrors: {
    readonly 0: "عملیات با موفقیت انجام شد";
    readonly [-100]: "refrenceId مورد نظر یافت نشد";
    readonly [-101]: "احراز هویت کاربر موفقیت آمیز نبود";
    readonly [-102]: "نام کاربری یافت نشد";
    readonly [-103]: "شماره originator اشتباه یا در بازه شماره های کاربر نیست";
    readonly [-104]: "اعتبار کم است";
    readonly [-105]: "فرمت درخواست اشتباه است";
    readonly [-106]: "تعداد refrenceId ها بیش از 1000 عدد است";
    readonly [-107]: "شماره گیرنده پیامک اشتباه است";
    readonly [-109]: "تاریخ انقضای حساب کاربری فرارسیده است";
    readonly [-110]: "درخواست از ip مجاز کاربر ارسال نشده است";
    readonly [-111]: "شماره گیرنده در بلک لیست قرار دارد";
    readonly [-112]: "حساب مشتری فعال نیست";
    readonly [-115]: "فرمت UDH اشتباه است";
    readonly [-117]: "مقدار mclass وارد شده اشتباه است";
    readonly [-118]: "شماره پورت وارد شده صحیح نیست";
    readonly [-119]: "کاربر به سرویس مورد نظر دسترسی ندارد";
    readonly [-120]: "پیام ارسال شده دارای هیچ شماره معتبری نیست";
    readonly [-200]: "خطای داخلی در پایگاه داده رخ داده است";
    readonly [-201]: "خطای نامشخص داخل پایگاه داده";
    readonly [-137]: "پیام نباید حاوی کلمات غیرمجاز می باشد";
};
export default Vesal;
