{
  "version": "1.0.0",
  "timestamp": 0,
  "packageName": "@happyvertical/smrt-users",
  "packageVersion": "0.43.3",
  "objects": {
    "@happyvertical/smrt-users:AccessRequestCollection": {
      "name": "accessrequestcollection",
      "className": "AccessRequestCollection",
      "qualifiedName": "@happyvertical/smrt-users:AccessRequestCollection",
      "collection": "accessrequests",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/AccessRequestCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "findByEmail": {
          "name": "findByEmail",
          "async": true,
          "parameters": [
            {
              "name": "email",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AccessRequest[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findOpenByEmail": {
          "name": "findOpenByEmail",
          "async": true,
          "parameters": [
            {
              "name": "email",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<AccessRequest | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findByStatus": {
          "name": "findByStatus",
          "async": true,
          "parameters": [
            {
              "name": "status",
              "type": "AccessRequestStatus",
              "optional": false
            }
          ],
          "returnType": "Promise<AccessRequest[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findOpen": {
          "name": "findOpen",
          "async": true,
          "parameters": [],
          "returnType": "Promise<AccessRequest[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "access_requests"
      },
      "extends": "SmrtCollection",
      "extendsTypeArg": "AccessRequest",
      "exportName": "AccessRequestCollection",
      "collectionExportName": "AccessRequestCollectionCollection",
      "schema": {
        "tableName": "access_requests",
        "ddl": "CREATE TABLE IF NOT EXISTS \"access_requests\" (\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": "access_requests_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "access_requests_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "c7691cc2"
      }
    },
    "@happyvertical/smrt-users:UsersCliAuthApproveLimitCollection": {
      "name": "userscliauthapprovelimitcollection",
      "className": "UsersCliAuthApproveLimitCollection",
      "qualifiedName": "@happyvertical/smrt-users:UsersCliAuthApproveLimitCollection",
      "collection": "userscliauthapprovelimits",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/CliAuthApproveLimitCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "reserveAttempt": {
          "name": "reserveAttempt",
          "async": true,
          "parameters": [
            {
              "name": "input",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "Promise<CliAuthApproveReservation>",
          "isStatic": false,
          "isPublic": true
        },
        "releaseAttempt": {
          "name": "releaseAttempt",
          "async": true,
          "parameters": [
            {
              "name": "userId",
              "type": "string",
              "optional": false
            },
            {
              "name": "windowStartedAt",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "users_cli_auth_approve_limits"
      },
      "extends": "SmrtCollection",
      "extendsTypeArg": "UsersCliAuthApproveLimit",
      "exportName": "UsersCliAuthApproveLimitCollection",
      "collectionExportName": "UsersCliAuthApproveLimitCollectionCollection",
      "schema": {
        "tableName": "users_cli_auth_approve_limits",
        "ddl": "CREATE TABLE IF NOT EXISTS \"users_cli_auth_approve_limits\" (\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": "users_cli_auth_approve_limits_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "users_cli_auth_approve_limits_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "6c3ff0c4"
      }
    },
    "@happyvertical/smrt-users:UsersCliAuthRequestCollection": {
      "name": "userscliauthrequestcollection",
      "className": "UsersCliAuthRequestCollection",
      "qualifiedName": "@happyvertical/smrt-users:UsersCliAuthRequestCollection",
      "collection": "userscliauthrequests",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/CliAuthRequestCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "approvePendingRequest": {
          "name": "approvePendingRequest",
          "async": true,
          "parameters": [
            {
              "name": "input",
              "type": "ApprovePendingCliAuthRequestInput",
              "optional": false
            }
          ],
          "returnType": "Promise<ApprovedCliAuthRequestSnapshot | null>",
          "isStatic": false,
          "isPublic": true
        },
        "consumeApprovedSession": {
          "name": "consumeApprovedSession",
          "async": true,
          "parameters": [
            {
              "name": "deviceCodeHash",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<string | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findByUserCode": {
          "name": "findByUserCode",
          "async": true,
          "parameters": [
            {
              "name": "userCode",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<UsersCliAuthRequest | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findByDeviceCodeHash": {
          "name": "findByDeviceCodeHash",
          "async": true,
          "parameters": [
            {
              "name": "deviceCodeHash",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<UsersCliAuthRequest | null>",
          "isStatic": false,
          "isPublic": true
        },
        "deleteExpired": {
          "name": "deleteExpired",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": true
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "users_cli_auth_requests"
      },
      "extends": "SmrtCollection",
      "extendsTypeArg": "UsersCliAuthRequest",
      "exportName": "UsersCliAuthRequestCollection",
      "collectionExportName": "UsersCliAuthRequestCollectionCollection",
      "schema": {
        "tableName": "users_cli_auth_requests",
        "ddl": "CREATE TABLE IF NOT EXISTS \"users_cli_auth_requests\" (\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": "users_cli_auth_requests_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "users_cli_auth_requests_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "0e072f3a"
      }
    },
    "@happyvertical/smrt-users:GroupCollection": {
      "name": "groupcollection",
      "className": "GroupCollection",
      "qualifiedName": "@happyvertical/smrt-users:GroupCollection",
      "collection": "groups",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/GroupCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "findByTenant": {
          "name": "findByTenant",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Group[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findBySlug": {
          "name": "findBySlug",
          "async": true,
          "parameters": [
            {
              "name": "slug",
              "type": "string",
              "optional": false
            },
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Group | null>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "Group",
      "exportName": "GroupCollection",
      "collectionExportName": "GroupCollectionCollection",
      "schema": {
        "tableName": "group_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"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": "group_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "group_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "10e23765"
      }
    },
    "@happyvertical/smrt-users:GroupMemberCollection": {
      "name": "groupmembercollection",
      "className": "GroupMemberCollection",
      "qualifiedName": "@happyvertical/smrt-users:GroupMemberCollection",
      "collection": "groupmembers",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/GroupMemberCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "findByGroup": {
          "name": "findByGroup",
          "async": true,
          "parameters": [
            {
              "name": "groupId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<GroupMember[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByUser": {
          "name": "findByUser",
          "async": true,
          "parameters": [
            {
              "name": "userId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<GroupMember[]>",
          "isStatic": false,
          "isPublic": true
        },
        "isMember": {
          "name": "isMember",
          "async": true,
          "parameters": [
            {
              "name": "groupId",
              "type": "string",
              "optional": false
            },
            {
              "name": "userId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "addMember": {
          "name": "addMember",
          "async": true,
          "parameters": [
            {
              "name": "groupId",
              "type": "string",
              "optional": false
            },
            {
              "name": "userId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<GroupMember>",
          "isStatic": false,
          "isPublic": true
        },
        "removeMember": {
          "name": "removeMember",
          "async": true,
          "parameters": [
            {
              "name": "groupId",
              "type": "string",
              "optional": false
            },
            {
              "name": "userId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "getGroupIds": {
          "name": "getGroupIds",
          "async": true,
          "parameters": [
            {
              "name": "userId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<string[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getGroupIdsForTenant": {
          "name": "getGroupIdsForTenant",
          "async": true,
          "parameters": [
            {
              "name": "userId",
              "type": "string",
              "optional": false
            },
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<string[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getUserIds": {
          "name": "getUserIds",
          "async": true,
          "parameters": [
            {
              "name": "groupId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<string[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "GroupMember",
      "exportName": "GroupMemberCollection",
      "collectionExportName": "GroupMemberCollectionCollection",
      "schema": {
        "tableName": "group_member_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"group_member_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": "group_member_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "group_member_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "f61e9ad6"
      }
    },
    "@happyvertical/smrt-users:GroupRoleCollection": {
      "name": "grouprolecollection",
      "className": "GroupRoleCollection",
      "qualifiedName": "@happyvertical/smrt-users:GroupRoleCollection",
      "collection": "grouproles",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/GroupRoleCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "findByGroup": {
          "name": "findByGroup",
          "async": true,
          "parameters": [
            {
              "name": "groupId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<GroupRole[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByRole": {
          "name": "findByRole",
          "async": true,
          "parameters": [
            {
              "name": "roleId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<GroupRole[]>",
          "isStatic": false,
          "isPublic": true
        },
        "hasRole": {
          "name": "hasRole",
          "async": true,
          "parameters": [
            {
              "name": "groupId",
              "type": "string",
              "optional": false
            },
            {
              "name": "roleId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "addRole": {
          "name": "addRole",
          "async": true,
          "parameters": [
            {
              "name": "groupId",
              "type": "string",
              "optional": false
            },
            {
              "name": "roleId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<GroupRole>",
          "isStatic": false,
          "isPublic": true
        },
        "removeRole": {
          "name": "removeRole",
          "async": true,
          "parameters": [
            {
              "name": "groupId",
              "type": "string",
              "optional": false
            },
            {
              "name": "roleId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "getRoleIds": {
          "name": "getRoleIds",
          "async": true,
          "parameters": [
            {
              "name": "groupId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<string[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "GroupRole",
      "exportName": "GroupRoleCollection",
      "collectionExportName": "GroupRoleCollectionCollection",
      "schema": {
        "tableName": "group_role_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"group_role_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": "group_role_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "group_role_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "33fdaf49"
      }
    },
    "@happyvertical/smrt-users:UsersMagicLinkTokenCollection": {
      "name": "usersmagiclinktokencollection",
      "className": "UsersMagicLinkTokenCollection",
      "qualifiedName": "@happyvertical/smrt-users:UsersMagicLinkTokenCollection",
      "collection": "usersmagiclinktokens",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/MagicLinkTokenCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "findByNonce": {
          "name": "findByNonce",
          "async": true,
          "parameters": [
            {
              "name": "nonce",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<UsersMagicLinkToken | null>",
          "isStatic": false,
          "isPublic": true
        },
        "markUsed": {
          "name": "markUsed",
          "async": true,
          "parameters": [
            {
              "name": "nonce",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "deleteExpired": {
          "name": "deleteExpired",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": true
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "users_magic_link_tokens"
      },
      "extends": "SmrtCollection",
      "extendsTypeArg": "UsersMagicLinkToken",
      "exportName": "UsersMagicLinkTokenCollection",
      "collectionExportName": "UsersMagicLinkTokenCollectionCollection",
      "schema": {
        "tableName": "users_magic_link_tokens",
        "ddl": "CREATE TABLE IF NOT EXISTS \"users_magic_link_tokens\" (\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": "users_magic_link_tokens_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "users_magic_link_tokens_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "a8c021f9"
      }
    },
    "@happyvertical/smrt-users:MembershipCollection": {
      "name": "membershipcollection",
      "className": "MembershipCollection",
      "qualifiedName": "@happyvertical/smrt-users:MembershipCollection",
      "collection": "memberships",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/MembershipCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "findByUser": {
          "name": "findByUser",
          "async": true,
          "parameters": [
            {
              "name": "userId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Membership[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findActiveByUser": {
          "name": "findActiveByUser",
          "async": true,
          "parameters": [
            {
              "name": "userId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Membership[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByTenant": {
          "name": "findByTenant",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Membership[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findActiveByTenant": {
          "name": "findActiveByTenant",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Membership[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByUserAndTenant": {
          "name": "findByUserAndTenant",
          "async": true,
          "parameters": [
            {
              "name": "userId",
              "type": "string",
              "optional": false
            },
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Membership | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findByRole": {
          "name": "findByRole",
          "async": true,
          "parameters": [
            {
              "name": "roleId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Membership[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByStatus": {
          "name": "findByStatus",
          "async": true,
          "parameters": [
            {
              "name": "status",
              "type": "MembershipStatus",
              "optional": false
            }
          ],
          "returnType": "Promise<Membership[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "Membership",
      "exportName": "MembershipCollection",
      "collectionExportName": "MembershipCollectionCollection",
      "schema": {
        "tableName": "membership_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"membership_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": "membership_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "membership_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "8a2577ba"
      }
    },
    "@happyvertical/smrt-users:MembershipOverrideCollection": {
      "name": "membershipoverridecollection",
      "className": "MembershipOverrideCollection",
      "qualifiedName": "@happyvertical/smrt-users:MembershipOverrideCollection",
      "collection": "membershipoverrides",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/MembershipOverrideCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "findByMembership": {
          "name": "findByMembership",
          "async": true,
          "parameters": [
            {
              "name": "membershipId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<MembershipOverride[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findGrants": {
          "name": "findGrants",
          "async": true,
          "parameters": [
            {
              "name": "membershipId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<MembershipOverride[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findDenies": {
          "name": "findDenies",
          "async": true,
          "parameters": [
            {
              "name": "membershipId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<MembershipOverride[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getGrantedPermissionIds": {
          "name": "getGrantedPermissionIds",
          "async": true,
          "parameters": [
            {
              "name": "membershipId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<string[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getDeniedPermissionIds": {
          "name": "getDeniedPermissionIds",
          "async": true,
          "parameters": [
            {
              "name": "membershipId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<string[]>",
          "isStatic": false,
          "isPublic": true
        },
        "setOverride": {
          "name": "setOverride",
          "async": true,
          "parameters": [
            {
              "name": "membershipId",
              "type": "string",
              "optional": false
            },
            {
              "name": "permissionId",
              "type": "string",
              "optional": false
            },
            {
              "name": "effect",
              "type": "OverrideEffect",
              "optional": false
            }
          ],
          "returnType": "Promise<MembershipOverride>",
          "isStatic": false,
          "isPublic": true
        },
        "removeOverride": {
          "name": "removeOverride",
          "async": true,
          "parameters": [
            {
              "name": "membershipId",
              "type": "string",
              "optional": false
            },
            {
              "name": "permissionId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "grantPermission": {
          "name": "grantPermission",
          "async": true,
          "parameters": [
            {
              "name": "membershipId",
              "type": "string",
              "optional": false
            },
            {
              "name": "permissionId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<MembershipOverride>",
          "isStatic": false,
          "isPublic": true
        },
        "denyPermission": {
          "name": "denyPermission",
          "async": true,
          "parameters": [
            {
              "name": "membershipId",
              "type": "string",
              "optional": false
            },
            {
              "name": "permissionId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<MembershipOverride>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "MembershipOverride",
      "exportName": "MembershipOverrideCollection",
      "collectionExportName": "MembershipOverrideCollectionCollection",
      "schema": {
        "tableName": "membership_override_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"membership_override_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": "membership_override_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "membership_override_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "43ccd4cb"
      }
    },
    "@happyvertical/smrt-users:PermissionCollection": {
      "name": "permissioncollection",
      "className": "PermissionCollection",
      "qualifiedName": "@happyvertical/smrt-users:PermissionCollection",
      "collection": "permissions",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/PermissionCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "findByCategory": {
          "name": "findByCategory",
          "async": true,
          "parameters": [
            {
              "name": "category",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Permission[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findBySlug": {
          "name": "findBySlug",
          "async": true,
          "parameters": [
            {
              "name": "slug",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Permission | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findByIds": {
          "name": "findByIds",
          "async": true,
          "parameters": [
            {
              "name": "ids",
              "type": "string[]",
              "optional": false
            }
          ],
          "returnType": "Promise<Map<string, Permission>>",
          "isStatic": false,
          "isPublic": true
        },
        "getCategories": {
          "name": "getCategories",
          "async": true,
          "parameters": [],
          "returnType": "Promise<string[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findOrCreate": {
          "name": "findOrCreate",
          "async": true,
          "parameters": [
            {
              "name": "slug",
              "type": "string",
              "optional": false
            },
            {
              "name": "defaults",
              "type": "Partial<object>",
              "optional": true
            }
          ],
          "returnType": "Promise<Permission>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "Permission",
      "exportName": "PermissionCollection",
      "collectionExportName": "PermissionCollectionCollection",
      "schema": {
        "tableName": "permission_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"permission_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": "permission_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "permission_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "fc443bec"
      }
    },
    "@happyvertical/smrt-users:RoleCollection": {
      "name": "rolecollection",
      "className": "RoleCollection",
      "qualifiedName": "@happyvertical/smrt-users:RoleCollection",
      "collection": "roles",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/RoleCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "findSystemRoles": {
          "name": "findSystemRoles",
          "async": true,
          "parameters": [],
          "returnType": "Promise<Role[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByTenant": {
          "name": "findByTenant",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Role[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findTenantRoles": {
          "name": "findTenantRoles",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Role[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findBySlug": {
          "name": "findBySlug",
          "async": true,
          "parameters": [
            {
              "name": "slug",
              "type": "string",
              "optional": false
            },
            {
              "name": "tenantId",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<Role | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findSystemRoleBySlug": {
          "name": "findSystemRoleBySlug",
          "async": true,
          "parameters": [
            {
              "name": "slug",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Role | null>",
          "isStatic": false,
          "isPublic": true
        },
        "seedSystemRoles": {
          "name": "seedSystemRoles",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "SeedSystemRolesOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<Role[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "Role",
      "exportName": "RoleCollection",
      "collectionExportName": "RoleCollectionCollection",
      "schema": {
        "tableName": "role_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"role_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": "role_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "role_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "b6b325e0"
      }
    },
    "@happyvertical/smrt-users:RolePermissionCollection": {
      "name": "rolepermissioncollection",
      "className": "RolePermissionCollection",
      "qualifiedName": "@happyvertical/smrt-users:RolePermissionCollection",
      "collection": "rolepermissions",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/RolePermissionCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "findByRole": {
          "name": "findByRole",
          "async": true,
          "parameters": [
            {
              "name": "roleId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<RolePermission[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findByPermission": {
          "name": "findByPermission",
          "async": true,
          "parameters": [
            {
              "name": "permissionId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<RolePermission[]>",
          "isStatic": false,
          "isPublic": true
        },
        "hasPermission": {
          "name": "hasPermission",
          "async": true,
          "parameters": [
            {
              "name": "roleId",
              "type": "string",
              "optional": false
            },
            {
              "name": "permissionId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "addPermission": {
          "name": "addPermission",
          "async": true,
          "parameters": [
            {
              "name": "roleId",
              "type": "string",
              "optional": false
            },
            {
              "name": "permissionId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<RolePermission>",
          "isStatic": false,
          "isPublic": true
        },
        "removePermission": {
          "name": "removePermission",
          "async": true,
          "parameters": [
            {
              "name": "roleId",
              "type": "string",
              "optional": false
            },
            {
              "name": "permissionId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "getPermissionIds": {
          "name": "getPermissionIds",
          "async": true,
          "parameters": [
            {
              "name": "roleId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<string[]>",
          "isStatic": false,
          "isPublic": true
        },
        "seedRolePermissions": {
          "name": "seedRolePermissions",
          "async": true,
          "parameters": [
            {
              "name": "matrix",
              "type": "RolePermissionPatternMatrix",
              "optional": true
            },
            {
              "name": "options",
              "type": "SeedRolePermissionsOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<SeedRolePermissionsResult>",
          "isStatic": false,
          "isPublic": true
        },
        "seedDefaultRolePersonalizationPermissions": {
          "name": "seedDefaultRolePersonalizationPermissions",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "Omit<SeedRolePermissionsOptions, 'prune'>",
              "optional": true
            }
          ],
          "returnType": "Promise<SeedRolePermissionsResult>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "RolePermission",
      "exportName": "RolePermissionCollection",
      "collectionExportName": "RolePermissionCollectionCollection",
      "schema": {
        "tableName": "role_permission_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"role_permission_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": "role_permission_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "role_permission_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "b4ec602b"
      }
    },
    "@happyvertical/smrt-users:SessionCollection": {
      "name": "sessioncollection",
      "className": "SessionCollection",
      "qualifiedName": "@happyvertical/smrt-users:SessionCollection",
      "collection": "sessions",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/SessionCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "createSession": {
          "name": "createSession",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "CreateSessionOptions",
              "optional": false
            }
          ],
          "returnType": "Promise<Session>",
          "isStatic": false,
          "isPublic": true
        },
        "findValidSession": {
          "name": "findValidSession",
          "async": true,
          "parameters": [
            {
              "name": "sessionId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Session | null>",
          "isStatic": false,
          "isPublic": true
        },
        "touch": {
          "name": "touch",
          "async": true,
          "parameters": [
            {
              "name": "sessionId",
              "type": "string",
              "optional": false
            },
            {
              "name": "extendTtl",
              "type": "boolean",
              "optional": true
            },
            {
              "name": "ttl",
              "type": "number",
              "optional": true
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "findByUser": {
          "name": "findByUser",
          "async": true,
          "parameters": [
            {
              "name": "userId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Session[]>",
          "isStatic": false,
          "isPublic": true
        },
        "deleteUserSessions": {
          "name": "deleteUserSessions",
          "async": true,
          "parameters": [
            {
              "name": "userId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "revokeUserSessions": {
          "name": "revokeUserSessions",
          "async": true,
          "parameters": [
            {
              "name": "userId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "revokeSession": {
          "name": "revokeSession",
          "async": true,
          "parameters": [
            {
              "name": "sessionId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "deleteExpired": {
          "name": "deleteExpired",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "object",
              "optional": true
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "countUserSessions": {
          "name": "countUserSessions",
          "async": true,
          "parameters": [
            {
              "name": "userId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "setSessionTenant": {
          "name": "setSessionTenant",
          "async": true,
          "parameters": [
            {
              "name": "sessionId",
              "type": "string",
              "optional": false
            },
            {
              "name": "tenantId",
              "type": "string | null",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "setSessionData": {
          "name": "setSessionData",
          "async": true,
          "parameters": [
            {
              "name": "sessionId",
              "type": "string",
              "optional": false
            },
            {
              "name": "key",
              "type": "string",
              "optional": false
            },
            {
              "name": "value",
              "type": "any",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "getSessionData": {
          "name": "getSessionData",
          "async": true,
          "parameters": [
            {
              "name": "sessionId",
              "type": "string",
              "optional": false
            },
            {
              "name": "key",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<T | undefined>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "Session",
      "exportName": "SessionCollection",
      "collectionExportName": "SessionCollectionCollection",
      "schema": {
        "tableName": "session_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"session_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": "session_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "session_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "ec13164c"
      }
    },
    "@happyvertical/smrt-users:TenantCollection": {
      "name": "tenantcollection",
      "className": "TenantCollection",
      "qualifiedName": "@happyvertical/smrt-users:TenantCollection",
      "collection": "tenants",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/TenantCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "findByStatus": {
          "name": "findByStatus",
          "async": true,
          "parameters": [
            {
              "name": "status",
              "type": "TenantStatus",
              "optional": false
            }
          ],
          "returnType": "Promise<Tenant[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findActive": {
          "name": "findActive",
          "async": true,
          "parameters": [],
          "returnType": "Promise<Tenant[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findBySlug": {
          "name": "findBySlug",
          "async": true,
          "parameters": [
            {
              "name": "slug",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Tenant | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findRoots": {
          "name": "findRoots",
          "async": true,
          "parameters": [],
          "returnType": "Promise<Tenant[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findChildren": {
          "name": "findChildren",
          "async": true,
          "parameters": [
            {
              "name": "parentTenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Tenant[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findParent": {
          "name": "findParent",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Tenant | null>",
          "isStatic": false,
          "isPublic": true
        },
        "getAncestors": {
          "name": "getAncestors",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Tenant[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getAncestorsFromRoot": {
          "name": "getAncestorsFromRoot",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Tenant[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getDescendants": {
          "name": "getDescendants",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Tenant[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getSiblings": {
          "name": "getSiblings",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Tenant[]>",
          "isStatic": false,
          "isPublic": true
        },
        "isAncestorOf": {
          "name": "isAncestorOf",
          "async": true,
          "parameters": [
            {
              "name": "potentialAncestorId",
              "type": "string",
              "optional": false
            },
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "isDescendantOf": {
          "name": "isDescendantOf",
          "async": true,
          "parameters": [
            {
              "name": "potentialDescendantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "createChild": {
          "name": "createChild",
          "async": true,
          "parameters": [
            {
              "name": "parentTenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "CreateChildTenantOptions",
              "optional": false
            }
          ],
          "returnType": "Promise<Tenant>",
          "isStatic": false,
          "isPublic": true
        },
        "moveToParent": {
          "name": "moveToParent",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "newParentId",
              "type": "string | null",
              "optional": false
            }
          ],
          "returnType": "Promise<Tenant>",
          "isStatic": false,
          "isPublic": true
        },
        "makeRoot": {
          "name": "makeRoot",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<Tenant>",
          "isStatic": false,
          "isPublic": true
        },
        "validateHierarchy": {
          "name": "validateHierarchy",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<string[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getTree": {
          "name": "getTree",
          "async": true,
          "parameters": [
            {
              "name": "rootTenantId",
              "type": "string",
              "optional": true
            }
          ],
          "returnType": "Promise<Array>",
          "isStatic": false,
          "isPublic": true
        },
        "create": {
          "name": "create",
          "async": true,
          "parameters": [
            {
              "name": "options",
              "type": "SmrtCreateInput<Tenant>",
              "optional": false
            }
          ],
          "returnType": "Promise<Tenant>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "Tenant",
      "exportName": "TenantCollection",
      "collectionExportName": "TenantCollectionCollection",
      "schema": {
        "tableName": "tenant_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"tenant_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": "tenant_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "tenant_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "bcfa1eef"
      }
    },
    "@happyvertical/smrt-users:TenantIntegrationCollection": {
      "name": "tenantintegrationcollection",
      "className": "TenantIntegrationCollection",
      "qualifiedName": "@happyvertical/smrt-users:TenantIntegrationCollection",
      "collection": "tenantintegrations",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/TenantIntegrationCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "listForTenant": {
          "name": "listForTenant",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantIntegration[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findFor": {
          "name": "findFor",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "provider",
              "type": "TenantIntegrationProvider",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantIntegration | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findOrInit": {
          "name": "findOrInit",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "provider",
              "type": "TenantIntegrationProvider",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantIntegration>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "tenant_integrations"
      },
      "extends": "SmrtCollection",
      "extendsTypeArg": "TenantIntegration",
      "exportName": "TenantIntegrationCollection",
      "collectionExportName": "TenantIntegrationCollectionCollection",
      "schema": {
        "tableName": "tenant_integrations",
        "ddl": "CREATE TABLE IF NOT EXISTS \"tenant_integrations\" (\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": "tenant_integrations_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "tenant_integrations_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "a3261f8f"
      }
    },
    "@happyvertical/smrt-users:TenantPermissionOverrideCollection": {
      "name": "tenantpermissionoverridecollection",
      "className": "TenantPermissionOverrideCollection",
      "qualifiedName": "@happyvertical/smrt-users:TenantPermissionOverrideCollection",
      "collection": "tenantpermissionoverrides",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/TenantPermissionOverrideCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "findByTenant": {
          "name": "findByTenant",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantPermissionOverride[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findGrants": {
          "name": "findGrants",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantPermissionOverride[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findDenies": {
          "name": "findDenies",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantPermissionOverride[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findInherits": {
          "name": "findInherits",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantPermissionOverride[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getGrantedPermissionIds": {
          "name": "getGrantedPermissionIds",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<string[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getDeniedPermissionIds": {
          "name": "getDeniedPermissionIds",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<string[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getOverridesByEffect": {
          "name": "getOverridesByEffect",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantPermissionOverrideResult>",
          "isStatic": false,
          "isPublic": true
        },
        "getOverridesByEffectBatch": {
          "name": "getOverridesByEffectBatch",
          "async": true,
          "parameters": [
            {
              "name": "tenantIds",
              "type": "string[]",
              "optional": false
            }
          ],
          "returnType": "Promise<Map<string, TenantPermissionOverrideResult>>",
          "isStatic": false,
          "isPublic": true
        },
        "setOverride": {
          "name": "setOverride",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "permissionId",
              "type": "string",
              "optional": false
            },
            {
              "name": "effect",
              "type": "TenantPermissionEffect",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantPermissionOverride>",
          "isStatic": false,
          "isPublic": true
        },
        "removeOverride": {
          "name": "removeOverride",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "permissionId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<boolean>",
          "isStatic": false,
          "isPublic": true
        },
        "removeAllOverrides": {
          "name": "removeAllOverrides",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<number>",
          "isStatic": false,
          "isPublic": true
        },
        "grantPermission": {
          "name": "grantPermission",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "permissionId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantPermissionOverride>",
          "isStatic": false,
          "isPublic": true
        },
        "denyPermission": {
          "name": "denyPermission",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "permissionId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantPermissionOverride>",
          "isStatic": false,
          "isPublic": true
        },
        "inheritPermission": {
          "name": "inheritPermission",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "permissionId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantPermissionOverride>",
          "isStatic": false,
          "isPublic": true
        },
        "bulkSetOverrides": {
          "name": "bulkSetOverrides",
          "async": true,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "overrides",
              "type": "Array<object>",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantPermissionOverride[]>",
          "isStatic": false,
          "isPublic": true
        },
        "copyOverrides": {
          "name": "copyOverrides",
          "async": true,
          "parameters": [
            {
              "name": "fromTenantId",
              "type": "string",
              "optional": false
            },
            {
              "name": "toTenantId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<TenantPermissionOverride[]>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "TenantPermissionOverride",
      "exportName": "TenantPermissionOverrideCollection",
      "collectionExportName": "TenantPermissionOverrideCollectionCollection",
      "schema": {
        "tableName": "tenant_permission_override_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"tenant_permission_override_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": "tenant_permission_override_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "tenant_permission_override_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "e6b5a0b6"
      }
    },
    "@happyvertical/smrt-users:UserCollection": {
      "name": "usercollection",
      "className": "UserCollection",
      "qualifiedName": "@happyvertical/smrt-users:UserCollection",
      "collection": "users",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/collections/UserCollection.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {},
      "methods": {
        "findByEmail": {
          "name": "findByEmail",
          "async": true,
          "parameters": [
            {
              "name": "email",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<User | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findByProfile": {
          "name": "findByProfile",
          "async": true,
          "parameters": [
            {
              "name": "profileId",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "Promise<User | null>",
          "isStatic": false,
          "isPublic": true
        },
        "findByStatus": {
          "name": "findByStatus",
          "async": true,
          "parameters": [
            {
              "name": "status",
              "type": "UserStatus",
              "optional": false
            }
          ],
          "returnType": "Promise<User[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findActive": {
          "name": "findActive",
          "async": true,
          "parameters": [],
          "returnType": "Promise<User[]>",
          "isStatic": false,
          "isPublic": true
        },
        "findPending": {
          "name": "findPending",
          "async": true,
          "parameters": [],
          "returnType": "Promise<User[]>",
          "isStatic": false,
          "isPublic": true
        },
        "getOrCreateForProfile": {
          "name": "getOrCreateForProfile",
          "async": true,
          "parameters": [
            {
              "name": "profileId",
              "type": "string",
              "optional": false
            },
            {
              "name": "email",
              "type": "string",
              "optional": false
            },
            {
              "name": "defaults",
              "type": "Partial<object>",
              "optional": true
            }
          ],
          "returnType": "Promise<User>",
          "isStatic": false,
          "isPublic": true
        },
        "getOrCreateFromOidc": {
          "name": "getOrCreateFromOidc",
          "async": true,
          "parameters": [
            {
              "name": "claims",
              "type": "OidcClaims",
              "optional": false
            },
            {
              "name": "provider",
              "type": "string",
              "optional": false
            },
            {
              "name": "options",
              "type": "GetOrCreateFromOidcOptions",
              "optional": true
            }
          ],
          "returnType": "Promise<OidcIdentityResult>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {},
      "extends": "SmrtCollection",
      "extendsTypeArg": "User",
      "exportName": "UserCollection",
      "collectionExportName": "UserCollectionCollection",
      "schema": {
        "tableName": "user_collections",
        "ddl": "CREATE TABLE IF NOT EXISTS \"user_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": "user_collections_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "user_collections_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "539fdcc8"
      }
    },
    "@happyvertical/smrt-users:AccessRequest": {
      "name": "accessrequest",
      "className": "AccessRequest",
      "qualifiedName": "@happyvertical/smrt-users:AccessRequest",
      "collection": "accessrequests",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/AccessRequest.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "email": {
          "type": "text",
          "required": true,
          "default": "",
          "_meta": {
            "required": true,
            "indexed": true
          }
        },
        "name": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "status": {
          "type": "text",
          "required": false,
          "_meta": {
            "indexed": true
          }
        },
        "source": {
          "type": "text",
          "required": false,
          "default": "",
          "_meta": {
            "indexed": true
          }
        },
        "requestContext": {
          "type": "text",
          "required": false,
          "default": "{}"
        },
        "note": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "requestedAt": {
          "type": "datetime",
          "required": false
        },
        "decidedAt": {
          "type": "datetime",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "decidedBy": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "resultingUserId": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        },
        "tenantHint": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true
          }
        }
      },
      "methods": {
        "getRequestContext": {
          "name": "getRequestContext",
          "async": false,
          "parameters": [],
          "returnType": "Record<string>",
          "isStatic": false,
          "isPublic": true
        },
        "setRequestContext": {
          "name": "setRequestContext",
          "async": false,
          "parameters": [
            {
              "name": "value",
              "type": "Record<string>",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "getTenantHint": {
          "name": "getTenantHint",
          "async": false,
          "parameters": [],
          "returnType": "Record<string> | null",
          "isStatic": false,
          "isPublic": true
        },
        "setTenantHint": {
          "name": "setTenantHint",
          "async": false,
          "parameters": [
            {
              "name": "value",
              "type": "Record<string> | null",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "isOpen": {
          "name": "isOpen",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isApproved": {
          "name": "isApproved",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isTerminal": {
          "name": "isTerminal",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "access_requests",
        "conflictColumns": [
          "id"
        ],
        "api": {
          "include": []
        },
        "mcp": {
          "include": []
        },
        "cli": {
          "include": []
        }
      },
      "extends": "SmrtObject",
      "exportName": "AccessRequest",
      "collectionExportName": "AccessRequestCollection",
      "validationRules": [
        {
          "field": "email",
          "rule": "required",
          "fieldType": "text"
        }
      ],
      "schema": {
        "tableName": "access_requests",
        "ddl": "CREATE TABLE IF NOT EXISTS \"access_requests\" (\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  \"email\" TEXT NOT NULL DEFAULT '',\n  \"name\" TEXT,\n  \"status\" TEXT,\n  \"source\" TEXT DEFAULT '',\n  \"request_context\" TEXT DEFAULT '{}',\n  \"note\" TEXT,\n  \"requested_at\" TIMESTAMP,\n  \"decided_at\" TIMESTAMP,\n  \"decided_by\" TEXT,\n  \"resulting_user_id\" TEXT,\n  \"tenant_hint\" 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"
          },
          "email": {
            "type": "TEXT",
            "notNull": true,
            "unique": false,
            "default": ""
          },
          "name": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "status": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "source": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "request_context": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": "{}"
          },
          "note": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "requested_at": {
            "type": "TIMESTAMP",
            "notNull": false,
            "unique": false
          },
          "decided_at": {
            "type": "TIMESTAMP",
            "notNull": false,
            "unique": false
          },
          "decided_by": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "resulting_user_id": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "tenant_hint": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "access_requests_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ]
          },
          {
            "name": "access_requests_email_idx",
            "columns": [
              "email"
            ]
          },
          {
            "name": "access_requests_status_idx",
            "columns": [
              "status"
            ]
          },
          {
            "name": "access_requests_source_idx",
            "columns": [
              "source"
            ]
          },
          {
            "name": "access_requests_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "f396996f"
      }
    },
    "@happyvertical/smrt-users:UsersCliAuthApproveLimit": {
      "name": "userscliauthapprovelimit",
      "className": "UsersCliAuthApproveLimit",
      "qualifiedName": "@happyvertical/smrt-users:UsersCliAuthApproveLimit",
      "collection": "userscliauthapprovelimits",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/CliAuthApproveLimit.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "userId": {
          "type": "foreignKey",
          "required": true,
          "related": "User",
          "_meta": {
            "required": true,
            "unique": true
          }
        },
        "attemptCount": {
          "type": "integer",
          "required": true,
          "default": 0,
          "_meta": {
            "required": true,
            "default": 0
          }
        },
        "windowStartedAt": {
          "type": "datetime",
          "required": true,
          "_meta": {
            "required": true
          }
        }
      },
      "methods": {},
      "decoratorConfig": {
        "tableName": "users_cli_auth_approve_limits",
        "api": false,
        "cli": false,
        "mcp": false
      },
      "extends": "SmrtObject",
      "exportName": "UsersCliAuthApproveLimit",
      "collectionExportName": "UsersCliAuthApproveLimitCollection",
      "validationRules": [
        {
          "field": "userId",
          "rule": "required",
          "fieldType": "foreignKey"
        },
        {
          "field": "attemptCount",
          "rule": "required",
          "fieldType": "integer"
        },
        {
          "field": "windowStartedAt",
          "rule": "required",
          "fieldType": "datetime"
        }
      ],
      "schema": {
        "tableName": "users_cli_auth_approve_limits",
        "ddl": "CREATE TABLE IF NOT EXISTS \"users_cli_auth_approve_limits\" (\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  \"user_id\" UUID NOT NULL UNIQUE,\n  \"attempt_count\" INTEGER NOT NULL DEFAULT 0,\n  \"window_started_at\" TIMESTAMP NOT NULL\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"
          },
          "user_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": true,
            "foreignKey": {
              "table": "users",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "attempt_count": {
            "type": "INTEGER",
            "notNull": true,
            "unique": false,
            "default": 0
          },
          "window_started_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "users_cli_auth_approve_limits_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "users_cli_auth_approve_limits_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "c45c02de"
      }
    },
    "@happyvertical/smrt-users:UsersCliAuthRequest": {
      "name": "userscliauthrequest",
      "className": "UsersCliAuthRequest",
      "qualifiedName": "@happyvertical/smrt-users:UsersCliAuthRequest",
      "collection": "userscliauthrequests",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/CliAuthRequest.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "userCode": {
          "type": "text",
          "required": true,
          "_meta": {
            "required": true,
            "unique": true
          }
        },
        "deviceCodeHash": {
          "type": "text",
          "required": true,
          "_meta": {
            "required": true,
            "unique": true
          }
        },
        "status": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "userId": {
          "type": "foreignKey",
          "required": false,
          "related": "User",
          "_meta": {
            "nullable": true
          }
        },
        "tenantId": {
          "type": "foreignKey",
          "required": false,
          "related": "Tenant",
          "_meta": {
            "nullable": true
          }
        },
        "sessionId": {
          "type": "foreignKey",
          "required": false,
          "related": "Session",
          "_meta": {
            "nullable": true
          }
        },
        "expiresAt": {
          "type": "datetime",
          "required": false,
          "_meta": {
            "indexed": true
          }
        },
        "approvedAt": {
          "type": "datetime",
          "required": false,
          "_meta": {
            "nullable": true
          }
        }
      },
      "methods": {},
      "decoratorConfig": {
        "tableName": "users_cli_auth_requests",
        "api": {
          "include": []
        },
        "cli": {
          "include": []
        },
        "mcp": {
          "include": []
        }
      },
      "extends": "SmrtObject",
      "exportName": "UsersCliAuthRequest",
      "collectionExportName": "UsersCliAuthRequestCollection",
      "validationRules": [
        {
          "field": "userCode",
          "rule": "required",
          "fieldType": "text"
        },
        {
          "field": "deviceCodeHash",
          "rule": "required",
          "fieldType": "text"
        }
      ],
      "schema": {
        "tableName": "users_cli_auth_requests",
        "ddl": "CREATE TABLE IF NOT EXISTS \"users_cli_auth_requests\" (\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  \"user_code\" TEXT NOT NULL UNIQUE,\n  \"device_code_hash\" TEXT NOT NULL UNIQUE,\n  \"status\" TEXT,\n  \"user_id\" UUID,\n  \"tenant_id\" UUID,\n  \"session_id\" UUID,\n  \"expires_at\" TIMESTAMP,\n  \"approved_at\" 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"
          },
          "user_code": {
            "type": "TEXT",
            "notNull": true,
            "unique": true
          },
          "device_code_hash": {
            "type": "TEXT",
            "notNull": true,
            "unique": true
          },
          "status": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "user_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": false,
            "unique": false,
            "foreignKey": {
              "table": "users",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": false,
            "unique": false,
            "foreignKey": {
              "table": "tenants",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "session_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": false,
            "unique": false,
            "foreignKey": {
              "table": "sessions",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "expires_at": {
            "type": "TIMESTAMP",
            "notNull": false,
            "unique": false
          },
          "approved_at": {
            "type": "TIMESTAMP",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "users_cli_auth_requests_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "users_cli_auth_requests_expires_at_idx",
            "columns": [
              "expires_at"
            ]
          },
          {
            "name": "users_cli_auth_requests_created_at_idx",
            "columns": [
              "created_at"
            ]
          },
          {
            "name": "users_cli_auth_requests_user_id_idx",
            "columns": [
              "user_id"
            ]
          },
          {
            "name": "users_cli_auth_requests_tenant_id_idx",
            "columns": [
              "tenant_id"
            ]
          },
          {
            "name": "users_cli_auth_requests_session_id_idx",
            "columns": [
              "session_id"
            ]
          }
        ],
        "version": "713ae04c"
      }
    },
    "@happyvertical/smrt-users:Group": {
      "name": "group",
      "className": "Group",
      "qualifiedName": "@happyvertical/smrt-users:Group",
      "collection": "groups",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/Group.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "tenantId": {
          "type": "foreignKey",
          "required": true,
          "related": "Tenant",
          "_meta": {
            "required": true
          }
        },
        "name": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "description": {
          "type": "text",
          "required": false,
          "default": ""
        }
      },
      "methods": {},
      "decoratorConfig": {
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "Group",
      "collectionExportName": "GroupCollection",
      "validationRules": [
        {
          "field": "tenantId",
          "rule": "required",
          "fieldType": "foreignKey"
        }
      ],
      "schema": {
        "tableName": "groups",
        "ddl": "CREATE TABLE IF NOT EXISTS \"groups\" (\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  \"tenant_id\" UUID NOT NULL,\n  \"name\" TEXT DEFAULT '',\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"
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "tenants",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "name": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "description": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          }
        },
        "indexes": [
          {
            "name": "groups_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "groups_created_at_idx",
            "columns": [
              "created_at"
            ]
          },
          {
            "name": "groups_tenant_id_idx",
            "columns": [
              "tenant_id"
            ]
          }
        ],
        "version": "1824c19b"
      }
    },
    "@happyvertical/smrt-users:GroupMember": {
      "name": "groupmember",
      "className": "GroupMember",
      "qualifiedName": "@happyvertical/smrt-users:GroupMember",
      "collection": "groupmembers",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/GroupMember.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "groupId": {
          "type": "foreignKey",
          "required": true,
          "related": "Group",
          "_meta": {
            "required": true
          }
        },
        "userId": {
          "type": "foreignKey",
          "required": true,
          "related": "User",
          "_meta": {
            "required": true
          }
        }
      },
      "methods": {},
      "decoratorConfig": {
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "GroupMember",
      "collectionExportName": "GroupMemberCollection",
      "validationRules": [
        {
          "field": "groupId",
          "rule": "required",
          "fieldType": "foreignKey"
        },
        {
          "field": "userId",
          "rule": "required",
          "fieldType": "foreignKey"
        }
      ],
      "schema": {
        "tableName": "group_members",
        "ddl": "CREATE TABLE IF NOT EXISTS \"group_members\" (\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  \"group_id\" UUID NOT NULL,\n  \"user_id\" UUID NOT NULL\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"
          },
          "group_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "groups",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "user_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "users",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          }
        },
        "indexes": [
          {
            "name": "group_members_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "group_members_created_at_idx",
            "columns": [
              "created_at"
            ]
          },
          {
            "name": "group_members_group_id_idx",
            "columns": [
              "group_id"
            ]
          },
          {
            "name": "group_members_user_id_idx",
            "columns": [
              "user_id"
            ]
          }
        ],
        "version": "ed4d1187"
      }
    },
    "@happyvertical/smrt-users:GroupRole": {
      "name": "grouprole",
      "className": "GroupRole",
      "qualifiedName": "@happyvertical/smrt-users:GroupRole",
      "collection": "grouproles",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/GroupRole.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "groupId": {
          "type": "foreignKey",
          "required": true,
          "related": "Group",
          "_meta": {
            "required": true
          }
        },
        "roleId": {
          "type": "foreignKey",
          "required": true,
          "related": "Role",
          "_meta": {
            "required": true
          }
        }
      },
      "methods": {},
      "decoratorConfig": {
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "GroupRole",
      "collectionExportName": "GroupRoleCollection",
      "validationRules": [
        {
          "field": "groupId",
          "rule": "required",
          "fieldType": "foreignKey"
        },
        {
          "field": "roleId",
          "rule": "required",
          "fieldType": "foreignKey"
        }
      ],
      "schema": {
        "tableName": "group_roles",
        "ddl": "CREATE TABLE IF NOT EXISTS \"group_roles\" (\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  \"group_id\" UUID NOT NULL,\n  \"role_id\" UUID NOT NULL\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"
          },
          "group_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "groups",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "role_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "roles",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          }
        },
        "indexes": [
          {
            "name": "group_roles_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "group_roles_created_at_idx",
            "columns": [
              "created_at"
            ]
          },
          {
            "name": "group_roles_group_id_idx",
            "columns": [
              "group_id"
            ]
          },
          {
            "name": "group_roles_role_id_idx",
            "columns": [
              "role_id"
            ]
          }
        ],
        "version": "b1e35f93"
      }
    },
    "@happyvertical/smrt-users:UsersMagicLinkToken": {
      "name": "usersmagiclinktoken",
      "className": "UsersMagicLinkToken",
      "qualifiedName": "@happyvertical/smrt-users:UsersMagicLinkToken",
      "collection": "usersmagiclinktokens",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/MagicLinkToken.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "nonce": {
          "type": "text",
          "required": true,
          "default": "",
          "_meta": {
            "required": true,
            "unique": true
          }
        },
        "email": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "used": {
          "type": "boolean",
          "required": false,
          "default": false
        },
        "expiresAt": {
          "type": "datetime",
          "required": false,
          "_meta": {
            "indexed": true
          }
        }
      },
      "methods": {
        "isExpired": {
          "name": "isExpired",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isValid": {
          "name": "isValid",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "users_magic_link_tokens",
        "api": {
          "include": []
        },
        "mcp": {
          "include": []
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "UsersMagicLinkToken",
      "collectionExportName": "UsersMagicLinkTokenCollection",
      "validationRules": [
        {
          "field": "nonce",
          "rule": "required",
          "fieldType": "text"
        }
      ],
      "schema": {
        "tableName": "users_magic_link_tokens",
        "ddl": "CREATE TABLE IF NOT EXISTS \"users_magic_link_tokens\" (\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  \"nonce\" TEXT NOT NULL UNIQUE DEFAULT '',\n  \"email\" TEXT DEFAULT '',\n  \"used\" BOOLEAN DEFAULT FALSE,\n  \"expires_at\" 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"
          },
          "nonce": {
            "type": "TEXT",
            "notNull": true,
            "unique": true,
            "default": ""
          },
          "email": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "used": {
            "type": "BOOLEAN",
            "notNull": false,
            "unique": false,
            "default": false
          },
          "expires_at": {
            "type": "TIMESTAMP",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "users_magic_link_tokens_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "users_magic_link_tokens_expires_at_idx",
            "columns": [
              "expires_at"
            ]
          },
          {
            "name": "users_magic_link_tokens_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "537853d3"
      }
    },
    "@happyvertical/smrt-users:Membership": {
      "name": "membership",
      "className": "Membership",
      "qualifiedName": "@happyvertical/smrt-users:Membership",
      "collection": "memberships",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/Membership.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "userId": {
          "type": "foreignKey",
          "required": true,
          "related": "User",
          "_meta": {
            "required": true
          }
        },
        "tenantId": {
          "type": "foreignKey",
          "required": true,
          "related": "Tenant",
          "_meta": {
            "required": true
          }
        },
        "roleId": {
          "type": "foreignKey",
          "required": true,
          "related": "Role",
          "_meta": {
            "required": true
          }
        },
        "status": {
          "type": "text",
          "required": false,
          "_meta": {}
        }
      },
      "methods": {
        "isActive": {
          "name": "isActive",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isPending": {
          "name": "isPending",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "Membership",
      "collectionExportName": "MembershipCollection",
      "validationRules": [
        {
          "field": "userId",
          "rule": "required",
          "fieldType": "foreignKey"
        },
        {
          "field": "tenantId",
          "rule": "required",
          "fieldType": "foreignKey"
        },
        {
          "field": "roleId",
          "rule": "required",
          "fieldType": "foreignKey"
        }
      ],
      "schema": {
        "tableName": "memberships",
        "ddl": "CREATE TABLE IF NOT EXISTS \"memberships\" (\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  \"user_id\" UUID NOT NULL,\n  \"tenant_id\" UUID NOT NULL,\n  \"role_id\" UUID NOT NULL,\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": ""
          },
          "created_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "updated_at": {
            "type": "TIMESTAMP",
            "notNull": true,
            "default": "current_timestamp"
          },
          "user_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "users",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "tenants",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "role_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "roles",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "status": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "memberships_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "memberships_created_at_idx",
            "columns": [
              "created_at"
            ]
          },
          {
            "name": "memberships_user_id_idx",
            "columns": [
              "user_id"
            ]
          },
          {
            "name": "memberships_tenant_id_idx",
            "columns": [
              "tenant_id"
            ]
          },
          {
            "name": "memberships_role_id_idx",
            "columns": [
              "role_id"
            ]
          }
        ],
        "version": "ebfd11e0"
      }
    },
    "@happyvertical/smrt-users:MembershipOverride": {
      "name": "membershipoverride",
      "className": "MembershipOverride",
      "qualifiedName": "@happyvertical/smrt-users:MembershipOverride",
      "collection": "membershipoverrides",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/MembershipOverride.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "membershipId": {
          "type": "foreignKey",
          "required": true,
          "related": "Membership",
          "_meta": {
            "required": true
          }
        },
        "permissionId": {
          "type": "foreignKey",
          "required": true,
          "related": "Permission",
          "_meta": {
            "required": true
          }
        },
        "effect": {
          "type": "text",
          "required": false,
          "_meta": {}
        }
      },
      "methods": {
        "isGrant": {
          "name": "isGrant",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isDeny": {
          "name": "isDeny",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "MembershipOverride",
      "collectionExportName": "MembershipOverrideCollection",
      "validationRules": [
        {
          "field": "membershipId",
          "rule": "required",
          "fieldType": "foreignKey"
        },
        {
          "field": "permissionId",
          "rule": "required",
          "fieldType": "foreignKey"
        }
      ],
      "schema": {
        "tableName": "membership_overrides",
        "ddl": "CREATE TABLE IF NOT EXISTS \"membership_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  \"membership_id\" UUID NOT NULL,\n  \"permission_id\" UUID NOT NULL,\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"
          },
          "membership_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "memberships",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "permission_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "permissions",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "effect": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "membership_overrides_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "membership_overrides_created_at_idx",
            "columns": [
              "created_at"
            ]
          },
          {
            "name": "membership_overrides_membership_id_idx",
            "columns": [
              "membership_id"
            ]
          },
          {
            "name": "membership_overrides_permission_id_idx",
            "columns": [
              "permission_id"
            ]
          }
        ],
        "version": "25fe9da8"
      }
    },
    "@happyvertical/smrt-users:Permission": {
      "name": "permission",
      "className": "Permission",
      "qualifiedName": "@happyvertical/smrt-users:Permission",
      "collection": "permissions",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/Permission.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "name": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "description": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "category": {
          "type": "text",
          "required": false,
          "default": ""
        }
      },
      "methods": {
        "parseSlug": {
          "name": "parseSlug",
          "async": false,
          "parameters": [],
          "returnType": "ParsedPermissionSlug",
          "isStatic": false,
          "isPublic": true
        },
        "getResource": {
          "name": "getResource",
          "async": false,
          "parameters": [],
          "returnType": "string",
          "isStatic": false,
          "isPublic": true
        },
        "getAction": {
          "name": "getAction",
          "async": false,
          "parameters": [],
          "returnType": "string",
          "isStatic": false,
          "isPublic": true
        },
        "isValidSlug": {
          "name": "isValidSlug",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "Permission",
      "collectionExportName": "PermissionCollection",
      "schema": {
        "tableName": "permissions",
        "ddl": "CREATE TABLE IF NOT EXISTS \"permissions\" (\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  \"description\" TEXT DEFAULT '',\n  \"category\" 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": ""
          },
          "description": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "category": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          }
        },
        "indexes": [
          {
            "name": "permissions_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "permissions_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "4c81b2af"
      }
    },
    "@happyvertical/smrt-users:Role": {
      "name": "role",
      "className": "Role",
      "qualifiedName": "@happyvertical/smrt-users:Role",
      "collection": "roles",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/Role.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "tenantId": {
          "type": "foreignKey",
          "required": false,
          "related": "Tenant",
          "_meta": {
            "nullable": true
          }
        },
        "name": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "description": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "isSystem": {
          "type": "boolean",
          "required": false,
          "default": false
        },
        "inheritsToDescendants": {
          "type": "boolean",
          "required": false,
          "default": false
        }
      },
      "methods": {
        "isSystemRole": {
          "name": "isSystemRole",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isTenantRole": {
          "name": "isTenantRole",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "canDelete": {
          "name": "canDelete",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "delete": {
          "name": "delete",
          "async": true,
          "parameters": [],
          "returnType": "Promise<void>",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "Role",
      "collectionExportName": "RoleCollection",
      "schema": {
        "tableName": "roles",
        "ddl": "CREATE TABLE IF NOT EXISTS \"roles\" (\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  \"tenant_id\" UUID,\n  \"name\" TEXT DEFAULT '',\n  \"description\" TEXT DEFAULT '',\n  \"is_system\" BOOLEAN DEFAULT FALSE,\n  \"inherits_to_descendants\" BOOLEAN DEFAULT FALSE\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"
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": false,
            "unique": false,
            "foreignKey": {
              "table": "tenants",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "name": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "description": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "is_system": {
            "type": "BOOLEAN",
            "notNull": false,
            "unique": false,
            "default": false
          },
          "inherits_to_descendants": {
            "type": "BOOLEAN",
            "notNull": false,
            "unique": false,
            "default": false
          }
        },
        "indexes": [
          {
            "name": "roles_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "roles_created_at_idx",
            "columns": [
              "created_at"
            ]
          },
          {
            "name": "roles_tenant_id_idx",
            "columns": [
              "tenant_id"
            ]
          }
        ],
        "version": "47369d9d"
      }
    },
    "@happyvertical/smrt-users:RolePermission": {
      "name": "rolepermission",
      "className": "RolePermission",
      "qualifiedName": "@happyvertical/smrt-users:RolePermission",
      "collection": "rolepermissions",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/RolePermission.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "roleId": {
          "type": "foreignKey",
          "required": true,
          "related": "Role",
          "_meta": {
            "required": true
          }
        },
        "permissionId": {
          "type": "foreignKey",
          "required": true,
          "related": "Permission",
          "_meta": {
            "required": true
          }
        }
      },
      "methods": {},
      "decoratorConfig": {
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "RolePermission",
      "collectionExportName": "RolePermissionCollection",
      "validationRules": [
        {
          "field": "roleId",
          "rule": "required",
          "fieldType": "foreignKey"
        },
        {
          "field": "permissionId",
          "rule": "required",
          "fieldType": "foreignKey"
        }
      ],
      "schema": {
        "tableName": "role_permissions",
        "ddl": "CREATE TABLE IF NOT EXISTS \"role_permissions\" (\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  \"role_id\" UUID NOT NULL,\n  \"permission_id\" UUID NOT NULL\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"
          },
          "role_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "roles",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "permission_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "permissions",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          }
        },
        "indexes": [
          {
            "name": "role_permissions_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "role_permissions_created_at_idx",
            "columns": [
              "created_at"
            ]
          },
          {
            "name": "role_permissions_role_id_idx",
            "columns": [
              "role_id"
            ]
          },
          {
            "name": "role_permissions_permission_id_idx",
            "columns": [
              "permission_id"
            ]
          }
        ],
        "version": "4dfed3ac"
      }
    },
    "@happyvertical/smrt-users:Session": {
      "name": "session",
      "className": "Session",
      "qualifiedName": "@happyvertical/smrt-users:Session",
      "collection": "sessions",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/Session.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "userId": {
          "type": "foreignKey",
          "required": false,
          "related": "User"
        },
        "tenantId": {
          "type": "foreignKey",
          "required": false,
          "related": "Tenant",
          "_meta": {
            "nullable": true
          }
        },
        "status": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "expiresAt": {
          "type": "datetime",
          "required": false,
          "_meta": {
            "indexed": true
          }
        },
        "userAgent": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "ipAddress": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "lastAccessedAt": {
          "type": "datetime",
          "required": false
        },
        "data": {
          "type": "json",
          "required": false,
          "default": {}
        }
      },
      "methods": {
        "isValid": {
          "name": "isValid",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isExpired": {
          "name": "isExpired",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isRevoked": {
          "name": "isRevoked",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "touch": {
          "name": "touch",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "extend": {
          "name": "extend",
          "async": false,
          "parameters": [
            {
              "name": "ttlSeconds",
              "type": "number",
              "optional": true
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "revoke": {
          "name": "revoke",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "setTenant": {
          "name": "setTenant",
          "async": false,
          "parameters": [
            {
              "name": "tenantId",
              "type": "string | null",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "getData": {
          "name": "getData",
          "async": false,
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "T | undefined",
          "isStatic": false,
          "isPublic": true
        },
        "setData": {
          "name": "setData",
          "async": false,
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false
            },
            {
              "name": "value",
              "type": "any",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "removeData": {
          "name": "removeData",
          "async": false,
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "api": {
          "include": [
            "get",
            "delete"
          ]
        },
        "mcp": {
          "include": []
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "Session",
      "collectionExportName": "SessionCollection",
      "schema": {
        "tableName": "sessions",
        "ddl": "CREATE TABLE IF NOT EXISTS \"sessions\" (\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  \"user_id\" UUID,\n  \"tenant_id\" UUID,\n  \"status\" TEXT,\n  \"expires_at\" TIMESTAMP,\n  \"user_agent\" TEXT DEFAULT '',\n  \"ip_address\" TEXT DEFAULT '',\n  \"last_accessed_at\" TIMESTAMP,\n  \"data\" JSON 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"
          },
          "user_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": false,
            "unique": false,
            "foreignKey": {
              "table": "users",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": false,
            "unique": false,
            "foreignKey": {
              "table": "tenants",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "status": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "expires_at": {
            "type": "TIMESTAMP",
            "notNull": false,
            "unique": false
          },
          "user_agent": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "ip_address": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "last_accessed_at": {
            "type": "TIMESTAMP",
            "notNull": false,
            "unique": false
          },
          "data": {
            "type": "JSON",
            "notNull": false,
            "unique": false,
            "default": {}
          }
        },
        "indexes": [
          {
            "name": "sessions_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "sessions_expires_at_idx",
            "columns": [
              "expires_at"
            ]
          },
          {
            "name": "sessions_created_at_idx",
            "columns": [
              "created_at"
            ]
          },
          {
            "name": "sessions_user_id_idx",
            "columns": [
              "user_id"
            ]
          },
          {
            "name": "sessions_tenant_id_idx",
            "columns": [
              "tenant_id"
            ]
          }
        ],
        "version": "dc55d351"
      }
    },
    "@happyvertical/smrt-users:Tenant": {
      "name": "tenant",
      "className": "Tenant",
      "qualifiedName": "@happyvertical/smrt-users:Tenant",
      "collection": "tenants",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/Tenant.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "created_at": {
          "type": "datetime",
          "required": false
        },
        "updated_at": {
          "type": "datetime",
          "required": false
        },
        "name": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "status": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "description": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "parentTenantId": {
          "type": "foreignKey",
          "required": false,
          "related": "Tenant",
          "_meta": {
            "nullable": true
          }
        },
        "hierarchyLevel": {
          "type": "integer",
          "required": false,
          "default": 0
        },
        "hierarchyPath": {
          "type": "text",
          "required": false,
          "default": ""
        },
        "cascadePermissions": {
          "type": "boolean",
          "required": false,
          "default": true
        },
        "inheritPermissions": {
          "type": "boolean",
          "required": false,
          "default": true
        }
      },
      "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
        },
        "isSuspended": {
          "name": "isSuspended",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isRoot": {
          "name": "isRoot",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "canCascadeToChildren": {
          "name": "canCascadeToChildren",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "acceptsInheritance": {
          "name": "acceptsInheritance",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "getAncestorIds": {
          "name": "getAncestorIds",
          "async": false,
          "parameters": [],
          "returnType": "string[]",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableStrategy": "sti",
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "Tenant",
      "collectionExportName": "TenantCollection",
      "schema": {
        "tableName": "tenants",
        "ddl": "CREATE TABLE IF NOT EXISTS \"tenants\" (\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  \"name\" TEXT DEFAULT '',\n  \"status\" TEXT,\n  \"description\" TEXT DEFAULT '',\n  \"parent_tenant_id\" UUID,\n  \"hierarchy_level\" INTEGER DEFAULT 0,\n  \"hierarchy_path\" TEXT DEFAULT '',\n  \"cascade_permissions\" BOOLEAN DEFAULT TRUE,\n  \"inherit_permissions\" BOOLEAN DEFAULT TRUE\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"
          },
          "name": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "status": {
            "type": "TEXT",
            "notNull": false
          },
          "description": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "parent_tenant_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": false,
            "foreignKey": {
              "table": "tenants",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "hierarchy_level": {
            "type": "INTEGER",
            "notNull": false,
            "default": 0
          },
          "hierarchy_path": {
            "type": "TEXT",
            "notNull": false,
            "default": ""
          },
          "cascade_permissions": {
            "type": "BOOLEAN",
            "notNull": false,
            "default": true
          },
          "inherit_permissions": {
            "type": "BOOLEAN",
            "notNull": false,
            "default": true
          }
        },
        "indexes": [
          {
            "name": "tenants_slug_context_meta_type_idx",
            "columns": [
              "slug",
              "context",
              "_meta_type"
            ],
            "unique": true
          },
          {
            "name": "tenants_meta_type_idx",
            "columns": [
              "_meta_type"
            ]
          },
          {
            "name": "tenants_created_at_idx",
            "columns": [
              "created_at"
            ]
          },
          {
            "name": "tenants_parent_tenant_id_idx",
            "columns": [
              "parent_tenant_id"
            ]
          }
        ],
        "version": "934f7025"
      }
    },
    "@happyvertical/smrt-users:TenantIntegration": {
      "name": "tenantintegration",
      "className": "TenantIntegration",
      "qualifiedName": "@happyvertical/smrt-users:TenantIntegration",
      "collection": "tenantintegrations",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/TenantIntegration.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "tenantId": {
          "type": "text",
          "required": true,
          "_meta": {
            "sqlType": "UUID",
            "__tenancy": {
              "isTenantIdField": true,
              "autoFilter": true,
              "required": true,
              "autoPopulate": true,
              "nullable": false,
              "mode": "required",
              "field": "tenantId",
              "allowSuperAdminBypass": false
            }
          }
        },
        "provider": {
          "type": "text",
          "required": false,
          "default": "aws"
        },
        "externalIds": {
          "type": "text",
          "required": false
        },
        "status": {
          "type": "text",
          "required": false,
          "default": "unprovisioned"
        },
        "lastCheckedAt": {
          "type": "datetime",
          "required": false
        },
        "lastCheckSummary": {
          "type": "text",
          "required": false
        },
        "lastError": {
          "type": "text",
          "required": false
        }
      },
      "methods": {
        "initialize": {
          "name": "initialize",
          "async": true,
          "parameters": [],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        },
        "getExternalIds": {
          "name": "getExternalIds",
          "async": false,
          "parameters": [],
          "returnType": "Record<string, string>",
          "isStatic": false,
          "isPublic": true
        },
        "setExternalIds": {
          "name": "setExternalIds",
          "async": false,
          "parameters": [
            {
              "name": "externalIds",
              "type": "Record<string, string> | string",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "getExternalId": {
          "name": "getExternalId",
          "async": false,
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false
            }
          ],
          "returnType": "string | undefined",
          "isStatic": false,
          "isPublic": true
        },
        "setExternalId": {
          "name": "setExternalId",
          "async": false,
          "parameters": [
            {
              "name": "key",
              "type": "string",
              "optional": false
            },
            {
              "name": "value",
              "type": "string | undefined",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "getLastCheckSummary": {
          "name": "getLastCheckSummary",
          "async": false,
          "parameters": [],
          "returnType": "TenantIntegrationCheckSummary[]",
          "isStatic": false,
          "isPublic": true
        },
        "setLastCheckSummary": {
          "name": "setLastCheckSummary",
          "async": false,
          "parameters": [
            {
              "name": "summary",
              "type": "TenantIntegrationCheckSummary[] | string",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "recordDoctorRun": {
          "name": "recordDoctorRun",
          "async": false,
          "parameters": [
            {
              "name": "outcome",
              "type": "object",
              "optional": false
            }
          ],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "tableName": "tenant_integrations",
        "conflictColumns": [
          "tenant_id",
          "provider"
        ],
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true,
        "tenantScoped": {
          "mode": "required"
        }
      },
      "extends": "SmrtObject",
      "exportName": "TenantIntegration",
      "collectionExportName": "TenantIntegrationCollection",
      "validationRules": [],
      "schema": {
        "tableName": "tenant_integrations",
        "ddl": "CREATE TABLE IF NOT EXISTS \"tenant_integrations\" (\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  \"tenant_id\" UUID NOT NULL,\n  \"provider\" TEXT DEFAULT 'aws',\n  \"external_ids\" TEXT,\n  \"status\" TEXT DEFAULT 'unprovisioned',\n  \"last_checked_at\" TIMESTAMP,\n  \"last_check_summary\" TEXT,\n  \"last_error\" 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"
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "tenantId",
            "notNull": true,
            "unique": false
          },
          "provider": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": "aws"
          },
          "external_ids": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "status": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": "unprovisioned"
          },
          "last_checked_at": {
            "type": "TIMESTAMP",
            "notNull": false,
            "unique": false
          },
          "last_check_summary": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "last_error": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "tenant_integrations_tenant_id_provider_idx",
            "columns": [
              "tenant_id",
              "provider"
            ],
            "unique": true
          },
          {
            "name": "tenant_integrations_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ]
          },
          {
            "name": "tenant_integrations_tenant_id_created_at_idx",
            "columns": [
              "tenant_id",
              "created_at"
            ]
          }
        ],
        "version": "3ed31966"
      }
    },
    "@happyvertical/smrt-users:TenantPermissionOverride": {
      "name": "tenantpermissionoverride",
      "className": "TenantPermissionOverride",
      "qualifiedName": "@happyvertical/smrt-users:TenantPermissionOverride",
      "collection": "tenantpermissionoverrides",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/TenantPermissionOverride.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "tenantId": {
          "type": "foreignKey",
          "required": true,
          "related": "Tenant",
          "_meta": {
            "required": true
          }
        },
        "permissionId": {
          "type": "foreignKey",
          "required": true,
          "related": "Permission",
          "_meta": {
            "required": true
          }
        },
        "effect": {
          "type": "text",
          "required": false,
          "_meta": {}
        }
      },
      "methods": {
        "isInherit": {
          "name": "isInherit",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isGrant": {
          "name": "isGrant",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isDeny": {
          "name": "isDeny",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "hasExplicitEffect": {
          "name": "hasExplicitEffect",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "TenantPermissionOverride",
      "collectionExportName": "TenantPermissionOverrideCollection",
      "validationRules": [
        {
          "field": "tenantId",
          "rule": "required",
          "fieldType": "foreignKey"
        },
        {
          "field": "permissionId",
          "rule": "required",
          "fieldType": "foreignKey"
        }
      ],
      "schema": {
        "tableName": "tenant_permission_overrides",
        "ddl": "CREATE TABLE IF NOT EXISTS \"tenant_permission_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  \"tenant_id\" UUID NOT NULL,\n  \"permission_id\" UUID NOT NULL,\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"
          },
          "tenant_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "tenants",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "permission_id": {
            "type": "UUID",
            "referenceKind": "foreignKey",
            "notNull": true,
            "unique": false,
            "foreignKey": {
              "table": "permissions",
              "column": "id",
              "onDelete": "NO ACTION",
              "onUpdate": "CASCADE"
            }
          },
          "effect": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "tenant_permission_overrides_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "tenant_permission_overrides_created_at_idx",
            "columns": [
              "created_at"
            ]
          },
          {
            "name": "tenant_permission_overrides_tenant_id_idx",
            "columns": [
              "tenant_id"
            ]
          },
          {
            "name": "tenant_permission_overrides_permission_id_idx",
            "columns": [
              "permission_id"
            ]
          }
        ],
        "version": "95b78bdd"
      }
    },
    "@happyvertical/smrt-users:User": {
      "name": "user",
      "className": "User",
      "qualifiedName": "@happyvertical/smrt-users:User",
      "collection": "users",
      "filePath": "/home/runner/work/smrt/smrt/packages/users/src/models/User.ts",
      "packageName": "@happyvertical/smrt-users",
      "fields": {
        "profileId": {
          "type": "crossPackageRef",
          "required": false,
          "related": "@happyvertical/smrt-profiles:Profile",
          "_meta": {
            "unique": true
          }
        },
        "email": {
          "type": "text",
          "required": false,
          "default": "",
          "_meta": {
            "indexed": true
          }
        },
        "emailKey": {
          "type": "text",
          "required": false,
          "_meta": {
            "nullable": true,
            "unique": true,
            "readonly": true
          },
          "readonly": true
        },
        "status": {
          "type": "text",
          "required": false,
          "_meta": {}
        },
        "lastLoginAt": {
          "type": "datetime",
          "required": false
        }
      },
      "methods": {
        "hasValidEmail": {
          "name": "hasValidEmail",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isActive": {
          "name": "isActive",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isSuspended": {
          "name": "isSuspended",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "isPending": {
          "name": "isPending",
          "async": false,
          "parameters": [],
          "returnType": "boolean",
          "isStatic": false,
          "isPublic": true
        },
        "recordLogin": {
          "name": "recordLogin",
          "async": false,
          "parameters": [],
          "returnType": "void",
          "isStatic": false,
          "isPublic": true
        },
        "save": {
          "name": "save",
          "async": true,
          "parameters": [],
          "returnType": "Promise",
          "isStatic": false,
          "isPublic": true
        }
      },
      "decoratorConfig": {
        "api": {
          "include": [
            "list",
            "get"
          ]
        },
        "mcp": {
          "include": [
            "list",
            "get"
          ]
        },
        "cli": true
      },
      "extends": "SmrtObject",
      "exportName": "User",
      "collectionExportName": "UserCollection",
      "schema": {
        "tableName": "users",
        "ddl": "CREATE TABLE IF NOT EXISTS \"users\" (\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  \"profile_id\" UUID UNIQUE,\n  \"email\" TEXT DEFAULT '',\n  \"email_key\" TEXT UNIQUE,\n  \"status\" TEXT,\n  \"last_login_at\" 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"
          },
          "profile_id": {
            "type": "UUID",
            "referenceKind": "crossPackageRef",
            "notNull": false,
            "unique": true
          },
          "email": {
            "type": "TEXT",
            "notNull": false,
            "unique": false,
            "default": ""
          },
          "email_key": {
            "type": "TEXT",
            "notNull": false,
            "unique": true
          },
          "status": {
            "type": "TEXT",
            "notNull": false,
            "unique": false
          },
          "last_login_at": {
            "type": "TIMESTAMP",
            "notNull": false,
            "unique": false
          }
        },
        "indexes": [
          {
            "name": "users_slug_context_idx",
            "columns": [
              "slug",
              "context"
            ],
            "unique": true
          },
          {
            "name": "users_email_idx",
            "columns": [
              "email"
            ]
          },
          {
            "name": "users_created_at_idx",
            "columns": [
              "created_at"
            ]
          }
        ],
        "version": "38fd1677"
      }
    }
  },
  "moduleType": "smrt",
  "smrtDependencies": [
    "@happyvertical/smrt-core",
    "@happyvertical/smrt-mobile-contract",
    "@happyvertical/smrt-profiles",
    "@happyvertical/smrt-tenancy"
  ]
}