import { GranteeType, NormalizedPermission, PermissionAction, PermissionCheckResult, PermissionProviderBase, UserInfo } from '@memberjunction/core';
/**
 * Wraps the `MJ: Artifact Permissions` table behind the unified
 * {@link PermissionProviderBase} contract. Artifact permissions are user-only
 * and cover Read / Update / Delete / Share.
 *
 * This provider reads the permission table directly via RunView; it does NOT
 * duplicate the cascade-from-collection logic of the Angular-side
 * `ArtifactPermissionService`. Cascade evaluation belongs in the Sharing Center
 * when it aggregates across both Artifact + Collection domains.
 *
 * `resourceType` is `"Artifacts"`. `resourceId` is the artifact ID.
 */
export declare class ArtifactPermissionProvider extends PermissionProviderBase {
    readonly DomainName = "Artifact Permissions";
    readonly Description = "User-level sharing permissions on conversation artifacts (Read/Update/Delete/Share)";
    readonly SupportedGranteeTypes: GranteeType[];
    readonly SupportedActions: PermissionAction[];
    readonly SupportsDeny = false;
    GetResourceTypes(): string[];
    CheckPermission(user: UserInfo, _resourceType: string, resourceId: string | null, action: PermissionAction): Promise<PermissionCheckResult>;
    GetEffectivePermissions(user: UserInfo, _resourceType: string, resourceId: string): Promise<NormalizedPermission[]>;
    GetUserResources(user: UserInfo, resourceType?: string): Promise<NormalizedPermission[]>;
    /**
     * ArtifactPermission rows where this user is the grantee AND someone else
     * is the grantor. Excludes rows the user created for themselves.
     */
    GetPermissionsSharedWithUser(grantee: UserInfo): Promise<NormalizedPermission[]>;
    /**
     * All ArtifactPermission rows where this user is the SharedByUserID. Unlike
     * Dashboards, Artifacts track the grantor explicitly — there's no implicit
     * "owner without SharedByUserID" case in this table.
     */
    GetPermissionsGrantedByUser(grantor: UserInfo): Promise<NormalizedPermission[]>;
    GetResourcePermissions(resourceType: string, resourceId: string): Promise<NormalizedPermission[]>;
    /**
     * Shared tail for `GetUserResources` and `GetPermissionsSharedWithUser` — both
     * emit one row per permission keyed to a specific grantee. Caller passes a
     * function to pluck the grantee ID since the column differs subtly across paths.
     */
    private expandRowsAsGrantee;
    private fetchPermissionForUser;
    private toActions;
}
//# sourceMappingURL=ArtifactPermissionProvider.d.ts.map