/// <reference types="bluebird" />
import * as Promise from 'bluebird';
import { HudAiCreateAttributes, HudAiListAttributes, HudAiUpdateAttributes, Resource } from '../utils/Resource';
import { RequestManager } from '../RequestManager';
import { Organization, OrganizationUserRole, User, OrganizationFeedSettings } from '../entities';
export interface OrganizationListAttributes extends HudAiListAttributes {
    id?: string;
    name?: string;
    planId?: string;
    emailDomain?: string;
    ownerUserId?: string;
}
export interface OrganizationCreateAttributes extends HudAiCreateAttributes {
    name?: string;
    maxBillableAccounts?: number;
    emailDomain: string;
    signedLicenseAgreementAt?: Date;
    ownerUserId?: string;
    planId?: string;
}
export interface OrganizationUpdateAttributes extends HudAiUpdateAttributes {
    name?: string;
    maxBillableAccounts?: number;
    emailDomain?: string;
    signedLicenseAgreementAt?: Date;
    ownerUserId?: string;
    planId?: string;
}
export interface OrganizationSubscriptionCreateAttributes extends HudAiCreateAttributes {
    plan: string;
    source?: string;
}
export interface OrganizationUserListAttributes extends HudAiListAttributes {
    organizationId: string;
    email?: string;
    name?: string;
}
export interface OrganizationUserActivateAttributes {
    organizationId: string;
    userId: string;
    role?: string;
}
export interface OrganizationUserDeactivateAttributes {
    organizationId: string;
    userId: string;
}
export interface OrganizationUserRoleGetAttributes {
    organizationId: string;
    userId: string;
}
export interface OrganizationUserRoleUpdateAttributes {
    organizationId: string;
    userId: string;
    role: 'admin' | 'owner' | 'manager' | 'member';
}
export interface OrganizationFeedSettingsGetAttributes {
    organizationId: string;
}
export interface OrganizationFeedSettingsUpdateAttributes {
    organizationId: string;
    importance?: number;
    article?: number;
    tweet?: number;
    quote?: number;
    stockAlert?: number;
    video?: number;
    businessWord?: number;
    feedContext?: number;
    followedPerson?: number;
    industryTerm?: number;
    jobFunctionTerm?: number;
    corpusTerm?: number;
    source?: number;
    minImportance?: number;
    decay?: number;
    decayOffset?: string;
}
export interface OrganizationFeedSettingsDeleteAttributes {
    organizationId: string;
}
export declare class OrganizationResource extends Resource<Organization, OrganizationListAttributes, OrganizationCreateAttributes, OrganizationUpdateAttributes> {
    constructor(requestManager: RequestManager);
    list(listArgs: OrganizationListAttributes): Promise<{
        count: number;
        rows: Organization[];
    }>;
    create(createArgs: OrganizationCreateAttributes): Promise<Organization>;
    get(id: string): Promise<Organization>;
    update(id: string, updateArgs: OrganizationUpdateAttributes): Promise<Organization>;
    del(id: string): Promise<void>;
    destroy(id: string): Promise<void>;
    getRole(args: OrganizationUserRoleGetAttributes): Promise<OrganizationUserRole>;
    updateRole(args: OrganizationUserRoleUpdateAttributes): Promise<OrganizationUserRole>;
    getFeedSettings(args: OrganizationFeedSettingsGetAttributes): Promise<OrganizationFeedSettings>;
    updateFeedSettings(args: OrganizationFeedSettingsUpdateAttributes): Promise<OrganizationFeedSettings>;
    deleteFeedSettings(args: OrganizationFeedSettingsDeleteAttributes): Promise<OrganizationFeedSettings>;
    activateUser(args: OrganizationUserActivateAttributes): Promise<User>;
    deactivateUser(args: OrganizationUserDeactivateAttributes): Promise<User>;
    getUsers(listArgs: OrganizationUserListAttributes): Promise<{
        count: number;
        rows: User[];
    }>;
    createSubscription(args: OrganizationSubscriptionCreateAttributes): Promise<any>;
    cancelSubscription(): Promise<any>;
    getSubscription(): Promise<any>;
}
