import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { ValtechAuthConfig } from '../auth/types';
import { Organization, ListMyOrgsResponse, CreateOrgRequest, UpdateOrgRequest, InviteUserRequest, InviteUserResponse, LeaveOrgResponse, ListOrgMembersResponse, OrgRole, ChangeMemberRoleResponse, PendingInvitation, AcceptInvitationResponse, ImportMembersRequest, ImportMembersResponse } from './types';
import * as i0 from "@angular/core";
export declare class OrgService {
    private config;
    private http;
    constructor(config: ValtechAuthConfig, http: HttpClient);
    private get baseUrl();
    listMyOrgs(): Observable<Organization[]>;
    listMyOrgsPage(params?: {
        limit?: number;
        nextToken?: string;
    }): Observable<ListMyOrgsResponse>;
    getOrg(orgId: string): Observable<Organization>;
    createOrg(req: CreateOrgRequest): Observable<Organization>;
    updateOrg(orgId: string, req: UpdateOrgRequest): Observable<Organization>;
    deleteOrg(orgId: string): Observable<{
        deleted: boolean;
        message: string;
    }>;
    inviteUser(orgId: string, req: InviteUserRequest): Observable<InviteUserResponse>;
    /**
     * Crea/asigna miembros en masa (ADR-023). Resultado por-fila (partial success):
     * `created` (pre-aprovisionado), `assigned` (ya existía), `skipped`, `error`.
     */
    importMembers(orgId: string, req: ImportMembersRequest): Observable<ImportMembersResponse>;
    leaveOrg(orgId: string): Observable<LeaveOrgResponse>;
    getOrgMembers(orgId: string, params?: {
        limit?: number;
        nextToken?: string;
    }): Observable<ListOrgMembersResponse>;
    listOrgRoles(orgId: string): Observable<OrgRole[]>;
    changeMemberRole(orgId: string, userId: string, roleId: string): Observable<ChangeMemberRoleResponse>;
    removeMember(orgId: string, userId: string): Observable<void>;
    transferOwnership(orgId: string, newOwnerId: string): Observable<Organization>;
    validateInviteToken(token: string): Observable<{
        valid: boolean;
        actionType?: string;
        targetType?: string;
        targetId?: string;
        data?: {
            orgName?: string;
            roleId?: string;
            inviterName?: string;
        };
        message?: string;
    }>;
    executeInviteToken(token: string): Observable<{
        success: boolean;
        message: string;
        data?: {
            organizationId?: string;
            organizationName?: string;
            roleId?: string;
        };
    }>;
    getPendingInvitations(): Observable<PendingInvitation[]>;
    acceptInvitation(orgId: string): Observable<AcceptInvitationResponse>;
    declineInvitation(orgId: string): Observable<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<OrgService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<OrgService>;
}
