/*!
 * Copyright (c) 2019 Contributors to the Eclipse Foundation
 *
 * See the NOTICE file(s) distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0
 *
 * SPDX-License-Identifier: EPL-2.0
 */
import { EntityWithId, IndexedEntityModel } from './model';
/**
 * Representation of a Policy
 */
export declare class Policy extends EntityWithId {
    private readonly _id;
    private readonly _entries;
    constructor(_id: string, _entries: Entries);
    /**
     * Parses a Policy.
     *
     * @param o - The object to parse.
     * @param id - The id of the new Policy.
     * @returns The Policy
     */
    static fromObject(o: any, id: string): Policy;
    toObject(): Object;
    get id(): string;
    get entries(): Entries;
}
/**
 * Representation of Entries
 */
export declare class Entries extends IndexedEntityModel<Entry> {
    /**
     * Parses Entries.
     *
     * @param o - The object to parse.
     * @returns The Entries
     */
    static fromObject(o: any): Entries;
}
/**
 * Representation of an Entry
 */
export declare class Entry extends EntityWithId {
    private readonly _id;
    private readonly _subjects;
    private readonly _resources;
    constructor(_id: string, _subjects: Subjects, _resources: Resources);
    /**
     * Parses an Entry.
     *
     * @param o - The object to parse.
     * @param label - The label of the new Entry.
     * @returns The Entry
     */
    static fromObject(o: any, label: string): Entry;
    toObject(): Object;
    get id(): string;
    get subjects(): Subjects;
    get resources(): Resources;
}
/**
 * Representation of Subjects
 */
export declare class Subjects extends IndexedEntityModel<Subject> {
    /**
     * Parses Subjects.
     *
     * @param o - The object to parse.
     * @returns The Subjects
     */
    static fromObject(o: any): Subjects;
}
/**
 * Representation of Resources
 */
export declare class Resources extends IndexedEntityModel<Resource> {
    /**
     * Parses Resources.
     *
     * @param o - The object to parse.
     * @returns The Resources
     */
    static fromObject(o: any): Resources;
}
export declare type SubjectIssuer = string;
export declare enum DittoSubjectIssuer {
    GOOGLE = "google",
    NGINX = "nginx"
}
export declare class SubjectId {
    private readonly _id;
    private constructor();
    static fromIssuerAndId(issuer: SubjectIssuer, subjectId: string): SubjectId;
    static fromString(subjectId: string): SubjectId;
    toString(): string;
}
export declare type SubjectType = string;
/**
 * Representation of a Subject
 */
export declare class Subject extends EntityWithId {
    private readonly _id;
    private readonly _type;
    constructor(_id: SubjectId, _type: SubjectType);
    /**
     * Parses a Subject.
     *
     * @param o - The object to parse.
     * @param id - The id of the new Subject.
     * @returns The Subject
     */
    static fromObject(o: any, id: string): Subject;
    toObject(): Object;
    get id(): string;
    get type(): SubjectType;
}
export declare enum AccessRight {
    Read = "READ",
    Write = "WRITE"
}
/**
 * Representation of a Resource
 */
export declare class Resource extends EntityWithId {
    private readonly _id;
    private readonly _grant;
    private readonly _revoke;
    constructor(_id: string, _grant: AccessRight[], _revoke: AccessRight[]);
    /**
     * Parses a Resource.
     *
     * @param o - The object to parse.
     * @param id - The id of the new Resource.
     * @returns The Resource
     */
    static fromObject(o: any, id: string): Resource;
    toObject(): Object;
    get id(): string;
    get grant(): AccessRight[];
    get revoke(): AccessRight[];
}
//# sourceMappingURL=policies.model.d.ts.map