import { TemplateResult } from '../processor/template-result'; /** * Result object for the `asyncReplace` directive. * Holds the current state of the tracked promise so the template * engine can render the appropriate branch on each update cycle. */ export declare class AsyncResult { readonly state: 'pending' | 'resolved' | 'rejected'; readonly value?: unknown | undefined; readonly error?: unknown | undefined; constructor(state: 'pending' | 'resolved' | 'rejected', value?: unknown | undefined, error?: unknown | undefined); } /** * Tracks a Promise and triggers a component re-render when it settles. * * Usage inside a component's `template()`: * ```ts * // Create the tracker once (e.g. in onMount or a reactive getter) * this._userTracker = createAsyncTracker(fetchUser(id), () => this.requestUpdate()); * * // In template(): * ${resolveAsync(this._userTracker, * (user) => html`

Hello ${user.name}

`, // resolved * () => html`

Loading...

`, // pending * (err) => html`

Error: ${err.message}

` // rejected * )} * ``` */ export interface AsyncTracker { /** Current state of the tracked promise */ readonly state: 'pending' | 'resolved' | 'rejected'; /** Resolved value (only when state === 'resolved') */ readonly value?: T; /** Rejection reason (only when state === 'rejected') */ readonly error?: unknown; } /** * Create an AsyncTracker that calls `onSettle` when the promise resolves or rejects. * The component should call `this.requestUpdate()` inside `onSettle` to trigger a re-render. * * @param promise - The Promise to track * @param onSettle - Callback invoked when the promise settles (resolve or reject) */ export declare function createAsyncTracker(promise: Promise, onSettle: () => void): AsyncTracker; /** * Resolve an AsyncTracker into a template based on its current state. * Returns the appropriate branch template. * * @param tracker - The AsyncTracker to resolve * @param resolved - Template function for the resolved state * @param pending - Template function for the pending state (optional) * @param rejected - Template function for the rejected state (optional) * * @example * ```ts * template() { * return html` * ${resolveAsync(this.dataTracker, * (data) => html`
${data.name}
`, * () => html`Loading...`, * (err) => html`${err}` * )} * `; * } * ``` */ export declare function resolveAsync(tracker: AsyncTracker, resolved: (value: T) => R, pending?: () => R, rejected?: (error: unknown) => R): R | undefined; //# sourceMappingURL=await.d.ts.map