import { z } from 'zod';
import type { EndpointConfig } from '../../../core/base-client';
import { type TrainingSetListParams, type TrainingSetResponse, type TrainingSetListResponse, type CreateTrainingSetRequest, type UpdateTrainingSetRequest, type TrainingConvListParams, type TrainingConvResponse, type TrainingConvListResponse, type CreateTrainingConvRequest, type UpdateTrainingConvRequest, type TrainingMsgListParams, type TrainingMsgResponse, type TrainingMsgListResponse, type CreateTrainingMsgRequest, type UpdateTrainingMsgRequest } from '../schemas/training';
type ExecuteRequest = <TParams, TResponse>(config: EndpointConfig<TParams, TResponse>, params?: TParams, pathParams?: Record<string, string>) => Promise<TResponse>;
/**
 * Creates the training resource methods
 * OpenAPI Path: /training → training.*
 * @description AI training dataset management with nested conversations and messages
 */
export declare function createTrainingResource(executeRequest: ExecuteRequest): {
    /**
     * List training sets
     * @fullPath api.agrSite.training.list
     * @service agr-site
     * @domain ai-training
     * @dataMethod trainingData.list
     * @discoverable true
     * @searchTerms ["training sets", "AI training", "datasets", "fine-tuning"]
     */
    list: (params?: TrainingSetListParams) => Promise<TrainingSetListResponse>;
    /**
     * Get a training set by UID
     * @fullPath api.agrSite.training.get
     * @service agr-site
     * @domain ai-training
     * @dataMethod trainingData.get
     * @discoverable true
     * @searchTerms ["training set", "AI training", "dataset"]
     */
    get: (trainingSetUid: number) => Promise<TrainingSetResponse>;
    /**
     * Create a new training set
     * @fullPath api.agrSite.training.create
     * @service agr-site
     * @domain ai-training
     * @dataMethod trainingData.create
     * @discoverable true
     * @searchTerms ["create training set", "new dataset", "AI training"]
     */
    create: (request: CreateTrainingSetRequest) => Promise<TrainingSetResponse>;
    /**
     * Update a training set
     * @fullPath api.agrSite.training.update
     * @service agr-site
     * @domain ai-training
     * @dataMethod trainingData.update
     * @discoverable true
     * @searchTerms ["update training set", "modify dataset", "AI training"]
     */
    update: (trainingSetUid: number, request: UpdateTrainingSetRequest) => Promise<TrainingSetResponse>;
    /**
     * Delete a training set
     * @fullPath api.agrSite.training.delete
     * @service agr-site
     * @domain ai-training
     * @discoverable true
     * @searchTerms ["delete training set", "remove dataset", "AI training"]
     */
    delete: (trainingSetUid: number) => Promise<boolean>;
    /**
     * Nested conversations resource
     * @description Conversations within a training set
     */
    conversations: {
        /**
         * List conversations in a training set
         * @fullPath api.agrSite.training.conversations.list
         * @service agr-site
         * @domain ai-training
         * @dataMethod trainingData.conversations.list
         * @discoverable true
         * @searchTerms ["training conversations", "AI training", "conversation list"]
         */
        list: (trainingSetUid: number, params?: TrainingConvListParams) => Promise<TrainingConvListResponse>;
        /**
         * Get a conversation by UID
         * @fullPath api.agrSite.training.conversations.get
         * @service agr-site
         * @domain ai-training
         * @dataMethod trainingData.conversations.get
         * @discoverable true
         * @searchTerms ["training conversation", "AI training", "conversation detail"]
         */
        get: (trainingSetUid: number, trainingConvUid: number) => Promise<TrainingConvResponse>;
        /**
         * Create a conversation in a training set
         * @fullPath api.agrSite.training.conversations.create
         * @service agr-site
         * @domain ai-training
         * @dataMethod trainingData.conversations.create
         * @discoverable true
         * @searchTerms ["create conversation", "AI training", "new conversation"]
         */
        create: (trainingSetUid: number, request: CreateTrainingConvRequest) => Promise<TrainingConvResponse>;
        /**
         * Update a conversation
         * @fullPath api.agrSite.training.conversations.update
         * @service agr-site
         * @domain ai-training
         * @dataMethod trainingData.conversations.update
         * @discoverable true
         * @searchTerms ["update conversation", "AI training", "modify conversation"]
         */
        update: (trainingSetUid: number, trainingConvUid: number, request: UpdateTrainingConvRequest) => Promise<TrainingConvResponse>;
        /**
         * Delete a conversation
         * @fullPath api.agrSite.training.conversations.delete
         * @service agr-site
         * @domain ai-training
         * @discoverable true
         * @searchTerms ["delete conversation", "AI training", "remove conversation"]
         */
        delete: (trainingSetUid: number, trainingConvUid: number) => Promise<boolean>;
        /**
         * Nested messages resource
         * @description Messages within a conversation
         */
        messages: {
            /**
             * List messages in a conversation
             * @fullPath api.agrSite.training.conversations.messages.list
             * @service agr-site
             * @domain ai-training
             * @dataMethod trainingData.conversations.messages.list
             * @discoverable true
             * @searchTerms ["training messages", "AI training", "conversation messages"]
             */
            list: (trainingSetUid: number, trainingConvUid: number, params?: TrainingMsgListParams) => Promise<TrainingMsgListResponse>;
            /**
             * Get a message by UID
             * @fullPath api.agrSite.training.conversations.messages.get
             * @service agr-site
             * @domain ai-training
             * @dataMethod trainingData.conversations.messages.get
             * @discoverable true
             * @searchTerms ["training message", "AI training", "message detail"]
             */
            get: (trainingSetUid: number, trainingConvUid: number, trainingMsgUid: number) => Promise<TrainingMsgResponse>;
            /**
             * Create a message in a conversation
             * @fullPath api.agrSite.training.conversations.messages.create
             * @service agr-site
             * @domain ai-training
             * @dataMethod trainingData.conversations.messages.create
             * @discoverable true
             * @searchTerms ["create message", "AI training", "new message"]
             */
            create: (trainingSetUid: number, trainingConvUid: number, request: CreateTrainingMsgRequest) => Promise<TrainingMsgResponse>;
            /**
             * Update a message
             * @fullPath api.agrSite.training.conversations.messages.update
             * @service agr-site
             * @domain ai-training
             * @dataMethod trainingData.conversations.messages.update
             * @discoverable true
             * @searchTerms ["update message", "AI training", "modify message"]
             */
            update: (trainingSetUid: number, trainingConvUid: number, trainingMsgUid: number, request: UpdateTrainingMsgRequest) => Promise<TrainingMsgResponse>;
            /**
             * Delete a message
             * @fullPath api.agrSite.training.conversations.messages.delete
             * @service agr-site
             * @domain ai-training
             * @discoverable true
             * @searchTerms ["delete message", "AI training", "remove message"]
             */
            delete: (trainingSetUid: number, trainingConvUid: number, trainingMsgUid: number) => Promise<boolean>;
        };
    };
};
/**
 * Creates the trainingData resource methods (data-only versions)
 */
export declare function createTrainingDataResource(training: ReturnType<typeof createTrainingResource>): {
    list: (params?: TrainingSetListParams) => Promise<z.objectOutputType<{
        trainingSetUid: z.ZodNumber;
    }, z.ZodTypeAny, "passthrough">[]>;
    get: (trainingSetUid: number) => Promise<{
        trainingSetUid: number;
    } & {
        [k: string]: unknown;
    }>;
    create: (request: CreateTrainingSetRequest) => Promise<{
        trainingSetUid: number;
    } & {
        [k: string]: unknown;
    }>;
    update: (trainingSetUid: number, request: UpdateTrainingSetRequest) => Promise<{
        trainingSetUid: number;
    } & {
        [k: string]: unknown;
    }>;
    conversations: {
        list: (trainingSetUid: number, params?: TrainingConvListParams) => Promise<z.objectOutputType<{
            trainingConvUid: z.ZodNumber;
        }, z.ZodTypeAny, "passthrough">[]>;
        get: (trainingSetUid: number, trainingConvUid: number) => Promise<{
            trainingConvUid: number;
        } & {
            [k: string]: unknown;
        }>;
        create: (trainingSetUid: number, request: CreateTrainingConvRequest) => Promise<{
            trainingConvUid: number;
        } & {
            [k: string]: unknown;
        }>;
        update: (trainingSetUid: number, trainingConvUid: number, request: UpdateTrainingConvRequest) => Promise<{
            trainingConvUid: number;
        } & {
            [k: string]: unknown;
        }>;
        messages: {
            list: (trainingSetUid: number, trainingConvUid: number, params?: TrainingMsgListParams) => Promise<z.objectOutputType<{
                trainingMsgUid: z.ZodNumber;
            }, z.ZodTypeAny, "passthrough">[]>;
            get: (trainingSetUid: number, trainingConvUid: number, trainingMsgUid: number) => Promise<{
                trainingMsgUid: number;
            } & {
                [k: string]: unknown;
            }>;
            create: (trainingSetUid: number, trainingConvUid: number, request: CreateTrainingMsgRequest) => Promise<{
                trainingMsgUid: number;
            } & {
                [k: string]: unknown;
            }>;
            update: (trainingSetUid: number, trainingConvUid: number, trainingMsgUid: number, request: UpdateTrainingMsgRequest) => Promise<{
                trainingMsgUid: number;
            } & {
                [k: string]: unknown;
            }>;
        };
    };
};
export type TrainingResource = ReturnType<typeof createTrainingResource>;
export type TrainingDataResource = ReturnType<typeof createTrainingDataResource>;
export {};
//# sourceMappingURL=training.d.ts.map