import { AfterViewInit, ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
import { NormalizedPermission } from '@memberjunction/core';
import { MJPermissionDomainEntity, ResourceData } from '@memberjunction/core-entities';
import { BaseResourceComponent } from '@memberjunction/ng-shared';
import * as i0 from "@angular/core";
/**
 * Resource Access Report resource — one of three tabs in the Permissions admin application.
 * Given a (domain, resource type, resource ID) triple, lists every grantee on that resource
 * with their effective actions, effect (Allow/Deny), and optional expiration.
 * Powered by `PermissionEngine.GetResourcePermissions`.
 */
export declare class PermissionsResourceAccessResourceComponent extends BaseResourceComponent implements OnInit, AfterViewInit, OnDestroy {
    private cdr;
    Domains: MJPermissionDomainEntity[];
    SelectedDomainName: string | null;
    /** Auto-populated whenever the selected domain changes. Empty = adapter doesn't enumerate its types. */
    ResourceTypes: string[];
    ResourceTypeInput: string;
    ResourceIdInput: string;
    ResourceAccessRows: NormalizedPermission[];
    IsLoading: boolean;
    LastQueryLabel: string | null;
    ErrorMessage: string | null;
    /** Message shown when a lookup returns no grantees (echoes the query). */
    get NoGranteesMessage(): string;
    constructor(cdr: ChangeDetectorRef);
    GetResourceDisplayName(_data: ResourceData): Promise<string>;
    GetResourceIconClass(_data: ResourceData): Promise<string>;
    ngOnInit(): Promise<void>;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    /**
     * Publish the current resource-access state to the AI agent. Re-invoked on
     * every meaningful state change (domain change, lookup completion). The shaping
     * lives in the pure {@link buildResourceAccessAgentContext} helper so it stays
     * unit-testable and decoupled from change-detection timing.
     */
    private publishAgentContext;
    /** Domain candidates (id+name) for the tolerant id→name→contains resolver. */
    private domainCandidates;
    /**
     * Register the read-only / lookup client tools the agent may invoke. Every
     * Handler is tolerant: validates input and returns
     * `{ Success: false, ErrorMessage }` rather than throwing.
     */
    private registerAgentClientTools;
    private handleLookupResourceTool;
    private handleChangeDomainTool;
    private handleListResourceTypesTool;
    private handleSearchGranteesTool;
    OnLookupResource(): Promise<void>;
    OnDomainChanged(domainName: string): void;
    /**
     * Populate {@link ResourceTypes} from the provider behind `domainName`. If the
     * current `ResourceTypeInput` isn't a member of the new list, clear it — the
     * previous choice doesn't make sense against a different domain. When a
     * domain has exactly one supported type we auto-select it so the user
     * doesn't have to open the picker for a trivial choice.
     */
    private loadResourceTypesForDomain;
    TrackByResourceRow(_index: number, row: NormalizedPermission): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<PermissionsResourceAccessResourceComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<PermissionsResourceAccessResourceComponent, "mj-permissions-resource-access-resource", never, {}, {}, never, never, false, never>;
}
/** Tree-shaking prevention — referenced from `public-api.ts`. */
export declare function LoadPermissionsResourceAccessResource(): void;
//# sourceMappingURL=resource-access-resource.component.d.ts.map