import { z } from 'zod';
import { Endpoint } from './common';
declare const userSchema: z.ZodObject<{
    username: z.ZodString;
    name: z.ZodString;
    email: z.ZodString;
}, z.core.$strip>;
type User = z.infer<typeof userSchema>;
declare const createUserRequestBodySchema: z.ZodObject<{
    username: z.ZodString;
    email: z.ZodString;
    name: z.ZodString;
    password: z.ZodString;
}, z.core.$strip>;
type CreateUserRequestBody = z.infer<typeof createUserRequestBodySchema>;
declare const createUserResponseBodySchema: z.ZodObject<{
    username: z.ZodString;
    name: z.ZodString;
    email: z.ZodString;
}, z.core.$strip>;
type CreateUserResponseBody = z.infer<typeof createUserResponseBodySchema>;
declare const updateUserRequestBodySchema: z.ZodObject<{
    username: z.ZodOptional<z.ZodString>;
    email: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    password: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
type UpdateUserRequestBody = z.infer<typeof updateUserRequestBodySchema>;
declare const queryUsersRequestBodySchema: z.ZodObject<{
    sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
        field: z.ZodEnum<{
            username: "username";
            email: "email";
            name: "name";
        }>;
        order: z.ZodOptional<z.ZodEnum<{
            asc: "asc";
            desc: "desc";
        }>>;
    }, z.core.$strip>>>;
    page: z.ZodOptional<z.ZodObject<{
        from: z.ZodOptional<z.ZodNumber>;
        limit: z.ZodOptional<z.ZodNumber>;
        before: z.ZodOptional<z.ZodOptional<z.ZodString>>;
        after: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    }, z.core.$strip>>;
    filter: z.ZodOptional<z.ZodObject<{
        username: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
            $eq: z.ZodOptional<z.ZodString>;
            $neq: z.ZodOptional<z.ZodString>;
            $exists: z.ZodOptional<z.ZodBoolean>;
            $in: z.ZodOptional<z.ZodArray<z.ZodString>>;
            $notIn: z.ZodOptional<z.ZodArray<z.ZodString>>;
            $like: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodString]>>;
        name: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
            $eq: z.ZodOptional<z.ZodString>;
            $neq: z.ZodOptional<z.ZodString>;
            $exists: z.ZodOptional<z.ZodBoolean>;
            $in: z.ZodOptional<z.ZodArray<z.ZodString>>;
            $notIn: z.ZodOptional<z.ZodArray<z.ZodString>>;
            $like: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodString]>>;
        email: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
            $eq: z.ZodOptional<z.ZodString>;
            $neq: z.ZodOptional<z.ZodString>;
            $exists: z.ZodOptional<z.ZodBoolean>;
            $in: z.ZodOptional<z.ZodArray<z.ZodString>>;
            $notIn: z.ZodOptional<z.ZodArray<z.ZodString>>;
            $like: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodString]>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
type QueryUsersRequestBody = z.infer<typeof queryUsersRequestBodySchema>;
declare const queryUsersResponseBodySchema: z.ZodType<import('./common').QueryResponseBody<{
    username: string;
    name: string;
    email: string;
}>, unknown, z.core.$ZodTypeInternals<import('./common').QueryResponseBody<{
    username: string;
    name: string;
    email: string;
}>, unknown>>;
type QueryUsersResponseBody = z.infer<typeof queryUsersResponseBodySchema>;
declare const createUser: Endpoint;
declare const queryUsers: Endpoint;
declare const getUser: Endpoint<Pick<User, 'username'>>;
declare const deleteUser: Endpoint<Pick<User, 'username'>>;
declare const updateUser: Endpoint<Pick<User, 'username'>>;
export { createUser, queryUsers, getUser, deleteUser, updateUser, userSchema, createUserRequestBodySchema, createUserResponseBodySchema, updateUserRequestBodySchema, queryUsersRequestBodySchema, queryUsersResponseBodySchema, };
export type { User, CreateUserRequestBody, CreateUserResponseBody, UpdateUserRequestBody, QueryUsersRequestBody, QueryUsersResponseBody, };
