import { AuthOrganizationDomain, AuthOrganizationRole, AdminCreateOrganizationInput, AuthOrganization, AdminCreateInvitationInput, AdminCreatePermissionInput, AdminPermission, AdminCreateUserInput, AdminUserSummary, AuthOrganizationInvitation, AdminOrganizationMember, AdminListParams, AdminListResult, AdminClient, AdminUpdateOrganizationInput, AdminUpdatePermissionInput, AdminUpdateUserInput } from '@datatechsolutions/shared-domain';

declare function setWindsockAdminClient(client: AdminClient, issuer: string, authFetch: typeof fetch): void;
declare function listUsers(params?: AdminListParams): Promise<AdminListResult<AdminUserSummary>>;
declare function createUser(data: AdminCreateUserInput): Promise<AdminUserSummary>;
declare function updateUser(userId: string, data: AdminUpdateUserInput): Promise<void>;
declare function deleteUser(userId: string): Promise<void>;
declare function resetUserPassword(userId: string, password: string): Promise<void>;
declare function listOrganizations(): Promise<AuthOrganization[]>;
declare function createOrganization(data: AdminCreateOrganizationInput): Promise<AuthOrganization>;
declare function updateOrganization(organizationId: string, data: AdminUpdateOrganizationInput): Promise<AuthOrganization>;
declare function deleteOrganization(organizationId: string): Promise<void>;
declare function listOrganizationMembers(organizationId: string): Promise<AdminOrganizationMember[]>;
declare function addOrganizationMember(organizationId: string, userId: string, role?: AuthOrganizationRole): Promise<void>;
declare function removeOrganizationMember(organizationId: string, userId: string): Promise<void>;
declare function listOrganizationInvitations(organizationId: string): Promise<AuthOrganizationInvitation[]>;
declare function createOrganizationInvitation(organizationId: string, data: AdminCreateInvitationInput): Promise<void>;
declare function listOrganizationDomains(organizationId: string): Promise<AuthOrganizationDomain[]>;
declare function addOrganizationDomain(organizationId: string, domain: string): Promise<AuthOrganizationDomain>;
declare function verifyOrganizationDomain(organizationId: string, domain: string): Promise<void>;
declare function listPermissions(): Promise<AdminPermission[]>;
declare function createPermission(data: AdminCreatePermissionInput): Promise<AdminPermission>;
declare function updatePermission(permissionId: string, data: AdminUpdatePermissionInput): Promise<void>;
declare function deletePermission(permissionId: string): Promise<void>;
declare function getUserPermissions(userId: string): Promise<AdminPermission[]>;
declare function setUserPermissions(userId: string, permissionIds: string[]): Promise<void>;
type SecretSummary = {
    secretId: string;
    name: string;
    secretType: string;
    description: string | null;
    expiresAt: string | null;
    createdAt: string;
    updatedAt: string;
    disabled: boolean;
};
type SecretDetail = SecretSummary & {
    value?: string;
};
type CreateSecretInput = {
    name: string;
    value: string;
    secretType?: string;
    description?: string;
    leaseTtlSeconds?: number;
};
type UpdateSecretInput = {
    value: string;
    leaseTtlSeconds?: number;
};
declare function listSecrets(organizationId: string): Promise<SecretSummary[]>;
declare function getSecret(organizationId: string, secretId: string): Promise<SecretDetail>;
declare function createSecret(organizationId: string, input: CreateSecretInput): Promise<SecretSummary>;
declare function rotateSecret(organizationId: string, secretId: string, input: UpdateSecretInput): Promise<SecretSummary>;
declare function disableSecret(organizationId: string, secretId: string): Promise<void>;

export { type CreateSecretInput, type SecretDetail, type SecretSummary, type UpdateSecretInput, addOrganizationDomain, addOrganizationMember, createOrganization, createOrganizationInvitation, createPermission, createSecret, createUser, deleteOrganization, deletePermission, deleteUser, disableSecret, getSecret, getUserPermissions, listOrganizationDomains, listOrganizationInvitations, listOrganizationMembers, listOrganizations, listPermissions, listSecrets, listUsers, removeOrganizationMember, resetUserPassword, rotateSecret, setUserPermissions, setWindsockAdminClient, updateOrganization, updatePermission, updateUser, verifyOrganizationDomain };
