Skip to content
Backlit
Esc
navigateopen⌘Jpreview
On this page

SDK API

Complete public declarations from @backlit/sdk.

This page is generated from the built SDK declarations. Import these names from @backlit/sdk. The signatures include overloads, type parameters, options, and public members. Do not edit this page by hand.

Start with App and areas, Resources, Search state, or Extensions for usage.

ActionDefinition

declare class ActionDefinition<Resource extends string, Name extends string, Schema extends StandardSchemaV1, Params extends ParamNames = readonly [
]> {
    readonly resource: Resource;
    readonly name: Name;
    readonly params: Params;
    readonly schema: Schema;
    constructor(resource: Resource, name: Name, params: Params, schema: Schema, handler: ActionHandler<Schema, Params>);
    setAgentOptions(options: AgentOptions): this;
    get agentOptions(): AgentOptions | undefined;
    toAgentTool(): AgentTool | undefined;
    getAddress(values?: (string | number)[]): ActionAddress;
    validate(input: unknown): Promise<StandardSchemaV1.Result<StandardSchemaV1.InferOutput<Schema>>>;
    execute(ctx: RequestContext<'action', Params, StandardSchemaV1.InferOutput<Schema>>): Promise<ValidActionResponse>;
    attempt(ctx: RequestContext<'action', Params, StandardSchemaV1.InferOutput<Schema>>): Promise<ValidActionResponse>;
}

ActionDialogOptions

type ActionDialogOptions = ActionDialog & {
    submitLabel?: string;
};

ActionTargetBuilder

declare class ActionTargetBuilder<Input extends Record<string, unknown>, Params extends ParamNames, Row = unknown, HasDialog extends boolean = false> implements TargetBuilderContract<Row> {
    readonly setFields: HasDialog extends true ? <FieldRow = Row, const Fields extends readonly GetFieldBuildersFor<Input, FieldRow>[] = readonly GetFieldBuildersFor<Input, FieldRow>[]>(fields: Fields) => ActionTargetBuilder<Input, Params, Row & FieldRow, HasDialog> : never;
    constructor(action: {
        resource: string;
        name: string;
        params: Params;
    }, args?: GetArgsFor<Params> | ((record: Row) => GetArgsFor<Params>), presentation?: ActionTargetPresentationFor<Row>);
    withInitialData(values: FormInitialData<Input>): this;
    setDialog<DialogRow = Row>(options: ActionDialogOptions | ((record: DialogRow) => ActionDialogOptions)): ActionTargetBuilder<Input, Params, Row & DialogRow, true>;
    [TO_NODE](ctx: RequestContext): ActionTargetDefinition;
    [VALUE_FOR](record: Row, report: ReportDefect, options: {
        ctx: RequestContext;
        onDefect: DefectReporter;
        requireLabel?: boolean;
        repeated?: boolean;
    }): ActionTargetValue | undefined;
}

ActionTargetPresentation

type ActionTargetPresentation = TargetPresentation & ActionPresentation & {
    skip?: boolean;
    disabled?: boolean;
};

ActionTargetPresentationFor

type ActionTargetPresentationFor<Row> = ActionTargetPresentation | ((record: Row) => ActionTargetPresentation);

App

declare class App<AreaResources extends Record<string, Record<string, ResourceLoader>>> {
    constructor(config: {
        preferences?: AppPreferences;
        extensions?: BacklitExtension[];
        middleware?: MiddlewareLoader[];
        areas: Record<string, {
            label: string;
            icon?: string;
            resources: Record<string, ResourceLoader>;
            navigation: NavigationItem<string>[];
        }>;
    });
    renderView(resource: string, view: string, args?: string[], transport?: Transport, search?: SearchParams): Promise<ValidViewResponse>;
    renderZone(resource: string, view: string, zone: string, args?: string[], transport?: Transport, search?: SearchParams): Promise<ValidZoneResponse>;
    handleAction(resource: string, action: string, payload: unknown, args?: string[], transport?: Transport): Promise<ValidActionResponse>;
    handleLookup(resource: string, lookup: string, searchQuery: string, args?: string[], transport?: Transport): Promise<ValidLookupResponse>;
    resourceNames(): string[];
    loadResource<Name extends ExtractResourceNames<AreaResources>>(name: Name): Promise<UnWrapLazyImport<ExtractResourceLoader<AreaResources, Name>>>;
    toManifest(): Manifest;
}

assertLookupArgs

declare function assertLookupArgs(fields: Field[], has: (name: string) => boolean): void;

BarListChartBuilder

declare class BarListChartBuilder<Row extends Record<string, unknown> = Record<string, unknown>> implements Nodeable<BarListChart> {
    constructor(data: Row[]);
    setFields(fields: BarListFieldsInput<Row>): this;
    setOptions(options: BarListOptions): this;
    setColor(color: ChartColor | ((row: Row) => ChartColor | undefined)): this;
    onClick(target: LinkTarget<Linkable, Row>): this;
    onDefect(reporter: DefectReporter): this;
    [TO_NODE](ctx: RequestContext): BarListChart;
}

BarListFieldsInput

type BarListFieldsInput<Row> = {
    label: FieldBuilderContract<string, unknown, Row>;
    value: NumberFieldBuilder<string, Row>;
};

BooleanFieldBuilder

declare class BooleanFieldBuilder<Name extends string = string, Row = unknown> implements Nodeable<BooleanField>, FieldBuilderContract<Name, boolean, Row> {
    readonly [FIELD_VALUE]?: boolean;
    readonly [FIELD_ROW]?: (row: Row) => void;
    constructor(name: Name, options?: BooleanFieldOptions<Row>);
    get [FIELD_NAME](): Name;
    revealWhen<Scope>(condition: ConditionBuilder<Scope>): BooleanFieldBuilder<Name, Row>;
    enableWhen<Scope>(condition: ConditionBuilder<Scope>): BooleanFieldBuilder<Name, Row>;
    configure<R = Row>(options: BooleanFieldOptions<R>): BooleanFieldBuilder<Name, R>;
    clone(): BooleanFieldBuilder<Name, Row>;
    [TO_NODE](ctx?: RequestContext): {
        enable?: import("@backlit/contract").Condition;
        reveal?: import("@backlit/contract").Condition;
        displayVariant?: BooleanDisplayVariant;
        link?: import("@backlit/contract").LinkTargetAddress;
        label: string;
        inputVariant?: import("@backlit/contract").BooleanInputVariant;
        description?: string;
        kind: "boolean";
        name: Name;
    };
    [VALUE_FOR](row: Row, node: BooleanField, report: ReportDefect, options?: {
        role?: FieldRole;
    }): unknown;
}

BooleanFieldOptions

type BooleanFieldOptions<Row = unknown> = Prettify<ConditionableOptions<Partial<Omit<BooleanField, 'kind' | 'name' | 'link' | 'displayVariant'>> & {
    link?: LinkTarget<Linkable, Row>;
    displayVariant?: BooleanDisplayVariant;
}>>;

callout

declare function callout(text: string): CalloutBuilder;

CalloutBuilder

declare class CalloutBuilder implements Nodeable<CalloutNode> {
    constructor(text: string);
    setTitle(title: string): this;
    setTone(tone: Tone): this;
    setIcon(token: string): this;
    [TO_NODE](): {
        icon?: string;
        tone?: Tone;
        title?: string;
        kind: "callout";
        text: string;
    };
}

CategoryBarChartBuilder

declare class CategoryBarChartBuilder<Row extends Record<string, unknown> = Record<string, unknown>> implements Nodeable<CategoryBarChart> {
    constructor(data: Row);
    setFields(fields: CategoryBarFieldsInput<Row>): this;
    setOptions(options: CategoryBarOptions): this;
    onDefect(reporter: DefectReporter): this;
    [TO_NODE](ctx: RequestContext): CategoryBarChart;
}

CategoryBarFieldsInput

type CategoryBarFieldsInput<Row> = {
    values: readonly NumberFieldBuilder<string, Row>[];
};

charts

declare const charts: ChartsFactory;

ChartsFactory

declare class ChartsFactory extends Macroable {
    sparkArea<Row extends Record<string, unknown>>(data: Row[]): SparkAreaChartBuilder<Row>;
    categoryBar<Row extends Record<string, unknown>>(data: Row): CategoryBarChartBuilder<Row>;
    barList<Row extends Record<string, unknown>>(data: Row[]): BarListChartBuilder<Row>;
    line<Row extends Record<string, unknown>>(data: Row[]): LineChartBuilder<Row>;
}

completeTarget

declare function completeTarget(node: () => TargetDefinition, value: TargetValue): Target;

ConditionBuilder

declare abstract class ConditionBuilder<Scope> {
    protected constructor();
    abstract [TO_NODE](ctx?: RequestContext): Condition;
}

ConditionComposer

declare class ConditionComposer<Scope extends object> {
    constructor(form: FormBuilder<any>, onDefect: DefectReporter, scope?: string);
    when<const Path extends DataPath<Scope>>(path: Path): PredicateFor<Scope, GetValueAtPath<Scope, Path>>;
    ref<const Path extends DataPath<Scope>>(path: Path): Ref<Scope, NonNullable<GetValueAtPath<Scope, Path>>>;
    all(first: ConditionBuilder<Scope>, ...rest: ConditionBuilder<Scope>[]): ConditionBuilder<Scope>;
    any(first: ConditionBuilder<Scope>, ...rest: ConditionBuilder<Scope>[]): ConditionBuilder<Scope>;
    none(first: ConditionBuilder<Scope>, ...rest: ConditionBuilder<Scope>[]): ConditionBuilder<Scope>;
}

datalist

declare function datalist<Row extends Record<string, unknown>>(data: Row): DatalistBuilder<Row>;

DatalistBuilder

declare class DatalistBuilder<Row extends Record<string, unknown> = Record<string, unknown>, Fields extends readonly FieldBuilderContract<string, unknown, never>[] = readonly FieldBuilderContract<string, unknown, never>[]> implements Nodeable<DatalistNode> {
    constructor(data: Row);
    setFields<const SelectedFields extends readonly FieldBuilderContract<string, unknown, never>[]>(fields: SelectedFields & readonly FieldBuilderContract<string, unknown, Row>[]): DatalistBuilder<Row, SelectedFields>;
    peers(...sets: ExtractFieldNames<Fields>[][]): this;
    setRoles(roles: GetFieldRoleSelectionsFor<Fields>): this;
    onDefect(reporter: DefectReporter): this;
    [TO_NODE](ctx: RequestContext): DatalistNode;
}

DateFieldBuilder

declare class DateFieldBuilder<Name extends string = string, Row = unknown> implements Nodeable<DateField>, FieldBuilderContract<Name, string, Row> {
    readonly [FIELD_VALUE]?: string;
    readonly [FIELD_ROW]?: (row: Row) => void;
    constructor(name: Name, options?: DateFieldOptions<Row>);
    get [FIELD_NAME](): Name;
    revealWhen<Scope>(condition: ConditionBuilder<Scope>): DateFieldBuilder<Name, Row>;
    enableWhen<Scope>(condition: ConditionBuilder<Scope>): DateFieldBuilder<Name, Row>;
    configure<R = Row>(options: DateFieldOptions<R>): DateFieldBuilder<Name, R>;
    clone(): DateFieldBuilder<Name, Row>;
    [TO_NODE](ctx?: RequestContext): {
        enable?: import("@backlit/contract").Condition;
        reveal?: import("@backlit/contract").Condition;
        displayVariant?: DateDisplayVariant;
        link?: import("@backlit/contract").LinkTargetAddress;
        label: string;
        inputVariant?: import("@backlit/contract").DateInputVariant;
        description?: string;
        max?: string;
        min?: string;
        precision?: import("@backlit/contract").DatePrecision;
        timeZone?: string;
        minuteStep?: number;
        kind: "date";
        name: Name;
    };
    [VALUE_FOR](row: Row, node: DateField, report: ReportDefect, options?: {
        role?: FieldRole;
    }): unknown;
}

DateFieldOptions

type DateFieldOptions<Row = unknown> = Prettify<ConditionableOptions<Partial<Omit<DateField, 'kind' | 'name' | 'link' | 'displayVariant'>> & {
    link?: LinkTarget<Linkable, Row>;
    displayVariant?: DateDisplayVariant;
}>>;

DateRangeFilterBuilder

declare class DateRangeFilterBuilder<Name extends string = string> implements Nodeable<DateRangeFilter>, FilterBuilderContract<Name, {
    from?: string;
    to?: string;
}> {
    readonly [FILTER_VALUE]?: {
        from?: string;
        to?: string;
    };
    constructor(name: Name);
    get [FILTER_NAME](): Name;
    setLabel(text: string): this;
    [PARSE](raw: unknown): {
        from?: string;
        to?: string;
    } | undefined;
    [STRINGIFY](value: {
        from?: string;
        to?: string;
    }): string;
    [TO_NODE](): {
        kind: "date-range";
        name: Name;
        label: string;
    };
}

defineApp

declare function defineApp<AreaResources extends Record<string, Record<string, ResourceLoader>>>(config: AppConfig<AreaResources>): App<AreaResources>;

defineFilters

declare function defineFilters<const Filters extends readonly FilterBuilderContract<string>[]>(filters: Filters): FilterBar<Filters>;

definePaginator

declare function definePaginator(options: {
    perPage: number;
    param?: string;
}): Paginator;

defineResource

declare function defineResource<Name extends string, const Fields extends readonly FieldBuilderContract<string, unknown, never>[]>(name: Name, fields: Fields): Resource<Name, Fields>;

defineSorter

declare function defineSorter<const Fields extends readonly FieldBuilderContract<string, unknown, never>[]>(options: {
    columns: Fields;
    param?: string;
}): Sorter<ExtractFieldNames<Fields>[]>;

E_ACTION_FAILED

declare const E_ACTION_FAILED: new (args: [
    action: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_ACTION_TARGET_ARGS_MISMATCH

declare const E_ACTION_TARGET_ARGS_MISMATCH: new (args: [
    resource: string,
    action: string,
    expected: number,
    received: number
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_ACTION_VALIDATION_FAILED

declare const E_ACTION_VALIDATION_FAILED: new (args: [
    action: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_AGENT_PARAM_COLLISION

declare const E_AGENT_PARAM_COLLISION: new (args: [
    address: string,
    key: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_AGENT_SCHEMA_WITHOUT_JSON

declare const E_AGENT_SCHEMA_WITHOUT_JSON: new (args: [
    address: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_AGENT_TOOL_FAILED

declare const E_AGENT_TOOL_FAILED: new (args: [
    tool: string,
    code: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_BAR_LIST_VALUE_NOT_NUMBER

declare const E_BAR_LIST_VALUE_NOT_NUMBER: new (args: [
    name: string,
    kind: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_BAR_LIST_WITHOUT_LABEL

declare const E_BAR_LIST_WITHOUT_LABEL: new (args?: any, options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_BAR_LIST_WITHOUT_VALUE

declare const E_BAR_LIST_WITHOUT_VALUE: new (args?: any, options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_CATEGORY_BAR_VALUE_NOT_NUMBER

declare const E_CATEGORY_BAR_VALUE_NOT_NUMBER: new (args: [
    name: string,
    kind: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_CATEGORY_BAR_WITHOUT_VALUES

declare const E_CATEGORY_BAR_WITHOUT_VALUES: new (args?: any, options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_CONDITION_PATH_WITHOUT_FIELD

declare const E_CONDITION_PATH_WITHOUT_FIELD: new (args: [
    path: string,
    found: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_DUPLICATE_ACTION

declare const E_DUPLICATE_ACTION: new (args: [
    name: string,
    resource: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_DUPLICATE_FIELD

declare const E_DUPLICATE_FIELD: new (args: [
    name: string,
    resource: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_DUPLICATE_FILTER

declare const E_DUPLICATE_FILTER: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_DUPLICATE_LOOKUP

declare const E_DUPLICATE_LOOKUP: new (args: [
    name: string,
    resource: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_DUPLICATE_RESOURCE

declare const E_DUPLICATE_RESOURCE: new (args: [
    name: string,
    first: string,
    second: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_DUPLICATE_SORT_COLUMN

declare const E_DUPLICATE_SORT_COLUMN: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_DUPLICATE_STATE_FIELD

declare const E_DUPLICATE_STATE_FIELD: new (args: [
    name: string,
    keyword: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_DUPLICATE_VIEW

declare const E_DUPLICATE_VIEW: new (args: [
    name: string,
    resource: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_DUPLICATE_ZONE

declare const E_DUPLICATE_ZONE: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_EMPTY_SORT_COLUMNS

declare const E_EMPTY_SORT_COLUMNS: new (args: [
], options?: ErrorOptions) => import("@poppinss/exception").Exception;
declare const E_FOOTER_LABEL_HAS_NO_ROOM: new (args: [
    label: string,
    field: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_INVALID_FILTER_NAME

declare const E_INVALID_FILTER_NAME: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_INVALID_NUMBER_RANGE

declare const E_INVALID_NUMBER_RANGE: new (args: [
    name: string,
    reason: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_INVALID_SORT_COLUMN

declare const E_INVALID_SORT_COLUMN: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_INVALID_STATE_FIELD_NAME

declare const E_INVALID_STATE_FIELD_NAME: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_INVALID_ZONE_NAME

declare const E_INVALID_ZONE_NAME: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_KEYWORD_CONFLICT

declare const E_KEYWORD_CONFLICT: new (args: [
    keyword: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_LINE_CHART_SERIES_NOT_NUMBER

declare const E_LINE_CHART_SERIES_NOT_NUMBER: new (args: [
    name: string,
    kind: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_LINE_CHART_WITHOUT_SERIES

declare const E_LINE_CHART_WITHOUT_SERIES: new (args?: any, options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_LINE_CHART_WITHOUT_X

declare const E_LINE_CHART_WITHOUT_X: new (args?: any, options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_LIST_POSITION_OVERFULL

declare const E_LIST_POSITION_OVERFULL: new (args: [
    position: string,
    limit: number
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_LIST_WITHOUT_TITLE

declare const E_LIST_WITHOUT_TITLE: new (args?: any, options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_LOOKUP_ARG_WITHOUT_FIELD

declare const E_LOOKUP_ARG_WITHOUT_FIELD: new (args: [
    arg: string,
    input: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_MISSING_FIELD_REMAPPER

declare const E_MISSING_FIELD_REMAPPER: new (args: [
    role: string,
    kind: string,
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_MISSING_PARAMS

declare const E_MISSING_PARAMS: new (args: [
    resource: string,
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_MISSING_RELATION_DISPLAY

declare const E_MISSING_RELATION_DISPLAY: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_MIXED_STATE_SCOPES

declare const E_MIXED_STATE_SCOPES: new (args: [
    sorter: string,
    paginator: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_NESTED_FORM

declare const E_NESTED_FORM: new (args?: any, options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_NO_RESPONSE

declare const E_NO_RESPONSE: new (args: [
    address: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_SEGMENTS_MANY

declare const E_SEGMENTS_MANY: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_SEGMENTS_NOT_SELECT

declare const E_SEGMENTS_NOT_SELECT: new (args: [
    name: string,
    kind: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_SEGMENTS_ONE_FILTER

declare const E_SEGMENTS_ONE_FILTER: new (args: [
    count: number
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_SEGMENTS_RESERVED_ALL

declare const E_SEGMENTS_RESERVED_ALL: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_SPARK_AREA_CHART_SERIES_NOT_NUMBER

declare const E_SPARK_AREA_CHART_SERIES_NOT_NUMBER: new (args: [
    name: string,
    kind: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_SPARK_AREA_CHART_WITHOUT_SERIES

declare const E_SPARK_AREA_CHART_WITHOUT_SERIES: new (args?: any, options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_SPARK_AREA_CHART_WITHOUT_X

declare const E_SPARK_AREA_CHART_WITHOUT_X: new (args?: any, options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_STAT_CURRENCY_WITHOUT_CODE

declare const E_STAT_CURRENCY_WITHOUT_CODE: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_STAT_FIELD_NOT_NUMBER

declare const E_STAT_FIELD_NOT_NUMBER: new (args: [
    name: string,
    kind: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_TABS_DUPLICATE_TAB

declare const E_TABS_DUPLICATE_TAB: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_TABS_EMPTY

declare const E_TABS_EMPTY: new (args?: any, options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_TABS_UNKNOWN_INITIAL

declare const E_TABS_UNKNOWN_INITIAL: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_TARGET_ARG_UNDEFINED

declare const E_TARGET_ARG_UNDEFINED: new (args: [
    resource: string,
    target: string,
    position: number
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_TIMELINE_POSITION_OVERFULL

declare const E_TIMELINE_POSITION_OVERFULL: new (args: [
    position: string,
    limit: number
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_TIMELINE_WITHOUT_TIME

declare const E_TIMELINE_WITHOUT_TIME: new (args?: any, options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_TIMELINE_WITHOUT_TITLE

declare const E_TIMELINE_WITHOUT_TITLE: new (args?: any, options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_UNKNOWN_FIELD

declare const E_UNKNOWN_FIELD: new (args: [
    name: string,
    resource: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_UNKNOWN_FIELD_REMAPPER_ROLE

declare const E_UNKNOWN_FIELD_REMAPPER_ROLE: new (args: [
    role: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_UNKNOWN_FILTER

declare const E_UNKNOWN_FILTER: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;
declare const E_UNKNOWN_FOOTER_FIELD: new (args: [
    label: string,
    field: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_UNKNOWN_NAVIGATION_RESOURCE

declare const E_UNKNOWN_NAVIGATION_RESOURCE: new (args: [
    label: string,
    resource: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_UNKNOWN_RESOURCE

declare const E_UNKNOWN_RESOURCE: new (args: [
    name: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_VIEW_TARGET_ARGS_MISMATCH

declare const E_VIEW_TARGET_ARGS_MISMATCH: new (args: [
    resource: string,
    view: string,
    expected: number,
    received: number
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_VIEW_TARGET_FILTER_UNKNOWN

declare const E_VIEW_TARGET_FILTER_UNKNOWN: new (args: [
    resource: string,
    view: string,
    filter: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_WIDGET_EMPTY

declare const E_WIDGET_EMPTY: new (args?: any, options?: ErrorOptions) => import("@poppinss/exception").Exception;

E_ZONE_STATE_COLLISION

declare const E_ZONE_STATE_COLLISION: new (args: [
    name: string,
    keyword: string
], options?: ErrorOptions) => import("@poppinss/exception").Exception;

EnumFieldBuilder

declare class EnumFieldBuilder<Name extends string = string, Choices extends readonly EnumOption[] = readonly EnumOption[], Row = unknown> implements Nodeable<EnumField>, FieldBuilderContract<Name, Choices[number]['value'], Row> {
    readonly [FIELD_VALUE]?: Choices[number]['value'];
    readonly [FIELD_ROW]?: (row: Row) => void;
    constructor(name: Name, choices: Choices, options?: EnumFieldOptions<Row, Choices[number]['value']>);
    get [FIELD_NAME](): Name;
    revealWhen<Scope>(condition: ConditionBuilder<Scope>): EnumFieldBuilder<Name, Choices, Row>;
    enableWhen<Scope>(condition: ConditionBuilder<Scope>): EnumFieldBuilder<Name, Choices, Row>;
    configure<R = Row>(options: EnumFieldOptions<R, Choices[number]['value']>): EnumFieldBuilder<Name, Choices, R>;
    getOptionValues(): {
        [Index in keyof Choices]: Choices[Index]['value'];
    };
    getOptionLabels(): {
        [Index in keyof Choices]: Choices[Index]['label'];
    };
    clone(): EnumFieldBuilder<Name, Choices, Row>;
    [TO_NODE](ctx?: RequestContext): {
        enable?: import("@backlit/contract").Condition;
        reveal?: import("@backlit/contract").Condition;
        inputVariant?: "select" | "radio" | "checkboxes" | SearchInputVariant$1 | OptionsInputVariant$1;
        displayVariant?: EnumDisplayVariant;
        link?: import("@backlit/contract").LinkTargetAddress;
        label: string;
        options: Choices[number][];
        description?: string;
        cardinality?: import("@backlit/contract").Cardinality;
        kind: "enum";
        name: Name;
    };
    [VALUE_FOR](row: Row, node: EnumField, report: ReportDefect, options?: {
        role?: FieldRole;
    }): unknown;
}

EnumFieldOptions

type EnumFieldOptions<Row = unknown, Value = string> = Prettify<ConditionableOptions<Partial<Omit<EnumField, 'kind' | 'name' | 'options' | 'link' | 'displayVariant' | 'inputVariant'>> & {
    link?: LinkTarget<Linkable, Row>;
    displayVariant?: EnumDisplayVariant;
    inputVariant?: Exclude<EnumInputVariant, SearchInputVariant$1 | OptionsInputVariant$1> | SearchInputVariant<Value> | OptionsInputVariant<Value>;
}>>;

ErrorResponseBuilder

declare class ErrorResponseBuilder extends BaseResponseBuilder implements Respondable<ErrorResponse> {
    constructor(status: HttpErrorStatusCode, code: string);
    setErrors(errors: ValidationError[]): this;
    [TO_RESPONSE](): ErrorResponse;
}

ExtensionManager

declare class ExtensionManager {
    install(extension: BacklitExtension): void;
    list(): ManifestExtension[];
}

ExtractNumberFormat

type ExtractNumberFormat<Options> = Options extends {
    format: infer Format extends NumberFormat;
} ? Format : undefined;

FieldRemappers

declare class FieldRemappers {
    constructor();
    registerRole<Role extends FieldRole>(role: Role, remappers: FieldRemapperMap<Role>): void;
    registerRemappers<Role extends FieldRole>(role: Role, remappers: Partial<FieldRemapperMap<Role>>): void;
    remapField<Role extends FieldRole>(field: Field, record: Record<string, unknown>, value: unknown, role: Role, fallbackRole: FieldRemapperFallbackRole, report: ReportDefect): unknown;
}

fields

declare const fields: FieldsFactory;

FieldsFactory

declare class FieldsFactory extends Macroable {
    text<Name extends string>(name: Name, options?: TextFieldOptions): TextFieldBuilder<Name, unknown>;
    number<Name extends string, const Options extends NumberFieldOptions = {}>(name: Name, options?: Options): NumberFieldBuilder<Name, unknown, ExtractNumberFormat<Options>>;
    boolean<Name extends string>(name: Name, options?: BooleanFieldOptions): BooleanFieldBuilder<Name, unknown>;
    date<Name extends string>(name: Name, options?: DateFieldOptions): DateFieldBuilder<Name, unknown>;
    enum<Name extends string, const Choices extends readonly EnumOption[]>(name: Name, choices: Choices, options?: EnumFieldOptions): EnumFieldBuilder<Name, Choices, unknown>;
    ref<Name extends string, Target extends Resource<string, readonly FieldBuilderContract<string, unknown, never>[]>, const Options extends RefFieldOptions<unknown, ExtractResourceRecord<Target>, ExtractResourceFieldNames<Target>> & {
        display: ExtractResourceFieldNames<Target> | FieldBuilderContract<string, unknown, ExtractResourceRecord<Target>>;
    }>(name: Name, to: () => Target, options: Options): RefFieldBuilder<Name, GetRefFieldValueFor<Options>, GetRefFieldCardinalityFor<Options>, ExtractResourceRecord<Target>, unknown>;
    has<Name extends string, Target extends Resource<string, readonly FieldBuilderContract<string, unknown, never>[]>>(name: Name, of: () => Target, options: HasFieldOptions<ExtractResourceRecord<Target>, ExtractResourceFieldNames<Target>> & {
        display: ExtractResourceFieldNames<Target> | FieldBuilderContract<string, unknown, ExtractResourceRecord<Target>>;
    }): HasFieldBuilder<Name, ExtractResourceRecord<Target>, unknown>;
    group<Name extends string>(name: Name, fields: FieldBuilderContract<string, unknown, never>[], options?: GroupFieldOptions): GroupFieldBuilder<Name, unknown>;
}

FilterBar

declare class FilterBar<Filters extends readonly FilterBuilderContract<string>[] = readonly FilterBuilderContract<string>[]> implements StateAtomContract<ParseFilters<Filters>> {
    readonly [KEYWORD] = "f";
    readonly definesResult = true;
    readonly dependsOnResult = false;
    constructor(filters: Filters);
    fieldNames(): string[];
    list(): Filters;
    get<Name extends ExtractFilterNames<Filters>>(name: Name): ExtractFilterByName<Filters, Name>;
    [PARSE](values: SearchValues): ParseFilters<Filters>;
}

filters

declare const filters: FiltersFactory;

FiltersFactory

declare class FiltersFactory extends Macroable {
    text<Name extends string>(name: Name): TextFilterBuilder<Name>;
    select<Name extends string, const Options extends readonly FilterOption[]>(name: Name, options: Options): SelectFilterBuilder<Name, Options, "one">;
    toggle<Name extends string>(name: Name): ToggleFilterBuilder<Name>;
    dateRange<Name extends string>(name: Name): DateRangeFilterBuilder<Name>;
    numberRange<Name extends string>(name: Name, options: NumberRangeOptions): NumberRangeFilterBuilder<Name>;
    period<Name extends string, const Units extends readonly PeriodFilter['units'][number][]>(name: Name, units: Units): PeriodFilterBuilder<Name, Units>;
}

form

declare function form<Schema extends StandardSchemaV1<Record<string, unknown>, unknown>>(action: ActionDefinition<string, string, Schema, ParamNames>): FormBuilder<StandardSchemaV1.InferInput<Schema>>;

FormBuilder

declare class FormBuilder<SchemaInput extends Record<string, unknown>> implements Resolvable<FormNode> {
    constructor(resource: string, action: string);
    [FIELD_FOR](path: string): FieldBuilderContract<string, unknown, never> | undefined;
    [REPEATER_FOR](name: string): FormRepeaterBuilder | undefined;
    fields<const Fields extends readonly GetFieldBuildersFor<SchemaInput>[]>(...picked: Fields): FormFieldsBuilder<Fields>;
    repeater<const Key extends ExtractRepeaterKeys<SchemaInput>, const Fields extends readonly GetFieldBuildersFor<ExtractRepeaterRow<SchemaInput, Key>>[]>(name: Key, fields: Fields | ((row: ConditionComposer<ExtractRepeaterRow<SchemaInput, Key>>) => Fields)): FormRepeaterBuilder<Fields>;
    when<const Path extends DataPath<SchemaInput>>(path: Path): PredicateFor<SchemaInput, GetValueAtPath<SchemaInput, Path>>;
    ref<const Path extends DataPath<SchemaInput>>(path: Path): Ref<SchemaInput, NonNullable<GetValueAtPath<SchemaInput, Path>>>;
    all(first: ConditionBuilder<SchemaInput>, ...rest: ConditionBuilder<SchemaInput>[]): ConditionBuilder<SchemaInput>;
    any(first: ConditionBuilder<SchemaInput>, ...rest: ConditionBuilder<SchemaInput>[]): ConditionBuilder<SchemaInput>;
    none(first: ConditionBuilder<SchemaInput>, ...rest: ConditionBuilder<SchemaInput>[]): ConditionBuilder<SchemaInput>;
    setContent(content: Producer[]): this;
    withInitialData(values: FormInitialData<SchemaInput>): this;
    setSubmitAction(options: {
        label: string;
    }): this;
    setClearAction(options: {
        label: string;
    }): this;
    onDefect(reporter: DefectReporter): this;
    serialize(ctx: RequestContext, blocks: readonly FormFieldsBuilder[], initialData: Record<string, unknown> | undefined): {
        target: FormNode['target'];
        fields: FormFieldsNode[];
        initial?: Record<string, unknown>;
    };
    [RESOLVE](ctx: RequestContext<'view' | 'zone'>): Promise<FormNode>;
    [RESOLVE_FOR](ctx: RequestContext<'view' | 'zone'>, zone: string): Promise<ZoneNode | undefined>;
}

FormFieldsBuilder

declare class FormFieldsBuilder<Fields extends readonly FieldBuilderContract<string>[] = readonly FieldBuilderContract<string>[]> implements Nodeable<FormFieldsNode> {
    constructor(fields: FieldBuilderContract<ExtractFieldNames<Fields>>[], onFields?: (fields: {
        builder: FieldBuilderContract<string, unknown, never>;
        node: Field;
    }[], roles: Partial<Record<string, FieldRole>>) => void);
    peers(...sets: ExtractFieldNames<Fields>[][]): this;
    setRoles(roles: GetFieldRoleSelectionsFor<Fields>): this;
    revealWhen<Scope>(condition: ConditionBuilder<Scope>): this;
    enableWhen<Scope>(condition: ConditionBuilder<Scope>): this;
    [TO_NODE](ctx: RequestContext): FormFieldsNode;
}

FormRepeaterBuilder

declare class FormRepeaterBuilder<Fields extends readonly FieldBuilderContract<string>[] = readonly FieldBuilderContract<string>[]> implements Nodeable<FormRepeaterNode> {
    constructor(name: string, fields: FieldBuilderContract<ExtractFieldNames<Fields>>[], onRows?: (name: string, fields: {
        builder: FieldBuilderContract<string, unknown, never>;
        node: Field;
    }[], roles: Partial<Record<string, FieldRole>>) => void);
    get [FIELD_NAME](): string;
    [FIELD_FOR](path: string): FieldBuilderContract<string, unknown, never> | undefined;
    peers(...sets: ExtractFieldNames<Fields>[][]): this;
    setRoles(roles: GetFieldRoleSelectionsFor<Fields>): this;
    setAddAction(options: {
        label: string;
    }): this;
    setRemoveAction(options: {
        label: string;
    }): this;
    setRowTitle(title: string): this;
    setLimits(limits: {
        min?: number;
        max?: number;
    }): this;
    revealWhen<Scope>(condition: ConditionBuilder<Scope>): this;
    [TO_NODE](ctx: RequestContext): FormRepeaterNode;
}

GetRefFieldCardinalityFor

type GetRefFieldCardinalityFor<Options, Fallback extends Cardinality = 'one'> = Options extends {
    cardinality: infer Card extends Cardinality;
} ? Card : Fallback;

GetRefFieldValueFor

type GetRefFieldValueFor<Options, Fallback = never> = Options extends {
    inputVariant: SearchInputVariant<infer Value>;
} ? Value : Options extends {
    inputVariant: OptionsInputVariant<infer Value>;
} ? Value : Fallback;

group

declare function group(content: Producer[]): GroupBuilder;

GroupBuilder

declare class GroupBuilder implements Resolvable<GroupNode> {
    constructor(content: Producer[]);
    [RESOLVE](ctx: RequestContext<'view' | 'zone'>): Promise<GroupNode>;
    [RESOLVE_FOR](ctx: RequestContext<'view' | 'zone'>, zoneId: string): Promise<ZoneNode | undefined>;
}

GroupFieldBuilder

declare class GroupFieldBuilder<Name extends string = string, Row = unknown> implements Nodeable<GroupField>, FieldBuilderContract<Name, never, Row> {
    readonly [FIELD_ROW]?: (row: Row) => void;
    constructor(name: Name, fields: FieldBuilderContract<string, unknown, never>[], options?: GroupFieldOptions<Row>);
    get [FIELD_NAME](): Name;
    [FIELD_FOR](path: string): FieldBuilderContract<string, unknown, never> | undefined;
    revealWhen<Scope>(condition: ConditionBuilder<Scope>): GroupFieldBuilder<Name, Row>;
    enableWhen<Scope>(condition: ConditionBuilder<Scope>): GroupFieldBuilder<Name, Row>;
    configure<R = Row>(options: GroupFieldOptions<R>): GroupFieldBuilder<Name, R>;
    clone(): GroupFieldBuilder<Name, Row>;
    [TO_NODE](ctx: RequestContext): {
        enable?: import("@backlit/contract").Condition;
        reveal?: import("@backlit/contract").Condition;
        link?: import("@backlit/contract").LinkTargetAddress;
        label: string;
        fields: import("@backlit/contract").Field[];
        description?: string;
        kind: "group";
        name: Name;
    };
    [VALUE_FOR](row: Record<string, unknown>, node: GroupField, report: ReportDefect, options?: {
        role?: FieldRole;
    }): unknown;
}

GroupFieldOptions

type GroupFieldOptions<Row = unknown> = Prettify<ConditionableOptions<Partial<Omit<GroupField, 'kind' | 'name' | 'fields' | 'link'>>> & {
    link?: LinkTarget<Linkable, Row>;
}>;

HasFieldBuilder

declare class HasFieldBuilder<Name extends string = string, TargetRow = never, Row = unknown> implements Nodeable<HasField>, FieldBuilderContract<Name, never, Row> {
    readonly [FIELD_ROW]?: (row: Row) => void;
    constructor(name: Name, of: () => unknown, options?: HasFieldOptions<TargetRow, string, Row>);
    get [FIELD_NAME](): Name;
    revealWhen<Scope>(condition: ConditionBuilder<Scope>): HasFieldBuilder<Name, TargetRow, Row>;
    enableWhen<Scope>(condition: ConditionBuilder<Scope>): HasFieldBuilder<Name, TargetRow, Row>;
    configure<R = Row>(options: HasFieldOptions<TargetRow, string, R>): HasFieldBuilder<Name, TargetRow, R>;
    clone(): HasFieldBuilder<Name, TargetRow, Row>;
    [TO_NODE](ctx: RequestContext): {
        enable?: import("@backlit/contract").Condition;
        reveal?: import("@backlit/contract").Condition;
        link?: import("@backlit/contract").LinkTargetAddress;
        label: string;
        display: import("@backlit/contract").Field;
        description?: string;
        cardinality?: import("@backlit/contract").Cardinality;
        kind: "has";
        name: Name;
    };
    [VALUE_FOR](row: Record<string, unknown>, node: HasField, report: ReportDefect, options?: {
        role?: FieldRole;
    }): unknown;
}

HasFieldOptions

type HasFieldOptions<TargetRow = never, Names extends string = string, Row = unknown> = Prettify<ConditionableOptions<Partial<Omit<HasField, 'kind' | 'name' | 'display' | 'link'>> & {
    link?: LinkTarget<Linkable, Row>;
    display?: Names | FieldBuilderContract<string, unknown, TargetRow>;
}>>;

HttpRequest

declare class HttpRequest {
    constructor(options: HttpRequestOptions);
    query(): Record<string, string | string[]>;
    headers(): Record<string, string>;
    cookies(): Record<string, string>;
    json(): Promise<unknown>;
    formdata(): Promise<FormData>;
}

ItemListBuilder

declare class ItemListBuilder<Row extends Record<string, unknown> = Record<string, unknown>> implements Nodeable<ItemListNode> {
    constructor(data: Row[], configure: (item: ListItemBuilder<Row>, row: Row) => void);
    setDensity(density: ListDensity): this;
    onDefect(reporter: DefectReporter): this;
    setPaginator(binding: StateBinding<Paginator>, options?: {
        total?: number;
    }): this;
    [TO_NODE](ctx: RequestContext): ItemListNode;
}

ItemTimelineBuilder

declare class ItemTimelineBuilder<Row extends Record<string, unknown> = Record<string, unknown>> implements Nodeable<ItemTimelineNode> {
    constructor(data: Row[], configure: (item: TimelineItemBuilder<Row>, row: Row) => void);
    setDensity(density: ListDensity): this;
    onDefect(reporter: DefectReporter): this;
    setPaginator(binding: StateBinding<Paginator>, options?: {
        total?: number;
    }): this;
    [TO_NODE](ctx: RequestContext): ItemTimelineNode;
}

Kernel

declare class Kernel {
    constructor(resources: Record<string, ResourceLoader>, middleware: MiddlewareLoader[]);
    renderView(resource: string, view: string, args?: string[], transport?: Transport, search?: SearchParams): Promise<ValidViewResponse>;
    renderZone(resource: string, view: string, zone: string, args?: string[], transport?: Transport, search?: SearchParams): Promise<ValidZoneResponse>;
    handleAction(resource: string, action: string, payload: unknown, args?: string[], transport?: Transport): Promise<ValidActionResponse>;
    handleLookup(resource: string, lookup: string, searchQuery: string, args?: string[], transport?: Transport): Promise<ValidLookupResponse>;
}

LineChartBuilder

declare class LineChartBuilder<Row extends Record<string, unknown> = Record<string, unknown>> implements Nodeable<LineChart> {
    constructor(data: Row[]);
    setFields(fields: LineChartFieldsInput<Row>): this;
    setOptions(options: LineChartOptions): this;
    onClick(target: LinkTarget<Linkable, Row>): this;
    onDefect(reporter: DefectReporter): this;
    [TO_NODE](ctx: RequestContext): LineChart;
}

LineChartFieldsInput

type LineChartFieldsInput<Row> = {
    x: FieldBuilderContract<string, unknown, Row>;
    series: NumberFieldBuilder<string, Row> | readonly NumberFieldBuilder<string, Row>[];
};

LinkTarget

declare class LinkTarget<View extends Linkable = Linkable, Row = unknown> {
    constructor(source: () => View, args?: GetArgsFor<View['params']> | ((record: Row) => GetArgsFor<View['params']>), options?: ViewTargetOptions<View, Row>);
    [TO_NODE](): LinkTargetAddress;
    valueFor(record: Row): LinkTargetValue;
}

linkTo

declare function linkTo<View extends Linkable, Row = unknown>(view: View | (() => View), ...rest: View['params'] extends readonly [
] ? [
    args?: GetArgsFor<View['params']> | ((record: Row) => GetArgsFor<View['params']>),
    options?: ViewTargetOptions<View, Row>
] : [
    args: GetArgsFor<View['params']> | ((record: Row) => GetArgsFor<View['params']>),
    options?: ViewTargetOptions<View, Row>
]): LinkTarget<View, Row>;

list

declare function list<Row extends Record<string, unknown>>(data: Row[]): RecordListBuilder<Row>;
declare function list<Row extends Record<string, unknown>>(data: Row[], configure: (item: ListItemBuilder<Row>, row: Row) => void): ItemListBuilder<Row>;

ListItemBuilder

declare class ListItemBuilder<Row extends Record<string, unknown> = Record<string, unknown>> {
    setFields(fields: ListItemFieldsInput<Row>): this;
    onClick(target: LinkTarget<Linkable, Row>): this;
    setActions(targets: TargetBuilderContract<Row>[]): this;
    [TO_NODE](ctx: RequestContext, { row, index, onDefect }: ItemEmit$1<Row>): ListItem;
}

ListItemFieldsInput

type ListItemFieldsInput<Row> = {
    leading?: PositionInput$2<Row> | undefined;
    title: PositionInput$2<Row>;
    description?: PositionInput$2<Row> | undefined;
    meta?: PositionInput$2<Row> | undefined;
    trailing?: PositionInput$2<Row> | undefined;
};

LookupBuilder

declare class LookupBuilder<Fields extends readonly FieldBuilderContract<string, unknown, never>[] = readonly FieldBuilderContract<string, unknown, never>[]> implements Nodeable<LookupNode> {
    setFields<const F extends readonly FieldBuilderContract<string, unknown, never>[]>(fields: F): LookupBuilder<F>;
    withData(data: Record<string, unknown>[]): this;
    setRoles(roles: GetFieldRoleSelectionsFor<Fields>): this;
    onDefect(reporter: DefectReporter): this;
    [TO_NODE](ctx: RequestContext): LookupNode;
}

LookupDefinition

declare class LookupDefinition<Resource extends string, Name extends string, Fields extends readonly FieldBuilderContract<string, unknown, never>[], Params extends ParamNames = readonly [
]> {
    readonly resource: Resource;
    readonly name: Name;
    readonly params: Params;
    constructor(resource: Resource, name: Name, params: Params, resolver: LookupResolver<Fields, Params>);
    setAgentOptions(options: AgentOptions): this;
    get agentOptions(): AgentOptions | undefined;
    toAgentTool(): AgentTool | undefined;
    resolve(ctx: RequestContext<'lookup', Params>): Promise<ValidLookupResponse>;
}

LookupTarget

declare class LookupTarget implements Nodeable<LookupTarget$1> {
    constructor(source: () => LookupDefinition<string, string, readonly FieldBuilderContract<string>[], ParamNames>, args: GetLookupArgsFor<ParamNames>);
    [TO_NODE](): LookupTarget$1;
}

lookupVia

declare function lookupVia<Fields extends readonly FieldBuilderContract<string>[], Params extends ParamNames, Value extends ExtractFieldNames<Fields>>(source: LookupDefinition<string, string, Fields, Params> | (() => LookupDefinition<string, string, Fields, Params>), ...rest: Params extends readonly [
] ? [
    options: {
        value: Value;
        label: ExtractFieldNames<Fields>;
        create?: VisitTarget<Linkable, never>;
    }
] : [
    args: GetLookupArgsFor<Params>,
    options: {
        value: Value;
        label: ExtractFieldNames<Fields>;
        create?: VisitTarget<Linkable, never>;
    }
]): SearchInputVariant<ExtractFieldValue<ExtractFieldByName<Fields, Value>>>;

NumberFieldBuilder

declare class NumberFieldBuilder<Name extends string = string, Row = unknown, Format extends NumberFormat | undefined = undefined> implements Nodeable<NumberField>, FieldBuilderContract<Name, number, Row> {
    readonly [FIELD_VALUE]?: number;
    readonly [FIELD_ROW]?: (row: Row) => void;
    constructor(name: Name, options?: NumberFieldOptions<Row>, perRecord?: ((row: Row) => ResolvedPerRecord | undefined)[]);
    get [FIELD_NAME](): Name;
    revealWhen<Scope>(condition: ConditionBuilder<Scope>): NumberFieldBuilder<Name, Row, Format>;
    enableWhen<Scope>(condition: ConditionBuilder<Scope>): NumberFieldBuilder<Name, Row, Format>;
    configure<R = Row, const Options extends NumberFieldOptions<R> = NumberFieldOptions<R>>(options: Options): NumberFieldBuilder<Name, R, Options extends {
        format: NumberFormat;
    } ? ExtractNumberFormat<Options> : Format>;
    configure<R = Row>(perRecord: (row: R) => NumberPerRecordOptions<Format> | undefined): NumberFieldBuilder<Name, R, Format>;
    clone(): NumberFieldBuilder<Name, Row, Format>;
    [TO_NODE](ctx?: RequestContext): NumberField;
    [VALUE_FOR](row: Row, node: NumberField, report: ReportDefect, options?: {
        role?: FieldRole;
    }): unknown;
}

NumberFieldFormatOptions

type NumberFieldFormatOptions = ({
    format?: undefined;
    decimals?: NumberDecimals;
} & {
    [Key in Exclude<FormatOptionKeys, 'decimals'>]?: never;
}) | {
    [Format in NumberFormat]: ExclusiveFormatOptions<Format>;
}[NumberFormat];

NumberFieldOptions

type NumberFieldOptions<Row = unknown> = Prettify<NumberFieldCommonOptions<Row> & NumberFieldFormatOptions>;

NumberPerRecordOptions

type NumberPerRecordOptions<Format> = Format extends NumberFormat ? Partial<Omit<ExclusiveFormatOptions<Format>, 'format' | 'decimals'>> & {
    decimals?: never;
} : {
    [Key in FormatOptionKeys]?: never;
};

NumberRangeFilterBuilder

declare class NumberRangeFilterBuilder<Name extends string = string> implements Nodeable<NumberRangeFilter>, FilterBuilderContract<Name, {
    from?: number;
    to?: number;
}> {
    readonly [FILTER_VALUE]?: {
        from?: number;
        to?: number;
    };
    constructor(name: Name, options: NumberRangeOptions);
    get [FILTER_NAME](): Name;
    setLabel(text: string): this;
    [PARSE](raw: unknown): {
        from?: number;
        to?: number;
    } | undefined;
    [STRINGIFY](value: {
        from?: number;
        to?: number;
    }): string;
    [TO_NODE](): {
        step?: number;
        kind: "number-range";
        name: Name;
        label: string;
        min: number;
        max: number;
    };
}

NumberRangeOptions

type NumberRangeOptions = {
    min: number;
    max: number;
    step?: number;
};

OptionsInputVariant

declare class OptionsInputVariant<Value = unknown> implements Nodeable<OptionsInputVariant$1> {
    readonly target: LookupTarget;
    constructor(target: LookupTarget, value: string, label: string);
    [TO_NODE](): OptionsInputVariant$1;
    [VALUE_FOR](value: unknown, node: OptionsInputVariant$1, report: ReportDefect): unknown;
}

optionsVia

declare function optionsVia<Fields extends readonly FieldBuilderContract<string>[], Params extends ParamNames, Value extends ExtractFieldNames<Fields>>(source: LookupDefinition<string, string, Fields, Params> | (() => LookupDefinition<string, string, Fields, Params>), ...rest: Params extends readonly [
] ? [
    options: {
        value: Value;
        label: ExtractFieldNames<Fields>;
    }
] : [
    args: GetLookupArgsFor<Params>,
    options: {
        value: Value;
        label: ExtractFieldNames<Fields>;
    }
]): OptionsInputVariant<ExtractFieldValue<ExtractFieldByName<Fields, Value>>>;

Paginator

declare class Paginator implements StateAtomContract<PaginatorState> {
    readonly [KEYWORD] = "p";
    readonly definesResult = false;
    readonly dependsOnResult = true;
    constructor(options: {
        perPage: number;
        param?: string;
    });
    fieldNames(): string[];
    param(): string;
    perPage(): number;
    [PARSE](values: SearchValues): PaginatorState;
}

panel

declare function panel(content: Producer[]): PanelBuilder;

PanelBuilder

declare class PanelBuilder implements Resolvable<PanelNode> {
    constructor(content: Producer[]);
    setTitle(text: string, options?: {
        icon?: string;
    }): this;
    setDescription(text: string, options?: {
        icon?: string;
    }): this;
    setBadge(text: string, options?: {
        tone?: Tone;
        icon?: string;
    }): this;
    setFootnote(text: string, options?: {
        icon?: string;
    }): this;
    setActions(targets: TargetBuilderContract<never>[]): this;
    setFilters(binding: StateBinding<FilterBar>): this;
    revealWhen<Scope>(condition: ConditionBuilder<Scope>): this;
    [RESOLVE](ctx: RequestContext<'view' | 'zone'>): Promise<PanelNode>;
    [RESOLVE_FOR](ctx: RequestContext<'view' | 'zone'>, zone: string): Promise<ZoneNode | undefined>;
}

parseSearchParams

declare function parseSearchParams(queryString: string): SearchParams;

PeriodFilterBuilder

declare class PeriodFilterBuilder<Name extends string = string, Units extends readonly PeriodFilter['units'][number][] = readonly PeriodFilter['units'][number][]> implements Nodeable<PeriodFilter>, FilterBuilderContract<Name, Units[number]> {
    readonly [FILTER_VALUE]?: Units[number];
    constructor(name: Name, units: Units);
    get [FILTER_NAME](): Name;
    setLabel(text: string): this;
    [PARSE](raw: unknown): Units[number] | undefined;
    [STRINGIFY](value: Units[number]): string;
    [TO_NODE](): {
        kind: "period";
        name: Name;
        label: string;
        units: Units[number][];
    };
}

RecordListBuilder

declare class RecordListBuilder<Row extends Record<string, unknown> = Record<string, unknown>> implements Nodeable<RecordListNode> {
    constructor(data: Row[]);
    setFields(fields: RecordListFieldsInput<Row>): this;
    setDensity(density: ListDensity): this;
    onRowClick(target: LinkTarget<Linkable, Row>): this;
    setRowActions(targets: TargetBuilderContract<Row>[]): this;
    onDefect(reporter: DefectReporter): this;
    setPaginator(binding: StateBinding<Paginator>, options?: {
        total?: number;
    }): this;
    setSorter(binding: StateBinding<Sorter>): this;
    [TO_NODE](ctx: RequestContext): RecordListNode;
}

RecordListFieldsInput

type RecordListFieldsInput<Row> = {
    leading?: PositionInput$3<Row>;
    title: PositionInput$3<Row>;
    description?: PositionInput$3<Row>;
    meta?: PositionInput$3<Row>;
    trailing?: PositionInput$3<Row>;
};

RecordTimelineBuilder

declare class RecordTimelineBuilder<Row extends Record<string, unknown> = Record<string, unknown>> implements Nodeable<RecordTimelineNode> {
    constructor(data: Row[]);
    setFields(fields: RecordTimelineFieldsInput<Row>): this;
    setDensity(density: ListDensity): this;
    onRowClick(target: LinkTarget<Linkable, Row>): this;
    setRowActions(targets: TargetBuilderContract<Row>[]): this;
    onDefect(reporter: DefectReporter): this;
    setPaginator(binding: StateBinding<Paginator>, options?: {
        total?: number;
    }): this;
    setSorter(binding: StateBinding<Sorter>): this;
    [TO_NODE](ctx: RequestContext): RecordTimelineNode;
}

RecordTimelineFieldsInput

type RecordTimelineFieldsInput<Row> = {
    marker?: FieldBuilderContract<string, unknown, Row>;
    time: FieldBuilderContract<string, unknown, Row>;
    title: PositionInput$1<Row>;
    description?: PositionInput$1<Row>;
    meta?: PositionInput$1<Row>;
    body?: FieldBuilderContract<string, unknown, Row>;
};

RedirectResponseBuilder

declare class RedirectResponseBuilder extends BaseResponseBuilder implements Respondable<RedirectResponse> {
    constructor(resource: string, view: string, args?: readonly (string | number)[]);
    [TO_RESPONSE](): RedirectResponse;
}

Ref

declare class Ref<Scope, Value> {
    readonly path: string;
    constructor(path: string);
}

RefFieldBuilder

declare class RefFieldBuilder<Name extends string = string, Value = never, Card extends Cardinality = 'one', TargetRow = never, Row = unknown> implements Nodeable<RefField>, FieldBuilderContract<Name, CardinalityValue<Value, Card>, Row> {
    readonly [FIELD_VALUE]?: CardinalityValue<Value, Card>;
    readonly [FIELD_ROW]?: (row: Row) => void;
    constructor(name: Name, to: () => unknown, options?: RefFieldOptions<unknown, TargetRow, string, Row>);
    get [FIELD_NAME](): Name;
    revealWhen<Scope>(condition: ConditionBuilder<Scope>): RefFieldBuilder<Name, Value, Card, TargetRow, Row>;
    enableWhen<Scope>(condition: ConditionBuilder<Scope>): RefFieldBuilder<Name, Value, Card, TargetRow, Row>;
    configure<R = Row, const Options extends RefFieldOptions<unknown, TargetRow, string, R> = RefFieldOptions<unknown, TargetRow, string, R>>(options: Options): RefFieldBuilder<Name, GetRefFieldValueFor<Options, Value>, GetRefFieldCardinalityFor<Options, Card>, TargetRow, R>;
    clone(): RefFieldBuilder<Name, Value, Card, TargetRow, Row>;
    [TO_NODE](ctx: RequestContext): {
        enable?: import("@backlit/contract").Condition;
        reveal?: import("@backlit/contract").Condition;
        inputVariant?: import("@backlit/contract").SearchInputVariant | import("@backlit/contract").OptionsInputVariant;
        link?: import("@backlit/contract").LinkTargetAddress;
        label: string;
        display: import("@backlit/contract").Field;
        description?: string;
        cardinality?: Cardinality;
        kind: "ref";
        name: Name;
    };
    [VALUE_FOR](row: Record<string, unknown>, node: RefField, report: ReportDefect, options?: {
        role?: FieldRole;
    }): unknown;
}

RefFieldOptions

type RefFieldOptions<Value = unknown, TargetRow = never, Names extends string = string, Row = unknown> = Prettify<ConditionableOptions<Partial<Omit<RefField, 'kind' | 'name' | 'display' | 'link' | 'inputVariant'>> & {
    link?: LinkTarget<Linkable, Row>;
    display?: Names | FieldBuilderContract<string, unknown, TargetRow>;
    inputVariant?: SearchInputVariant<Value> | OptionsInputVariant<Value>;
}>>;

RefreshResponseBuilder

declare class RefreshResponseBuilder extends BaseResponseBuilder implements Respondable<RefreshResponse> {
    constructor(zones: string[]);
    [TO_RESPONSE](): RefreshResponse;
}

remappers

declare const remappers: FieldRemappers;

RequestContext

declare class RequestContext<Kind extends RequestKind = RequestKind, Params extends ParamNames = ParamNames, Data = Kind extends 'action' ? unknown : never, SearchQuery = Kind extends 'lookup' ? string : never> {
    readonly kind: Kind;
    readonly resource: string;
    readonly name: string;
    readonly mode: TargetMode;
    readonly args: string[];
    readonly paramValues: GetParamValuesFor<Params>;
    readonly searchQuery: SearchQuery;
    constructor(request: RequestContextOptions<Kind, Params, Data, SearchQuery>);
    get data(): Data;
    fillParams(names: ParamNames): void;
    fillData(data: Data): void;
    parse<Atoms extends StateAtoms>(scope: {
        state: ExtractStateBindings<Atoms>;
    }): ParseState<Atoms>;
    reserveStateFields(bindings: ExtractStateBindings<StateAtoms>): void;
    register(zone: string, atoms?: Iterable<StateAtomContract>): void;
    fail(rejection: string | Record<string, string>, options?: {
        code?: string;
    }): never;
    notify(notification: string | {
        text: string;
        title?: string;
        tone?: Tone;
    }): SuccessResponseBuilder;
    redirectTo<View extends ViewDefinition<string, string, ParamNames>>(view: View, ...args: View['params'] extends (infer TargetParams extends ParamNames) ? TargetParams extends readonly [
    ] ? [
    ] : [
        values: {
            readonly [Index in keyof TargetParams]: string | number;
        }
    ] : never): RedirectResponseBuilder;
    redirectTo(target: {
        resource: string;
        view: string;
    }, args?: readonly (string | number)[]): RedirectResponseBuilder;
    refresh(): RefreshResponseBuilder;
    refreshZones(zones: string[]): RefreshResponseBuilder;
    error(status: HttpErrorStatusCode, code: string): ErrorResponseBuilder;
}

Resource

declare class Resource<Name extends string, Fields extends readonly FieldBuilderContract<string, unknown, never>[]> {
    constructor(name: Name, fields: Fields);
    get name(): Name;
    pick<const Names extends readonly ExtractFieldNames<Fields>[]>(...names: Names): PickFieldBuilders<Fields, Names>;
    get<FieldName extends ExtractFieldNames<Fields>>(name: FieldName): ExtractFieldByName<Fields, FieldName>;
    group(fields: FieldBuilderContract<string, unknown, ExtractRecordOf<Fields>>[]): GroupFieldBuilder<'', ExtractRecordOf<Fields>>;
    view<ViewName extends string>(name: ViewName, resolver: ViewResolver<readonly [
    ]>): ViewDefinition<Name, ViewName>;
    view<ViewName extends string, const Params extends ParamNames>(name: ViewName, params: Params, resolver: ViewResolver<Params>): ViewDefinition<Name, ViewName, Params>;
    view<ViewName extends string, Atoms extends StateAtoms>(name: ViewName, atoms: Atoms, resolver: ViewResolver<readonly [
    ], Atoms>): ViewDefinition<Name, ViewName, readonly [
    ], Atoms>;
    view<ViewName extends string, const Params extends ParamNames, Atoms extends StateAtoms>(name: ViewName, params: Params, atoms: Atoms, resolver: ViewResolver<Params, Atoms>): ViewDefinition<Name, ViewName, Params, Atoms>;
    getView(name: string): ViewDefinition<Name, string, ParamNames> | undefined;
    views(): ViewDefinition<Name, string, ParamNames>[];
    action<ActionName extends string, Schema extends StandardSchemaV1>(name: ActionName, schema: Schema, handler: ActionHandler<Schema, readonly [
    ]>): ActionDefinition<Name, ActionName, Schema>;
    action<ActionName extends string, const Params extends ParamNames, Schema extends StandardSchemaV1>(name: ActionName, params: Params, schema: Schema, handler: ActionHandler<Schema, Params>): ActionDefinition<Name, ActionName, Schema, Params>;
    getAction(name: string): ActionDefinition<Name, string, any, ParamNames> | undefined;
    actions(): ActionDefinition<Name, string, any, ParamNames>[];
    lookup<LookupName extends string, const LookupFields extends readonly FieldBuilderContract<string, unknown, never>[]>(name: LookupName, resolver: LookupResolver<LookupFields>): LookupDefinition<Name, LookupName, LookupFields>;
    lookup<LookupName extends string, const LookupFields extends readonly FieldBuilderContract<string, unknown, never>[], const Params extends ParamNames>(name: LookupName, options: {
        params: Params;
    }, resolver: LookupResolver<LookupFields, Params>): LookupDefinition<Name, LookupName, LookupFields, Params>;
    getLookup(name: string): LookupDefinition<Name, string, readonly FieldBuilderContract<string, unknown, never>[], ParamNames> | undefined;
    lookups(): LookupDefinition<Name, string, readonly FieldBuilderContract<string, unknown, never>[], ParamNames>[];
    toAgentTools(): AgentTool[];
}

SearchInputVariant

declare class SearchInputVariant<Value = unknown> implements Nodeable<SearchInputVariant$1> {
    readonly target: LookupTarget;
    constructor(target: LookupTarget, value: string, label: string, create?: VisitTarget<Linkable, never>);
    [TO_NODE](ctx: RequestContext): SearchInputVariant$1;
    [VALUE_FOR](value: unknown, node: SearchInputVariant$1, report: ReportDefect): unknown;
}

section

declare function section(title?: string): SectionBuilder;

SectionBuilder

declare class SectionBuilder implements Resolvable<SectionNode> {
    constructor(title?: string);
    setDescription(description: string): this;
    setContent(nodes: Producer[]): this;
    setAside(nodes: Producer[]): this;
    setActions(targets: TargetBuilderContract<never>[]): this;
    setFilters(binding: StateBinding<FilterBar>): this;
    revealWhen<Scope>(condition: ConditionBuilder<Scope>): this;
    [RESOLVE](ctx: RequestContext<'view' | 'zone'>): Promise<SectionNode>;
    [RESOLVE_FOR](ctx: RequestContext<'view' | 'zone'>, zoneId: string): Promise<ZoneNode | undefined>;
}

SegmentableFilters

type SegmentableFilters = readonly [
    FilterBuilderContract<string, string>
];

segments

declare function segments<const Filters extends SegmentableFilters>(binding: StateBinding<FilterBar<Filters>>, options?: SegmentsOptions<ExtractFilterValue<Filters[0]> & string>): SegmentsBuilder<Filters>;

SegmentsBuilder

declare class SegmentsBuilder<Filters extends SegmentableFilters = SegmentableFilters> implements Nodeable<SegmentsNode> {
    constructor(binding: StateBinding<FilterBar<Filters>>, options?: SegmentsOptions<ExtractFilterValue<Filters[0]> & string>);
    [TO_NODE](ctx: RequestContext): SegmentsNode;
}

SegmentsOptions

type SegmentsOptions<Value extends string> = {
    counts?: Partial<Record<Value | 'all', number>>;
    tones?: Partial<Record<Value | 'all', Tone>>;
    labels?: Partial<Record<Value | 'all', string>>;
};

SelectFilterBuilder

declare class SelectFilterBuilder<Name extends string = string, Options extends readonly FilterOption[] = readonly FilterOption[], Card extends Cardinality = 'one'> implements Nodeable<SelectFilter>, FilterBuilderContract<Name, CardinalityValue<Options[number]['value'], Card>> {
    readonly [FILTER_VALUE]?: CardinalityValue<Options[number]['value'], Card>;
    constructor(name: Name, options: Options);
    get [FILTER_NAME](): Name;
    setLabel(text: string): this;
    setCardinality<C extends Cardinality>(cardinality: C): SelectFilterBuilder<Name, Options, C>;
    [PARSE](raw: unknown): CardinalityValue<Options[number]['value'], Card> | undefined;
    [STRINGIFY](value: CardinalityValue<Options[number]['value'], Card>): string | string[];
    [TO_NODE](): {
        cardinality?: Cardinality;
        kind: "select";
        name: Name;
        label: string;
        options: Options[number][];
    };
}

Sorter

declare class Sorter<Columns extends readonly string[] = readonly string[]> implements StateAtomContract<SorterState<Columns>> {
    readonly [KEYWORD] = "s";
    readonly definesResult = true;
    readonly dependsOnResult = false;
    constructor(options: {
        columns: readonly FieldBuilderContract<string, unknown, never>[];
        param?: string;
    });
    fieldNames(): string[];
    param(): string;
    columns(): Columns;
    [PARSE](values: SearchValues): SorterState<Columns>;
}

SparkAreaChartBuilder

declare class SparkAreaChartBuilder<Row extends Record<string, unknown> = Record<string, unknown>> implements Nodeable<SparkAreaChart> {
    constructor(data: Row[]);
    setFields(fields: SparkAreaChartFieldsInput<Row>): this;
    setOptions(options: SparkAreaChartOptions): this;
    onDefect(reporter: DefectReporter): this;
    [TO_NODE](ctx: RequestContext): SparkAreaChart;
}

SparkAreaChartFieldsInput

type SparkAreaChartFieldsInput<Row> = {
    x: FieldBuilderContract<string, unknown, Row>;
    series: NumberFieldBuilder<string, Row> | readonly NumberFieldBuilder<string, Row>[];
};

StatInput

type StatInput = {
    value: number;
    field: NumberFieldBuilder<string, never>;
    prior?: number;
    delta?: Stat['delta'];
    tone?: Tone;
    description?: string;
    descriptionIcon?: string;
};

stringifySearchParams

declare function stringifySearchParams(search: SearchParams): string;

submitTo

declare function submitTo<Schema extends StandardSchemaV1<Record<string, unknown>, unknown>, Params extends ParamNames, Row = unknown>(action: ActionDefinition<string, string, Schema, Params>, ...rest: Params extends readonly [
] ? [
    args?: GetArgsFor<Params> | ((record: Row) => GetArgsFor<Params>),
    presentation?: ActionTargetPresentationFor<Row>
] : [
    args: GetArgsFor<Params> | ((record: Row) => GetArgsFor<Params>),
    presentation?: ActionTargetPresentationFor<Row>
]): ActionTargetBuilder<StandardSchemaV1.InferInput<Schema>, Params, Row>;

SuccessResponseBuilder

declare class SuccessResponseBuilder extends BaseResponseBuilder implements Respondable<ValidActionResponse> {
    [TO_RESPONSE](): ValidActionResponse;
}

tab

declare function tab(name: string, title: string): TabBuilder;

TabBuilder

declare class TabBuilder {
    readonly name: string;
    constructor(name: string, title: string);
    setIcon(name: string): this;
    setCount(count: number, options?: {
        tone?: Tone;
        variant?: 'badge';
    }): this;
    setContent(nodes: Producer[]): this;
    [RESOLVE](ctx: RequestContext<'view' | 'zone'>): Promise<TabNode>;
    [RESOLVE_FOR](ctx: RequestContext<'view' | 'zone'>, zone: string): Promise<ZoneNode | undefined>;
}

table

declare function table<Row extends Record<string, unknown>>(data: Row[]): TableBuilder<Row>;

TableBuilder

declare class TableBuilder<Row extends Record<string, unknown> = Record<string, unknown>, Fields extends readonly FieldBuilderContract<string, unknown, never>[] = readonly FieldBuilderContract<string, unknown, never>[]> implements Nodeable<TableNode> {
    constructor(data: Row[]);
    setFields<const SelectedFields extends readonly FieldBuilderContract<string, unknown, never>[]>(fields: SelectedFields & readonly FieldBuilderContract<string, unknown, Row>[]): TableBuilder<Row, SelectedFields>;
    withFooter(rows: TableFooterRow<ExtractFieldNames<Fields>>[]): this;
    setRoles(roles: GetFieldRoleSelectionsFor<Fields>): this;
    onRowClick(target: LinkTarget<Linkable, Row>): this;
    setRowActions(targets: TargetBuilderContract<Row>[]): this;
    onDefect(reporter: DefectReporter): this;
    setPaginator(binding: StateBinding<Paginator>, options?: {
        total?: number;
    }): this;
    setSorter(binding: StateBinding<Sorter>): this;
    [TO_NODE](ctx: RequestContext): TableNode;
}

tabs

declare function tabs(items: TabBuilder[]): TabsBuilder;

TabsBuilder

declare class TabsBuilder implements Resolvable<TabsNode> {
    constructor(items: TabBuilder[]);
    setInitial(name: string): this;
    setWidth(width: NonNullable<TabsNode['width']>): this;
    setDensity(density: NonNullable<TabsNode['density']>): this;
    [RESOLVE](ctx: RequestContext<'view' | 'zone'>): Promise<TabsNode>;
    [RESOLVE_FOR](ctx: RequestContext<'view' | 'zone'>, zone: string): Promise<ZoneNode | undefined>;
}

TextFieldBuilder

declare class TextFieldBuilder<Name extends string = string, Row = unknown> implements Nodeable<TextField>, FieldBuilderContract<Name, string, Row> {
    readonly [FIELD_VALUE]?: string;
    readonly [FIELD_ROW]?: (row: Row) => void;
    constructor(name: Name, options?: TextFieldOptions<Row>);
    get [FIELD_NAME](): Name;
    revealWhen<Scope>(condition: ConditionBuilder<Scope>): TextFieldBuilder<Name, Row>;
    enableWhen<Scope>(condition: ConditionBuilder<Scope>): TextFieldBuilder<Name, Row>;
    configure<R = Row>(options: TextFieldOptions<R>): TextFieldBuilder<Name, R>;
    clone(): TextFieldBuilder<Name, Row>;
    [TO_NODE](ctx?: RequestContext): {
        enable?: import("@backlit/contract").Condition;
        reveal?: import("@backlit/contract").Condition;
        inputVariant?: "input" | "textarea";
        displayVariant?: never;
        link?: import("@backlit/contract").LinkTargetAddress;
        description?: string;
        format?: import("@backlit/contract").TextFormat;
        kind: "text";
        name: Name;
        label: string;
    };
    [VALUE_FOR](row: Row, node: TextField, report: ReportDefect, options?: {
        role?: FieldRole;
    }): unknown;
}

TextFieldOptions

type TextFieldOptions<Row = unknown> = Prettify<ConditionableOptions<Partial<Omit<TextField, 'kind' | 'name' | 'link' | 'displayVariant' | 'inputVariant'>> & {
    link?: LinkTarget<Linkable, Row>;
    displayVariant?: TextDisplayVariant;
    inputVariant?: 'input' | 'textarea';
}>>;

TextFilterBuilder

declare class TextFilterBuilder<Name extends string = string> implements Nodeable<TextFilter>, FilterBuilderContract<Name, string> {
    readonly [FILTER_VALUE]?: string;
    constructor(name: Name);
    get [FILTER_NAME](): Name;
    setLabel(text: string): this;
    [PARSE](raw: unknown): string | undefined;
    [STRINGIFY](value: string): string;
    [TO_NODE](): {
        kind: "text";
        name: Name;
        label: string;
    };
}

timeline

declare function timeline<Row extends Record<string, unknown>>(data: Row[]): RecordTimelineBuilder<Row>;
declare function timeline<Row extends Record<string, unknown>>(data: Row[], configure: (item: TimelineItemBuilder<Row>, row: Row) => void): ItemTimelineBuilder<Row>;

TimelineItemBuilder

declare class TimelineItemBuilder<Row extends Record<string, unknown> = Record<string, unknown>> {
    setFields(fields: TimelineItemFieldsInput<Row>): this;
    onClick(target: LinkTarget<Linkable, Row>): this;
    setActions(targets: TargetBuilderContract<Row>[]): this;
    [TO_NODE](ctx: RequestContext, { row, index, onDefect }: ItemEmit<Row>): TimelineItem;
}

TimelineItemFieldsInput

type TimelineItemFieldsInput<Row> = {
    marker?: FieldBuilderContract<string, unknown, Row> | undefined;
    time: FieldBuilderContract<string, unknown, Row>;
    title: PositionInput<Row>;
    description?: PositionInput<Row> | undefined;
    meta?: PositionInput<Row> | undefined;
    body?: FieldBuilderContract<string, unknown, Row> | undefined;
};

toActionNodes

declare function toActionNodes(targets: VisitTarget<Linkable, never>[], ctx: RequestContext): VisitTarget$1[];
declare function toActionNodes(targets: TargetBuilderContract<never>[], ctx: RequestContext): Target[];

toAgentInputSchema

declare function toAgentInputSchema(keys: {
    name: string;
    description: string;
}[], payload?: Record<string, unknown>): Record<string, unknown>;

toAgentParamKeys

declare function toAgentParamKeys(params: readonly string[]): {
    name: string;
    description: string;
}[];

toFiltersNode

declare function toFiltersNode(binding: StateBinding<FilterBar>, ctx: RequestContext<'view' | 'zone'>): FiltersNode;

ToggleFilterBuilder

declare class ToggleFilterBuilder<Name extends string = string> implements Nodeable<ToggleFilter>, FilterBuilderContract<Name, boolean> {
    readonly [FILTER_VALUE]?: boolean;
    constructor(name: Name);
    get [FILTER_NAME](): Name;
    setLabel(text: string): this;
    [PARSE](raw: unknown): boolean | undefined;
    [STRINGIFY](value: boolean): string;
    [TO_NODE](): {
        kind: "toggle";
        name: Name;
        label: string;
    };
}

toNodes

declare function toNodes<Node extends Block>(producers: (Nodeable<Node> | Resolvable<Node>)[], ctx: RequestContext<'view' | 'zone'>): Promise<Node[]>;
declare function toNodes<Node extends Block>(producers: Producer<Node>[], ctx: RequestContext<'view' | 'zone'>): Promise<(Node | ZoneNode)[]>;

toSelectedOption

declare function toSelectedOption(value: unknown, read: {
    value: string;
    label: string;
}, report: ReportDefect): unknown;

toStateAddress

declare function toStateAddress(binding: StateBinding<StateAtomContract>, ctx: RequestContext): {
    keyword: string;
    definesResult: boolean;
    dependsOnResult: boolean;
    zone?: string;
    args?: string[];
    resource: string;
    view: string;
};

toZoneNode

declare function toZoneNode(nodes: Producer[], ctx: RequestContext<'view' | 'zone'>, zoneId: string): Promise<ZoneNode | undefined>;

view

declare function view<Atoms extends StateAtoms = {}>(name: string, atoms?: Atoms): ViewBuilder<Atoms>;

ViewBreadcrumbOptions

type ViewBreadcrumbOptions<Row extends Record<string, unknown>> = {
    ancestors: VisitTarget$1<Linkable, never>[];
    fields?: FieldBuilderContract<string, unknown, Row>[];
};

ViewBuilder

declare class ViewBuilder<Atoms extends StateAtoms = {}> implements Resolvable<ViewNode> {
    constructor(name: string, atoms?: Atoms);
    get state(): ExtractStateBindings<Atoms>;
    setTitle(title: string): this;
    setDescription(description: string): this;
    setBreadcrumb<Row extends Record<string, unknown>>(data: Row, breadcrumb: ViewBreadcrumbOptions<Row>): this;
    setContent(nodes: Producer[]): this;
    [RESOLVE](ctx: RequestContext<'view' | 'zone'>): Promise<ViewNode>;
    [RESOLVE_FOR](ctx: RequestContext<'view' | 'zone'>, zone: string): Promise<ZoneNode | undefined>;
}

ViewDefinition

declare class ViewDefinition<Resource extends string, Name extends string, Params extends ParamNames = readonly [
], Atoms extends StateAtoms = {}> {
    readonly resource: Resource;
    readonly name: Name;
    readonly params: Params;
    constructor(resource: Resource, name: Name, params: Params, resolver: ViewResolver<Params, Atoms>, atoms?: Atoms);
    setAgentOptions(options: AgentOptions): this;
    get agentOptions(): AgentOptions | undefined;
    get atoms(): Atoms | undefined;
    toAgentTool(): AgentTool | undefined;
    getAddress(values?: (string | number)[]): ViewAddress;
    resolve(ctx: RequestContext<'view' | 'zone', Params>): Promise<ValidViewResponse>;
    resolveZone(ctx: RequestContext<'view' | 'zone', Params>, zone: string): Promise<ValidZoneResponse>;
}

VisitTarget

declare class VisitTarget$1<View extends Linkable = Linkable, Row = unknown> implements TargetBuilderContract<Row> {
    constructor(reference: ViewTargetReference<View, Row>, presentation?: VisitPresentation<View> | ((record: Row) => VisitPresentation<View>));
    [TO_NODE](): VisitTargetAddress;
    [VALUE_FOR](record: Row, report: ReportDefect, options: {
        ctx: RequestContext;
        onDefect: DefectReporter;
        requireLabel?: boolean;
    }): VisitTargetValue | undefined;
}

visitTo

declare function visitTo<View extends Linkable, Row = unknown>(view: View, ...rest: View['params'] extends readonly [
] ? [
    args?: GetArgsFor<View['params']> | ((record: Row) => GetArgsFor<View['params']>),
    presentation?: (VisitPresentation<View> & {
        mode?: TargetMode;
    }) | ((record: Row) => VisitPresentation<View>)
] : [
    args: GetArgsFor<View['params']> | ((record: Row) => GetArgsFor<View['params']>),
    presentation?: (VisitPresentation<View> & {
        mode?: TargetMode;
    }) | ((record: Row) => VisitPresentation<View>)
]): VisitTarget$1<View, Row>;

warnOnDefect

declare const warnOnDefect: DefectReporter;

widget

declare function widget(): WidgetBuilder;

WidgetBuilder

declare class WidgetBuilder implements Nodeable<WidgetNode> {
    setTitle(text: string, options?: {
        icon?: string;
    }): this;
    setDescription(text: string): this;
    setFootnote(text: string, options?: {
        icon?: string;
        tone?: Tone;
    }): this;
    setCaption(text: string): this;
    setStat(stat: StatInput): this;
    setChart(chart: Nodeable<Chart>): this;
    onDefect(reporter: DefectReporter): this;
    [TO_NODE](ctx?: RequestContext): WidgetNode;
}

WidgetGroupBuilder

declare class WidgetGroupBuilder implements Resolvable<WidgetGroupNode> {
    constructor(widgets: Producer<Widget>[]);
    [RESOLVE](ctx: RequestContext<'view' | 'zone'>): Promise<WidgetGroupNode>;
    [RESOLVE_FOR](ctx: RequestContext<'view' | 'zone'>, zoneId: string): Promise<ZoneNode | undefined>;
}

widgets

declare const widgets: WidgetsFactory;

WidgetsFactory

declare class WidgetsFactory extends Macroable {
    group(widgets: Producer<Widget>[]): WidgetGroupBuilder;
}

zone

declare function zone<Node extends Block>(name: string, resolver: ZoneResolver<Node>): ZoneBuilder<Node>;
declare function zone<Node extends Block, Atoms extends StateAtoms>(name: string, atoms: Atoms, resolver: ZoneResolver<Node, Atoms>): ZoneBuilder<Node, Atoms>;

ZoneBuilder

declare class ZoneBuilder<Produces extends Block, Atoms extends StateAtoms = {}> implements Resolvable<ZoneNode> {
    readonly name: string;
    constructor(name: string, resolver: ZoneResolver<Produces, Atoms>, atoms?: Atoms);
    get state(): ExtractStateBindings<Atoms>;
    [RESOLVE](ctx: RequestContext<'view' | 'zone'>): Promise<ZoneNode>;
    [RESOLVE_FOR](ctx: RequestContext<'view' | 'zone'>, zoneName: string): Promise<ZoneNode | undefined>;
}

Was this page helpful?