import { EmptyStateMetadata } from '../../molecules/empty-state/types';
import { ButtonMetadata } from '../../types';
import { AuthService } from '../../../services/auth/auth.service';
import { OrgRole, Organization } from '../../../services/org/types';
import { MemberDetail } from '../member-detail-modal/types';
import { OrganizationViewConfig } from './types';
import * as i0 from "@angular/core";
/**
 * `val-organization-view` — vista Gestión de organización full-feature
 * autocontenida (organism). Promovida desde `showcase` bajo el proceso de
 * ADR-021. Reúne:
 *  - **Información** — nombre, descripción, plan y tipo de la org activa; editar
 *    vía modal `val-edit-org-modal` (solo si `canEditOrg()`).
 *  - **Miembros** — lista paginada (`val-member-card`) enriquecida con perfiles
 *    públicos (Firestore); ver detalle vía `val-member-detail-modal`.
 *  - **Roles y permisos** — sección explicativa con CTA a la ruta de permisos.
 *  - **Invitar** — CTA que abre `val-invite-member-modal` (gateada por `users:*`).
 *  - **Transferir propiedad** — `val-transfer-ownership-modal` (solo owner).
 *  - **Salir de la organización** — `OrgService.leaveOrg` con confirmación
 *    destructiva.
 *
 * **RBAC interno** (decisión CTO, ADR-021): el gating fino se resuelve dentro de
 * la vista vía `AuthService.hasPermission()` + `*valHasPermission` + computeds
 * `isOwner()`/`canManageMembers()`/`canEditOrg()`. NO se expone como config.
 *
 * **Auto-reload en org-switch**: un `effect` reactiona a `activeOrgId()` y recarga
 * org + miembros cuando el usuario cambia de organización activa mientras la vista
 * está montada. El effect cubre también la carga inicial (sin doble carga).
 *
 * NO renderiza ion-content — vive dentro de val-page-wrapper. `ActivatedRoute` se
 * inyecta `{ optional: true }` solo para leer el route data de config (no-op
 * embebido). Auto-registra sus defaults i18n (es/en) si el consumer no proveyó el
 * namespace (default `Settings.Organization`).
 */
export declare class OrganizationViewComponent {
    private nav;
    private i18n;
    readonly auth: AuthService;
    private orgService;
    private toast;
    private errors;
    private modalService;
    private firestore;
    private confirmDialog;
    private route;
    readonly isDebug: boolean;
    /**
     * Config vía @Input (object-first). Si no se pasa, se cae al route data
     * `organizationConfig` (poblado por `provideValtechOrganizationRoutes`).
     * `resolvedConfig` mergea con los defaults — `@Input` gana sobre route data.
     */
    config?: OrganizationViewConfig;
    readonly resolvedConfig: import("@angular/core").Signal<Required<Omit<OrganizationViewConfig, "onOrgEdited" | "onMemberInvited" | "onOwnershipTransferred" | "onLeftOrg">> & Pick<OrganizationViewConfig, "onOrgEdited" | "onMemberInvited" | "onOwnershipTransferred" | "onLeftOrg">>;
    /** Namespace i18n resuelto (capturado para llamadas no-reactivas). */
    private get ns();
    readonly org: import("@angular/core").WritableSignal<Organization>;
    readonly loading: import("@angular/core").WritableSignal<boolean>;
    readonly leaving: import("@angular/core").WritableSignal<boolean>;
    private readonly orgLoadError;
    readonly orgErrorState: import("@angular/core").Signal<EmptyStateMetadata>;
    readonly members: import("@angular/core").WritableSignal<MemberDetail[]>;
    readonly membersLoading: import("@angular/core").WritableSignal<boolean>;
    private readonly membersLoadError;
    readonly membersErrorState: import("@angular/core").Signal<EmptyStateMetadata>;
    readonly membersNextToken: import("@angular/core").WritableSignal<string>;
    readonly loadingMoreMembers: import("@angular/core").WritableSignal<boolean>;
    readonly showAllMembers: import("@angular/core").WritableSignal<boolean>;
    readonly visibleMembers: import("@angular/core").Signal<MemberDetail[]>;
    readonly transferring: import("@angular/core").WritableSignal<boolean>;
    readonly availableRoles: import("@angular/core").WritableSignal<OrgRole[]>;
    readonly activeOrgId: import("@angular/core").Signal<string>;
    readonly userId: import("@angular/core").Signal<string>;
    readonly isOwner: import("@angular/core").Signal<boolean>;
    readonly canEditOrg: import("@angular/core").Signal<boolean>;
    readonly canManageMembers: import("@angular/core").Signal<boolean>;
    readonly pageTitle: import("@angular/core").Signal<string>;
    readonly pageDescription: import("@angular/core").Signal<string>;
    readonly planLabel: import("@angular/core").Signal<string>;
    readonly editButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
    readonly leaveButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
    readonly transferableMembers: import("@angular/core").Signal<MemberDetail[]>;
    readonly viewPermissionsButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
    readonly transferButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
    readonly openInviteButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
    readonly openImportButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
    readonly openApiKeysButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
    /** Guarda para detectar el primer disparo del effect (evita doble carga). */
    private lastLoadedOrgId;
    constructor();
    onEdit(): void;
    onLeave(): Promise<void>;
    onOpenInvite(): void;
    onOpenImport(): void;
    onOpenApiKeys(): void;
    onOrgInfo(): void;
    onViewPermissions(): void;
    onOpenTransfer(): void;
    onTransfer(newOwnerId: string): Promise<void>;
    private loadOrg;
    loadMembers(): Promise<void>;
    loadMoreMembers(): void;
    private enrichWithProfiles;
    loadRoles(): void;
    roleLabel(roleIdOrName: string): string;
    permissionLabel(perm: string): string;
    onViewMember(member: MemberDetail): void;
    protected tt(key: string): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationViewComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OrganizationViewComponent, "val-organization-view", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, true, never>;
}
