import * as interfaces from '../dist_ts_interfaces/index.js';
import type { DcRouterApiClient } from './classes.dcrouterapiclient.js';
export declare class ApiToken {
    private clientRef;
    id: string;
    name: string;
    scopes: interfaces.data.TApiTokenScope[];
    createdAt: number;
    expiresAt: number | null;
    lastUsedAt: number | null;
    enabled: boolean;
    /** Only set on creation or roll. Not persisted on server side. */
    tokenValue?: string;
    constructor(clientRef: DcRouterApiClient, data: interfaces.data.IApiTokenInfo, tokenValue?: string);
    revoke(): Promise<void>;
    roll(): Promise<string>;
    toggle(enabled: boolean): Promise<void>;
}
export declare class ApiTokenBuilder {
    private clientRef;
    private tokenName;
    private tokenScopes;
    private tokenExpiresInDays?;
    constructor(clientRef: DcRouterApiClient);
    setName(name: string): this;
    setScopes(scopes: interfaces.data.TApiTokenScope[]): this;
    addScope(scope: interfaces.data.TApiTokenScope): this;
    setExpiresInDays(days: number | null): this;
    save(): Promise<ApiToken>;
}
export declare class ApiTokenManager {
    private clientRef;
    constructor(clientRef: DcRouterApiClient);
    list(): Promise<ApiToken[]>;
    create(options: {
        name: string;
        scopes: interfaces.data.TApiTokenScope[];
        expiresInDays?: number | null;
    }): Promise<ApiToken>;
    build(): ApiTokenBuilder;
}
