/// <reference types="node" />
import SuperMap from "@thunder04/supermap";
import { IncomingMessage } from "http";
declare enum ModelGenerationInputStableSamplers {
    "k_lms" = "k_lms",
    "k_heun" = "k_heun",
    "k_euler" = "k_euler",
    "k_euler_a" = "k_euler_a",
    "k_dpm_2" = "k_dpm_2",
    "k_dpm_2_a" = "k_dpm_2_a",
    "DDIM" = "DDIM",
    "PLMS" = "PLMS",
    "k_dpm_fast" = "k_dpm_fast",
    "k_dpm_adaptive" = "k_dpm_adaptive",
    "k_dpmpp_2s_a" = "k_dpmpp_2s_a",
    "k_dpmpp_2m" = "k_dpmpp_2m",
    "dpmsolver" = "dpmsolver"
}
declare enum SourceImageProcessingTypes {
    "img2img" = "img2img",
    "inpainting" = "inpainting",
    "outpainting" = "outpainting"
}
declare enum ModelGenerationInputPostProcessingTypes {
    "GFPGAN" = "GFPGAN",
    "RealESRGAN_x4plus" = "RealESRGAN_x4plus",
    "CodeFormers" = "CodeFormers"
}
declare enum ModelInterrogationFormTypes {
    "caption" = "caption",
    "interrogation" = "interrogation",
    "nsfw" = "nsfw",
    "GFPGAN" = "GFPGAN",
    "RealESRGAN_x4plus" = "RealESRGAN_x4plus",
    "RealESRGAN_x4plus_anime_6B" = "RealESRGAN_x4plus_anime_6B",
    "NMKD_Siax" = "NMKD_Siax",
    "4x_AnimeSharp" = "4x_AnimeSharp",
    "CodeFormers" = "CodeFormers",
    "strip_background" = "strip_background"
}
declare enum HordeAsyncRequestStates {
    "waiting" = "waiting",
    "processing" = "processing",
    "done" = "done",
    "faulted" = "faulted",
    "partial" = "partial",
    "cancelled" = "cancelled"
}
declare enum ModelGenerationInputControlTypes {
    "canny" = "canny",
    "hed" = "hed",
    "depth" = "depth",
    "normal" = "normal",
    "openpose" = "openpose",
    "seg" = "seg",
    "scribble" = "scribble",
    "fakescribbles" = "fakescribbles",
    "hough" = "hough"
}
declare class APIError extends Error {
    rawError: RequestError;
    status: number;
    method: string;
    url: string;
    requestBody: any;
    constructor(rawError: RequestError, core_res: IncomingMessage, requestBody?: any);
    get name(): string;
}
declare class AIHorde {
    #private;
    static readonly ModelGenerationInputStableSamplers: typeof ModelGenerationInputStableSamplers;
    readonly ModelGenerationInputStableSamplers: typeof ModelGenerationInputStableSamplers;
    static readonly SourceImageProcessingTypes: typeof SourceImageProcessingTypes;
    readonly SourceImageProcessingTypes: typeof SourceImageProcessingTypes;
    static readonly ModelGenerationInputPostProcessingTypes: typeof ModelGenerationInputPostProcessingTypes;
    readonly ModelGenerationInputPostProcessingTypes: typeof ModelGenerationInputPostProcessingTypes;
    static readonly ModelGenerationInputControlTypes: typeof ModelGenerationInputControlTypes;
    readonly ModelGenerationInputControlTypes: typeof ModelGenerationInputControlTypes;
    static readonly ModelInterrogationFormTypes: typeof ModelInterrogationFormTypes;
    readonly ModelInterrogationFormTypes: typeof ModelInterrogationFormTypes;
    static readonly HordeAsyncRequestStates: typeof HordeAsyncRequestStates;
    readonly HordeAsyncRequestStates: typeof HordeAsyncRequestStates;
    static readonly APIError: typeof APIError;
    readonly APIError: typeof APIError;
    VERSION: string;
    ratings: AIHordeRatings;
    constructor(options?: AIHordeInitOptions);
    clearCache(): void;
    get cache(): AIHordeCache;
    parseAgent(agent: string): {
        name: string;
        version: string;
        link: string;
    };
    generateFieldsString(fields?: string[]): string | undefined;
    /**
     * Lookup user details based on their API key.
     * This can be used to verify a user exists
     * @param options.token - The token of the user; If none given the default from the constructor is used
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns UserDetails - The user data of the requested user
     */
    findUser<T extends keyof UserDetails>(options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<UserDetails, T>>;
    /**
     * Details and statistics about a specific user
     * @param id - The user ids to get
     * @param options.token - The token of the requesting user; Has to be Moderator, Admin or Reuqested users token
     * @param options.force - Set to true to skip cache
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns UserDetails - The user data of the requested user
     */
    getUserDetails<T extends keyof UserDetails>(id: number, options?: {
        token?: string;
        force?: boolean;
        fields?: T[];
    }): Promise<Pick<UserDetails, T>>;
    /**
     * Details of a worker Team
     * @param id - The teams id to get
     * @param options.token - The token of the requesting user
     * @param options.force - Set to true to skip cache
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns TeamDetailsStable - The team data
     */
    getTeam<T extends keyof TeamDetailsStable>(id: string, options?: {
        token?: string;
        force?: boolean;
        fields?: T[];
    }): Promise<Pick<TeamDetailsStable, T>>;
    /**
     * Details of a registered worker.
     * This can be used to verify a user exists
     * @param id - The id of the worker
     * @param options.token  - Moderator or API key of workers owner (gives more information if requesting user is owner or moderator)
     * @param options.force - Set to true to skip cache
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns worker details for the requested worker
     */
    getWorkerDetails<T extends keyof WorkerDetailsStable>(id: string, options?: {
        token?: string;
        force?: boolean;
        fields?: T[];
    }): Promise<Pick<WorkerDetailsStable, T>>;
    /**
     * Retrieve the status of an Asynchronous generation request without images
     * Use this method to check the status of a currently running asynchronous request without consuming bandwidth.
     * @param id - The id of the generation
     * @param options.force - Set to true to skip cache
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns RequestStatusCheck - The Check data of the Generation
     */
    getImageGenerationCheck<T extends keyof RequestStatusCheck>(id: string, options?: {
        force?: boolean;
        fields?: T[];
    }): Promise<Pick<RequestStatusCheck, T>>;
    /**
     * Retrieve the full status of an Asynchronous generation request
     * This method will include all already generated images in base64 encoded .webp files.
     * As such, you are requested to not retrieve this data often. Instead use the getGenerationCheck method first
     * This method is limited to 1 request per minute
     * @param id - The id of the generation
     * @param options.force - Set to true to skip cache
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns RequestStatusStable - The Status of the Generation
     */
    getImageGenerationStatus<T extends keyof RequestStatusStable>(id: string, options?: {
        force?: boolean;
        fields?: T[];
    }): Promise<Pick<RequestStatusStable, T>>;
    /**
     * This request will include all already generated texts.
     * @param id - The id of the generation
     * @param options.force - Set to true to skip cache
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns RequestStatusStable - The Status of the Generation
     */
    getTextGenerationStatus<T extends keyof RequestStatusKobold>(id: string, options?: {
        force?: boolean;
        fields?: T[];
    }): Promise<Pick<RequestStatusKobold, T>>;
    /**
     * This request will include all already generated images.
     * As such, you are requested to not retrieve this endpoint often. Instead use the /check/ endpoint first
     * @param options.force - Set to true to skip cache
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns InterrogationStatus - The Status data of the Interrogation
     */
    getInterrogationStatus<T extends keyof InterrogationStatus>(id: string, options?: {
        force?: boolean;
        fields?: T[];
    }): Promise<Pick<InterrogationStatus, T>>;
    /**
     * If this loads, this node is available
     * @returns true - If request was successful, if not throws error
     */
    getHeartbeat(): Promise<true>;
    /**
     * Returns a list of models active currently in this horde
     * @param options.force - Set to true to skip cache
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns ActiveModel[] - Array of Active Models
     */
    getModels<T extends keyof ActiveModel>(options?: {
        force?: boolean;
        fields?: T[];
    }): Promise<Pick<ActiveModel, T>[]>;
    /**
     * Horde Maintenance Mode Status
     * Use this method to quicky determine if this horde is in maintenance, invite_only or raid mode
     * @param options.token - Requires Admin or Owner API key
     * @param options.force - Set to true to skip cache
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns HordeModes - The current modes of the horde
     */
    getModes<T extends keyof HordeModes>(options?: {
        token?: string;
        force?: boolean;
        fields?: T[];
    }): Promise<Pick<HordeModes, T>>;
    /**
     * Read the latest happenings on the horde
     * @param options.force - Set to true to skip cache
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns Newspiece[] - Array of all news articles
     */
    getNews<T extends keyof Newspiece>(options?: {
        force?: boolean;
        fields?: T[];
    }): Promise<Pick<Newspiece, T>[]>;
    /**
     * Details about the current performance of this Horde
     * @param options.force - Set to true to skip cache
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns HordePerformanceStable - The hordes current performance
     */
    getPerformance<T extends keyof HordePerformanceStable>(options?: {
        force?: boolean;
        fields?: T[];
    }): Promise<Pick<HordePerformanceStable, T>>;
    /**
     * A List with the details and statistic of all registered users
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns UserDetails[] - An array of all users data
     */
    getUsers<T extends keyof UserDetails>(options?: {
        fields?: T[];
    }): Promise<Pick<UserDetails, T>[]>;
    /**
     * A List with the details of all registered and active workers
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns An array of all workers data
     */
    getWorkers<T extends keyof WorkerDetailsStable>(options?: {
        fields?: T[];
    }): Promise<Pick<WorkerDetailsStable, T>[]>;
    /**
     * Details how many images were generated per model for the past day, month and total
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns ImageModelStats - The stats
     */
    getImageModelStats<T extends keyof ImageModelStats>(options?: {
        fields?: T[];
    }): Promise<Pick<ImageModelStats, T>>;
    /**
     * Details how many images have been generated in the past minux,hour,day,month and total
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns ImageTotalStats - The stats
     */
    getImageTotalStats<T extends keyof ImageModelStats>(options?: {
        fields?: T[];
    }): Promise<Pick<ImageTotalStats, T>>;
    /**
     * Details how many texts were generated per model for the past day, month and total
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns TextModelStats - The stats
     */
    getTextModelStats<T extends keyof ImageModelStats>(options?: {
        fields?: T[];
    }): Promise<Pick<TextModelStats, T>>;
    /**
     * Details how many images have been generated in the past minux,hour,day,month and total
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns TextTotalStats - The stats
     */
    getTextTotalStats<T extends keyof ImageModelStats>(options?: {
        fields?: T[];
    }): Promise<Pick<TextTotalStats, T>>;
    /**
     * A List with the details of all teams
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns TeamDetailsStable[] - Array of Team Details
     */
    getTeams<T extends keyof TeamDetailsStable>(options?: {
        fields?: T[];
    }): Promise<Pick<TeamDetailsStable, T>[]>;
    /**
     * A List of filters
     * @param filter_type - The type of filter to show
     * @param options.token - The sending users API key; User must be a moderator
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns FilterDetails[] - Array of Filter Details
     */
    getFilters<T extends keyof FilterDetails>(filter_type?: string, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<FilterDetails, T>[]>;
    /**
     * Gets Details for a specific filter
     * @param filter_id - The filter to show
     * @param options.token - The sending users API key; User must be a moderator
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns FilterDetails - Filter Details
     */
    getFilter<T extends keyof FilterDetails>(filter_id?: string, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<FilterDetails, T>>;
    /**
     * Transfer Kudos to a registered user
     * @param check_data - The prompt to check
     * @param options.token - The sending users API key; User must be a moderator
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns FilterPromptSuspicion
     */
    postFilters<T extends keyof FilterPromptSuspicion>(check_data: FilterCheckPayload, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<FilterPromptSuspicion, T>>;
    /**
     * Initiate an Asynchronous request to generate images
     * This method will immediately return with the UUID of the request for generation.
     * This method will always be accepted, even if there are no workers available currently to fulfill this request.
     * Perhaps some will appear in the next 10 minutes.
     * Asynchronous requests live for 10 minutes before being considered stale and being deleted.
     * @param generation_data - The data to generate the image
     * @param options.token - The token of the requesting user
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns RequestAsync - The id and message for the async generation request
     */
    postAsyncImageGenerate<T extends keyof RequestAsync>(generation_data: GenerationInput, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<RequestAsync, T>>;
    /**
     * Initiate an Asynchronous request to generate text
     * This endpoint will immediately return with the UUID of the request for generation.
     * This endpoint will always be accepted, even if there are no workers available currently to fulfill this request.
     * Perhaps some will appear in the next 20 minutes.
     * Asynchronous requests live for 20 minutes before being considered stale and being deleted.
     * @param generation_data - The data to generate the text
     * @param options.token - The token of the requesting user
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns RequestAsync - The id and message for the async generation request
     */
    postAsyncTextGenerate<T extends keyof RequestAsync>(generation_data: GenerationInputKobold, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<RequestAsync, T>>;
    /**
     * Submit aesthetic ratings for generated images to be used by LAION
     * The request has to have been sent as shared: true.
     * You can select the best image in the set, and/or provide a rating for each or some images in the set.
     * If you select best-of image, you will gain 4 kudos. Each rating is 5 kudos. Best-of will be ignored when ratings conflict with it.
     * You can never gain more kudos than you spent for this generation. Your reward at max will be your kudos consumption - 1.
     * @param generation_id - The ID of the generation to rate
     * @param rating - The data to rating data
     * @param options.token - The token of the requesting user
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns GenerationSubmitted - The kudos awarded for the rating
     */
    postRating<T extends keyof GenerationSubmitted>(generation_id: string, rating: AestheticsPayload, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<GenerationSubmitted, T>>;
    /**
     * Check if there are generation requests queued for fulfillment
     * This endpoint is used by registered workers only
     * @param pop_input
     * @param options.token - The token of the registered user
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns GenerationPayloadStable
     */
    postImageGenerationPop<T extends keyof GenerationPayloadStable>(pop_input: PopInputStable, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<GenerationPayloadStable, T>>;
    /**
     * Check if there are generation requests queued for fulfillment
     * This endpoint is used by registered workers only
     * @param pop_input
     * @param options.token - The token of the registered user
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns GenerationPayloadKobold
     */
    postTextGenerationPop<T extends keyof GenerationPayloadKobold>(pop_input: PopInputKobold, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<GenerationPayloadKobold, T>>;
    /**
     * Submit a generated image
     * This endpoint is used by registered workers only
     * @param generation_submit
     * @param options.token - The workers owner API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns GenerationSubmitted
     */
    postImageGenerationSubmit<T extends keyof GenerationSubmitted>(generation_submit: {
        id: string;
        generation: string;
        seed: string;
    }, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<GenerationSubmitted, T>>;
    /**
     * Submit generated text
     * This endpoint is used by registered workers only
     * @param generation_submit
     * @param options.token - The workers owner API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns GenerationSubmitted
     */
    postTextGenerationSubmit<T extends keyof GenerationSubmitted>(generation_submit: {
        id: string;
        generation: string;
        state: "ok" | "censored" | "faulted";
    }, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<GenerationSubmitted, T>>;
    /**
     * Initiate an Asynchronous request to interrogate an image.
     * This endpoint will immediately return with the UUID of the request for interrogation.
     * This endpoint will always be accepted, even if there are no workers available currently to fulfill this request.
     * Perhaps some will appear in the next 20 minutes.
     * Asynchronous requests live for 20 minutes before being considered stale and being deleted.
     * @param interrogate_payload
     * @param options.token - The sending users API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns RequestInterrogationResponse
     */
    postAsyncInterrogate<T extends keyof RequestInterrogationResponse>(interrogate_payload: ModelInterrogationInputStable, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<RequestInterrogationResponse, T>>;
    /**
     * Check if there are interrogation requests queued for fulfillment
     * This endpoint is used by registered workers only
     * @param pop_input
     * @param options.token - The token of the registered user
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns InterrogationPopPayload
     */
    postInterrogationPop<T extends keyof InterrogationPopPayload>(pop_input: InterrogationPopInput, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<InterrogationPopPayload, T>>;
    /**
     * Submit the results of an interrogated image
     * This endpoint is used by registered workers only
     * @param generation_submit
     * @param options.token - The workers owner API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns GenerationSubmitted
     */
    postInterrogationSubmit<T extends keyof GenerationSubmitted>(interrogation_submit: {
        id: string;
        result: string;
    }, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<GenerationSubmitted, T>>;
    /**
     * Transfer Kudos to a registered user
     * @param transfer_data - The data specifiying who to send how many kudos
     * @param options.token - The sending users API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns KudosTransferred
     */
    postKudosTransfer<T extends keyof KudosTransferred>(transfer_data: {
        username: string;
        amount: number;
    }, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<KudosTransferred, T>>;
    /**
     * Receive kudos from the KoboldAI Horde
     * @param user_id - The stable horde user id of the receiving user
     * @param transfer_data - The data specifiying who to send how many kudos
     * @param options.token - The sending users API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns null
     */
    postKoboldTransfer(user_id: string, transfer_data: {
        kai_id: string;
        kudos_amount: number;
        trusted: boolean;
    }, options?: {
        token?: string;
    }): Promise<null>;
    /**
     * Create a new team
     * Only trusted users can create new teams.
     * @param create_payload - The data to create the team with
     * @param options.token - The API key of a trusted user
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns ModifyTeam
     */
    createTeam<T extends keyof ModifyTeam>(create_payload: CreateTeamInput, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<ModifyTeam, T>>;
    /** PUT */
    /**
     * Change Horde Modes
     * @param modes - The new status of the Horde
     * @param options.token - Requires Admin API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns HordeModes
     */
    putStatusModes<T extends keyof HordeModes>(modes: {
        maintenance: boolean;
        shutdown: number;
        invite_only: boolean;
        raid: boolean;
    }, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<HordeModes, T>>;
    /**
     * Method for horde admins to perform operations on users
     * @param update_payload - The data to change on the target user
     * @param id - The targeted users ID
     * @param options.token - Requires Admin API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns ModifyUser
     */
    updateUser<T extends keyof ModifyUser>(update_payload: ModifyUserInput, id: number, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<ModifyUser, T>>;
    /**
     * Put the worker into maintenance or pause mode
     * Maintenance can be set by the owner of the serve or an admin.
     * When in maintenance, the worker will receive a 503 request when trying to retrieve new requests. Use this to avoid disconnecting your worker in the middle of a generation
     * Paused can be set only by the admins of this Horde.
     * When in paused mode, the worker will not be given any requests to generate.
     * @param update_payload - The data to change on the target worker
     * @param id - The targeted workers ID
     * @param options.token - The worker owners API key or Admin API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns ModifyWorker
     */
    updateWorker<T extends keyof ModifyWorker>(update_payload: ModifyWorkerInput, id: string, options?: {
        token?: string;
        fields?: T[];
    }): Promise<ModifyWorker>;
    /** PATCH */
    /**
     * Updates a Team's information
     * @param update_payload - The data to update the team with
     * @param options.token - The Moderator or Creator API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns ModifyTeam
     */
    updateTeam<T extends keyof ModifyTeam>(update_payload: ModifyTeamInput, id: string, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<ModifyTeam, T>>;
    /**
     * Adds a new regex filer
     * @param create_payload - The data to create the filter with
     * @param options.token - The Moderator API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns FilterDetails
     */
    addFilter<T extends keyof FilterDetails>(create_payload: PutNewFilter, id: string, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<FilterDetails, T>>;
    /** PATCH */
    /**
     * Updates an existing regex filer
     * @param update_payload - The data to update the filter with
     * @param options.token - The Moderator API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns FilterDetails
     */
    updateFilter<T extends keyof FilterDetails>(update_payload: PatchExistingFilter, id: string, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<FilterDetails, T>>;
    /** DELETE */
    /**
     * Cancel an unfinished request
     * This request will include all already generated images in base64 encoded .webp files.
     * @param id - The targeted generations ID
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns RequestStatusStable
     */
    deleteImageGenerationRequest<T extends keyof RequestStatusStable>(id: string, options?: {
        fields?: T[];
    }): Promise<Pick<RequestStatusStable, T>>;
    /**
     * Cancel an unfinished request
     * This request will include all already generated images in base64 encoded .webp files.
     * @param id - The targeted generations ID
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns RequestStatusKobold
     */
    deleteTextGenerationRequest<T extends keyof RequestStatusKobold>(id: string, options?: {
        fields?: T[];
    }): Promise<Pick<RequestStatusKobold, T>>;
    /**
     * Cancel an unfinished interrogation request
     * This request will return all already interrogated image results.
     * @param id - The targeted generations ID
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns InterrogationStatus
     */
    deleteInterrogationRequest<T extends keyof InterrogationStatus>(id: string, options?: {
        fields?: T[];
    }): Promise<Pick<InterrogationStatus, T>>;
    /**
     * Delete the worker entry
     * This will delete the worker and their statistics. Will not affect the kudos generated by that worker for their owner.
     * Only the worker's owner and an admin can use this endpoint.
     * This action is unrecoverable!
     * @param id - The targeted workers ID
     * @param options.token - The worker owners API key or a Moderators API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns DeletedWorker
     */
    deleteWorker<T extends keyof DeletedWorker>(id: string, options?: {
        token?: string;
        fields?: T[];
    }): Promise<DeletedWorker>;
    /**
     * Delete the team entry
     * Only the team's creator or a horde moderator can use this endpoint.
     * This action is unrecoverable!
     * @param id - The targeted teams ID
     * @param options.token - The worker owners API key or a Moderators API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns DeletedTeam
     */
    deleteTeam<T extends keyof DeletedTeam>(id: string, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<DeletedTeam, T>>;
    /**
     * Remove an IP from timeout
     * Only usable by horde moderators
     * @param ip - The IP address
     * @param options.token - Moderators API key
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns SimpleResponse
     */
    deleteIPTimeout<T extends keyof SimpleResponse>(delete_payload: DeleteTimeoutIPInput, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<SimpleResponse, T>>;
    /**
     * Delete a regex filter
     * @param filter_id - The ID of the filter to delete
     * @param options.token - The sending users API key; User must be a moderator
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns SimpleResponse
     */
    deleteFilter<T extends keyof SimpleResponse>(filter_id: string, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<SimpleResponse, T>>;
}
export = AIHorde;
export interface AIHordeInitOptions {
    /** The configuration for caching results */
    cache?: AIHordeCacheConfiguration;
    /**
     * The interval to check expired data in the cache
     * @default 1000
    */
    cache_interval?: number;
    /** The default token to use for requests */
    default_token?: string;
    /** The base api domain + route to use for requests */
    api_route?: string;
    /** The ratings api domain + route to use for requests */
    ratings_api_route?: string;
    /** The client agent to pass in the requests. */
    client_agent?: string;
}
export interface AIHordeCacheConfiguration {
    /** How long to cache a specific user for in Milliseconds */
    users?: number;
    /** How long to cache generation check data for in Milliseconds */
    generations_check?: number;
    /** How long to cache generation status data for in Milliseconds */
    generations_status?: number;
    /** How long to cache interrogation status data for in Milliseconds */
    interrogations_status?: number;
    /** How long to cache models for in Milliseconds */
    models?: number;
    /** How long to cache modes for in Milliseconds */
    modes?: number;
    /** How long to cache news for in Milliseconds */
    news?: number;
    /** How long to cache performance for in Milliseconds */
    performance?: number;
    /** How long to cache workers for in Milliseconds */
    workers?: number;
    /** How long to cache teams for in Milliseconds */
    teams?: number;
}
interface AIHordeCache {
    users?: SuperMap<string, UserDetails>;
    generations_check?: SuperMap<string, RequestStatusCheck>;
    generations_status?: SuperMap<string, RequestStatusStable>;
    interrogations_status?: SuperMap<string, InterrogationStatus>;
    models?: SuperMap<string, ActiveModel[]>;
    modes?: SuperMap<string, HordeModes>;
    news?: SuperMap<string, Newspiece[]>;
    performance?: SuperMap<string, HordePerformanceStable>;
    workers?: SuperMap<string, WorkerDetailsStable>;
    teams?: SuperMap<string, TeamDetails>;
}
export interface ModifyUserInput {
    /** The amount of kudos to modify (can be negative) */
    kudos?: number;
    /**
     * The amount of concurrent request this user can have
     * @minimum 0
     * @maximum 100
    */
    concurrency?: number;
    /**
     * The amount by which to multiply the users kudos consumption
     * @minimum 0.1
     * @maximum 10
    */
    usage_multiplier?: number;
    /** Set to the amount of workers this user is allowed to join to the horde when in worker invite-only mode. */
    worker_invited?: number;
    /**
     * Set to true to Make this user a horde moderator
     * @example false
    */
    moderator?: boolean;
    /**
     * Set to true to Make this user a display their worker IDs
     * @example false
    */
    public_workers?: boolean;
    /**
     * When specified, will start assigning the user monthly kudos, starting now!
     * @minimum 0
    */
    monthly_kudos?: number;
    /**
     * When specified, will change the username. No profanity allowed!
     * @minLength 3
     * @maxLength 100
    */
    username?: string;
    /**
     * When set to true,the user and their servers will not be affected by suspicion
     * @example false
    */
    trusted?: boolean;
    /** Set the user's suspicion back to 0 */
    reset_suspicion?: boolean;
    /**
     * Contact details for the horde admins to reach the user in case of emergency. This is only visible to horde moderators.
     * @example email@example.com
     * @minLength 5
     * @maxLength 500
    */
    contact?: string;
}
export interface ModifyWorkerInput {
    /** (Mods only) Set to true to put this worker into maintenance. */
    maintenance?: boolean;
    /** (Mods only) Set to true to pause this worker. */
    paused?: boolean;
    /**
     * You can optionally provide a server note which will be seen in the server details. No profanity allowed!
     * @minLength 5
     * @maxLength 1000
    */
    info?: string;
    /**
     * When this is set, it will change the worker's name. No profanity allowed!
     * @minLength 5
     * @maxLength 100
    */
    name?: string;
    /**
     * The team towards which this worker contributes kudos. No profanity allowed!
     * @example 0bed257b-e57c-4327-ac64-40cdfb1ac5e6
     * @minLength 3
     * @maxLength 100
    */
    team?: string;
}
/**
 * @link https://aihorde.net/api/
*/
export interface GenerationInputKobold {
    /** The prompt which will be sent to KoboldAI to generate text */
    prompt?: string;
    params?: ModelGenerationInputKobold;
    /**
     * Specify which softpompt needs to be used to service this request
     * @minLength 1
     */
    softprompt?: string;
    /**
     * When true, only trusted workers will serve this request. When False, Evaluating workers will also be used which can increase speed but adds more risk!
     * @default true
     */
    trusted_workers?: boolean;
    /** Specify which workers are allowed to service this request */
    workers?: string[];
    /** Specify which models are allowed to be used for this request */
    models?: string[];
}
export interface ModelGenerationInputKobold {
    /**
     * @example 1
     * @minimum 1
     * @maximum 20
     */
    n?: number;
    /**
     * Input formatting option. When enabled, adds a leading space to your input if there is no trailing whitespace at the end of the previous action.
     * @example false
     */
    frmtadsnsp?: boolean;
    /**
     * Output formatting option. When enabled, replaces all occurrences of two or more consecutive newlines in the output with one newline.
     * @example false
     */
    frmtrmblln?: boolean;
    /**
     * Output formatting option. When enabled, removes #/@%}{+=~|^<> from the output.
     * @example false
     */
    frmtrmspch?: boolean;
    /**
     * Output formatting option. When enabled, removes some characters from the end of the output such that the output doesn't end in the middle of a sentence. If the output is less than one sentence long, does nothing.
     * @example false
     */
    frmttriminc?: boolean;
    /**
     * Maximum number of tokens to send to the model.
     * @example 1024
     * @minimum 80
     * @maximum 2048
     */
    max_context_length?: number;
    /**
     * Number of tokens to generate.
     * @minimum 16
     * @maximum 512
     */
    max_length?: number;
    /**
     * Base repetition penalty value.
     * @maximum 1
     */
    rep_pen?: number;
    /** Repetition penalty range. */
    rep_pen_range?: number;
    /** Repetition penalty slope. */
    rep_pen_slope?: number;
    /**
     * Output formatting option. When enabled, removes everything after the first line of the output, including the newline.
     * @example false
     */
    singleline?: boolean;
    /** Soft prompt to use when generating. If set to the empty string or any other string containing no non-whitespace characters, uses no soft prompt. */
    soft_prompt?: string;
    /**
     * Temperature value.
     * @minimum 0
     */
    temperature?: number;
    /** Tail free sampling value. */
    tfs?: number;
    /** Top-a sampling value. */
    top_a?: number;
    /** Top-k sampling value. */
    top_k?: number;
    /** Top-p sampling value. */
    top_p?: number;
    /** Typical sampling value. */
    typical?: number;
    /** Array of integers representing the sampler order to be used */
    sample_order?: number[];
}
export interface ModelPayloadKobold extends ModelGenerationInputKobold {
    prompt?: string;
}
export interface GenerationInput {
    /** The prompt which will be sent to Stable Diffusion to generate an image */
    prompt: string;
    /** The parameters for the generation */
    params?: ModelGenerationInputStable;
    /**
     * Set to true if this request is NSFW. This will skip workers which censor images.
     * @default false
    */
    nsfw?: boolean;
    /**
     * When true, only trusted workers will serve this request. When False, Evaluating workers will also be used which can increase speed but adds more risk!
     * @default true
    */
    trusted_workers?: boolean;
    /**
     * When True, allows slower workers to pick up this request. Disabling this incurs an extra kudos cost.
     * @default true
    */
    slow_workers?: boolean;
    /**
     * If the request is SFW, and the worker accidentaly generates NSFW, it will send back a censored image.
     * @default false
    */
    censor_nsfw?: boolean;
    /** Specify which workers are allowed to service this request */
    workers?: string[];
    /** Specify which models are allowed to be used for this request */
    models?: string[];
    /** The Base64-encoded webp to use for img2img, max siue 3072 * 3072 */
    source_image?: string;
    /** If source_image is provided, specifies how to process it. */
    source_processing?: typeof AIHorde.SourceImageProcessingTypes[keyof typeof AIHorde.SourceImageProcessingTypes];
    /** If source_processing is set to 'inpainting' or 'outpainting', this parameter can be optionally provided as the Base64-encoded webp mask of the areas to inpaint. If this arg is not passed, the inpainting/outpainting mask has to be embedded as alpha channel */
    source_mask?: string;
    /** If True, the image will be sent via cloudflare r2 download link */
    r2?: boolean;
    /** If True, The image will be shared with LAION for improving their dataset. This will also reduce your kudos consumption by 2. For anonymous users, this is always True. */
    shared?: boolean;
    /**
     * If enabled, suspicious prompts are sanitized through a string replacement filter instead.
     * @default true
    */
    replacement_filter?: boolean;
}
export interface ModelGenerationInputStable {
    /**
     * @default k_euler
    */
    sampler_name?: typeof AIHorde.ModelGenerationInputStableSamplers[keyof typeof AIHorde.ModelGenerationInputStableSamplers];
    /**
     * Special Toggles used in the SD Webui. To be documented.
    */
    toggles?: number[];
    /**
     * its how much the AI listens to your prompt, essentially.
     * @default 5
     * @minimum -40
     * @maximum 30
     *
     * Multiple of 0.5
    */
    cfg_scale?: number;
    /**
     * The strength of denoising
     * @minimum 0
     * @maximum 1
     *
     * Multiple of 0.01
    */
    denoising_strength?: number;
    /** The seed to use to generete this request. */
    seed?: string;
    /**
     * The height of the image to generate
     * @default 512
     * @minimum 64
     * @maximum 3072
     *
     * Multiple of 64
    */
    height?: number;
    /**
     * The width of the image to generate
     * @default 512
     * @minimum 64
     * @maximum 3072
     *
     * Multiple of 64
    */
    width?: number;
    /**
     * If passed with multiple n, the provided seed will be incremented every time by this value
     * @minimum 1
     * @maximum 1000
    */
    seed_variation?: number;
    /** Set to True to enable karras noise scheduling tweaks */
    karras?: boolean;
    /** The list of post-processors to apply to the image, in the order to be applied */
    post_processing?: (typeof AIHorde.ModelGenerationInputPostProcessingTypes[keyof typeof AIHorde.ModelGenerationInputPostProcessingTypes])[];
    /**
     * Set to True to create images that stitch together seamlessly
     * @default false
    */
    tiling?: boolean;
    /**
     * Set to True to process the image at base resolution before upscaling and re-processing
     * @default false
    */
    hires_fix?: boolean;
    /**
     * The number of CLIP language processor layers to skip
     * @minimum 1
     * @maximum 12
    */
    clip_skip?: number;
    control_type?: (typeof AIHorde.ModelGenerationInputControlTypes[keyof typeof AIHorde.ModelGenerationInputControlTypes]);
    /**
     * Set to True if the image submitted is a pre-generated control map for ControlNet use
     * @default false
     */
    image_is_control?: boolean;
    /**
     * Set to True if you want the ControlNet map returned instead of a generated image
     * @default false
     */
    return_control_map?: boolean;
    /**
     * @example 0.75
     * @minimum 0
     * @maximum 1
     */
    facefixer_strength?: number;
    /**
     * @default 30
     * @minimum 1
     * @maximum 500
    */
    steps?: number;
    /**
     * The amount of images to generate
     * @minimum 1
     * @maximum 20
    */
    n?: number;
}
export interface ModelPayloadRootStable {
    /**
     * @default k_euler
    */
    sampler_name?: typeof AIHorde.ModelGenerationInputStableSamplers[keyof typeof AIHorde.ModelGenerationInputStableSamplers];
    /**
     * Special Toggles used in the SD Webui. To be documented.
    */
    toggles?: number[];
    /**
     * its how much the AI listens to your prompt, essentially.
     * @default 5
     * @minimum -40
     * @maximum 30
     *
     * Multiple of 0.5
    */
    cfg_scale?: number;
    /**
     * The strength of denoising
     * @minimum 0
     * @maximum 1
     *
     * Multiple of 0.01
    */
    denoising_strength?: number;
    /** The seed to use to generete this request. */
    seed?: string;
    /**
     * The height of the image to generate
     * @default 512
     * @minimum 64
     * @maximum 1024
     *
     * Multiple of 64
    */
    height?: number;
    /**
     * The width of the image to generate
     * @default 512
     * @minimum 64
     * @maximum 1024
     *
     * Multiple of 64
    */
    width?: number;
    /**
     * If passed with multiple n, the provided seed will be incremented every time by this value
     * @minimum 1
     * @maximum 1000
    */
    seed_variation?: number;
    /** Set to True to enable karras noise scheduling tweaks */
    karras?: boolean;
    /** Set to true to process the generated image with GFPGAN (face correction) */
    use_gfpgan?: boolean;
    /** Set to true to process the generated image with RealESRGAN */
    use_real_esrgan?: boolean;
    /** Set to true to process the generated image with LDSR */
    use_ldsr?: boolean;
    /** Set to true to upscale the image */
    use_upscaling?: boolean;
}
export interface RequestError {
    /** The error message for this status code. */
    message: string;
}
export interface RequestStatusStable extends RequestStatusCheck {
    generations?: GenerationStable[];
}
export interface RequestStatusKobold extends RequestStatusCheck {
    generations?: GenerationKobold[];
}
export interface RequestStatusCheck {
    /** The amount of finished images in this request */
    finished?: number;
    /** The amount of still processing images in this request */
    processing?: number;
    /** The amount of images waiting to be picked up by a worker */
    waiting?: number;
    /** True when all images in this request are done. Else False. */
    done?: boolean;
    /** rue when this request caused an internal server error and cannot be completed. */
    faulted?: boolean;
    /** The expected amount to wait (in seconds) to generate all images in this request */
    wait_time?: number;
    /** The position in the requests queue. This position is determined by relative Kudos amounts. */
    queue_position?: number;
    /** The amount of total Kudos this request has consumed until now. */
    kudos?: number;
    /** If False, this request will not be able to be completed with the pool of workers currently available */
    is_possible?: boolean;
}
export interface Generation {
    /** The UUID of the worker which generated this image */
    worker_id?: string;
    /** The name of the worker which generated this image */
    worker_name?: string;
    /** The model which generated this image */
    model?: string;
}
export interface GenerationStable extends Generation {
    /** The generated image as a Base64-encoded .webp file OR a cloudflare r2 download link */
    img?: string;
    /** The seed which generated this image */
    seed?: string;
    /** The ID for this image */
    id?: string;
    /** When true this image has been censored by the worker's safety filter. */
    censored?: boolean;
}
export interface GenerationKobold extends Generation {
    /**
     * The state of the generation,
     * @default ok
     * @example ok
     */
    state: "ok" | "censored";
    /** The generated text */
    text?: string;
    /** The seed which generated this text */
    seed: number;
}
export interface RequestAsync {
    /** The UUID of the request. Use this to retrieve the request status in the future */
    id?: string;
    /** Any extra information from the horde about this request */
    message?: string;
}
export interface PopInputStable extends PopInput {
    /**
     * The maximum amount of pixels this worker can generate
     * @default 262144
    */
    max_pixels?: number;
    /** Words which, when detected will refuse to pick up any jobs */
    blacklist?: string[];
}
export interface PopInputKobold extends PopInput {
    /**
     * The maximum amount of pixels this worker can generate
     * @default 262144
    */
    max_pixels?: number;
    /** Words which, when detected will refuse to pick up any jobs */
    blacklist?: string[];
}
export interface PopInput {
    /** The Name of the Worker */
    name?: string;
    /** Users with priority to use this worker */
    priority_usernames?: string[];
    /**
     * Whether this worker can generate NSFW requests or not.
     * @default false
    */
    nsfw?: boolean;
    /** Which models this worker is serving */
    models?: string[];
    /**
     * The version of the bridge used by this worker
     * @default 1
    */
    bridge_version: number;
    /**
     * The worker name, version and website
     * @default unknown:0:unknown
     * @example AI Horde Worker:11:https://github.com/db0/AI-Horde-Worker
     * @maxLength 1000
     */
    bridge_agent?: string;
    /**
     * How many threads this worker is running. This is used to accurately the current power available in the horde
     * @default 1
     * @minimum 1
     * @maximum 10
     */
    threads?: number;
    /**
     * If True, this worker will only pick up requests where the owner has the required kudos to consume already available
     * @default false
     * @example false
     */
    require_upfront_kudos?: boolean;
}
export interface GenerationPayloadStable {
    payload?: ModelPayloadStable;
    /** The UUID for this image generation */
    id?: string;
    skipped?: NoValidRequestFoundStable;
    /** Which of the available models to use for this request */
    model?: string;
    /** The Base64-encoded webp to use for img2img */
    source_image?: string;
}
export interface GenerationPayloadKobold {
    payload?: ModelPayloadKobold;
    /** The UUID for this text */
    id?: string;
    skipped?: NoValidRequestFoundKobold;
    /** The soft prompt requested for this generation */
    softprompt?: string;
    /** Which of the available models to use for this request */
    model?: string;
}
export interface ModelPayloadStable {
    /**
     * @default k_euler
    */
    sampler_name?: typeof AIHorde.ModelGenerationInputStableSamplers[keyof typeof AIHorde.ModelGenerationInputStableSamplers];
    /**
     * Special Toggles used in the SD Webui. To be documented.
    */
    toggles?: number[];
    /**
     * its how much the AI listens to your prompt, essentially.
     * @default 5
     * @minimum -40
     * @maximum 30
     *
     * Multiple of 0.5
    */
    cfg_scale?: number;
    /**
     * The strength of denoising
     * @minimum 0
     * @maximum 1
     *
     * Multiple of 0.01
    */
    denoising_strength?: number;
    /** The seed to use to generete this request. */
    seed?: string;
    /**
     * The height of the image to generate
     * @default 512
     * @minimum 64
     * @maximum 3072
     *
     * Multiple of 64
    */
    height?: number;
    /**
     * The width of the image to generate
     * @default 512
     * @minimum 64
     * @maximum 3072
     *
     * Multiple of 64
    */
    width?: number;
    /**
     * If passed with multiple n, the provided seed will be incremented every time by this value
     * @minimum 1
     * @maximum 1000
    */
    seed_variation?: number;
    /** Set to True to enable karras noise scheduling tweaks */
    karras?: boolean;
    /** The list of post-processors to apply to the image, in the order to be applied */
    post_processing?: (typeof AIHorde.ModelGenerationInputPostProcessingTypes[keyof typeof AIHorde.ModelGenerationInputPostProcessingTypes])[];
    /**
     * Set to True to create images that stitch together seamlessly
     * @default false
    */
    tiling?: boolean;
    /**
     * Set to True to process the image at base resolution before upscaling and re-processing
     * @default false
    */
    hires_fix?: boolean;
    /**
     * The number of CLIP language processor layers to skip
     * @minimum 1
     * @maximum 12
    */
    clip_skip?: number;
    control_type?: (typeof AIHorde.ModelGenerationInputControlTypes[keyof typeof AIHorde.ModelGenerationInputControlTypes]);
    /** The prompt which will be sent to Stable Diffusion to generate an image */
    prompt?: string;
    /**
     * @default 30
    */
    ddim_steps?: number;
    /**
     * The amount of images to generate
     * @default 1
    */
    n_iter?: number;
    /** When true will apply NSFW censoring model on the generation */
    use_nsfw_censor?: boolean;
}
export interface NoValidRequestFoundKobold extends NoValidRequestFound {
    /** How many waiting requests were skipped because they demanded a higher max_context_length than what this worker provides. */
    max_context_length?: number;
    /** How many waiting requests were skipped because they demanded more generated tokens that what this worker can provide. */
    max_length?: number;
    /** How many waiting requests were skipped because they demanded an available soft-prompt which this worker does not have. */
    matching_softprompt?: number;
}
export interface NoValidRequestFoundStable extends NoValidRequestFound {
    /** How many waiting requests were skipped because they demanded a higher size than this worker provides */
    max_pixels?: number;
}
export interface NoValidRequestFound {
    /** How many waiting requests were skipped because they demanded a specific worker */
    worker_id?: number;
    /** How many waiting requests were skipped because they required higher performance */
    performance?: number;
    /** How many waiting requests were skipped because they demanded a nsfw generation which this worker does not provide */
    nsfw?: number;
    /** How many waiting requests were skipped because they demanded a generation with a word that this worker does not accept */
    blacklist?: number;
    /** How many waiting requests were skipped because they demanded a trusted worker which this worker is not */
    untrusted?: number;
    /** How many waiting requests were skipped because they demanded a different model than what this worker provides */
    models?: number;
    /** How many waiting requests were skipped because they require a higher version of the bridge than this worker is running (upgrade if you see this in your skipped list) */
    bridge_version?: number;
}
export interface GenerationSubmitted {
    /** The amount of kudos gained for submitting this request */
    reward?: number;
}
export interface UserThingUsageRecords {
    /**
     * How many megapixelsteps this user has generated or requested
     * @default 0
     */
    megapixelsteps?: number;
    /**
     * How many tokens this user has generated or requested
     * @default 0
     */
    tokens?: number;
}
export interface UserThingFulfillmentRecords {
    /**
     * How many images were generated or requested
     * @default 0
     */
    image?: number;
    /**
     * How many images were interrogated generated or requested
     * @default 0
     */
    interrogation?: number;
    /**
     * How many texts were generated or requested
     * @default 0
     */
    text?: number;
}
export interface UserRecords {
    usage?: UserThingUsageRecords;
    contribution?: UserThingUsageRecords;
    fulfillment?: UserThingFulfillmentRecords;
    request?: UserThingFulfillmentRecords;
}
export interface UserDetails {
    /** The user's unique Username. It is a combination of their chosen alias plus their ID. */
    username?: string;
    /** The user unique ID. It is always an integer. */
    id?: number;
    /** The amount of Kudos this user has. The amount of Kudos determines the priority when requesting image generations. */
    kudos?: number;
    /** (Privileged) The amount of Evaluating Kudos this untrusted user has from generations and uptime. When this number reaches 50000, they automatically become trusted. */
    evaluating_kudos?: number;
    /** How many concurrent generations this user may request. */
    concurrency?: number;
    /** Whether this user has been invited to join a worker to the horde and how many of them. When 0, this user cannot add (new) workers to the horde. */
    worker_invited?: number;
    /** This user is a Horde moderator. */
    moderator?: boolean;
    kudos_details?: UserKudosDetails;
    /** How many workers this user has created (active or inactive) */
    worker_count?: number;
    worker_ids?: string[];
    monthly_kudos?: MonthlyKudos;
    /** This user is a trusted member of the Horde. */
    trusted?: boolean;
    /** This user has been flagged for suspicious activity. */
    flagged?: boolean;
    /** (Privileged) How much suspicion this user has accumulated */
    suspicious?: number;
    /** If true, this user has not registered using an oauth service. */
    pseudonymous?: boolean;
    /**
     * (Privileged) Contact details for the horde admins to reach the user in case of emergency.
     * @example email@example.com
    */
    contact?: string;
    /**
     * How many seconds since this account was created
     * @example 60
     */
    account_age?: number;
    /**
     * @deprecated
     */
    usage?: UsageDetailsStable;
    /**
     * @deprecated
     */
    contributions?: ContributionsDetailsStable;
    records?: UserRecords;
}
export interface UserKudosDetails {
    /** The ammount of Kudos accumulated or used for generating images. */
    accumulated?: number;
    /** The amount of Kudos this user has given to other users. */
    gifted?: number;
    /** The amount of Kudos this user has been given by the Horde admins. */
    admin?: number;
    /** The amount of Kudos this user has been given by other users. */
    received?: number;
    /** The amount of Kudos this user has received from recurring rewards. */
    recurring?: number;
    /** The amount of Kudos this user has received from rating images. */
    awarded?: number;
}
export interface MonthlyKudos {
    /** How much recurring Kudos this user receives monthly. */
    amount?: number;
    /**
     * Last date this user received monthly Kudos.
     * @type string($date-time)
    */
    last_received?: string;
}
export interface UsageDetailsStable extends UsageDetails {
    /** How many images this user has requested */
    requests?: number;
    /** How many megapixelsteps this user has requested */
    megapixelsteps?: number;
}
export interface UsageDetails {
    /** How many images this user has requested */
    requests?: number;
}
export interface ContributionsDetailsStable extends ContributionsDetails {
    /** How many images this user has generated */
    fulfillments?: number;
    /** How many megapixelsteps this user has generated */
    megapixelsteps?: number;
}
export interface ContributionsDetails {
    /** How many images this user has generated */
    fulfillments?: number;
}
export interface ModifyUser {
    /** The new total Kudos this user has after this request */
    new_kudos?: number;
    /** The request concurrency this user has after this request */
    concurrency?: number;
    /** Multiplies the amount of kudos lost when generating images. */
    usage_multiplier?: number;
    /** This userWhether this user has been invited to join a worker to the horde and how many of them. When 0, this user cannot add (new) workers to the horde. */
    worker_invited?: number;
    /** The user's new moderator status. */
    moderator?: boolean;
    /** The user's new public_workers status. */
    public_workers?: number;
    /** The user's new username. */
    username?: string;
    /** The user's new monthly kudos total */
    monthly_kudos?: number;
    /** The user's new trusted status */
    trusted?: boolean;
}
export interface WorkersPerformanceFilter {
    /**
     * Minimal value of performance for worker to have
     * @default 1.5
     */
    performance?: number;
    /**
     * Minimal filtered workers amount to resort to the list of first `minLength` workers sorted by `performance` value
     * @default 5
     */
    size?: number;
    /**
     * Worker should support img2img
     */
    img2img?: boolean;
    /**
     * List of models workers should have (at least one)
     */
    models?: string[];
}
export interface WorkerDetailsStable extends WorkerDetails {
    /** The maximum pixels in resolution this workr can generate */
    max_pixels?: number;
    /** How many megapixelsteps this worker has generated until now */
    megapixelsteps_generated?: number;
    /** If True, this worker supports and allows img2img requests. */
    img2img?: boolean;
    /** If True, this worker supports and allows inpainting requests. */
    painting?: boolean;
    /** If True, this worker supports and allows post-processing requests. */
    "post-processing"?: boolean;
}
export interface WorkerDetails extends WorkerDetailsLite {
    /** How many images this worker has generated. */
    requests_fulfilled?: number;
    /** How many Kudos this worker has been rewarded in total. */
    kudos_rewards?: number;
    kudos_details?: WorkerKudosDetails;
    /** The average performance of this worker in human readable form. */
    performance?: string;
    /** How many threads this worker is running. */
    threads?: number;
    /** The amount of seconds this worker has been online for this Horde. */
    uptime?: number;
    /** When True, this worker will not pick up any new requests */
    maintenance_mode?: boolean;
    /** (Privileged) When True, this worker not be given any new requests. */
    paused?: boolean;
    /** Extra information or comments about this worker provided by its owner. */
    info?: string;
    /** Whether this worker can generate NSFW requests or not. */
    nsfw?: boolean;
    /** Privileged or public if the owner has allowed it. The alias of the owner of this worker. */
    owner?: string;
    /** The worker is trusted to return valid generations. */
    trusted?: boolean;
    /** (Privileged) How much suspicion this worker has accumulated */
    suspicious?: number;
    /**
     * How many jobs this worker has left uncompleted after it started them.
     * @example 0
    */
    uncompleted_jobs?: number;
    /** Which models this worker if offerring */
    models?: string[];
    team?: TeamDetailsLite;
    /**
     * (Privileged) Contact details for the horde admins to reach the owner of this worker in emergencies.
     * @example email@example.com
     * @minLength 5
     * @maxLength 500
    */
    contact?: string;
    /**
     * The bridge agent name, version and website
     * @default: unknown:0:unknown
     * @example: AI Horde Worker:11:https://github.com/db0/AI-Horde-Worker
     * @maxLength: 1000
    */
    bridge_agent?: string;
}
export interface WorkerDetailsLite {
    /** The Name given to this worker. */
    name?: string;
    /** The UUID of this worker. */
    id?: string;
    /** True if the worker has checked-in the past 5 minutes. */
    online?: boolean;
}
export interface WorkerKudosDetails {
    /** How much Kudos this worker has received for generating images */
    generated?: number;
    /** How much Kudos this worker has received for staying online longer */
    uptime?: number;
}
export interface ModifyWorker {
    /** The new state of the 'maintenance' var for this worker. When True, this worker will not pick up any new requests. */
    maintenance?: boolean;
    /** The new state of the 'paused' var for this worker. When True, this worker will not be given any new requests. */
    paused?: boolean;
    /** The new state of the 'info' var for this worker. */
    info?: string;
    /** The new name for this this worker. */
    name?: string;
}
export interface DeletedWorker {
    /** The ID of the deleted worker */
    deleted_id?: string;
    /** The Name of the deleted worker*/
    deleted_name?: string;
}
export interface ActiveModel extends ActiveModelLite {
    /** The average speed of generation for this model */
    performance?: number;
    /** The amount waiting to be generated by this model */
    queued?: number;
    /** Estimated time in seconds for this model's queue to be cleared */
    eta?: number;
}
export interface ActiveModelLite {
    /** The name of a model available by workers in this horde. */
    name?: string;
    /** How many workers in this horde are running this model. */
    count?: number;
}
export interface KudosTransferred {
    /** The amount of Kudos tranferred */
    transferred?: number;
}
export interface HordeModes {
    /** When True, this Horde will not accept new requests for image generation, but will finish processing the ones currently in the queue. */
    maintenance_mode?: boolean;
    /** When True, this Horde will not only accept worker explicitly invited to join. */
    invite_only_mode?: boolean;
    /** When True, this Horde will not always provide full information in order to throw off attackers. */
    raid_mode?: boolean;
}
export interface HordePerformanceStable extends HordePerformance {
    /** The amount of megapixelsteps in waiting and processing requests currently in this Horde */
    queued_megapixelsteps?: number;
    /** How many megapixelsteps this Horde generated in the last minute */
    past_minute_megapixelsteps?: number;
    /** The amount of image interrogations waiting and processing currently in this Horde */
    queued_forms?: number;
    /** How many workers are actively processing image interrogations in this Horde in the past 5 minutes */
    interrogator_count?: number;
    /** How many worker threads are actively processing image interrogation in this Horde in the past 5 minutes */
    interrogator_thread_count?: number;
}
export interface HordePerformance {
    /** The amount of waiting and processing requests currently in this Horde */
    queued_requests?: number;
    /** How many workers are actively processing image generations in this Horde in the past 5 minutes */
    worker_count?: number;
    /** How many worker threads are actively processing prompt generations in this Horde in the past 5 minutes */
    thread_count?: number;
}
export interface Newspiece {
    /** The date this newspiece was published */
    date_published?: string;
    /** The actual piece of news */
    newspiece?: string;
    /** How critical this piece of news is. */
    importance?: string;
}
export interface CreateTeamInput {
    /**
     * The name of the team. No profanity allowed!
     * @minLength 3
     * @maxLength 100
    */
    name: string;
    /**
     * Extra information or comments about this team.
     * @example Anarchy is emergent order.
     * @minLength 3
     * @maxLength 1000
    */
    info?: string;
}
export interface ModifyTeam {
    /** The ID of the team */
    id?: string;
    /** The Name of the team */
    name?: string;
    /** The Info of the team */
    info?: string;
}
export interface TeamDetailsStable extends TeamDetails {
    /** How many megapixelsteps the workers in this team have been rewarded while part of this team. */
    contributions?: number;
    /** The average performance of the workers in this team, in megapixelsteps per second. */
    performance?: number;
    /** The total expected speed of this team when all workers are working in parallel, in megapixelsteps per second. */
    speed?: number;
}
export interface TeamDetails extends TeamDetailsLite {
    /**
     * Extra information or comments about this team provided by its owner
     * @example Anarchy is emergent order.
    */
    info?: string;
    /** How many images this team's workers have generated */
    requests_fulfilled?: number;
    /** How many Kudos the workers in this team have been rewarded while part of this team. */
    kudos?: number;
    /** The total amount of time workers have stayed online while on this team */
    uptime?: number;
    /**
     * How many workers have been dedicated to this team
     * @example 10
    */
    worker_count?: number;
    workers?: WorkerDetailsLite[];
    models?: ActiveModelLite[];
}
export interface TeamDetailsLite {
    /** The Name given to this team. */
    name?: string;
    /** The UUID of this team */
    id?: string;
}
export interface ModifyTeamInput {
    /**
     * The name of the team. No profanity allowed!
     * @minLength 3
     * @maxLength 100
    */
    name?: string;
    /**
     * Extra information or comments about this team.
     * @example Anarchy is emergent order.
     * @minLength 3
     * @maxLength 1000
    */
    info?: string;
}
export interface DeletedTeam {
    /** The ID of the deleted team */
    deleted_id?: string;
    /** The Name of the deleted team */
    deleted_name?: string;
}
export interface DeleteTimeoutIPInput {
    /**
     * The IP address to remove from timeout
     * @example 127.0.0.1
     * @minLength 7
     * @maxLength 15
     */
    ipaddr: string;
}
export interface SimpleResponse {
    /**
     * The result of this operation
     * @default OK
     */
    message: string;
}
export declare type InterrogationPopFormPayloadStable = Partial<Record<typeof AIHorde.ModelInterrogationFormTypes[keyof typeof AIHorde.ModelInterrogationFormTypes], string>>;
export declare type InterrogationFormResult = Partial<Record<typeof AIHorde.ModelInterrogationFormTypes[keyof typeof AIHorde.ModelInterrogationFormTypes], Record<string, any>>>;
export interface ModelInterrogationFormStable {
    /**
     * The type of interrogation this is
     */
    name: typeof AIHorde.ModelInterrogationFormTypes[keyof typeof AIHorde.ModelInterrogationFormTypes];
    payload?: InterrogationPopFormPayload;
}
export interface ModelInterrogationInputStable {
    forms: ModelInterrogationFormStable[];
    /** The public URL of the image to interrogate */
    source_image: string;
}
export interface RequestInterrogationResponse {
    /** The UUID of the request. Use this to retrieve the request status in the future */
    id?: string;
    /** Any extra information from the horde about this request */
    message?: string;
}
export interface InterrogationPopInput {
    /** The Name of the Worker */
    name?: string;
    /** Users with priority to use this worker */
    priority_usernames?: string[];
    /** The type of interrogation this worker can fulfull */
    forms?: (typeof AIHorde.ModelInterrogationFormTypes[keyof typeof AIHorde.ModelInterrogationFormTypes])[];
    /**
     * The amount of forms to pop at the same time
     * @default 1
     */
    amount?: number;
    /**
     * The version of the bridge used by this worker
     * @default 1
     */
    bridge_version?: number;
    /**
     * How many threads this worker is running. This is used to accurately estimate the power available in the horde.
     * @default 1
     * @minimum 1
     * @maximum 10
     */
    threads?: number;
}
export interface InterrogationPopFormPayload {
    /** The UUID of the interrogation form. Use this to post the results in the future  */
    id?: string;
    /**
     * The name of this interrogation form
     * @example caption
     */
    name?: typeof AIHorde.ModelInterrogationFormTypes[keyof typeof AIHorde.ModelInterrogationFormTypes];
    payload?: InterrogationPopFormPayloadStable;
    /** The URL From which the source image can be downloaded */
    source_image?: string;
}
export interface NoValidInterrogationsFound {
    /**
     * How many waiting requests were skipped because they demanded a specific worker.
     * @minimum 0
     */
    worker_id?: number;
    /**
     * How many waiting requests were skipped because they demanded a trusted worker which this worker is not.
     * @minimum 0
     */
    untrusted?: number;
    /**
     * How many waiting requests were skipped because they require a higher version of the bridge than this worker is running (upgrade if you see this in your skipped list).
     * @example 0
     * @minimum 0
     */
    bridge_version?: number;
}
export interface InterrogationPopPayload {
    forms: InterrogationPopFormPayload;
    skipped?: NoValidInterrogationsFound;
}
export interface InterrogationFormStatus {
    /** The name of this interrogation form */
    form?: string;
    /** title: Interrogation State */
    state?: typeof AIHorde.HordeAsyncRequestStates[keyof typeof AIHorde.HordeAsyncRequestStates];
    result?: InterrogationFormResult;
}
export interface InterrogationStatus {
    /** title: Interrogation State */
    state?: typeof AIHorde.HordeAsyncRequestStates[keyof typeof AIHorde.HordeAsyncRequestStates];
    forms?: InterrogationFormStatus[];
}
export interface AestheticsPayload {
    /**
     * The UUID of the best image in this generation batch (only used when 2+ images generated). If 2+ aesthetic ratings are also provided, then they take precedence if they're not tied.
     * @example 6038971e-f0b0-4fdd-a3bb-148f561f815e
     * @minLength 36
     * @maxLength 36
     */
    best?: string;
    /**
     * The team towards which this ratings contributes. It not is passed, it will leave the ratings without a team.
     * @example 0bed257b-e57c-4327-ac64-40cdfb1ac5e6
     * @minLength 36
     * @maxLength 36
     */
    team?: string;
    ratings?: AestheticRating[];
}
export interface AestheticRating {
    /**
     * The UUID of image being rated
     * @example 6038971e-f0b0-4fdd-a3bb-148f561f815e
     * @minLength 36
     * @maxLength 36
     */
    id: string;
    /**
     * The aesthetic rating 1-10 for this image
     * @minimum 1
     * @maximum 10
     */
    rating: number;
}
export interface FilterCheckPayload {
    prompt: string;
}
export interface FilterPromptSuspicion {
    /** Rates how suspicious the provided prompt is. A suspicion of 2 means it would be blocked. */
    suspicion: string;
    matches: string[];
}
export interface FilterDetails {
    /** The UUID of this filter */
    id: string;
    /**
     * The regex for this filter.
     * @example ac.*
     */
    regex: string;
    /**
     * The integer defining this filter type
     * @minimum 10
     * @maximum 29
     */
    filter_type: number;
    /**
     * Description about this regex
     */
    description?: string;
    /**
     * The moderator which added or last updated this regex
     */
    user: string;
}
export interface PatchExistingFilter {
    /**
     * The regex for this filter.
     * @example ac.*
     */
    regex?: string;
    /**
     * The integer defining this filter type
     * @minimum 10
     * @maximum 29
     */
    filter_type?: number;
    /**
     * Description about this regex
     */
    description?: string;
}
export interface PutNewFilter {
    /**
     * The regex for this filter.
     * @example ac.*
     */
    regex: string;
    /**
     * The integer defining this filter type
     * @minimum 10
     * @maximum 29
     */
    filter_type: number;
    /**
     * Description about this regex
     */
    description: string;
}
export interface ImageModelStats {
    day?: SinglePeriodImageModelStats;
    month?: SinglePeriodImageModelStats;
    total?: SinglePeriodImageModelStats;
}
/**
 * string - Model Name
 * number - The amount of requests fulfilled for this model
 */
export declare type SinglePeriodImageModelStats = Record<string, number>;
export interface ImageTotalStats {
    minute?: SinglePeriodImageStats;
    hour?: SinglePeriodImageStats;
    day?: SinglePeriodImageStats;
    month?: SinglePeriodImageStats;
    total?: SinglePeriodImageStats;
}
export interface SinglePeriodImageStats {
    /** The amount of text requests generated during this period. */
    requests?: number;
    /** The amount of tokens generated during this period. */
    tokens?: number;
}
export interface TextModelStats {
    day?: SinglePeriodTextModelStats;
    month?: SinglePeriodTextModelStats;
    total?: SinglePeriodTextModelStats;
}
/**
 * string - Model Name
 * number - The amount of requests fulfilled for this model
 */
export declare type SinglePeriodTextModelStats = Record<string, number>;
export interface TextTotalStats {
    minute?: SinglePeriodTextStats;
    hour?: SinglePeriodTextStats;
    day?: SinglePeriodTextStats;
    month?: SinglePeriodTextStats;
    total?: SinglePeriodTextStats;
}
export interface SinglePeriodTextStats {
    /** The amount of text requests generated during this period. */
    requests?: number;
    /** The amount of tokens generated during this period. */
    tokens?: number;
}
/**
 * AI Horde Ratings
 */
declare enum RatingArtifactsRatings {
    "FLAWLESS" = 0,
    "LITTLE_FLAWS" = 1,
    "SOME_FLAWS" = 2,
    "OBVIOUS_FLAWS" = 3,
    "HARMFUL_FLAWS" = 4,
    "GARBAGE" = 5
}
declare class AIHordeRatings {
    #private;
    static readonly RatingArtifactsRatings: typeof RatingArtifactsRatings;
    readonly RatingArtifactsRatings: typeof RatingArtifactsRatings;
    static readonly APIError: typeof APIError;
    readonly APIError: typeof APIError;
    constructor(options: AIHordeRatingsInitOptions);
    /**
     * Display all datasets
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns RatingsDatasetResponse - The datasets
     */
    getDatasets<T extends keyof DatasetGetResponse>(options?: {
        fields?: T[];
    }): Promise<Pick<DatasetGetResponse, T>[]>;
    /**
     * Display all public teams
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns RatingsTeamsResponse - The datasets
     */
    getTeams<T extends keyof TeamsGetResponse>(options?: {
        fields?: T[];
    }): Promise<Pick<TeamsGetResponse, T>[]>;
    /**
     * Retrieve an image to rate from the default dataset
     * @param image_options.dataset_id - The ID of the dataset to get an image from
     * @param image_options.model_name - The model name to get an image from
     * @param options.token - The token of the requesting user
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns DatasetImagePopResponse - An images data to rate
     */
    getNewRating<T extends keyof DatasetImagePopResponse>(image_options?: {
        dataset_id: string;
        model_name?: string;
    }, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<DatasetImagePopResponse, T>>;
    /** POST ENDPOINTS */
    /**
     * Check if there are interrogation requests queued for fulfillment
     * This endpoint is used by registered workers only
     * @param image_id - The ID if the Image you want to rate
     * @param rating
     * @param options.token - The token of the requesting user
     * @param options.fields - Array of fields that will be included in the returned data
     * @returns InterrogationPopPayload
     */
    postRating<T extends keyof RatePostResponse>(image_id: string, rating: RatePostInput, options?: {
        token?: string;
        fields?: T[];
    }): Promise<Pick<RatePostResponse, T>>;
}
/**
 * Internal Interfaces
 */
export interface AIHordeRatingsInitOptions {
    /** The default token to use for requests */
    default_token?: string;
    /** The base api domain + route to use for requests */
    api_route?: string;
    /** The client agent to pass in the requests. */
    client_agent: string;
}
/**
 * API Interfaces
 */
export interface DatasetGetResponse {
    /**
     * The unique identifier for this dataset
     * @example 00000000-0000-0000-0000-000000000000
     */
    id?: string;
    /**
     * The name of this dataset
     * @example My Dataset
     */
    name?: string;
    /**
     * The description of this dataset
     * @example This is a dataset of images of cats
     */
    description?: string;
    /**
     * The number of images in this dataset
     * @example 100
     */
    image_count?: number;
}
export interface TeamsGetResponse {
    /**
     * The unique identifier for this team
     * @example 00000000-0000-0000-0000-000000000000
     */
    id?: string;
    /**
     * The name of this team
     * @example My Team
     */
    team_name?: string;
    /**
     * Whether this team is private or not
     * @example false
     */
    is_private?: boolean;
}
export interface DatasetImagePopResponse {
    /**
     * The UUID of the image to rate
     * @example 00000000-0000-0000-0000-000000000000
     */
    id?: string;
    /**
     * The URL from which to download the image
     * @example https://cdn.droom.cloud/00000000-0000-0000-0000-000000000000.webp
     */
    url?: string;
    /**
     * The UUID of the dataset in which this image belongs
     * @example 00000000-0000-0000-0000-000000000000
     */
    dataset_id?: string;
}
export interface RatingRequestError {
    /** The error message for this status code. */
    message: string;
}
export interface RatePostInput {
    /**
     * The aesthetic rating for this image. How much do you like this image subjectively and in isolation from comparison with other images or with its own prompt.
     * @example 5
     * @minimum 1
     * @maximum 10
     */
    rating: number;
    /**
     * The artifacts rating for this image.
     * 0 for flawless generation that perfectly fits to the prompt.
     * 1 for small, hardly recognizable flaws.
     * 2 small flaws that can easily be spotted, but don not harm the aesthetic experience.
     * 3 for flaws that look obviously wrong, but only mildly harm the aesthetic experience.
     * 4 for flaws that look obviously wrong & significantly harm the aesthetic experience.
     * 5 for flaws that make the image look like total garbage
     * @example 1
     * @minimum 0
     * @maximum 5
     */
    artifacts?: typeof AIHordeRatings.RatingArtifactsRatings[keyof typeof AIHordeRatings.RatingArtifactsRatings];
}
export interface RatePostResponse {
    /**
     * The amount of kudos awarded for this rating
     * @example 5
     * @minimum 1
     */
    reward: number;
    /**
     * Any extra information about the submitted rating
     * @example Rating submitted
     */
    message: string;
}
