{
  "version": "1.0.0",
  "timestamp": 0,
  "packageName": "@happyvertical/smrt-ads",
  "packageVersion": "0.43.2",
  "objects": {
    "@happyvertical/smrt-ads:AdDeliveryTierCollection": {
      "name": "addeliverytiercollection",
      "className": "AdDeliveryTierCollection",
      "qualifiedName": "@happyvertical/smrt-ads:AdDeliveryTierCollection",
      "collection": "addeliverytiers",
      "filePath": "/home/runner/work/smrt/smrt/packages/ads/src/collections/AdDeliveryTierCollection.ts",
      "packageName": "@happyvertical/smrt-ads",
      "fields": {},
      "methods": {
        "findByPriority": {
          "name": "findByPriority",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdDeliveryTier[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByPricingModel": {
          "name": "findByPricingModel",
          "async": true,
          "parameters": [
            {
              "name": "pricingModel",
              "type": "PricingModel",
              "optional": false
            }
          ],
          "returnType": "Promise<AdDeliveryTier[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getHighestPriority": {
          "name": "getHighestPriority",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdDeliveryTier | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findFixedPricing": {
          "name": "findFixedPricing",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdDeliveryTier[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findCPM": {
          "name": "findCPM",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdDeliveryTier[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findPerformanceBased": {
          "name": "findPerformanceBased",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdDeliveryTier[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "AdDeliveryTier",
      "exportName": "AdDeliveryTierCollection",
      "collectionExportName": "AdDeliveryTierCollectionCollection",
      "schema": {
        "tableName": "ad_delivery_tier_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"ad_delivery_tier_collections\" (\n  \"id\" UUID PRIMARY KEY NOT NULL,\n  \"slug\" TEXT NOT NULL,\n  \"context\" TEXT NOT NULL DEFAULT '',\n  \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
        "columns": {
          "id": {
            "type": "UUID",
            "primaryKey": true,
            "referenceKind": "id",
            "notNull": true
          },
          "slug": {
            "type": "TEXT",
            "notNull": true
          },
          "context": {
            "type": "TEXT",
            "notNull": true,
            "default": ""
          },
          "created_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "updated_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          }
        },
        "indexes": [
          {
            "name": "ad_delivery_tier_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "ad_delivery_tier_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "fcb1bac2"
      }
    },
    "@happyvertical/smrt-ads:AdEventCollection": {
      "name": "adeventcollection",
      "className": "AdEventCollection",
      "qualifiedName": "@happyvertical/smrt-ads:AdEventCollection",
      "collection": "adevents",
      "filePath": "/home/runner/work/smrt/smrt/packages/ads/src/collections/AdEventCollection.ts",
      "packageName": "@happyvertical/smrt-ads",
      "fields": {},
      "methods": {
        "findByVariation": {
          "name": "findByVariation",
          "async": true,
          "parameters": [
            {
              "name": "variationId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdEvent[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByZone": {
          "name": "findByZone",
          "async": true,
          "parameters": [
            {
              "name": "zoneId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdEvent[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findBySite": {
          "name": "findBySite",
          "async": true,
          "parameters": [
            {
              "name": "siteId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdEvent[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByDateRange": {
          "name": "findByDateRange",
          "async": true,
          "parameters": [
            {
              "name": "start",
              "type": "Date",
              "optional": false
            },
            {
              "name": "end",
              "type": "Date",
              "optional": false
            }
          ],
          "returnType": "Promise<AdEvent[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByType": {
          "name": "findByType",
          "async": true,
          "parameters": [
            {
              "name": "eventType",
              "type": "AdEventType",
              "optional": false
            }
          ],
          "returnType": "Promise<AdEvent[]>",
          "isStatic": false,
          "isPublic": true
        },
        "countByType": {
          "name": "countByType",
          "async": true,
          "parameters": [
            {
              "name": "variationId",
              "type": "string",
              "optional": false
            },
            {
              "name": "eventType",
              "type": "AdEventType",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "countImpressions": {
          "name": "countImpressions",
          "async": true,
          "parameters": [
            {
              "name": "variationId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "countClicks": {
          "name": "countClicks",
          "async": true,
          "parameters": [
            {
              "name": "variationId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "countConversions": {
          "name": "countConversions",
          "async": true,
          "parameters": [
            {
              "name": "variationId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "findImpressions": {
          "name": "findImpressions",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdEvent[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findClicks": {
          "name": "findClicks",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdEvent[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findConversions": {
          "name": "findConversions",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdEvent[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getVariationStats": {
          "name": "getVariationStats",
          "async": true,
          "parameters": [
            {
              "name": "variationId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<object>",
          "isStatic": false,
          "isPublic": true
        },
        "findByTenant": {
          "name": "findByTenant",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdEvent[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findGlobal": {
          "name": "findGlobal",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdEvent[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findWithGlobals": {
          "name": "findWithGlobals",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdEvent[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "AdEvent",
      "exportName": "AdEventCollection",
      "collectionExportName": "AdEventCollectionCollection",
      "schema": {
        "tableName": "ad_event_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"ad_event_collections\" (\n  \"id\" UUID PRIMARY KEY NOT NULL,\n  \"slug\" TEXT NOT NULL,\n  \"context\" TEXT NOT NULL DEFAULT '',\n  \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
        "columns": {
          "id": {
            "type": "UUID",
            "primaryKey": true,
            "referenceKind": "id",
            "notNull": true
          },
          "slug": {
            "type": "TEXT",
            "notNull": true
          },
          "context": {
            "type": "TEXT",
            "notNull": true,
            "default": ""
          },
          "created_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "updated_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          }
        },
        "indexes": [
          {
            "name": "ad_event_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "ad_event_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "f21d5055"
      }
    },
    "@happyvertical/smrt-ads:AdFormatCollection": {
      "name": "adformatcollection",
      "className": "AdFormatCollection",
      "qualifiedName": "@happyvertical/smrt-ads:AdFormatCollection",
      "collection": "adformats",
      "filePath": "/home/runner/work/smrt/smrt/packages/ads/src/collections/AdFormatCollection.ts",
      "packageName": "@happyvertical/smrt-ads",
      "fields": {},
      "methods": {
        "findByDimensions": {
          "name": "findByDimensions",
          "async": true,
          "parameters": [
            {
              "name": "width",
              "type": "number",
              "optional": false
            },
            {
              "name": "height",
              "type": "number",
              "optional": false
            }
          ],
          "returnType": "Promise<AdFormat | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findByType": {
          "name": "findByType",
          "async": true,
          "parameters": [
            {
              "name": "formatType",
              "type": "AdFormatType",
              "optional": false
            }
          ],
          "returnType": "Promise<AdFormat[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findBanners": {
          "name": "findBanners",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdFormat[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findNative": {
          "name": "findNative",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdFormat[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findVideo": {
          "name": "findVideo",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdFormat[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "AdFormat",
      "exportName": "AdFormatCollection",
      "collectionExportName": "AdFormatCollectionCollection",
      "schema": {
        "tableName": "ad_format_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"ad_format_collections\" (\n  \"id\" UUID PRIMARY KEY NOT NULL,\n  \"slug\" TEXT NOT NULL,\n  \"context\" TEXT NOT NULL DEFAULT '',\n  \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
        "columns": {
          "id": {
            "type": "UUID",
            "primaryKey": true,
            "referenceKind": "id",
            "notNull": true
          },
          "slug": {
            "type": "TEXT",
            "notNull": true
          },
          "context": {
            "type": "TEXT",
            "notNull": true,
            "default": ""
          },
          "created_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "updated_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          }
        },
        "indexes": [
          {
            "name": "ad_format_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "ad_format_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "e2df1b16"
      }
    },
    "@happyvertical/smrt-ads:AdGroupCollection": {
      "name": "adgroupcollection",
      "className": "AdGroupCollection",
      "qualifiedName": "@happyvertical/smrt-ads:AdGroupCollection",
      "collection": "adgroups",
      "filePath": "/home/runner/work/smrt/smrt/packages/ads/src/collections/AdGroupCollection.ts",
      "packageName": "@happyvertical/smrt-ads",
      "fields": {},
      "methods": {
        "findByContract": {
          "name": "findByContract",
          "async": true,
          "parameters": [
            {
              "name": "contractId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdGroup[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByTier": {
          "name": "findByTier",
          "async": true,
          "parameters": [
            {
              "name": "tierId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdGroup[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByStatus": {
          "name": "findByStatus",
          "async": true,
          "parameters": [
            {
              "name": "status",
              "type": "AdGroupStatus",
              "optional": false
            }
          ],
          "returnType": "Promise<AdGroup[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findActive": {
          "name": "findActive",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdGroup[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByVertical": {
          "name": "findByVertical",
          "async": true,
          "parameters": [
            {
              "name": "verticalSlug",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdGroup[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByZone": {
          "name": "findByZone",
          "async": true,
          "parameters": [
            {
              "name": "zoneId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdGroup[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findEligibleForZone": {
          "name": "findEligibleForZone",
          "async": true,
          "parameters": [
            {
              "name": "zoneId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdGroup[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findDrafts": {
          "name": "findDrafts",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdGroup[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findPaused": {
          "name": "findPaused",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdGroup[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findCompleted": {
          "name": "findCompleted",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdGroup[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByTenant": {
          "name": "findByTenant",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdGroup[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findGlobal": {
          "name": "findGlobal",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdGroup[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findWithGlobals": {
          "name": "findWithGlobals",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdGroup[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "AdGroup",
      "exportName": "AdGroupCollection",
      "collectionExportName": "AdGroupCollectionCollection",
      "schema": {
        "tableName": "ad_group_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"ad_group_collections\" (\n  \"id\" UUID PRIMARY KEY NOT NULL,\n  \"slug\" TEXT NOT NULL,\n  \"context\" TEXT NOT NULL DEFAULT '',\n  \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
        "columns": {
          "id": {
            "type": "UUID",
            "primaryKey": true,
            "referenceKind": "id",
            "notNull": true
          },
          "slug": {
            "type": "TEXT",
            "notNull": true
          },
          "context": {
            "type": "TEXT",
            "notNull": true,
            "default": ""
          },
          "created_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "updated_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          }
        },
        "indexes": [
          {
            "name": "ad_group_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "ad_group_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "95b87ec7"
      }
    },
    "@happyvertical/smrt-ads:AdVariationCollection": {
      "name": "advariationcollection",
      "className": "AdVariationCollection",
      "qualifiedName": "@happyvertical/smrt-ads:AdVariationCollection",
      "collection": "advariations",
      "filePath": "/home/runner/work/smrt/smrt/packages/ads/src/collections/AdVariationCollection.ts",
      "packageName": "@happyvertical/smrt-ads",
      "fields": {},
      "methods": {
        "findByGroup": {
          "name": "findByGroup",
          "async": true,
          "parameters": [
            {
              "name": "groupId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdVariation[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByFormat": {
          "name": "findByFormat",
          "async": true,
          "parameters": [
            {
              "name": "formatId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdVariation[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findActiveByGroup": {
          "name": "findActiveByGroup",
          "async": true,
          "parameters": [
            {
              "name": "groupId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdVariation[]>",
          "isStatic": false,
          "isPublic": true
        },
        "selectByWeight": {
          "name": "selectByWeight",
          "async": true,
          "parameters": [
            {
              "name": "groupId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdVariation | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findByStatus": {
          "name": "findByStatus",
          "async": true,
          "parameters": [
            {
              "name": "status",
              "type": "AdVariationStatus",
              "optional": false
            }
          ],
          "returnType": "Promise<AdVariation[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findActive": {
          "name": "findActive",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdVariation[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findDrafts": {
          "name": "findDrafts",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdVariation[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findPaused": {
          "name": "findPaused",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdVariation[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findTopPerformers": {
          "name": "findTopPerformers",
          "async": true,
          "parameters": [
            {
              "name": "limit",
              "type": "number",
              "optional": true
            }
          ],
          "returnType": "Promise<AdVariation[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByTenant": {
          "name": "findByTenant",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdVariation[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findGlobal": {
          "name": "findGlobal",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AdVariation[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findWithGlobals": {
          "name": "findWithGlobals",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AdVariation[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "AdVariation",
      "exportName": "AdVariationCollection",
      "collectionExportName": "AdVariationCollectionCollection",
      "schema": {
        "tableName": "ad_variation_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"ad_variation_collections\" (\n  \"id\" UUID PRIMARY KEY NOT NULL,\n  \"slug\" TEXT NOT NULL,\n  \"context\" TEXT NOT NULL DEFAULT '',\n  \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
        "columns": {
          "id": {
            "type": "UUID",
            "primaryKey": true,
            "referenceKind": "id",
            "notNull": true
          },
          "slug": {
            "type": "TEXT",
            "notNull": true
          },
          "context": {
            "type": "TEXT",
            "notNull": true,
            "default": ""
          },
          "created_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "updated_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          }
        },
        "indexes": [
          {
            "name": "ad_variation_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "ad_variation_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "6d2b9bb0"
      }
    },
    "@happyvertical/smrt-ads:AdDeliveryTier": {
      "name": "addeliverytier",
      "className": "AdDeliveryTier",
      "qualifiedName": "@happyvertical/smrt-ads:AdDeliveryTier",
      "collection": "addeliverytiers",
      "filePath": "/home/runner/work/smrt/smrt/packages/ads/src/models/AdDeliveryTier.ts",
      "packageName": "@happyvertical/smrt-ads",
      "fields": {
        "name": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "priority": {
          "type": "integer",
          "required": false,
          "default": 0
        },
        "pricingModel": {
          "type": "text",
          "required": false
        },
        "description": {
          "type": "text",
          "required": false,
          "default": ""
        }
      },
      "methods": {
        "isHigherPriorityThan": {
          "name": "isHigherPriorityThan",
          "async": false,
          "parameters": [
            {
              "name": "other",
              "type": "AdDeliveryTier",
              "optional": false
            }
          ],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isFixedPricing": {
          "name": "isFixedPricing",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isPerformanceBased": {
          "name": "isPerformanceBased",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "api": {
          "include": [
            "list",
            "get",
            "create",
            "update"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "AdDeliveryTier",
      "collectionExportName": "AdDeliveryTierCollection",
      "schema": {
        "tableName": "ad_delivery_tiers",
        "ddl": "CREATE TABLE IF NOT EXISTS \"ad_delivery_tiers\" (\n  \"id\" UUID PRIMARY KEY NOT NULL,\n  \"slug\" TEXT NOT NULL,\n  \"context\" TEXT NOT NULL DEFAULT '',\n  \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"name\" TEXT DEFAULT '',\n  \"priority\" INTEGER DEFAULT 0,\n  \"pricing_model\" TEXT,\n  \"description\" TEXT DEFAULT ''\n);",
        "columns": {
          "id": {
            "type": "UUID",
            "primaryKey": true,
            "referenceKind": "id",
            "notNull": true
          },
          "slug": {
            "type": "TEXT",
            "notNull": true
          },
          "context": {
            "type": "TEXT",
            "notNull": true,
            "default": ""
          },
          "created_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "updated_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "name": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "priority": {
            "type": "INTEGER",
            "notNull": false,
            "unique": false,
            "default": 0
          },
          "pricing_model": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "description": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          }
        },
        "indexes": [
          {
            "name": "ad_delivery_tiers_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "ad_delivery_tiers_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "df0ec0ff"
      }
    },
    "@happyvertical/smrt-ads:AdEvent": {
      "name": "adevent",
      "className": "AdEvent",
      "qualifiedName": "@happyvertical/smrt-ads:AdEvent",
      "collection": "adevents",
      "filePath": "/home/runner/work/smrt/smrt/packages/ads/src/models/AdEvent.ts",
      "packageName": "@happyvertical/smrt-ads",
      "fields": {
        "created_at": {
          "type": "datetime",
          "required": false
        },
        "updated_at": {
          "type": "datetime",
          "required": false
        },
        "tenantId": {
          "type": "text",
          "required": false,
          "_meta": {
            "sqlType": "UUID",
            "nullable": true,
            "__tenancy": {
              "isTenantIdField": true,
              "autoFilter": true,
              "required": false,
              "autoPopulate": true,
              "nullable": true,
              "mode": "optional",
              "field": "tenantId",
              "allowSuperAdminBypass": false
            }
          }
        },
        "variationId": {
          "type": "foreignKey",
          "required": false,
          "related": "AdVariation"
        },
        "zoneId": {
          "type": "crossPackageRef",
          "required": false,
          "related": "@happyvertical/smrt-properties:Zone"
        },
        "siteId": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "eventType": {
          "type": "text",
          "required": false
        },
        "timestamp": {
          "type": "datetime",
          "required": false
        },
        "metadata": {
          "type": "text",
          "required": false,
          "default": ""
        }
      },
      "methods": {
        "withDatabase": {
          "name": "withDatabase",
          "async": true,
          "parameters": [
            {
              "name": "db",
              "type": "DatabaseInterface",
              "optional": false
            },
            {
              "name": "operation",
              "type": "Function",
              "optional": false
            }
          ],
          "returnType": "Promise<T>",
          "isStatic": false,
          "isPublic": true
        },
        "getAiUsageSnapshot": {
          "name": "getAiUsageSnapshot",
          "async": false,
          "parameters": [],
          "returnType": "AiUsageSnapshot | undefined",
          "isStatic": false,
          "isPublic": true
        },
        "resetAiUsage": {
          "name": "resetAiUsage",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "listAiUsage": {
          "name": "listAiUsage",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiUsageListOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<SmrtAiUsageRecord[]>",
          "isStatic": false,
          "isPublic": true
        },
        "summarizeAiUsage": {
          "name": "summarizeAiUsage",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiUsageSummaryOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<Record<string, AiUsageStats>>",
          "isStatic": false,
          "isPublic": true
        },
        "destroy": {
          "name": "destroy",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "markAsPersisted": {
          "name": "markAsPersisted",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "requireInsertOnSave": {
          "name": "requireInsertOnSave",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "initialize": {
          "name": "initialize",
          "async": true,
          "parameters": [],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "loadDataFromDb": {
          "name": "loadDataFromDb",
          "async": true,
          "parameters": [
            {
              "name": "data",
              "type": "Record<string>",
              "optional": false
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getFields": {
          "name": "getFields",
          "async": true,
          "parameters": [],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "toJSON": {
          "name": "toJSON",
          "async": false,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "toPlainObject": {
          "name": "toPlainObject",
          "async": false,
          "parameters": [],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "toPublicJSON": {
          "name": "toPublicJSON",
          "async": false,
          "parameters": [
            {
              "name": "options",
              "type": "PublicJsonOptions",
              "optional": true
            }
          ],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "getId": {
          "name": "getId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getSlug": {
          "name": "getSlug",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getSavedId": {
          "name": "getSavedId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "isSaved": {
          "name": "isSaved",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "save": {
          "name": "save",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "classifyConstraintError": {
          "name": "classifyConstraintError",
          "async": false,
          "parameters": [
            {
              "name": "message",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "'unique' | 'not_null' | null",
          "isStatic": true,
          "isPublic": true
        },
        "loadFromId": {
          "name": "loadFromId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "loadFromSlug": {
          "name": "loadFromSlug",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "is": {
          "name": "is",
          "async": true,
          "parameters": [
            {
              "name": "criteria",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "do": {
          "name": "do",
          "async": true,
          "parameters": [
            {
              "name": "instructions",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "describe": {
          "name": "describe",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "delete": {
          "name": "delete",
          "async": true,
          "parameters": [],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "isRelatedLoaded": {
          "name": "isRelatedLoaded",
          "async": false,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "_setLoadedRelationship": {
          "name": "_setLoadedRelationship",
          "async": false,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "value",
              "type": "any",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "loadRelated": {
          "name": "loadRelated",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "loadRelatedMany": {
          "name": "loadRelatedMany",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getRelated": {
          "name": "getRelated",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "getAvailableTools": {
          "name": "getAvailableTools",
          "async": false,
          "parameters": [],
          "returnType": "AITool[]",
          "isStatic": false,
          "isPublic": true
        },
        "executeToolCall": {
          "name": "executeToolCall",
          "async": true,
          "parameters": [
            {
              "name": "toolCall",
              "type": "ToolCall",
              "optional": false
            }
          ],
          "returnType": "Promise<ToolCallResult>",
          "isStatic": false,
          "isPublic": true
        },
        "remember": {
          "name": "remember",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "recall": {
          "name": "recall",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "recallAll": {
          "name": "recallAll",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": true
            }
          ],
          "returnType": "Promise<Map<string>>",
          "isStatic": false,
          "isPublic": true
        },
        "forget": {
          "name": "forget",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "forgetScope": {
          "name": "forgetScope",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "generateEmbeddings": {
          "name": "generateEmbeddings",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "GenerateEmbeddingsOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "getEmbedding": {
          "name": "getEmbedding",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "model",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<number[] | null>",
          "isStatic": false,
          "isPublic": true
        },
        "hasStaleEmbeddings": {
          "name": "hasStaleEmbeddings",
          "async": true,
          "parameters": [],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "clearEmbeddings": {
          "name": "clearEmbeddings",
          "async": true,
          "parameters": [],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "getMetadata": {
          "name": "getMetadata",
          "async": false,
          "parameters": [],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "setMetadata": {
          "name": "setMetadata",
          "async": false,
          "parameters": [
            {
              "name": "data",
              "type": "Record<string>",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "isImpression": {
          "name": "isImpression",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isClick": {
          "name": "isClick",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isConversion": {
          "name": "isConversion",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableStrategy": "sti",
        "api": {
          "include": [
            "create",
            "list"
          ]
        },
        "mcp": {
          "include": [
            "create"
          ]
        },
        "cli": false,
        "tenantScoped": {
          "mode": "optional"
        },
        "conflictColumns": [
          "tenant_id",
          "slug",
          "context",
          "_meta_type"
        ]
      },
      "extends": "SmrtObject",
      "exportName": "AdEvent",
      "collectionExportName": "AdEventCollection",
      "schema": {
        "tableName": "ad_events",
        "ddl": "CREATE TABLE IF NOT EXISTS \"ad_events\" (\n  \"id\" UUID PRIMARY KEY NOT NULL,\n  \"slug\" TEXT NOT NULL,\n  \"context\" TEXT NOT NULL DEFAULT '',\n  \"_meta_type\" TEXT NOT NULL,\n  \"_meta_data\" JSON,\n  \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"tenant_id\" UUID,\n  \"variation_id\" UUID,\n  \"zone_id\" UUID,\n  \"site_id\" TEXT DEFAULT '',\n  \"event_type\" TEXT,\n  \"timestamp\" TIMESTAMP,\n  \"metadata\" TEXT DEFAULT ''\n);",
        "columns": {
          "id": {
            "type": "UUID",
            "primaryKey": true,
            "referenceKind": "id",
            "notNull": true
          },
          "slug": {
            "type": "TEXT",
            "notNull": true
          },
          "context": {
            "type": "TEXT",
            "notNull": true,
            "default": ""
          },
          "_meta_type": {
            "type": "TEXT",
            "notNull": true
          },
          "_meta_data": {
            "type": "JSON",
            "notNull": false
          },
          "created_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "updated_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "tenantId",
            "notNull": false
          },
          "variation_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": false,
            "foreignKey": {
              "table": "ad_variations",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "zone_id": {
            "type": "UUID",
            "referenceKind": "crossPackageRef",
            "notNull": false
          },
          "site_id": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "event_type": {
            "type": "TEXT",
            "notNull": false
          },
          "timestamp": {
            "type": "TIMESTAMP",
            "notNull": false
          },
          "metadata": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          }
        },
        "indexes": [
          {
            "name": "ad_events_slug_context_meta_type_idx",
            "columns": [
              "tenant_id",
              "slug",
              "context",
              "_meta_type"
            ],
            "unique": true
          },
          {
            "name": "ad_events_meta_type_idx",
            "columns": [
              "_meta_type"
            ]
          },
          {
            "name": "ad_events_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          },
          {
            "name": "ad_events_variation_id_idx",
            "columns": [
              "variation_id"
            ]
          },
          {
            "name": "ad_events_zone_id_idx",
            "columns": [
              "zone_id"
            ]
          }
        ],
        "version": "306d8050"
      }
    },
    "@happyvertical/smrt-ads:AdFormat": {
      "name": "adformat",
      "className": "AdFormat",
      "qualifiedName": "@happyvertical/smrt-ads:AdFormat",
      "collection": "adformats",
      "filePath": "/home/runner/work/smrt/smrt/packages/ads/src/models/AdFormat.ts",
      "packageName": "@happyvertical/smrt-ads",
      "fields": {
        "name": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "width": {
          "type": "integer",
          "required": false,
          "default": 0
        },
        "height": {
          "type": "integer",
          "required": false,
          "default": 0
        },
        "formatType": {
          "type": "text",
          "required": false
        },
        "description": {
          "type": "text",
          "required": false,
          "default": ""
        }
      },
      "methods": {
        "getDimensions": {
          "name": "getDimensions",
          "async": false,
          "parameters": [],
          "returnType": "string",
          "isStatic": false,
          "isPublic": true
        },
        "matchesDimensions": {
          "name": "matchesDimensions",
          "async": false,
          "parameters": [
            {
              "name": "width",
              "type": "number",
              "optional": false
            },
            {
              "name": "height",
              "type": "number",
              "optional": false
            }
          ],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "api": {
          "include": [
            "list",
            "get",
            "create",
            "update"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "AdFormat",
      "collectionExportName": "AdFormatCollection",
      "schema": {
        "tableName": "ad_formats",
        "ddl": "CREATE TABLE IF NOT EXISTS \"ad_formats\" (\n  \"id\" UUID PRIMARY KEY NOT NULL,\n  \"slug\" TEXT NOT NULL,\n  \"context\" TEXT NOT NULL DEFAULT '',\n  \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"name\" TEXT DEFAULT '',\n  \"width\" INTEGER DEFAULT 0,\n  \"height\" INTEGER DEFAULT 0,\n  \"format_type\" TEXT,\n  \"description\" TEXT DEFAULT ''\n);",
        "columns": {
          "id": {
            "type": "UUID",
            "primaryKey": true,
            "referenceKind": "id",
            "notNull": true
          },
          "slug": {
            "type": "TEXT",
            "notNull": true
          },
          "context": {
            "type": "TEXT",
            "notNull": true,
            "default": ""
          },
          "created_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "updated_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "name": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "width": {
            "type": "INTEGER",
            "notNull": false,
            "unique": false,
            "default": 0
          },
          "height": {
            "type": "INTEGER",
            "notNull": false,
            "unique": false,
            "default": 0
          },
          "format_type": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "description": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          }
        },
        "indexes": [
          {
            "name": "ad_formats_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "ad_formats_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "df40cc03"
      }
    },
    "@happyvertical/smrt-ads:AdGroup": {
      "name": "adgroup",
      "className": "AdGroup",
      "qualifiedName": "@happyvertical/smrt-ads:AdGroup",
      "collection": "adgroups",
      "filePath": "/home/runner/work/smrt/smrt/packages/ads/src/models/AdGroup.ts",
      "packageName": "@happyvertical/smrt-ads",
      "fields": {
        "created_at": {
          "type": "datetime",
          "required": false
        },
        "updated_at": {
          "type": "datetime",
          "required": false
        },
        "tenantId": {
          "type": "text",
          "required": false,
          "_meta": {
            "sqlType": "UUID",
            "nullable": true,
            "__tenancy": {
              "isTenantIdField": true,
              "autoFilter": true,
              "required": false,
              "autoPopulate": true,
              "nullable": true,
              "mode": "optional",
              "field": "tenantId",
              "allowSuperAdminBypass": false
            }
          }
        },
        "contractId": {
          "type": "crossPackageRef",
          "required": false,
          "related": "@happyvertical/smrt-commerce:Contract"
        },
        "tierId": {
          "type": "foreignKey",
          "required": false,
          "related": "AdDeliveryTier"
        },
        "name": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "verticalSlug": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "targeting": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "zoneIds": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "startDate": {
          "type": "datetime",
          "required": false
        },
        "endDate": {
          "type": "datetime",
          "required": false
        },
        "dailyBudget": {
          "type": "decimal",
          "required": false,
          "default": 0
        },
        "totalBudget": {
          "type": "decimal",
          "required": false,
          "default": 0
        },
        "status": {
          "type": "text",
          "required": false
        }
      },
      "methods": {
        "withDatabase": {
          "name": "withDatabase",
          "async": true,
          "parameters": [
            {
              "name": "db",
              "type": "DatabaseInterface",
              "optional": false
            },
            {
              "name": "operation",
              "type": "Function",
              "optional": false
            }
          ],
          "returnType": "Promise<T>",
          "isStatic": false,
          "isPublic": true
        },
        "getAiUsageSnapshot": {
          "name": "getAiUsageSnapshot",
          "async": false,
          "parameters": [],
          "returnType": "AiUsageSnapshot | undefined",
          "isStatic": false,
          "isPublic": true
        },
        "resetAiUsage": {
          "name": "resetAiUsage",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "listAiUsage": {
          "name": "listAiUsage",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiUsageListOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<SmrtAiUsageRecord[]>",
          "isStatic": false,
          "isPublic": true
        },
        "summarizeAiUsage": {
          "name": "summarizeAiUsage",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiUsageSummaryOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<Record<string, AiUsageStats>>",
          "isStatic": false,
          "isPublic": true
        },
        "destroy": {
          "name": "destroy",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "markAsPersisted": {
          "name": "markAsPersisted",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "requireInsertOnSave": {
          "name": "requireInsertOnSave",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "initialize": {
          "name": "initialize",
          "async": true,
          "parameters": [],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "loadDataFromDb": {
          "name": "loadDataFromDb",
          "async": true,
          "parameters": [
            {
              "name": "data",
              "type": "Record<string>",
              "optional": false
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getFields": {
          "name": "getFields",
          "async": true,
          "parameters": [],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "toJSON": {
          "name": "toJSON",
          "async": false,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "toPlainObject": {
          "name": "toPlainObject",
          "async": false,
          "parameters": [],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "toPublicJSON": {
          "name": "toPublicJSON",
          "async": false,
          "parameters": [
            {
              "name": "options",
              "type": "PublicJsonOptions",
              "optional": true
            }
          ],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "getId": {
          "name": "getId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getSlug": {
          "name": "getSlug",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getSavedId": {
          "name": "getSavedId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "isSaved": {
          "name": "isSaved",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "save": {
          "name": "save",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "classifyConstraintError": {
          "name": "classifyConstraintError",
          "async": false,
          "parameters": [
            {
              "name": "message",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "'unique' | 'not_null' | null",
          "isStatic": true,
          "isPublic": true
        },
        "loadFromId": {
          "name": "loadFromId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "loadFromSlug": {
          "name": "loadFromSlug",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "is": {
          "name": "is",
          "async": true,
          "parameters": [
            {
              "name": "criteria",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "do": {
          "name": "do",
          "async": true,
          "parameters": [
            {
              "name": "instructions",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "describe": {
          "name": "describe",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "delete": {
          "name": "delete",
          "async": true,
          "parameters": [],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "isRelatedLoaded": {
          "name": "isRelatedLoaded",
          "async": false,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "_setLoadedRelationship": {
          "name": "_setLoadedRelationship",
          "async": false,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "value",
              "type": "any",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "loadRelated": {
          "name": "loadRelated",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "loadRelatedMany": {
          "name": "loadRelatedMany",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getRelated": {
          "name": "getRelated",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "getAvailableTools": {
          "name": "getAvailableTools",
          "async": false,
          "parameters": [],
          "returnType": "AITool[]",
          "isStatic": false,
          "isPublic": true
        },
        "executeToolCall": {
          "name": "executeToolCall",
          "async": true,
          "parameters": [
            {
              "name": "toolCall",
              "type": "ToolCall",
              "optional": false
            }
          ],
          "returnType": "Promise<ToolCallResult>",
          "isStatic": false,
          "isPublic": true
        },
        "remember": {
          "name": "remember",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "recall": {
          "name": "recall",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "recallAll": {
          "name": "recallAll",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": true
            }
          ],
          "returnType": "Promise<Map<string>>",
          "isStatic": false,
          "isPublic": true
        },
        "forget": {
          "name": "forget",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "forgetScope": {
          "name": "forgetScope",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "generateEmbeddings": {
          "name": "generateEmbeddings",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "GenerateEmbeddingsOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "getEmbedding": {
          "name": "getEmbedding",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "model",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<number[] | null>",
          "isStatic": false,
          "isPublic": true
        },
        "hasStaleEmbeddings": {
          "name": "hasStaleEmbeddings",
          "async": true,
          "parameters": [],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "clearEmbeddings": {
          "name": "clearEmbeddings",
          "async": true,
          "parameters": [],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "getZoneIds": {
          "name": "getZoneIds",
          "async": false,
          "parameters": [],
          "returnType": "string[]",
          "isStatic": false,
          "isPublic": true
        },
        "setZoneIds": {
          "name": "setZoneIds",
          "async": false,
          "parameters": [
            {
              "name": "ids",
              "type": "string[]",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "addZoneId": {
          "name": "addZoneId",
          "async": false,
          "parameters": [
            {
              "name": "zoneId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "removeZoneId": {
          "name": "removeZoneId",
          "async": false,
          "parameters": [
            {
              "name": "zoneId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "hasZoneId": {
          "name": "hasZoneId",
          "async": false,
          "parameters": [
            {
              "name": "zoneId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "getTargeting": {
          "name": "getTargeting",
          "async": false,
          "parameters": [],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "setTargeting": {
          "name": "setTargeting",
          "async": false,
          "parameters": [
            {
              "name": "rules",
              "type": "Record<string>",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "isActive": {
          "name": "isActive",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isDraft": {
          "name": "isDraft",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isPaused": {
          "name": "isPaused",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isCompleted": {
          "name": "isCompleted",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "hasEnded": {
          "name": "hasEnded",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "hasStarted": {
          "name": "hasStarted",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableStrategy": "sti",
        "api": {
          "include": [
            "list",
            "get",
            "create",
            "update"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get",
            "create"
          ]
        },
        "cli": true,
        "tenantScoped": {
          "mode": "optional"
        },
        "conflictColumns": [
          "tenant_id",
          "slug",
          "context",
          "_meta_type"
        ]
      },
      "extends": "SmrtObject",
      "exportName": "AdGroup",
      "collectionExportName": "AdGroupCollection",
      "schema": {
        "tableName": "ad_groups",
        "ddl": "CREATE TABLE IF NOT EXISTS \"ad_groups\" (\n  \"id\" UUID PRIMARY KEY NOT NULL,\n  \"slug\" TEXT NOT NULL,\n  \"context\" TEXT NOT NULL DEFAULT '',\n  \"_meta_type\" TEXT NOT NULL,\n  \"_meta_data\" JSON,\n  \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"tenant_id\" UUID,\n  \"contract_id\" UUID,\n  \"tier_id\" UUID,\n  \"name\" TEXT DEFAULT '',\n  \"vertical_slug\" TEXT DEFAULT '',\n  \"targeting\" TEXT DEFAULT '',\n  \"zone_ids\" TEXT DEFAULT '',\n  \"start_date\" TIMESTAMP,\n  \"end_date\" TIMESTAMP,\n  \"daily_budget\" REAL DEFAULT 0,\n  \"total_budget\" REAL DEFAULT 0,\n  \"status\" TEXT\n);",
        "columns": {
          "id": {
            "type": "UUID",
            "primaryKey": true,
            "referenceKind": "id",
            "notNull": true
          },
          "slug": {
            "type": "TEXT",
            "notNull": true
          },
          "context": {
            "type": "TEXT",
            "notNull": true,
            "default": ""
          },
          "_meta_type": {
            "type": "TEXT",
            "notNull": true
          },
          "_meta_data": {
            "type": "JSON",
            "notNull": false
          },
          "created_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "updated_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "tenantId",
            "notNull": false
          },
          "contract_id": {
            "type": "UUID",
            "referenceKind": "crossPackageRef",
            "notNull": false
          },
          "tier_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": false,
            "foreignKey": {
              "table": "ad_delivery_tiers",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "name": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "vertical_slug": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "targeting": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "zone_ids": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "start_date": {
            "type": "TIMESTAMP",
            "notNull": false
          },
          "end_date": {
            "type": "TIMESTAMP",
            "notNull": false
          },
          "daily_budget": {
            "type": "REAL",
            "notNull": false,
            "default": 0
          },
          "total_budget": {
            "type": "REAL",
            "notNull": false,
            "default": 0
          },
          "status": {
            "type": "TEXT",
            "notNull": false
          }
        },
        "indexes": [
          {
            "name": "ad_groups_slug_context_meta_type_idx",
            "columns": [
              "tenant_id",
              "slug",
              "context",
              "_meta_type"
            ],
            "unique": true
          },
          {
            "name": "ad_groups_meta_type_idx",
            "columns": [
              "_meta_type"
            ]
          },
          {
            "name": "ad_groups_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          },
          {
            "name": "ad_groups_contract_id_idx",
            "columns": [
              "contract_id"
            ]
          },
          {
            "name": "ad_groups_tier_id_idx",
            "columns": [
              "tier_id"
            ]
          }
        ],
        "version": "3f8a3fea"
      }
    },
    "@happyvertical/smrt-ads:AdVariation": {
      "name": "advariation",
      "className": "AdVariation",
      "qualifiedName": "@happyvertical/smrt-ads:AdVariation",
      "collection": "advariations",
      "filePath": "/home/runner/work/smrt/smrt/packages/ads/src/models/AdVariation.ts",
      "packageName": "@happyvertical/smrt-ads",
      "fields": {
        "created_at": {
          "type": "datetime",
          "required": false
        },
        "updated_at": {
          "type": "datetime",
          "required": false
        },
        "tenantId": {
          "type": "text",
          "required": false,
          "_meta": {
            "sqlType": "UUID",
            "nullable": true,
            "__tenancy": {
              "isTenantIdField": true,
              "autoFilter": true,
              "required": false,
              "autoPopulate": true,
              "nullable": true,
              "mode": "optional",
              "field": "tenantId",
              "allowSuperAdminBypass": false
            }
          }
        },
        "groupId": {
          "type": "foreignKey",
          "required": false,
          "related": "AdGroup"
        },
        "formatId": {
          "type": "foreignKey",
          "required": false,
          "related": "AdFormat"
        },
        "assetId": {
          "type": "crossPackageRef",
          "required": false,
          "related": "@happyvertical/smrt-assets:Asset"
        },
        "name": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "clickUrl": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "altText": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "weight": {
          "type": "integer",
          "required": false,
          "default": 1
        },
        "status": {
          "type": "text",
          "required": false
        },
        "impressions": {
          "type": "integer",
          "required": false,
          "default": 0
        },
        "clicks": {
          "type": "integer",
          "required": false,
          "default": 0
        }
      },
      "methods": {
        "withDatabase": {
          "name": "withDatabase",
          "async": true,
          "parameters": [
            {
              "name": "db",
              "type": "DatabaseInterface",
              "optional": false
            },
            {
              "name": "operation",
              "type": "Function",
              "optional": false
            }
          ],
          "returnType": "Promise<T>",
          "isStatic": false,
          "isPublic": true
        },
        "getAiUsageSnapshot": {
          "name": "getAiUsageSnapshot",
          "async": false,
          "parameters": [],
          "returnType": "AiUsageSnapshot | undefined",
          "isStatic": false,
          "isPublic": true
        },
        "resetAiUsage": {
          "name": "resetAiUsage",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "listAiUsage": {
          "name": "listAiUsage",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiUsageListOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<SmrtAiUsageRecord[]>",
          "isStatic": false,
          "isPublic": true
        },
        "summarizeAiUsage": {
          "name": "summarizeAiUsage",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiUsageSummaryOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<Record<string, AiUsageStats>>",
          "isStatic": false,
          "isPublic": true
        },
        "destroy": {
          "name": "destroy",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "markAsPersisted": {
          "name": "markAsPersisted",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "requireInsertOnSave": {
          "name": "requireInsertOnSave",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "initialize": {
          "name": "initialize",
          "async": true,
          "parameters": [],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "loadDataFromDb": {
          "name": "loadDataFromDb",
          "async": true,
          "parameters": [
            {
              "name": "data",
              "type": "Record<string>",
              "optional": false
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getFields": {
          "name": "getFields",
          "async": true,
          "parameters": [],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "toJSON": {
          "name": "toJSON",
          "async": false,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "toPlainObject": {
          "name": "toPlainObject",
          "async": false,
          "parameters": [],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "toPublicJSON": {
          "name": "toPublicJSON",
          "async": false,
          "parameters": [
            {
              "name": "options",
              "type": "PublicJsonOptions",
              "optional": true
            }
          ],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "getId": {
          "name": "getId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getSlug": {
          "name": "getSlug",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "getSavedId": {
          "name": "getSavedId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "isSaved": {
          "name": "isSaved",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "save": {
          "name": "save",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "classifyConstraintError": {
          "name": "classifyConstraintError",
          "async": false,
          "parameters": [
            {
              "name": "message",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "'unique' | 'not_null' | null",
          "isStatic": true,
          "isPublic": true
        },
        "loadFromId": {
          "name": "loadFromId",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "loadFromSlug": {
          "name": "loadFromSlug",
          "async": true,
          "parameters": [],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "is": {
          "name": "is",
          "async": true,
          "parameters": [
            {
              "name": "criteria",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "do": {
          "name": "do",
          "async": true,
          "parameters": [
            {
              "name": "instructions",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "describe": {
          "name": "describe",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "AiOperationOptions",
              "optional": true
            }
          ],
          "returnType": "any",
          "isStatic": false,
          "isPublic": true
        },
        "delete": {
          "name": "delete",
          "async": true,
          "parameters": [],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "isRelatedLoaded": {
          "name": "isRelatedLoaded",
          "async": false,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "_setLoadedRelationship": {
          "name": "_setLoadedRelationship",
          "async": false,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "value",
              "type": "any",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "loadRelated": {
          "name": "loadRelated",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "loadRelatedMany": {
          "name": "loadRelatedMany",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getRelated": {
          "name": "getRelated",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "opts",
              "type": "LoadRelatedOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<any>",
          "isStatic": false,
          "isPublic": true
        },
        "getAvailableTools": {
          "name": "getAvailableTools",
          "async": false,
          "parameters": [],
          "returnType": "AITool[]",
          "isStatic": false,
          "isPublic": true
        },
        "executeToolCall": {
          "name": "executeToolCall",
          "async": true,
          "parameters": [
            {
              "name": "toolCall",
              "type": "ToolCall",
              "optional": false
            }
          ],
          "returnType": "Promise<ToolCallResult>",
          "isStatic": false,
          "isPublic": true
        },
        "remember": {
          "name": "remember",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "recall": {
          "name": "recall",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "recallAll": {
          "name": "recallAll",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": true
            }
          ],
          "returnType": "Promise<Map<string>>",
          "isStatic": false,
          "isPublic": true
        },
        "forget": {
          "name": "forget",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "forgetScope": {
          "name": "forgetScope",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "generateEmbeddings": {
          "name": "generateEmbeddings",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "GenerateEmbeddingsOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "getEmbedding": {
          "name": "getEmbedding",
          "async": true,
          "parameters": [
            {
              "name": "fieldName",
              "type": "string",
              "optional": false
            },
            {
              "name": "model",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<number[] | null>",
          "isStatic": false,
          "isPublic": true
        },
        "hasStaleEmbeddings": {
          "name": "hasStaleEmbeddings",
          "async": true,
          "parameters": [],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "clearEmbeddings": {
          "name": "clearEmbeddings",
          "async": true,
          "parameters": [],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        },
        "isActive": {
          "name": "isActive",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isDraft": {
          "name": "isDraft",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isPaused": {
          "name": "isPaused",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "getCTR": {
          "name": "getCTR",
          "async": false,
          "parameters": [],
          "returnType": "number",
          "isStatic": false,
          "isPublic": true
        },
        "recordImpression": {
          "name": "recordImpression",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "recordClick": {
          "name": "recordClick",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableStrategy": "sti",
        "api": {
          "include": [
            "list",
            "get",
            "create",
            "update"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get",
            "create"
          ]
        },
        "cli": true,
        "tenantScoped": {
          "mode": "optional"
        },
        "conflictColumns": [
          "tenant_id",
          "slug",
          "context",
          "_meta_type"
        ]
      },
      "extends": "SmrtObject",
      "exportName": "AdVariation",
      "collectionExportName": "AdVariationCollection",
      "schema": {
        "tableName": "ad_variations",
        "ddl": "CREATE TABLE IF NOT EXISTS \"ad_variations\" (\n  \"id\" UUID PRIMARY KEY NOT NULL,\n  \"slug\" TEXT NOT NULL,\n  \"context\" TEXT NOT NULL DEFAULT '',\n  \"_meta_type\" TEXT NOT NULL,\n  \"_meta_data\" JSON,\n  \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n  \"tenant_id\" UUID,\n  \"group_id\" UUID,\n  \"format_id\" UUID,\n  \"asset_id\" UUID,\n  \"name\" TEXT DEFAULT '',\n  \"click_url\" TEXT DEFAULT '',\n  \"alt_text\" TEXT DEFAULT '',\n  \"weight\" INTEGER DEFAULT 1,\n  \"status\" TEXT,\n  \"impressions\" INTEGER DEFAULT 0,\n  \"clicks\" INTEGER DEFAULT 0\n);",
        "columns": {
          "id": {
            "type": "UUID",
            "primaryKey": true,
            "referenceKind": "id",
            "notNull": true
          },
          "slug": {
            "type": "TEXT",
            "notNull": true
          },
          "context": {
            "type": "TEXT",
            "notNull": true,
            "default": ""
          },
          "_meta_type": {
            "type": "TEXT",
            "notNull": true
          },
          "_meta_data": {
            "type": "JSON",
            "notNull": false
          },
          "created_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "updated_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "tenantId",
            "notNull": false
          },
          "group_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": false,
            "foreignKey": {
              "table": "ad_groups",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "format_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": false,
            "foreignKey": {
              "table": "ad_formats",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "asset_id": {
            "type": "UUID",
            "referenceKind": "crossPackageRef",
            "notNull": false
          },
          "name": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "click_url": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "alt_text": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "weight": {
            "type": "INTEGER",
            "notNull": false,
            "default": 1
          },
          "status": {
            "type": "TEXT",
            "notNull": false
          },
          "impressions": {
            "type": "INTEGER",
            "notNull": false,
            "default": 0
          },
          "clicks": {
            "type": "INTEGER",
            "notNull": false,
            "default": 0
          }
        },
        "indexes": [
          {
            "name": "ad_variations_slug_context_meta_type_idx",
            "columns": [
              "tenant_id",
              "slug",
              "context",
              "_meta_type"
            ],
            "unique": true
          },
          {
            "name": "ad_variations_meta_type_idx",
            "columns": [
              "_meta_type"
            ]
          },
          {
            "name": "ad_variations_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          },
          {
            "name": "ad_variations_group_id_idx",
            "columns": [
              "group_id"
            ]
          },
          {
            "name": "ad_variations_format_id_idx",
            "columns": [
              "format_id"
            ]
          },
          {
            "name": "ad_variations_asset_id_idx",
            "columns": [
              "asset_id"
            ]
          }
        ],
        "version": "e8fb6233"
      }
    }
  },
  "moduleType": "smrt",
  "smrtDependencies": [
    "@happyvertical/smrt-commerce",
    "@happyvertical/smrt-core",
    "@happyvertical/smrt-tenancy"
  ]
}