{
  "version": "1.0.0",
  "timestamp": 0,
  "packageName": "@happyvertical/smrt-features",
  "packageVersion": "0.51.10",
  "objects": {
    "@happyvertical/smrt-features:FeatureDefinition": {
      "name": "featuredefinition",
      "className": "FeatureDefinition",
      "qualifiedName": "@happyvertical/smrt-features:FeatureDefinition",
      "collection": "featuredefinitions",
      "filePath": "/home/runner/work/smrt/smrt/packages/features/src/feature-definition.ts",
      "packageName": "@happyvertical/smrt-features",
      "fields": {
        "featureKey": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "packageName": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "qualifiedClassName": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "className": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "localId": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "defaultEnabled": {
          "type": "boolean",
          "required": false,
          "default": false
        },
        "label": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "description": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "metadata": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "visibility": {
          "type": "text",
          "required": false,
          "default": "public"
        }
      },
      "methods": {
        "getMetadata": {
          "name": "getMetadata",
          "async": false,
          "parameters": [],
          "returnType": "FeatureMetadata",
          "isStatic": false,
          "isPublic": true
        },
        "setMetadata": {
          "name": "setMetadata",
          "async": false,
          "parameters": [
            {
              "name": "metadata",
              "type": "FeatureMetadata | null",
              "optional": false,
              "unionBranches": [
                {
                  "type": "FeatureMetadata"
                },
                {
                  "type": "null"
                }
              ]
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "_smrt_feature_definitions",
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": {
          "include": [
            "list",
            "get"
          ],
          "exclude": [
            "getMetadata",
            "setMetadata"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ],
          "exclude": [
            "getMetadata",
            "setMetadata"
          ]
        },
        "conflictColumns": [
          "feature_key"
        ]
      },
      "extends": "SmrtObject",
      "exportName": "FeatureDefinition",
      "collectionExportName": "FeatureDefinitionCollection",
      "schema": {
        "tableName": "_smrt_feature_definitions",
        "ddl": "CREATE TABLE IF NOT EXISTS \"_smrt_feature_definitions\" (\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  \"feature_key\" TEXT DEFAULT '',\n  \"package_name\" TEXT DEFAULT '',\n  \"qualified_class_name\" TEXT DEFAULT '',\n  \"class_name\" TEXT DEFAULT '',\n  \"local_id\" TEXT DEFAULT '',\n  \"default_enabled\" BOOLEAN DEFAULT FALSE,\n  \"label\" TEXT DEFAULT '',\n  \"description\" TEXT DEFAULT '',\n  \"metadata\" TEXT DEFAULT '',\n  \"visibility\" TEXT DEFAULT 'public'\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"
          },
          "feature_key": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "package_name": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "qualified_class_name": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "class_name": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "local_id": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "default_enabled": {
            "type": "BOOLEAN",
            "notNull": false,
            "unique": false,
            "default": false
          },
          "label": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "description": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "metadata": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "visibility": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": "public"
          }
        },
        "indexes": [
          {
            "name": "_smrt_feature_definitions_feature_key_idx",
            "columns": [
              "feature_key"
            ],
            "unique": true,
            "nullsNotDistinct": true
          },
          {
            "name": "_smrt_feature_definitions_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ]
          },
          {
            "name": "_smrt_feature_definitions_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "8813204c"
      },
      "importPath": "@happyvertical/smrt-features"
    },
    "@happyvertical/smrt-features:FeatureDefinitionCollection": {
      "name": "featuredefinitioncollection",
      "className": "FeatureDefinitionCollection",
      "qualifiedName": "@happyvertical/smrt-features:FeatureDefinitionCollection",
      "collection": "featuredefinitions",
      "filePath": "/home/runner/work/smrt/smrt/packages/features/src/feature-definitions.ts",
      "packageName": "@happyvertical/smrt-features",
      "fields": {},
      "methods": {
        "findByFeatureKey": {
          "name": "findByFeatureKey",
          "async": true,
          "parameters": [
            {
              "name": "featureKey",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<FeatureDefinition | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findByPackageName": {
          "name": "findByPackageName",
          "async": true,
          "parameters": [
            {
              "name": "packageName",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<FeatureDefinition[]>",
          "isStatic": false,
          "isPublic": true
        },
        "upsertDefinition": {
          "name": "upsertDefinition",
          "async": true,
          "parameters": [
            {
              "name": "seed",
              "type": "FeatureDefinitionSeed",
              "optional": false
            }
          ],
          "returnType": "Promise<object>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "_smrt_feature_definitions"
      },
      "extends": "SmrtCollection",
      "extendsTypeArg": "FeatureDefinition",
      "exportName": "FeatureDefinitionCollection",
      "collectionExportName": "FeatureDefinitionCollectionCollection",
      "schema": {
        "tableName": "_smrt_feature_definitions",
        "ddl": "CREATE TABLE IF NOT EXISTS \"_smrt_feature_definitions\" (\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  \"feature_key\" TEXT DEFAULT '',\n  \"package_name\" TEXT DEFAULT '',\n  \"qualified_class_name\" TEXT DEFAULT '',\n  \"class_name\" TEXT DEFAULT '',\n  \"local_id\" TEXT DEFAULT '',\n  \"default_enabled\" BOOLEAN DEFAULT FALSE,\n  \"label\" TEXT DEFAULT '',\n  \"description\" TEXT DEFAULT '',\n  \"metadata\" TEXT DEFAULT '',\n  \"visibility\" TEXT DEFAULT 'public'\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"
          },
          "feature_key": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "package_name": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "qualified_class_name": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "class_name": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "local_id": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "default_enabled": {
            "type": "BOOLEAN",
            "notNull": false,
            "unique": false,
            "default": false
          },
          "label": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "description": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "metadata": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "visibility": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": "public"
          }
        },
        "indexes": [
          {
            "name": "_smrt_feature_definitions_feature_key_idx",
            "columns": [
              "feature_key"
            ],
            "unique": true,
            "nullsNotDistinct": true
          },
          {
            "name": "_smrt_feature_definitions_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ]
          },
          {
            "name": "_smrt_feature_definitions_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "8813204c"
      },
      "importPath": "@happyvertical/smrt-features"
    },
    "@happyvertical/smrt-features:FeatureOverride": {
      "name": "featureoverride",
      "className": "FeatureOverride",
      "qualifiedName": "@happyvertical/smrt-features:FeatureOverride",
      "collection": "featureoverrides",
      "filePath": "/home/runner/work/smrt/smrt/packages/features/src/feature-override.ts",
      "packageName": "@happyvertical/smrt-features",
      "fields": {
        "featureKey": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "scopeType": {
          "type": "text",
          "required": false,
          "default": "global"
        },
        "scopeId": {
          "type": "text",
          "required": false
        },
        "effect": {
          "type": "text",
          "required": false
        }
      },
      "methods": {
        "isInherit": {
          "name": "isInherit",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isEnabled": {
          "name": "isEnabled",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isDisabled": {
          "name": "isDisabled",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "_smrt_feature_overrides",
        "api": {
          "include": [
            "list",
            "get",
            "create",
            "update",
            "delete"
          ]
        },
        "cli": {
          "exclude": [
            "isInherit",
            "isEnabled",
            "isDisabled"
          ]
        },
        "mcp": {
          "exclude": [
            "isInherit",
            "isEnabled",
            "isDisabled"
          ]
        },
        "conflictColumns": [
          "feature_key",
          "scope_type",
          "scope_id"
        ]
      },
      "extends": "SmrtObject",
      "exportName": "FeatureOverride",
      "collectionExportName": "FeatureOverrideCollection",
      "schema": {
        "tableName": "_smrt_feature_overrides",
        "ddl": "CREATE TABLE IF NOT EXISTS \"_smrt_feature_overrides\" (\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  \"feature_key\" TEXT DEFAULT '',\n  \"scope_type\" TEXT DEFAULT 'global',\n  \"scope_id\" TEXT,\n  \"effect\" TEXT\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"
          },
          "feature_key": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "scope_type": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": "global"
          },
          "scope_id": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "effect": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "_smrt_feature_overrides_feature_key_scope_type_idx",
            "columns": [
              "feature_key",
              "scope_type",
              "scope_id"
            ],
            "unique": true,
            "nullsNotDistinct": true
          },
          {
            "name": "_smrt_feature_overrides_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ]
          },
          {
            "name": "_smrt_feature_overrides_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "d61cf901"
      },
      "importPath": "@happyvertical/smrt-features"
    },
    "@happyvertical/smrt-features:FeatureOverrideCollection": {
      "name": "featureoverridecollection",
      "className": "FeatureOverrideCollection",
      "qualifiedName": "@happyvertical/smrt-features:FeatureOverrideCollection",
      "collection": "featureoverrides",
      "filePath": "/home/runner/work/smrt/smrt/packages/features/src/feature-overrides.ts",
      "packageName": "@happyvertical/smrt-features",
      "fields": {},
      "methods": {
        "findByFeatureKey": {
          "name": "findByFeatureKey",
          "async": true,
          "parameters": [
            {
              "name": "featureKey",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<FeatureOverride[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByFeatureAndScope": {
          "name": "findByFeatureAndScope",
          "async": true,
          "parameters": [
            {
              "name": "featureKey",
              "type": "string",
              "optional": false
            },
            {
              "name": "scopeType",
              "type": "FeatureScopeType",
              "optional": false
            },
            {
              "name": "scopeId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<FeatureOverride | null>",
          "isStatic": false,
          "isPublic": true
        },
        "getGlobalOverride": {
          "name": "getGlobalOverride",
          "async": true,
          "parameters": [
            {
              "name": "featureKey",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<FeatureOverride | null>",
          "isStatic": false,
          "isPublic": true
        },
        "getTenantOverride": {
          "name": "getTenantOverride",
          "async": true,
          "parameters": [
            {
              "name": "featureKey",
              "type": "string",
              "optional": false
            },
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<FeatureOverride | null>",
          "isStatic": false,
          "isPublic": true
        },
        "getOverrideMap": {
          "name": "getOverrideMap",
          "async": true,
          "parameters": [
            {
              "name": "featureKey",
              "type": "string",
              "optional": false
            },
            {
              "name": "scopeType",
              "type": "FeatureScopeType",
              "optional": false
            },
            {
              "name": "scopeIds",
              "type": "string[]",
              "optional": false
            }
          ],
          "returnType": "Promise<Map<string, FeatureOverride>>",
          "isStatic": false,
          "isPublic": true
        },
        "setOverride": {
          "name": "setOverride",
          "async": true,
          "parameters": [
            {
              "name": "featureKey",
              "type": "string",
              "optional": false
            },
            {
              "name": "scopeType",
              "type": "FeatureScopeType",
              "optional": false
            },
            {
              "name": "scopeId",
              "type": "string",
              "optional": false
            },
            {
              "name": "effect",
              "type": "FeatureOverrideEffect",
              "optional": false
            }
          ],
          "returnType": "Promise<FeatureOverride>",
          "isStatic": false,
          "isPublic": true
        },
        "setGlobalOverride": {
          "name": "setGlobalOverride",
          "async": true,
          "parameters": [
            {
              "name": "featureKey",
              "type": "string",
              "optional": false
            },
            {
              "name": "effect",
              "type": "FeatureOverrideEffect",
              "optional": false
            }
          ],
          "returnType": "Promise<FeatureOverride>",
          "isStatic": false,
          "isPublic": true
        },
        "setTenantOverride": {
          "name": "setTenantOverride",
          "async": true,
          "parameters": [
            {
              "name": "featureKey",
              "type": "string",
              "optional": false
            },
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "effect",
              "type": "FeatureOverrideEffect",
              "optional": false
            }
          ],
          "returnType": "Promise<FeatureOverride>",
          "isStatic": false,
          "isPublic": true
        },
        "removeOverride": {
          "name": "removeOverride",
          "async": true,
          "parameters": [
            {
              "name": "featureKey",
              "type": "string",
              "optional": false
            },
            {
              "name": "scopeType",
              "type": "FeatureScopeType",
              "optional": false
            },
            {
              "name": "scopeId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "_smrt_feature_overrides"
      },
      "extends": "SmrtCollection",
      "extendsTypeArg": "FeatureOverride",
      "exportName": "FeatureOverrideCollection",
      "collectionExportName": "FeatureOverrideCollectionCollection",
      "schema": {
        "tableName": "_smrt_feature_overrides",
        "ddl": "CREATE TABLE IF NOT EXISTS \"_smrt_feature_overrides\" (\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  \"feature_key\" TEXT DEFAULT '',\n  \"scope_type\" TEXT DEFAULT 'global',\n  \"scope_id\" TEXT,\n  \"effect\" TEXT\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"
          },
          "feature_key": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "scope_type": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": "global"
          },
          "scope_id": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "effect": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "_smrt_feature_overrides_feature_key_scope_type_idx",
            "columns": [
              "feature_key",
              "scope_type",
              "scope_id"
            ],
            "unique": true,
            "nullsNotDistinct": true
          },
          {
            "name": "_smrt_feature_overrides_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ]
          },
          {
            "name": "_smrt_feature_overrides_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "d61cf901"
      },
      "importPath": "@happyvertical/smrt-features"
    }
  },
  "moduleType": "smrt",
  "smrtDependencies": [
    "@happyvertical/smrt-core",
    "@happyvertical/smrt-users"
  ]
}