IndexQueryInput<Bag, Idx>: {
    [PKField in keyof Idx["pk"]]: Idx["pk"][PKField] extends `${deferredRefResolvingPrefix}${infer R}`
        ? "type" extends keyof Bag[R]
            ? Bag[R]["type"]
            : never
        : Idx["pk"][PKField]
} & (Idx["compositeSk"] extends never
    ? {
        [SKField in keyof Idx["sk"]]?: number extends Idx["sk"][SKField]
            ? NumericFilter
            : Idx["sk"][SKField] extends `${deferredRefResolvingPrefix}${infer R}`
                ? "type" extends keyof Bag[R]
                    ? Bag[R]["type"] extends string
                        ? StringFilter<Bag[R]["type"]>
                        : never
                    : never
                : StringFilter<Idx["sk"][SKField] & string>
    }
    : {
        [CompositeSk in Idx["compositeSk"]]?: ModelPrimaryCompositeKeyInput<{
            [SKField in keyof Idx["sk"]]: Idx["sk"][SKField] extends `${deferredRefResolvingPrefix}${infer _R}`
                ? string
                : Idx["sk"][SKField]
        }>
    })

Accepts a PrimaryIndexIr or SecondaryIndexIr and returns resolved parameters

TODO: Get rid of the deferredRefResolvingPrefix reference hack. Instead, just dereference refs as usual?

Type Parameters