import { type AtprotoDidRefAbsolute, isAtprotoDidRefAbsolute } from '@atproto/did';
import { type Nsid, isNsid } from '../lib/nsid.js';
import { Parser } from '../lib/parser.js';
import type { ResourcePermission } from '../lib/resource-permission.js';
import { type NeRoArray, type ScopeSyntax } from '../lib/syntax.js';
export { type AtprotoDidRefAbsolute, type Nsid, isAtprotoDidRefAbsolute, isNsid, };
export type LxmParam = '*' | Nsid;
export declare const isLxmParam: (value: unknown) => value is LxmParam;
export type AudParam = '*' | AtprotoDidRefAbsolute;
export declare const isAudParam: (value: unknown) => value is AudParam;
export type RpcPermissionMatch = {
    lxm: string;
    aud: string;
};
export declare class RpcPermission implements ResourcePermission<'rpc', RpcPermissionMatch> {
    readonly aud: AudParam;
    readonly lxm: NeRoArray<LxmParam>;
    constructor(aud: AudParam, lxm: NeRoArray<LxmParam>);
    matches(options: RpcPermissionMatch): boolean;
    toString(): import("../lib/syntax.js").ScopeStringFor<"rpc">;
    protected static readonly parser: Parser<"rpc", {
        lxm: {
            multiple: true;
            required: true;
            validate: typeof isLxmParam;
            normalize: (value: NeRoArray<import("../lib/syntax.js").ParamValue>) => [`${string}.${string}.${string}`, ...`${string}.${string}.${string}`[]] | readonly ["*"];
        };
        aud: {
            multiple: false;
            required: true;
            validate: typeof isAudParam;
        };
    }>;
    static fromString(scope: string): RpcPermission | null;
    static fromSyntax(syntax: ScopeSyntax<'rpc'>): RpcPermission | null;
    static scopeNeededFor(options: RpcPermissionMatch): string;
}
//# sourceMappingURL=rpc-permission.d.ts.map