/**
 * Permission Tools for Studiograph Agent
 *
 * User and per-folder access management backed by AuthService.
 * User management is workspace-owner-only; per-folder grants are gated
 * on folder-admin of the target folder (or workspace owner).
 */
import { Type as T } from 'typebox';
import { AuthService, type AuthUser } from '../../services/auth-service.js';
import type { WorkspaceManager } from '../../core/workspace-manager.js';
export declare function createPermissionTools(authService: AuthService, getCurrentUser?: () => AuthUser | null, workspaceManager?: WorkspaceManager): ({
    name: string;
    label: string;
    description: string;
    parameters: T.TObject<{}>;
    execute: (_toolCallId: string, _params: any) => Promise<{
        content: {
            type: "text";
            text: string;
        }[];
        details: any;
    }>;
} | {
    name: string;
    label: string;
    description: string;
    parameters: T.TObject<{
        email: T.TString;
        password: T.TString;
        name: T.TString;
        role: T.TOptional<T.TString>;
    }>;
    execute: (_toolCallId: string, params: {
        email: string;
        password: string;
        name: string;
        role?: string;
    }) => Promise<{
        content: {
            type: "text";
            text: string;
        }[];
        details: any;
    }>;
} | {
    name: string;
    label: string;
    description: string;
    parameters: T.TObject<{
        email: T.TString;
    }>;
    execute: (_toolCallId: string, params: {
        email: string;
    }) => Promise<{
        content: {
            type: "text";
            text: string;
        }[];
        details: any;
    }>;
} | {
    name: string;
    label: string;
    description: string;
    parameters: T.TObject<{
        email: T.TString;
        folder: T.TString;
        role: T.TOptional<T.TString>;
    }>;
    execute: (_toolCallId: string, params: {
        email: string;
        folder: string;
        role?: string;
    }) => Promise<{
        content: {
            type: "text";
            text: string;
        }[];
        details: any;
    }>;
} | {
    name: string;
    label: string;
    description: string;
    parameters: T.TObject<{
        email: T.TString;
        folder: T.TString;
    }>;
    execute: (_toolCallId: string, params: {
        email: string;
        folder: string;
    }) => Promise<{
        content: {
            type: "text";
            text: string;
        }[];
        details: any;
    }>;
} | {
    name: string;
    label: string;
    description: string;
    parameters: T.TObject<{
        folder: T.TString;
    }>;
    execute: (_toolCallId: string, params: {
        folder: string;
    }) => Promise<{
        content: {
            type: "text";
            text: string;
        }[];
        details: any;
    }>;
} | {
    name: string;
    label: string;
    description: string;
    parameters: T.TObject<{
        person: T.TObject<{
            repo: T.TString;
            entityId: T.TString;
        }>;
        userHandle: T.TString;
    }>;
    execute: (_toolCallId: string, params: {
        person: {
            repo: string;
            entityId: string;
        };
        userHandle: string;
    }) => Promise<{
        content: {
            type: "text";
            text: string;
        }[];
        details: any;
    }>;
} | {
    name: string;
    label: string;
    description: string;
    parameters: T.TObject<{
        person: T.TObject<{
            repo: T.TString;
            entityId: T.TString;
        }>;
    }>;
    execute: (_toolCallId: string, params: {
        person: {
            repo: string;
            entityId: string;
        };
    }) => Promise<{
        content: {
            type: "text";
            text: string;
        }[];
        details: any;
    }>;
})[];
