/** @packageDocumentation
 * @module iTwinsClient
 */
import type { AccessToken } from "@itwin/core-bentley";
/** Methods for accessing itwins
 * @beta
 */
export interface ITwinsAccess {
    /** Get iTwins */
    queryAsync(accessToken: AccessToken, subClass?: ITwinSubClass, arg?: ITwinsQueryArg): Promise<ITwinsAPIResponse<ITwin[]>>;
    /** Get iTwins */
    queryRepositoriesAsync(accessToken: AccessToken, iTwinId: string): Promise<ITwinsAPIResponse<Repository[]>>;
    /** Get an ITwin */
    getAsync(accessToken: AccessToken, iTwinId: string, resultMode?: ITwinResultMode): Promise<ITwinsAPIResponse<ITwin>>;
    /** Get favorited iTwins */
    queryFavoritesAsync(accessToken: AccessToken, subClass?: ITwinSubClass, arg?: ITwinsQueryArgBase): Promise<ITwinsAPIResponse<ITwin[]>>;
    /** Get recent iTwins */
    queryRecentsAsync(accessToken: AccessToken, subClass?: ITwinSubClass, arg?: ITwinsQueryArgBase): Promise<ITwinsAPIResponse<ITwin[]>>;
    /** Get the primary account ITwin */
    getPrimaryAccountAsync(accessToken: AccessToken): Promise<ITwinsAPIResponse<ITwin>>;
    getAccountAsync(accessToken: AccessToken, iTwinId: string, resultMode?: ITwinResultMode): Promise<ITwinsAPIResponse<ITwin>>;
}
export interface ITwinsAPIResponse<T> {
    data?: T;
    status: number;
    error?: Error;
}
/** The ITwin object. Contains extra properties with "representation" result mode.
 * @beta
 */
export interface ITwin {
    id?: string;
    class?: ITwinClass;
    subClass?: ITwinSubClass;
    type?: string;
    displayName?: string;
    number?: string;
    dataCenterLocation?: string;
    status?: string;
    parentId?: string;
    iTwinAccountId?: string;
    ianaTimeZone?: string | null;
    imageName?: string | null;
    image?: string | null;
    createdDateTime?: string;
    createdBy?: string;
    geographicLocation?: string;
}
/** The simplified Repository object
 * @beta
 */
export interface Repository {
    id?: string;
    class: RepositoryClass;
    subClass: RepositorySubClass;
    uri: string;
}
export declare enum ITwinSubClass {
    Account = "Account",
    Asset = "Asset",
    Project = "Project",
    Portfolio = "Portfolio",
    Program = "Program",
    WorkPackage = "WorkPackage"
}
export declare enum ITwinClass {
    Account = "Account",
    Thing = "Thing",
    Endeavor = "Endeavor"
}
export declare enum RepositoryClass {
    iModels = "iModels",
    Storage = "Storage",
    Forms = "Forms",
    Issues = "Issues",
    RealityData = "RealityData",
    GeographicInformationSystem = "GeographicInformationSystem"
}
export declare enum RepositorySubClass {
    WebMapService = "WebMapService",
    WebMapTileService = "WebMapTileService",
    MapServer = "MapServer"
}
/**
 * Optional result mode. Minimal is the default, representation returns extra properties
 */
export declare type ITwinResultMode = "minimal" | "representation";
/**
 * Optional query scope. MemberOfITwin is the default. This is used to expand the scope of the query to all iTwins you have access to, not just ones that you are a member of, which only applies to organization administrators.
 */
export declare type ITwinQueryScope = "memberOfItwin" | "all";
/** Set of optional arguments used for querying the iTwins API
 * @beta
 */
export interface ITwinsQueryArg extends ITwinsQueryArgBase {
    search?: string;
    displayName?: string;
    number?: string;
    parentId?: string;
    iTwinAccountId?: string;
}
export interface ITwinsQueryArgBase {
    subClass?: ITwinSubClass;
    status?: string;
    type?: string;
    top?: number;
    skip?: number;
    includeInactive?: boolean;
    resultMode?: ITwinResultMode;
    queryScope?: ITwinQueryScope;
}
/** Set of optional arguments used for querying Respositories API
 *
 */
export interface RepositoriesQueryArg {
    class?: string;
    subClass?: string;
}
export interface Error {
    code: string;
    message: string;
    details?: ErrorDetail[];
    target?: string;
}
export interface ErrorDetail {
    code: string;
    message: string;
    target?: string;
}
//# sourceMappingURL=iTwinsAccessProps.d.ts.map