/** A resource scope as the host sees it: exact names, or unknown ("*"). */ export interface ResourceScope { readonly exact: boolean; readonly names: readonly string[]; } export interface ResourceEffect { readonly effect: boolean; readonly ordered: boolean; readonly scope: ResourceScope; } /** Interpret a complete declaration: exact when nonempty with no empty or wildcard identity. */ export declare const resourceSource: (values: readonly unknown[] | undefined) => ResourceScope; export declare const decodeResourceScope: (scope: ResourceScope) => string[]; /** Check an untrusted proposal against the complete declaration: exact only when * the proposal names the same set, at most 64 valid names of at most 256 units. */ export declare const resourceNormalize: (values: readonly unknown[] | undefined, proposal: readonly unknown[]) => ResourceScope; export declare const boundedEffectResources: (resources: readonly string[] | undefined) => string[]; export declare const encodeResourceEffects: (effects: readonly { kind: string; ordering: string; resources: readonly string[]; }[]) => ResourceEffect[]; /** Whether any effect on the left conflicts with any effect on the right, * decided over every pair by the compiled groups kernel. Both sides' names * come from one table, so a name shared across them shares its id. */ export declare const resourceGroups: (left: readonly ResourceEffect[], right: readonly ResourceEffect[]) => boolean; export declare const resourceConflictOf: (left: ResourceScope, right: ResourceScope, leftOrdered: boolean, rightOrdered: boolean) => boolean; //# sourceMappingURL=resources.d.ts.map