import { ProjectMemberRole } from '../types/projectMemberRole';
import { type MemberAbility } from './types';
/**
 * Test utilities for role to scope mapping validation
 * These functions are only used for testing migration compatibility
 */
/**
 * Validates that a role properly inherits permissions from lower roles
 */
export declare const validateRoleInheritance: () => {
    valid: boolean;
    errors: string[];
};
/**
 * Extracts the actual permissions granted by a role builder for analysis and comparison
 * This is useful for debugging and validating that our scope mappings are correct
 */
export declare const extractRolePermissions: (role: ProjectMemberRole) => {
    rules: Array<{
        action: string;
        subject: string;
        conditions?: unknown;
        inverted?: boolean;
        reason?: string;
    }>;
    rawAbility: MemberAbility;
};
/**
 * Helper function to create standardized test cases for role compatibility testing
 */
export declare const createStandardTestCases: () => ({
    action: "view";
    subject: "Dashboard";
    resource: {
        organizationUuid: string;
        projectUuid: string;
        inheritsFromOrgOrProject: boolean;
    };
} | {
    action: "view";
    subject: "SavedChart";
    resource: {
        organizationUuid: string;
        projectUuid: string;
        inheritsFromOrgOrProject: boolean;
    };
} | {
    action: "view";
    subject: "Space";
    resource: {
        organizationUuid: string;
        projectUuid: string;
        inheritsFromOrgOrProject: boolean;
    };
} | {
    action: "view";
    subject: "Project";
    resource: {
        projectUuid: string;
        organizationUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "create";
    subject: "Space";
    resource: {
        organizationUuid: string;
        projectUuid: string;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "create";
    subject: "DashboardComments";
    resource: {
        projectUuid: string;
        organizationUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "create";
    subject: "ScheduledDeliveries";
    resource: {
        projectUuid: string;
        organizationUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "manage";
    subject: "Space";
    resource: {
        organizationUuid: string;
        projectUuid: string;
        inheritsFromOrgOrProject: boolean;
    };
} | {
    action: "manage";
    subject: "Job";
    resource: {
        organizationUuid?: undefined;
        projectUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "manage";
    subject: "PinnedItems";
    resource: {
        organizationUuid: string;
        projectUuid: string;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "manage";
    subject: "Explore";
    resource: {
        projectUuid: string;
        organizationUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "manage";
    subject: "Project";
    resource: {
        projectUuid: string;
        organizationUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "manage";
    subject: "Validation";
    resource: {
        projectUuid: string;
        organizationUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "manage";
    subject: "VirtualView";
    resource: {
        projectUuid: string;
        organizationUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "manage";
    subject: "CustomSql";
    resource: {
        projectUuid: string;
        organizationUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "manage";
    subject: "CustomFields";
    resource: {
        projectUuid: string;
        organizationUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "view";
    subject: "CompiledSql";
    resource: {
        projectUuid: string;
        organizationUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "manage";
    subject: "CustomSqlTableCalculations";
    resource: {
        projectUuid: string;
        organizationUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "delete";
    subject: "Project";
    resource: {
        projectUuid: string;
        organizationUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
} | {
    action: "view";
    subject: "Analytics";
    resource: {
        projectUuid: string;
        organizationUuid?: undefined;
        inheritsFromOrgOrProject?: undefined;
    };
})[];
/**
 * Helper function to create test parameters for role compatibility testing
 */
export declare const createRoleTestParams: (role: ProjectMemberRole, options?: {
    isEnterprise?: boolean;
    projectUuid?: string;
    userUuid?: string;
    organizationUuid?: string;
}) => {
    role: ProjectMemberRole;
    scopes: string[];
    projectMember: {
        role: ProjectMemberRole;
        projectUuid: string;
        userUuid: string;
    };
    scopeOrgBuilderParams: {
        organizationUuid: string;
        userUuid: string;
        scopes: string[];
        isEnterprise: boolean;
        organizationRole: "editor";
        permissionsConfig: {
            pat: {
                enabled: boolean;
                allowedOrgRoles: never[];
            };
        };
    };
    scopeProjectBuilderParams: {
        projectUuid: string;
        userUuid: string;
        scopes: string[];
        isEnterprise: boolean;
        organizationRole: "editor";
        permissionsConfig: {
            pat: {
                enabled: boolean;
                allowedOrgRoles: never[];
            };
        };
    };
};
/**
 * Compares role-based and scope-based abilities for a specific set of test cases
 * Returns detailed results showing which permissions match or differ
 */
export declare const compareRoleAndScopeAbilities: (role: ProjectMemberRole, testCases: ReturnType<typeof createStandardTestCases>, options?: {
    isEnterprise?: boolean;
}) => {
    role: ProjectMemberRole;
    scopes: string[];
    results: ({
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "view";
        subject: "Dashboard";
        resource: {
            organizationUuid: string;
            projectUuid: string;
            inheritsFromOrgOrProject: boolean;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "view";
        subject: "SavedChart";
        resource: {
            organizationUuid: string;
            projectUuid: string;
            inheritsFromOrgOrProject: boolean;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "view";
        subject: "Space";
        resource: {
            organizationUuid: string;
            projectUuid: string;
            inheritsFromOrgOrProject: boolean;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "view";
        subject: "Project";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "create";
        subject: "Space";
        resource: {
            organizationUuid: string;
            projectUuid: string;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "create";
        subject: "DashboardComments";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "create";
        subject: "ScheduledDeliveries";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "Space";
        resource: {
            organizationUuid: string;
            projectUuid: string;
            inheritsFromOrgOrProject: boolean;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "Job";
        resource: {
            organizationUuid?: undefined;
            projectUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "PinnedItems";
        resource: {
            organizationUuid: string;
            projectUuid: string;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "Explore";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "Project";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "Validation";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "VirtualView";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "CustomSql";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "CustomFields";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "view";
        subject: "CompiledSql";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "CustomSqlTableCalculations";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "delete";
        subject: "Project";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "view";
        subject: "Analytics";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    })[];
    summary: {
        total: number;
        matches: number;
        mismatches: ({
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "Dashboard";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject: boolean;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "SavedChart";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject: boolean;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "Space";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject: boolean;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "Project";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "create";
            subject: "Space";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "create";
            subject: "DashboardComments";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "create";
            subject: "ScheduledDeliveries";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Space";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject: boolean;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Job";
            resource: {
                organizationUuid?: undefined;
                projectUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "PinnedItems";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Explore";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Project";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Validation";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "VirtualView";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "CustomSql";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "CustomFields";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "CompiledSql";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "CustomSqlTableCalculations";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "delete";
            subject: "Project";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "Analytics";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        })[];
        allMatch: boolean;
    };
};
/**
 * Runs a comprehensive comparison of all roles against standard test cases
 */
export declare const validateAllRoleMappings: (options?: {
    isEnterprise?: boolean;
}) => {
    roleResults: {
        role: ProjectMemberRole;
        scopes: string[];
        results: ({
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "Dashboard";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject: boolean;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "SavedChart";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject: boolean;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "Space";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject: boolean;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "Project";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "create";
            subject: "Space";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "create";
            subject: "DashboardComments";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "create";
            subject: "ScheduledDeliveries";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Space";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject: boolean;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Job";
            resource: {
                organizationUuid?: undefined;
                projectUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "PinnedItems";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Explore";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Project";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Validation";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "VirtualView";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "CustomSql";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "CustomFields";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "CompiledSql";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "CustomSqlTableCalculations";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "delete";
            subject: "Project";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "Analytics";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        })[];
        summary: {
            total: number;
            matches: number;
            mismatches: ({
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "view";
                subject: "Dashboard";
                resource: {
                    organizationUuid: string;
                    projectUuid: string;
                    inheritsFromOrgOrProject: boolean;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "view";
                subject: "SavedChart";
                resource: {
                    organizationUuid: string;
                    projectUuid: string;
                    inheritsFromOrgOrProject: boolean;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "view";
                subject: "Space";
                resource: {
                    organizationUuid: string;
                    projectUuid: string;
                    inheritsFromOrgOrProject: boolean;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "view";
                subject: "Project";
                resource: {
                    projectUuid: string;
                    organizationUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "create";
                subject: "Space";
                resource: {
                    organizationUuid: string;
                    projectUuid: string;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "create";
                subject: "DashboardComments";
                resource: {
                    projectUuid: string;
                    organizationUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "create";
                subject: "ScheduledDeliveries";
                resource: {
                    projectUuid: string;
                    organizationUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "manage";
                subject: "Space";
                resource: {
                    organizationUuid: string;
                    projectUuid: string;
                    inheritsFromOrgOrProject: boolean;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "manage";
                subject: "Job";
                resource: {
                    organizationUuid?: undefined;
                    projectUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "manage";
                subject: "PinnedItems";
                resource: {
                    organizationUuid: string;
                    projectUuid: string;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "manage";
                subject: "Explore";
                resource: {
                    projectUuid: string;
                    organizationUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "manage";
                subject: "Project";
                resource: {
                    projectUuid: string;
                    organizationUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "manage";
                subject: "Validation";
                resource: {
                    projectUuid: string;
                    organizationUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "manage";
                subject: "VirtualView";
                resource: {
                    projectUuid: string;
                    organizationUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "manage";
                subject: "CustomSql";
                resource: {
                    projectUuid: string;
                    organizationUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "manage";
                subject: "CustomFields";
                resource: {
                    projectUuid: string;
                    organizationUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "view";
                subject: "CompiledSql";
                resource: {
                    projectUuid: string;
                    organizationUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "manage";
                subject: "CustomSqlTableCalculations";
                resource: {
                    projectUuid: string;
                    organizationUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "delete";
                subject: "Project";
                resource: {
                    projectUuid: string;
                    organizationUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            } | {
                roleResult: boolean;
                scopeResult: boolean;
                match: boolean;
                action: "view";
                subject: "Analytics";
                resource: {
                    projectUuid: string;
                    organizationUuid?: undefined;
                    inheritsFromOrgOrProject?: undefined;
                };
            })[];
            allMatch: boolean;
        };
    }[];
    overallSummary: {
        rolesValidated: number;
        successfulRoles: ProjectMemberRole[];
        failedRoles: {
            role: ProjectMemberRole;
            mismatches: number;
        }[];
        totalTestCases: number;
        totalMatches: number;
    };
    allRolesValid: boolean;
};
/**
 * Debug utility to show what scopes are missing or extra for a specific role
 */
export declare const debugRoleScopeMapping: (role: ProjectMemberRole) => {
    role: ProjectMemberRole;
    scopes: string[];
    results: ({
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "view";
        subject: "Dashboard";
        resource: {
            organizationUuid: string;
            projectUuid: string;
            inheritsFromOrgOrProject: boolean;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "view";
        subject: "SavedChart";
        resource: {
            organizationUuid: string;
            projectUuid: string;
            inheritsFromOrgOrProject: boolean;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "view";
        subject: "Space";
        resource: {
            organizationUuid: string;
            projectUuid: string;
            inheritsFromOrgOrProject: boolean;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "view";
        subject: "Project";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "create";
        subject: "Space";
        resource: {
            organizationUuid: string;
            projectUuid: string;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "create";
        subject: "DashboardComments";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "create";
        subject: "ScheduledDeliveries";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "Space";
        resource: {
            organizationUuid: string;
            projectUuid: string;
            inheritsFromOrgOrProject: boolean;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "Job";
        resource: {
            organizationUuid?: undefined;
            projectUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "PinnedItems";
        resource: {
            organizationUuid: string;
            projectUuid: string;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "Explore";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "Project";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "Validation";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "VirtualView";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "CustomSql";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "CustomFields";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "view";
        subject: "CompiledSql";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "manage";
        subject: "CustomSqlTableCalculations";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "delete";
        subject: "Project";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    } | {
        roleResult: boolean;
        scopeResult: boolean;
        match: boolean;
        action: "view";
        subject: "Analytics";
        resource: {
            projectUuid: string;
            organizationUuid?: undefined;
            inheritsFromOrgOrProject?: undefined;
        };
    })[];
    summary: {
        total: number;
        matches: number;
        mismatches: ({
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "Dashboard";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject: boolean;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "SavedChart";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject: boolean;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "Space";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject: boolean;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "Project";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "create";
            subject: "Space";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "create";
            subject: "DashboardComments";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "create";
            subject: "ScheduledDeliveries";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Space";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject: boolean;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Job";
            resource: {
                organizationUuid?: undefined;
                projectUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "PinnedItems";
            resource: {
                organizationUuid: string;
                projectUuid: string;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Explore";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Project";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "Validation";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "VirtualView";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "CustomSql";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "CustomFields";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "CompiledSql";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "manage";
            subject: "CustomSqlTableCalculations";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "delete";
            subject: "Project";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        } | {
            roleResult: boolean;
            scopeResult: boolean;
            match: boolean;
            action: "view";
            subject: "Analytics";
            resource: {
                projectUuid: string;
                organizationUuid?: undefined;
                inheritsFromOrgOrProject?: undefined;
            };
        })[];
        allMatch: boolean;
    };
};
//# sourceMappingURL=roleToScopeMapping.testUtils.d.ts.map