import type { AddMemberParams, ClerkPaginatedResponse, ClerkResourceReloadParams, CreateOrganizationDomainParams, CreateOrganizationEnterpriseConnectionParams, CreateOrganizationParams, DeletedObjectResource, EnterpriseConnectionResource, EnterpriseConnectionTestRunInitResource, EnterpriseConnectionTestRunResource, GetDomainsParams, GetEnterpriseConnectionsParams, GetEnterpriseConnectionTestRunsParams, GetInvitationsParams, GetMembershipRequestParams, GetMemberships, GetRolesParams, InviteMemberParams, InviteMembersParams, OrganizationDomainResource, OrganizationDomainsBulkOwnershipVerificationResource, OrganizationInvitationResource, OrganizationJSON, OrganizationJSONSnapshot, OrganizationMembershipRequestResource, OrganizationResource, SetOrganizationLogoParams, UpdateMembershipParams, UpdateOrganizationEnterpriseConnectionParams, UpdateOrganizationParams } from '@clerk/shared/types';
import { addPaymentMethod, getPaymentMethods, initializePaymentMethod } from '../modules/billing';
import { BaseResource, OrganizationMembership } from './internal';
import { Role } from './Role';
export declare class Organization extends BaseResource implements OrganizationResource {
    pathRoot: string;
    id: string;
    name: string;
    slug: string;
    imageUrl: string;
    hasImage: boolean;
    publicMetadata: OrganizationPublicMetadata;
    adminDeleteEnabled: boolean;
    createdAt: Date;
    updatedAt: Date;
    membersCount: number;
    pendingInvitationsCount: number;
    maxAllowedMemberships: number;
    selfServeSSOEnabled: boolean;
    constructor(data: OrganizationJSON | OrganizationJSONSnapshot);
    static create(params: CreateOrganizationParams): Promise<OrganizationResource>;
    static get(organizationId: string): Promise<OrganizationResource>;
    update: (params: UpdateOrganizationParams) => Promise<OrganizationResource>;
    getRoles: (getRolesParams?: GetRolesParams) => Promise<{
        data: Role[];
        total_count: number;
        has_role_set_migration: boolean | undefined;
    }>;
    getDomains: (getDomainParams?: GetDomainsParams) => Promise<ClerkPaginatedResponse<OrganizationDomainResource>>;
    getDomain: ({ domainId }: {
        domainId: string;
    }) => Promise<OrganizationDomainResource>;
    getEnterpriseConnections: (params?: GetEnterpriseConnectionsParams) => Promise<EnterpriseConnectionResource[]>;
    createEnterpriseConnection: (params: CreateOrganizationEnterpriseConnectionParams) => Promise<EnterpriseConnectionResource>;
    updateEnterpriseConnection: (enterpriseConnectionId: string, params: UpdateOrganizationEnterpriseConnectionParams) => Promise<EnterpriseConnectionResource>;
    deleteEnterpriseConnection: (enterpriseConnectionId: string) => Promise<DeletedObjectResource>;
    createEnterpriseConnectionTestRun: (enterpriseConnectionId: string) => Promise<EnterpriseConnectionTestRunInitResource>;
    getEnterpriseConnectionTestRuns: (enterpriseConnectionId: string, params?: GetEnterpriseConnectionTestRunsParams) => Promise<ClerkPaginatedResponse<EnterpriseConnectionTestRunResource>>;
    getMembershipRequests: (getRequestParam?: GetMembershipRequestParams) => Promise<ClerkPaginatedResponse<OrganizationMembershipRequestResource>>;
    createDomain: (name: string, params?: Pick<CreateOrganizationDomainParams, "enrollmentMode">) => Promise<OrganizationDomainResource>;
    prepareOwnershipVerification: (domainIds: string[]) => Promise<OrganizationDomainsBulkOwnershipVerificationResource>;
    attemptOwnershipVerification: (domainIds: string[]) => Promise<OrganizationDomainsBulkOwnershipVerificationResource>;
    private bulkOwnershipVerification;
    getMemberships: GetMemberships;
    getInvitations: (getInvitationsParams?: GetInvitationsParams) => Promise<ClerkPaginatedResponse<OrganizationInvitationResource>>;
    addMember: ({ userId, role }: AddMemberParams) => Promise<OrganizationMembership>;
    inviteMember: (params: InviteMemberParams) => Promise<OrganizationInvitationResource>;
    inviteMembers: (params: InviteMembersParams) => Promise<OrganizationInvitationResource[]>;
    updateMember: ({ userId, role }: UpdateMembershipParams) => Promise<OrganizationMembership>;
    removeMember: (userId: string) => Promise<OrganizationMembership>;
    destroy: () => Promise<void>;
    setLogo: ({ file }: SetOrganizationLogoParams) => Promise<OrganizationResource>;
    initializePaymentMethod: typeof initializePaymentMethod;
    addPaymentMethod: typeof addPaymentMethod;
    getPaymentMethods: typeof getPaymentMethods;
    protected fromJSON(data: OrganizationJSON | OrganizationJSONSnapshot | null): this;
    __internal_toSnapshot(): OrganizationJSONSnapshot;
    reload(params?: ClerkResourceReloadParams): Promise<this>;
}
