import { z } from 'zod';
import { Endpoint } from './common';
import { Group } from './group';
import { Role } from './role';
import { MappingRule } from './mapping-rule';
declare const tenantSchema: z.ZodObject<{
    tenantKey: z.ZodString;
    tenantId: z.ZodString;
    name: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
type Tenant = z.infer<typeof tenantSchema>;
declare const createTenantRequestBodySchema: z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    tenantId: z.ZodString;
    name: z.ZodString;
}, z.core.$strip>;
type CreateTenantRequestBody = z.infer<typeof createTenantRequestBodySchema>;
declare const createTenantResponseBodySchema: z.ZodObject<{
    tenantKey: z.ZodString;
    tenantId: z.ZodString;
    name: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
type CreateTenantResponseBody = z.infer<typeof createTenantResponseBodySchema>;
declare const updateTenantRequestBodySchema: z.ZodObject<{
    description: z.ZodOptional<z.ZodString>;
    name: z.ZodString;
}, z.core.$strip>;
type UpdateTenantRequestBody = z.infer<typeof updateTenantRequestBodySchema>;
declare const updateTenantResponseBodySchema: z.ZodObject<{
    tenantKey: z.ZodString;
    tenantId: z.ZodString;
    name: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
type UpdateTenantResponseBody = z.infer<typeof updateTenantResponseBodySchema>;
declare const queryTenantsRequestBodySchema: z.ZodObject<{
    sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
        field: z.ZodEnum<{
            key: "key";
            tenantId: "tenantId";
            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<{
        tenantId: z.ZodOptional<z.ZodString>;
        name: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
}, z.core.$strip>;
type QueryTenantsRequestBody = z.infer<typeof queryTenantsRequestBodySchema>;
declare const queryTenantsResponseBodySchema: z.ZodType<import('./common').QueryResponseBody<{
    tenantKey: string;
    tenantId: string;
    name: string;
    description?: string | undefined;
}>, unknown, z.core.$ZodTypeInternals<import('./common').QueryResponseBody<{
    tenantKey: string;
    tenantId: string;
    name: string;
    description?: string | undefined;
}>, unknown>>;
type QueryTenantsResponseBody = z.infer<typeof queryTenantsResponseBodySchema>;
declare const tenantUserSchema: z.ZodObject<{
    username: z.ZodString;
}, z.core.$strip>;
type TenantUser = z.infer<typeof tenantUserSchema>;
declare const queryUsersByTenantRequestBodySchema: z.ZodObject<{
    sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
        field: z.ZodEnum<{
            username: "username";
        }>;
        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.ZodNever>;
}, z.core.$strip>;
type QueryUsersByTenantRequestBody = z.infer<typeof queryUsersByTenantRequestBodySchema>;
declare const queryUsersByTenantResponseBodySchema: z.ZodType<import('./common').QueryResponseBody<{
    username: string;
}>, unknown, z.core.$ZodTypeInternals<import('./common').QueryResponseBody<{
    username: string;
}>, unknown>>;
type QueryUsersByTenantResponseBody = z.infer<typeof queryUsersByTenantResponseBodySchema>;
declare const tenantClientSchema: z.ZodObject<{
    clientId: z.ZodString;
}, z.core.$strip>;
type TenantClient = z.infer<typeof tenantClientSchema>;
declare const queryClientsByTenantRequestBodySchema: z.ZodObject<{
    sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
        field: z.ZodEnum<{
            clientId: "clientId";
        }>;
        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.ZodNever>;
}, z.core.$strip>;
type QueryClientsByTenantRequestBody = z.infer<typeof queryClientsByTenantRequestBodySchema>;
declare const queryClientsByTenantResponseBodySchema: z.ZodType<import('./common').QueryResponseBody<{
    clientId: string;
}>, unknown, z.core.$ZodTypeInternals<import('./common').QueryResponseBody<{
    clientId: string;
}>, unknown>>;
type QueryClientsByTenantResponseBody = z.infer<typeof queryClientsByTenantResponseBodySchema>;
declare const queryGroupsByTenantRequestBodySchema: z.ZodObject<{
    sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
        field: z.ZodEnum<{
            name: "name";
            groupId: "groupId";
        }>;
        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<{
        name: z.ZodOptional<z.ZodString>;
        groupId: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
}, z.core.$strip>;
type QueryGroupsByTenantRequestBody = z.infer<typeof queryGroupsByTenantRequestBodySchema>;
declare const queryGroupsByTenantResponseBodySchema: z.ZodType<import('./common').QueryResponseBody<{
    groupId: string;
    name: string;
    description: string;
}>, unknown, z.core.$ZodTypeInternals<import('./common').QueryResponseBody<{
    groupId: string;
    name: string;
    description: string;
}>, unknown>>;
type QueryGroupsByTenantResponseBody = z.infer<typeof queryGroupsByTenantResponseBodySchema>;
declare const queryRolesByTenantRequestBodySchema: z.ZodObject<{
    sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
        field: z.ZodEnum<{
            name: "name";
            roleId: "roleId";
        }>;
        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<{
        name: z.ZodOptional<z.ZodString>;
        roleId: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
}, z.core.$strip>;
type QueryRolesByTenantRequestBody = z.infer<typeof queryRolesByTenantRequestBodySchema>;
declare const queryRolesByTenantResponseBodySchema: z.ZodType<import('./common').QueryResponseBody<{
    roleId: string;
    name: string;
    description: string;
}>, unknown, z.core.$ZodTypeInternals<import('./common').QueryResponseBody<{
    roleId: string;
    name: string;
    description: string;
}>, unknown>>;
type QueryRolesByTenantResponseBody = z.infer<typeof queryRolesByTenantResponseBodySchema>;
declare const queryMappingRulesByTenantRequestBodySchema: z.ZodObject<{
    sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
        field: z.ZodEnum<{
            name: "name";
            mappingId: "mappingId";
            claimName: "claimName";
            claimValue: "claimValue";
        }>;
        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<{
        name: z.ZodOptional<z.ZodString>;
        mappingId: z.ZodOptional<z.ZodString>;
        claimName: z.ZodOptional<z.ZodString>;
        claimValue: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
}, z.core.$strip>;
type QueryMappingRulesByTenantRequestBody = z.infer<typeof queryMappingRulesByTenantRequestBodySchema>;
declare const queryMappingRulesByTenantResponseBodySchema: z.ZodType<import('./common').QueryResponseBody<{
    mappingId: string;
    claimName: string;
    claimValue: string;
    name: string;
}>, unknown, z.core.$ZodTypeInternals<import('./common').QueryResponseBody<{
    mappingId: string;
    claimName: string;
    claimValue: string;
    name: string;
}>, unknown>>;
type QueryMappingRulesByTenantResponseBody = z.infer<typeof queryMappingRulesByTenantResponseBodySchema>;
declare const createTenant: Endpoint;
declare const getTenant: Endpoint<Pick<Tenant, 'tenantId'>>;
declare const updateTenant: Endpoint<Pick<Tenant, 'tenantId'>>;
declare const deleteTenant: Endpoint<Pick<Tenant, 'tenantId'>>;
declare const queryTenants: Endpoint;
declare const assignUserToTenant: Endpoint<Pick<Tenant, 'tenantId'> & {
    username: string;
}>;
declare const unassignUserFromTenant: Endpoint<Pick<Tenant, 'tenantId'> & {
    username: string;
}>;
declare const queryUsersByTenant: Endpoint<Pick<Tenant, 'tenantId'>>;
declare const queryClientsByTenant: Endpoint<Pick<Tenant, 'tenantId'>>;
declare const queryGroupsByTenant: Endpoint<Pick<Tenant, 'tenantId'>>;
declare const queryRolesByTenant: Endpoint<Pick<Tenant, 'tenantId'>>;
declare const assignClientToTenant: Endpoint<Pick<Tenant, 'tenantId'> & {
    clientId: string;
}>;
declare const unassignClientFromTenant: Endpoint<Pick<Tenant, 'tenantId'> & {
    clientId: string;
}>;
declare const assignMappingRuleToTenant: Endpoint<Pick<Tenant, 'tenantId'> & Pick<MappingRule, 'mappingId'>>;
declare const unassignMappingRuleFromTenant: Endpoint<Pick<Tenant, 'tenantId'> & Pick<MappingRule, 'mappingId'>>;
declare const queryMappingRulesByTenant: Endpoint<Pick<Tenant, 'tenantId'>>;
declare const assignGroupToTenant: Endpoint<Pick<Tenant, 'tenantId'> & Pick<Group, 'groupId'>>;
declare const unassignGroupFromTenant: Endpoint<Pick<Tenant, 'tenantId'> & Pick<Group, 'groupId'>>;
declare const assignRoleToTenant: Endpoint<Pick<Tenant, 'tenantId'> & Pick<Role, 'roleId'>>;
declare const unassignRoleFromTenant: Endpoint<Pick<Tenant, 'tenantId'> & Pick<Role, 'roleId'>>;
export { createTenant, getTenant, updateTenant, deleteTenant, queryTenants, assignUserToTenant, unassignUserFromTenant, queryUsersByTenant, queryClientsByTenant, queryGroupsByTenant, queryRolesByTenant, assignClientToTenant, unassignClientFromTenant, assignMappingRuleToTenant, unassignMappingRuleFromTenant, queryMappingRulesByTenant, assignGroupToTenant, unassignGroupFromTenant, assignRoleToTenant, unassignRoleFromTenant, tenantSchema, createTenantRequestBodySchema, createTenantResponseBodySchema, updateTenantRequestBodySchema, updateTenantResponseBodySchema, queryTenantsRequestBodySchema, queryTenantsResponseBodySchema, tenantUserSchema, queryUsersByTenantRequestBodySchema, queryUsersByTenantResponseBodySchema, tenantClientSchema, queryClientsByTenantRequestBodySchema, queryClientsByTenantResponseBodySchema, queryGroupsByTenantRequestBodySchema, queryGroupsByTenantResponseBodySchema, queryRolesByTenantRequestBodySchema, queryRolesByTenantResponseBodySchema, queryMappingRulesByTenantRequestBodySchema, queryMappingRulesByTenantResponseBodySchema, };
export type { Tenant, CreateTenantRequestBody, CreateTenantResponseBody, UpdateTenantRequestBody, UpdateTenantResponseBody, QueryTenantsRequestBody, QueryTenantsResponseBody, TenantUser, QueryUsersByTenantRequestBody, QueryUsersByTenantResponseBody, TenantClient, QueryClientsByTenantRequestBody, QueryClientsByTenantResponseBody, QueryGroupsByTenantRequestBody, QueryGroupsByTenantResponseBody, QueryRolesByTenantRequestBody, QueryRolesByTenantResponseBody, QueryMappingRulesByTenantRequestBody, QueryMappingRulesByTenantResponseBody, };
