import { IHttpClient } from '../http';
import { PagedResult, BaseResource, Resource, PagedResource } from './resource';
import { StoragePlatform, Connection, Account, Group, PlatformItem, PlatformItemHierarchyLinks, ConnectionAuthorizePrompt, ItemStats } from '../models';
import { CancellationToken } from '../cancellation-token';
export declare class StoragePlatformsResource extends Resource<StoragePlatform> {
    constructor(httpClient: IHttpClient);
    authorize(platform: string, params?: any, token?: CancellationToken): Promise<ConnectionAuthorizePrompt>;
}
export declare class ConnectionsResource extends PagedResource<Connection> {
    constructor(httpClient: IHttpClient);
    authorize(platform: string, params?: any, token?: CancellationToken): Promise<ConnectionAuthorizePrompt>;
    edit(id: string, params?: any, token?: CancellationToken): Promise<ConnectionAuthorizePrompt>;
    assignPool(id: string, body: any, params?: any, token?: CancellationToken): Promise<Connection>;
    unassignPool(id: string, params?: any, token?: CancellationToken): Promise<Connection>;
}
export declare class SecurityIdentifierResource<TResource> extends BaseResource {
    private resourceType;
    private pluralType;
    constructor(httpClient: IHttpClient, resourceType: string);
    list(connection: string, params?: any, token?: CancellationToken): Promise<TResource[]>;
    page(connection: string, params?: any, token?: CancellationToken): Promise<PagedResult<TResource>>;
    get(connection: string, id: any, params?: any, token?: CancellationToken): Promise<TResource>;
}
export declare class ConnectionItemsResource extends BaseResource {
    constructor(httpClient: IHttpClient);
    private byHref;
    list(connection: string, { id, ...params }?: any, token?: CancellationToken): Promise<PlatformItem[]>;
    page(connection: string, { id, ...params }?: any, token?: CancellationToken): Promise<PagedResult<PlatformItem>>;
    byRoot(connection: string, params?: any, token?: CancellationToken): Promise<PagedResult<PlatformItem>>;
    byParent(parent: {
        links: PlatformItemHierarchyLinks;
    }, params?: any, token?: CancellationToken): Promise<PagedResult<PlatformItem>>;
}
export declare class ConnectionStatsResource extends BaseResource {
    constructor(httpClient: IHttpClient);
    get(connection: string, params?: any, token?: CancellationToken): Promise<ItemStats>;
    downloadCsv(connection: string, params?: any, token?: CancellationToken): Promise<string>;
}
export declare class ConnectionAccountsResource extends SecurityIdentifierResource<Account> {
    constructor(httpClient: IHttpClient);
}
export declare class ConnectionGroupsResource extends SecurityIdentifierResource<Group> {
    constructor(httpClient: IHttpClient);
}
