import type { CollectionResult } from "./collectionResult";
import type { LaraClient } from "./net/lara";
import type { PermissionMask } from "./permissions";
import type { ResourceQueryOptions } from "./resourceQuery";
export interface Styleguide {
    id: string;
    name: string;
    content?: string;
    ownerId: string;
    createdAt: Date;
    updatedAt: Date;
    sharedAt: Date;
    /**
     * Effective combined mask in GET list and detail responses; the selected share's stored mask
     * on the resource embedded in GET /shares responses. Omitted from non-GET responses.
     */
    permissionMask?: PermissionMask;
}
export interface StyleguideShareEntry {
    readonly id: string;
    readonly name: string;
    readonly shareName: string;
    readonly sharedAt: Date;
    /** The permissions stored on this share. */
    readonly permissionMask: PermissionMask;
}
export interface StyleguideShares {
    readonly styleguide: Styleguide;
    readonly account: StyleguideShareEntry | null;
    readonly groups: StyleguideShareEntry[];
    readonly users: StyleguideShareEntry[];
}
export declare class Styleguides {
    private readonly client;
    constructor(client: LaraClient);
    /** @deprecated Use listPaginated() instead. */
    list(): Promise<Styleguide[]>;
    /**
     * List resources with optional name filtering and pagination.
     * Without options, returns the complete list of resources without pagination.
     * Providing search, page, or size enables pagination; omitted page and size default to 1 and 20.
     */
    listPaginated(options?: ResourceQueryOptions): Promise<CollectionResult<Styleguide>>;
    get(id: string): Promise<Styleguide | null>;
    create(name: string, content: string): Promise<Styleguide>;
    update(id: string, name: string | undefined, content?: string): Promise<Styleguide>;
    delete(id: string): Promise<Styleguide>;
    getShares(id: string): Promise<StyleguideShares>;
    addAccountShare(id: string, name?: string): Promise<Styleguide>;
    revokeAccountShare(id: string): Promise<Styleguide>;
    renameAccountShare(id: string, name: string): Promise<Styleguide>;
    addGroupShare(id: string, groupId: string, name?: string): Promise<Styleguide>;
    revokeGroupShare(id: string, groupId: string): Promise<Styleguide>;
    renameGroupShare(id: string, groupId: string, name: string): Promise<Styleguide>;
}
