import type { Message, Resource } from "../ast/index.js"; import type { Result } from "../utilities/result.js"; /** * Query a resource. * * All actions are immutable. * * @example * const message = query(resource).get({ id: "first-message" }); * * @example * const updatedResource = query(resource).delete({ id: "example" }); */ export declare function query(resource: Resource): { /** * Creates a message in a resource. * * Returns an error if the message already exists, or the resource * does not exist. */ create: (args: Parameters[1]) => Result & { type: "Resource"; metadata?: any; } & { languageTag: Record & { type: "LanguageTag"; metadata?: any; } & { name: string; }; body: (Record & { type: "Message"; metadata?: any; } & { id: Record & { type: "Identifier"; metadata?: any; } & { name: string; }; pattern: Record & { type: "Pattern"; metadata?: any; } & { elements: ((Record & { type: "Text"; metadata?: any; } & { value: string; }) | (Record & { type: "Placeholder"; metadata?: any; } & { body: Record & { type: "VariableReference"; metadata?: any; } & { name: string; }; }))[]; }; })[]; }, MessageAlreadyExistsException>; /** * Get a message. * * Returns undefined if the message does not exist. */ get: (args: Parameters[1]) => (Record & { type: "Message"; metadata?: any; } & { id: Record & { type: "Identifier"; metadata?: any; } & { name: string; }; pattern: Record & { type: "Pattern"; metadata?: any; } & { elements: ((Record & { type: "Text"; metadata?: any; } & { value: string; }) | (Record & { type: "Placeholder"; metadata?: any; } & { body: Record & { type: "VariableReference"; metadata?: any; } & { name: string; }; }))[]; }; }) | undefined; /** * Updates a message. * * Returns an error if the message does not exist. */ update: (args: Parameters[1]) => Result & { type: "Resource"; metadata?: any; } & { languageTag: Record & { type: "LanguageTag"; metadata?: any; } & { name: string; }; body: (Record & { type: "Message"; metadata?: any; } & { id: Record & { type: "Identifier"; metadata?: any; } & { name: string; }; pattern: Record & { type: "Pattern"; metadata?: any; } & { elements: ((Record & { type: "Text"; metadata?: any; } & { value: string; }) | (Record & { type: "Placeholder"; metadata?: any; } & { body: Record & { type: "VariableReference"; metadata?: any; } & { name: string; }; }))[]; }; })[]; }, MessageDoesNotExistsException>; /** * Upserts a message. */ upsert: (args: Parameters[1]) => Result & { type: "Resource"; metadata?: any; } & { languageTag: Record & { type: "LanguageTag"; metadata?: any; } & { name: string; }; body: (Record & { type: "Message"; metadata?: any; } & { id: Record & { type: "Identifier"; metadata?: any; } & { name: string; }; pattern: Record & { type: "Pattern"; metadata?: any; } & { elements: ((Record & { type: "Text"; metadata?: any; } & { value: string; }) | (Record & { type: "Placeholder"; metadata?: any; } & { body: Record & { type: "VariableReference"; metadata?: any; } & { name: string; }; }))[]; }; })[]; }, Error>; /** * Delete a message. * * Returns an error if the message did not exist. */ delete: (args: Parameters[1]) => Result & { type: "Resource"; metadata?: any; } & { languageTag: Record & { type: "LanguageTag"; metadata?: any; } & { name: string; }; body: (Record & { type: "Message"; metadata?: any; } & { id: Record & { type: "Identifier"; metadata?: any; } & { name: string; }; pattern: Record & { type: "Pattern"; metadata?: any; } & { elements: ((Record & { type: "Text"; metadata?: any; } & { value: string; }) | (Record & { type: "Placeholder"; metadata?: any; } & { body: Record & { type: "VariableReference"; metadata?: any; } & { name: string; }; }))[]; }; })[]; }, MessageDoesNotExistsException>; /** * Included message ids in a resource. */ includedMessageIds: () => string[]; }; declare class MessageAlreadyExistsException extends Error { #private; constructor(messageId: string, resourceId: string); } declare function create(resource: Resource, args: { message: Message; }): Result; declare function upsert(resource: Resource, args: { message: Message; }): Result; declare function get(resource: Resource, args: { id: Message["id"]["name"]; }): Message | undefined; declare class MessageDoesNotExistsException extends Error { #private; constructor(messageId: string, resourceId: string); } declare function update(resource: Resource, args: { id: Message["id"]["name"]; with: Message; }): Result; export {}; //# sourceMappingURL=index.d.ts.map