{"version":3,"file":"codecs-DJFlZLGT.mjs","names":[],"sources":["../src/codecs.ts"],"sourcesContent":["import {\n  InitialViewState,\n  BrowserLanguage,\n  UserPrivacySignalEnum,\n  OnConsentExpiry,\n} from '@transcend-io/airgap.js-types';\nimport { LOCALE_KEY } from '@transcend-io/internationalization';\nimport {\n  DataCategoryType,\n  ConsentBundleType,\n  EnricherType,\n  ProcessingPurpose,\n  RequestAction,\n  ComparisonOperator,\n  RequestActionObjectResolver,\n  AssessmentSyncColumn,\n  RetentionScheduleType,\n  AssessmentQuestionType,\n  DataFlowScope,\n  PromptAVendorEmailSendType,\n  RetentionScheduleOperation,\n  AssessmentsDisplayLogicAction,\n  DefaultConsentOption,\n  LogicOperator,\n  ConsentPrecedenceOption,\n  AssessmentSyncModel,\n  AssessmentQuestionSubType,\n  IsoCountryCode,\n  BrowserTimeZone,\n  IsoCountrySubdivisionCode,\n  ConsentTrackerStatus,\n  AttributeKeyType,\n  PromptAVendorEmailCompletionLinkType,\n  RegionsOperator,\n  UnknownRequestPolicy,\n  TelemetryPartitionStrategy,\n  SignedIabAgreementOption,\n  RegionDetectionMethod,\n  PreflightRequestStatus,\n  AttributeSupportedResourceType,\n  SubDataPointDataSubCategoryGuessStatus,\n  CodePackageType,\n  ActionItemPriorityOverride,\n  ActionItemCode,\n  ScopeName,\n  TranscendProduct,\n  PrivacyCenterComponentStyles,\n  PrivacyCenterTextStyles,\n  PreferenceStoreAuthLevel,\n  ConfigurableColorPaletteColor,\n  PrivacyCenterFooterLayout,\n  AssessmentFormTemplateStatus,\n  AssessmentFormStatus,\n  AssessmentFormTemplateSource,\n  UnstructuredSubDataPointRecommendationStatus,\n  PreferenceTopicType,\n  Controllership,\n  RetentionType,\n  DataProtectionImpactAssessmentStatus,\n  WorkflowConfigVisibility,\n  WorkflowConfigType,\n  CollectDataSubjectRegions,\n  ConsentThemeInput,\n  ConsentVariantInput,\n  PolicyType,\n} from '@transcend-io/privacy-types';\nimport { applyEnum, valuesOf } from '@transcend-io/type-utils';\n// eslint-disable-next-line eslint-comments/disable-enable-pair\n/* eslint-disable max-lines */\nimport * as t from 'io-ts';\n\n/**\n * Input to define email templates that can be used to communicate to end-users\n * about the status of their requests\n *\n * @see https://docs.transcend.io/docs/privacy-requests/configuring-requests/email-templates\n */\nexport const TemplateInput = t.type({\n  /** The title of the template */\n  title: t.string,\n});\n\n/** Type override */\nexport type TemplateInput = t.TypeOf<typeof TemplateInput>;\n\nexport const WebhookHeader = t.intersection([\n  t.type({\n    /** The name of the header to set. */\n    name: t.string,\n    /** The value of the header. */\n    value: t.string,\n  }),\n  t.partial({\n    /** The header contains a secret */\n    isSecret: t.boolean,\n  }),\n]);\n\n/** Type override */\nexport type WebhookHeader = t.TypeOf<typeof WebhookHeader>;\n\n/**\n * Input to define API keys that may be shared across data silos\n * in the data map. When creating new data silos through the yaml\n * cli, it is possible to specify which API key should be associated\n * with the newly created data silo.\n *\n * @see https://docs.transcend.io/docs/authentication\n */\nexport const ApiKeyInput = t.type({\n  /** The display title of the enricher */\n  title: t.string,\n});\n\n/** Type override */\nexport type ApiKeyInput = t.TypeOf<typeof ApiKeyInput>;\n\n/**\n * Input to define teams in Transcend\n * Users belong to teams and teams can be assigned to various resources\n *\n * @see https://docs.transcend.io/docs/security/access-control\n */\nexport const TeamInput = t.intersection([\n  t.type({\n    /** The display name of the team */\n    name: t.string,\n    /** Team description */\n    description: t.string,\n  }),\n  t.partial({\n    /** SSO department for automated provisioning */\n    'sso-department': t.string,\n    /** SSO group name for automated provisioning */\n    'sso-group': t.string,\n    /** SSO title mapping for automated provisioning */\n    'sso-title': t.string,\n    /** Parent organization team name to link this team to */\n    'parent-team-name': t.string,\n    /** List of user emails on the team */\n    users: t.array(t.string),\n    /** List of scopes that the team should have */\n    scopes: t.array(valuesOf(ScopeName)),\n  }),\n]);\n\n/** Type override */\nexport type TeamInput = t.TypeOf<typeof TeamInput>;\n\n/**\n * Input to define an enricher\n *\n * Define enricher or pre-flight check webhooks that will be executed\n * prior to privacy request workflows. Some examples may include:\n *  - identity enrichment: look up additional identifiers for that user.\n *                         i.e. map an email address to a user ID\n *  - fraud check: auto-cancel requests if the user is flagged for fraudulent behavior\n *  - customer check: auto-cancel request for some custom business criteria\n *\n * @see https://docs.transcend.io/docs/identity-enrichment\n */\nexport const EnricherInput = t.intersection([\n  t.type({\n    /** The display title of the enricher */\n    title: t.string,\n\n    /**\n     * The names of the identifiers that can be resolved by this enricher.\n     * i.e. email -> [userId, phone, advertisingId]\n     */\n    'output-identifiers': t.array(t.string),\n  }),\n  t.partial({\n    /** Internal description for why the enricher is needed */\n    description: t.string,\n    /** The URL of the enricher */\n    url: t.string,\n    /** The type of enricher */\n    type: valuesOf(EnricherType),\n    /**\n     * The name of the identifier that will be the input to this enricher.\n     * Whenever a privacy request contains this identifier, the webhook will\n     * be called with the value of that identifier as input\n     */\n    'input-identifier': t.string,\n    /**\n     * A regular expression that can be used to match on for cancellation\n     */\n    testRegex: t.string,\n    /**\n     * For looker integration - the title of the looker query to run\n     */\n    lookerQueryTitle: t.string,\n    /**\n     * The duration (in ms) that the enricher should take to execute.\n     */\n    expirationDuration: t.number,\n    /**\n     * The status that the enricher should transfer to when condition is met.\n     */\n    transitionRequestStatus: valuesOf(PreflightRequestStatus),\n    /**\n     * For twilio integration - the phone numbers that can be used to send text codes\n     */\n    phoneNumbers: t.array(t.string),\n    /** The list of regions that should trigger the preflight check */\n    regionList: t.array(valuesOf({ ...IsoCountryCode, ...IsoCountrySubdivisionCode })),\n    /**\n     * Specify which data subjects the enricher should run for\n     */\n    'data-subjects': t.array(t.string),\n    /** Headers to include in the webhook */\n    headers: t.array(WebhookHeader),\n    /** The privacy actions that the enricher should run against */\n    'privacy-actions': t.array(valuesOf(RequestAction)),\n  }),\n]);\n\n/** Type override */\nexport type EnricherInput = t.TypeOf<typeof EnricherInput>;\n\n/**\n * The processing purpose for a field\n */\nexport const ProcessingPurposePreviewInput = t.intersection([\n  t.type({\n    /** The parent purpose */\n    purpose: valuesOf(ProcessingPurpose),\n  }),\n  t.partial({\n    /** User-defined name for this processing purpose sub category */\n    name: t.string,\n  }),\n]);\n\n/** Type override */\nexport type ProcessingPurposePreviewInput = t.TypeOf<typeof ProcessingPurposePreviewInput>;\n\n/**\n * The data category for a field\n */\nexport const DataCategoryPreviewInput = t.intersection([\n  t.type({\n    /** The parent category */\n    category: valuesOf(DataCategoryType),\n  }),\n  t.partial({\n    /** User-defined name for this sub category */\n    name: t.string,\n  }),\n]);\n\n/** Type override */\nexport type DataCategoryPreviewInput = t.TypeOf<typeof DataCategoryPreviewInput>;\n\n/**\n * A guessed data category from the content classifier\n */\nexport const DataCategoryGuessInput = t.intersection([\n  t.type({\n    /** The parent category */\n    category: DataCategoryPreviewInput,\n    /** Status of guess */\n    status: valuesOf(SubDataPointDataSubCategoryGuessStatus),\n    /** Confidence level of guess */\n    confidence: t.number,\n  }),\n  t.partial({\n    /** classifier version that produced the guess */\n    classifierVersion: t.number,\n  }),\n]);\n\n/** Type override */\nexport type DataCategoryGuessInput = t.TypeOf<typeof DataCategoryGuessInput>;\n\n/**\n * A guessed data category from the content classifier\n */\nexport const DataCategoryRecommendationInput = t.intersection([\n  t.type({\n    /** The parent category */\n    category: DataCategoryPreviewInput,\n    /** Status of guess */\n    status: valuesOf(UnstructuredSubDataPointRecommendationStatus),\n    /** Confidence level of guess */\n    confidence: t.number,\n  }),\n  t.partial({\n    /** classifier version that produced the guess */\n    classifierVersion: t.number,\n  }),\n]);\n\n/** Type override */\nexport type DataCategoryRecommendationInput = t.TypeOf<typeof DataCategoryRecommendationInput>;\n\nexport const AttributeValueInput = t.intersection([\n  t.type({\n    /** Name of attribute value */\n    name: t.string,\n  }),\n  t.partial({\n    /** Description */\n    description: t.string,\n    /** Color */\n    color: t.string,\n  }),\n]);\n\n/** Type override */\nexport type AttributeValueInput = t.TypeOf<typeof AttributeValueInput>;\n\nexport const AttributeInput = t.intersection([\n  t.type({\n    /** Name of attribute */\n    name: t.string,\n    /** Type of attribute */\n    type: valuesOf(AttributeKeyType),\n  }),\n  t.partial({\n    /** Description of attribute */\n    description: t.string,\n    /** Resource types that the attribute is enabled on */\n    resources: t.array(valuesOf(AttributeSupportedResourceType)),\n    /** Values of attribute */\n    values: t.array(AttributeValueInput),\n  }),\n]);\n\n/** Type override */\nexport type AttributeInput = t.TypeOf<typeof AttributeInput>;\n\nexport const AttributePreview = t.type({\n  /** Attribute key */\n  key: t.string,\n  /** Attribute values */\n  values: t.array(t.string),\n});\n\n/** Type override */\nexport type AttributePreview = t.TypeOf<typeof AttributePreview>;\n\n/**\n * Vendor type definition.\n */\nexport const VendorInput = t.intersection([\n  t.type({\n    /** Title of vendor */\n    title: t.string,\n  }),\n  t.partial({\n    /** Description of vendor */\n    description: t.string,\n    /** DPA link */\n    dataProcessingAgreementLink: t.string,\n    /** Contract email */\n    contactName: t.string,\n    /** Contract phone */\n    contactPhone: t.string,\n    /** Address */\n    address: t.string,\n    /** Headquarters country */\n    headquarterCountry: valuesOf(IsoCountryCode),\n    /** Headquarters subdivision */\n    headquarterSubDivision: valuesOf(IsoCountrySubdivisionCode),\n    /** Website URL */\n    websiteUrl: t.string,\n    /** Business entity */\n    businessEntity: t.string,\n    /**\n     * The email addresses of the employees within your company that are the go-to individuals\n     * for managing this vendor\n     */\n    owners: t.array(t.string),\n    /**\n     * The names of teams within your Transcend instance that should be responsible\n     * for managing this vendor\n     *\n     * @see https://docs.transcend.io/docs/security/access-control#teams\n     * for more information about how to create and manage teams\n     */\n    teams: t.array(t.string),\n    /**\n     * Attribute value and its corresponding attribute key\n     */\n    attributes: t.array(AttributePreview),\n  }),\n]);\n\n/**\n * Type override\n */\nexport type VendorInput = t.TypeOf<typeof VendorInput>;\n\n/**\n * DataCategory type definition.\n */\nexport const DataCategoryInput = t.intersection([\n  t.type({\n    /** Name of data category */\n    name: t.string,\n    /** Type of data category */\n    category: valuesOf(DataCategoryType),\n  }),\n  t.partial({\n    /** Description of data category */\n    description: t.string,\n    /** Regex for data category */\n    regex: t.string,\n    /**\n     * The email addresses of the employees within your company that are the go-to individuals\n     * for managing this data category\n     */\n    owners: t.array(t.string),\n    /**\n     * The names of teams within your Transcend instance that should be responsible\n     * for managing this data category.\n     *\n     * @see https://docs.transcend.io/docs/security/access-control#teams\n     * for more information about how to create and manage teams\n     */\n    teams: t.array(t.string),\n    /**\n     * Attribute value and its corresponding attribute key\n     */\n    attributes: t.array(AttributePreview),\n  }),\n]);\n\n/**\n * Type override\n */\nexport type DataCategoryInput = t.TypeOf<typeof DataCategoryInput>;\n\n/**\n * ProcessingPurpose type definition.\n */\nexport const ProcessingPurposeInput = t.intersection([\n  t.type({\n    /** Name of processing purpose */\n    name: t.string,\n    /** Type of processing purpose */\n    purpose: valuesOf(ProcessingPurpose),\n  }),\n  t.partial({\n    /** Description of processing purpose */\n    description: t.string,\n    /**\n     * The email addresses of the employees within your company that are the go-to individuals\n     * for managing this processing purpose\n     */\n    owners: t.array(t.string),\n    /**\n     * The names of teams within your Transcend instance that should be responsible\n     * for managing this processing purpose.\n     *\n     * @see https://docs.transcend.io/docs/security/access-control#teams\n     * for more information about how to create and manage teams\n     */\n    teams: t.array(t.string),\n    /**\n     * Attribute value and its corresponding attribute key\n     */\n    attributes: t.array(AttributePreview),\n  }),\n]);\n\n/**\n * Type override\n */\nexport type ProcessingPurposeInput = t.TypeOf<typeof ProcessingPurposeInput>;\n\n/**\n * Annotate specific fields within a datapoint. These are often database table columns.\n * Fields can also be a JSON object or separate file.\n */\nexport const FieldInput = t.intersection([\n  t.type({\n    /** The unique key of the field. When a database, this is the column name. */\n    key: t.string,\n  }),\n  t.partial({\n    /** The display title of the field */\n    title: t.string,\n    /** Description of the field */\n    description: t.union([t.string, t.null]),\n    /**\n     * What is the purpose of processing for this datapoint/table?\n     *\n     * @see https://github.com/transcend-io/privacy-types/blob/main/src/objects.ts\n     */\n    purposes: t.array(ProcessingPurposePreviewInput),\n    /**\n     * The category of personal data for this datapoint\n     *\n     * @see https://github.com/transcend-io/privacy-types/blob/main/src/objects.ts\n     */\n    categories: t.array(DataCategoryPreviewInput),\n    /**\n     * The category of personal data that have been guessed by the classifier this datapoint\n     *\n     * @see https://github.com/transcend-io/privacy-types/blob/main/src/objects.ts\n     */\n    'guessed-categories': t.array(DataCategoryGuessInput),\n    /**\n     * When true, this subdatapoint should be revealed in a data access request.\n     * When false, this field should be redacted\n     */\n    'access-request-visibility-enabled': t.boolean,\n    /**\n     * When true, this subdatapoint should be redacted during an erasure request.\n     * There normally is a choice of enabling hard deletion or redaction at the\n     * datapoint level, but if redaction is enabled, this column can be used\n     * to define which fields should be redacted.\n     */\n    'erasure-request-redaction-enabled': t.boolean,\n    /** Attributes tagged to subdatapoint */\n    attributes: t.array(AttributePreview),\n  }),\n]);\n\n/** Type override */\nexport type FieldInput = t.TypeOf<typeof FieldInput>;\n\n/**\n * Datapoints are the different types of data models that existing within your data silo.\n * If the data silo is a database, these would be your tables.\n * Note: These are currently called \"datapoints\" in the Transcend UI and documentation.\n *\n * @see https://docs.transcend.io/docs/the-data-map#datapoints\n */\nexport const DatapointInput = t.intersection([\n  t.type({\n    /** The unique key of the datapoint. For a database, this is the table name. */\n    key: t.string,\n  }),\n  t.partial({\n    /**\n     * Usually only relevant for databases,\n     * this field should include any schema information for a given datapoint.\n     *\n     * Examples:\n     * - In postgres, it's possible to have multiple tables with the same name under\n     * different schemas. e.g., \"public\", \"test\". So here you'd specify [\"public\"] or [\"test\"]\n     * - In Snowflake, it's possible to have different databases with different schemas,\n     * so you can specify [\"ANALYTICS\", \"public\"] to indicate that the datapoint belongs to\n     * the \"public\" schema of the \"ANALYTICS\" database.\n     */\n    path: t.array(t.string),\n    /** The display title of the enricher */\n    title: t.string,\n    /** Internal description for why the enricher is needed */\n    description: t.string,\n    /**\n     * Configure the category of data that this datapoint should be grouped by in a data access request.\n     *\n     * @see https://docs.transcend.io/docs/privacy-requests/connecting-data-silos/saas-tools#configuring-an-integration\n     */\n    'data-collection-tag': t.string,\n    /**\n     * The SQL queries that should be run for that datapoint in a privacy request.\n     *\n     * @see https://github.com/transcend-io/privacy-types/blob/main/src/actions.ts\n     */\n    'privacy-action-queries': t.partial(applyEnum(RequestActionObjectResolver, () => t.string)),\n    /**\n     * The types of privacy actions that this datapoint can implement\n     *\n     * @see https://github.com/transcend-io/privacy-types/blob/main/src/actions.ts\n     */\n    'privacy-actions': t.array(valuesOf(RequestActionObjectResolver)),\n    /**\n     * Provide field-level metadata for this datapoint.\n     * This is often the column metadata\n     */\n    fields: t.array(FieldInput),\n    /**\n     * The email addresses of the employees within your company that are the go-to individuals\n     * for managing this datapoint\n     */\n    owners: t.array(t.string),\n    /**\n     * The names of teams within your Transcend instance that should be responsible\n     * for managing this datapoint\n     *\n     * @see https://docs.transcend.io/docs/security/access-control#teams\n     * for more information about how to create and manage teams\n     */\n    teams: t.array(t.string),\n  }),\n]);\n\n/** Type override */\nexport type DatapointInput = t.TypeOf<typeof DatapointInput>;\n\nexport const PromptAVendorEmailSettings = t.partial({\n  /** The email address of the user to notify when a promptAPerson integration */\n  'notify-email-address': t.string,\n  /**\n   * The frequency with which we should be sending emails for this data silo, in milliseconds.\n   */\n  'send-frequency': t.number,\n  /**\n   * The type of emails to send for this data silo, i.e. send an email for each DSR, across all open DSRs,\n   * or per profile in a DSR.\n   */\n  'send-type': valuesOf(PromptAVendorEmailSendType),\n  /**\n   * Indicates whether prompt-a-vendor emails should include a list of identifiers\n   * in addition to a link to the bulk processing UI.\n   */\n  'include-identifiers-attachment': t.boolean,\n  /**\n   * Indicates what kind of link to generate as part of the emails sent out for this Prompt-a-Vendor silo.\n   */\n  'completion-link-type': valuesOf(PromptAVendorEmailCompletionLinkType),\n  /**\n   * The frequency with which we should retry sending emails for this data silo, in milliseconds.\n   * Needs to be a string because the number can be larger than the MAX_INT\n   */\n  'manual-work-retry-frequency': t.string,\n});\n\n/** Type override */\nexport type PromptAVendorEmailSettings = t.TypeOf<typeof PromptAVendorEmailSettings>;\n\n/**\n * Input to define a business entity\n *\n * @see https://app.transcend.io/data-map/data-inventory/business-entities\n */\nexport const BusinessEntityInput = t.intersection([\n  t.type({\n    /** The title of the business entity */\n    title: t.string,\n  }),\n  t.partial({\n    /** Description of the business entity */\n    description: t.string,\n    /** Address of the business entity */\n    address: t.string,\n    /** Country of headquarters */\n    headquarterCountry: valuesOf(IsoCountryCode),\n    /** Subdivision of headquarters */\n    headquarterSubDivision: valuesOf(IsoCountrySubdivisionCode),\n    /** Data protection officer name for the business entity */\n    dataProtectionOfficerName: t.string,\n    /** Data protection officer email for the business entity */\n    dataProtectionOfficerEmail: t.string,\n    /**\n     * Attribute value and its corresponding attribute key\n     */\n    attributes: t.array(AttributePreview),\n    /**\n     * The email addresses of the employees within your company that are the go-to individuals\n     * for managing this data silo\n     */\n    owners: t.array(t.string),\n    /**\n     * The names of teams within your Transcend instance that should be responsible\n     * for managing this data silo.\n     *\n     * @see https://docs.transcend.io/docs/security/access-control#teams\n     * for more information about how to create and manage teams\n     */\n    teams: t.array(t.string),\n  }),\n]);\n\n/** Type override */\nexport type BusinessEntityInput = t.TypeOf<typeof BusinessEntityInput>;\n\nexport const RegionInput = t.partial({\n  /** The country */\n  country: valuesOf(IsoCountryCode),\n  /** The country subdivision */\n  countrySubDivision: valuesOf(IsoCountrySubdivisionCode),\n});\n\n/** Type override */\nexport type RegionInput = t.TypeOf<typeof RegionInput>;\n\n/**\n * Input to define a processing activity\n *\n * @see https://app.transcend.io/data-map/data-inventory/processing-activities\n */\nexport const ProcessingActivityInput = t.intersection([\n  t.type({\n    /** The title of the processing activity */\n    title: t.string,\n  }),\n  t.partial({\n    /** Description of the processing activity */\n    description: t.string,\n    /** Security measure details */\n    securityMeasureDetails: t.string,\n    /**\n     * Controllerships\n     *\n     * @see https://github.com/transcend-io/privacy-types/blob/main/src/datapoint.ts\n     */\n    controllerships: t.array(valuesOf(Controllership)),\n    /** Storage regions */\n    storageRegions: t.array(RegionInput),\n    /** Transfer regions */\n    transferRegions: t.array(RegionInput),\n    /**\n     * Retention type\n     *\n     * @see https://github.com/transcend-io/privacy-types/blob/main/src/datapoint.ts\n     */\n    retentionType: valuesOf(RetentionType),\n    /** Retention period in days */\n    retentionPeriod: t.number,\n    /** Data protection impact assessment link */\n    dataProtectionImpactAssessmentLink: t.string,\n    /**\n     * Data protection impact assessment status\n     *\n     * @see https://github.com/transcend-io/privacy-types/blob/main/src/processingActivity.ts.ts\n     */\n    dataProtectionImpactAssessmentStatus: valuesOf(DataProtectionImpactAssessmentStatus),\n    /**\n     * Attribute value and its corresponding attribute key\n     */\n    attributes: t.array(AttributePreview),\n    /** Data silo titles */\n    dataSiloTitles: t.array(t.string),\n    /** Data subject types */\n    dataSubjectTypes: t.array(t.string),\n    /** Team names */\n    teamNames: t.array(t.string),\n    /** Owner emails */\n    ownerEmails: t.array(t.string),\n    /**\n     * The purposes of processing for this processing activity\n     *\n     * @see https://github.com/transcend-io/privacy-types/blob/main/src/objects.ts\n     */\n    processingSubPurposes: t.array(ProcessingPurposePreviewInput),\n    /**\n     * The categories of personal data for this processing activity\n     *\n     * @see https://github.com/transcend-io/privacy-types/blob/main/src/objects.ts\n     */\n    dataSubCategories: t.array(DataCategoryPreviewInput),\n    /** SaaS category titles */\n    saaSCategories: t.array(t.string),\n  }),\n]);\n\n/** Type override */\nexport type ProcessingActivityInput = t.TypeOf<typeof ProcessingActivityInput>;\n\n/**\n * Software development kit inputs\n *\n * @see https://app.transcend.io/code-scanning/sdks\n */\nexport const SoftwareDevelopmentKitInput = t.intersection([\n  t.type({\n    /** Title of software development kit */\n    name: t.string,\n    /** Code package type */\n    codePackageType: valuesOf(CodePackageType),\n  }),\n  t.partial({\n    /** Description of the SDK */\n    description: t.string,\n    /** Github repository */\n    repositoryUrl: t.string,\n    /** Integration name */\n    catalogIntegrationName: t.string,\n    /** Doc links */\n    documentationLinks: t.array(t.string),\n    /** Emails of owners */\n    ownerEmails: t.array(t.string),\n    /** Team names */\n    teamNames: t.array(t.string),\n  }),\n]);\n\n/** Type override */\nexport type SoftwareDevelopmentKitInput = t.TypeOf<typeof SoftwareDevelopmentKitInput>;\n\n/**\n * SDK defined for a code package\n */\nexport const CodePackageSdk = t.intersection([\n  t.type({\n    /** Name of SDK */\n    name: t.string,\n  }),\n  t.partial({\n    /** Version of SDK */\n    version: t.string,\n    /** Indicate if dependency is a dev dependency */\n    isDevDependency: t.boolean,\n  }),\n]);\n\n/** Type override */\nexport type CodePackageSdk = t.TypeOf<typeof CodePackageSdk>;\n\n/**\n * Input to define a code package\n *\n * @see https://app.transcend.io/code-scanning/code-packages\n */\nexport const CodePackageInput = t.intersection([\n  t.type({\n    /** The name of the package */\n    name: t.string,\n    /** Type of code package */\n    type: valuesOf(CodePackageType),\n    /** Relative path to code package within the repository */\n    relativePath: t.string,\n    /** Name of repository that the code packages are being uploaded to */\n    repositoryName: t.string,\n  }),\n  t.partial({\n    /** Description of the code package */\n    description: t.string,\n    /** Software development kits in the repository */\n    softwareDevelopmentKits: t.array(CodePackageSdk),\n    /** Names of the teams that manage the code package */\n    teamNames: t.array(t.string),\n    /** Names of the owner emails that manage the code package */\n    ownerEmails: t.array(t.string),\n  }),\n]);\n\n/** Type override */\nexport type CodePackageInput = t.TypeOf<typeof CodePackageInput>;\n\n/**\n * Input to define a repository\n *\n * @see https://app.transcend.io/code-scanning/repositories\n */\nexport const RepositoryInput = t.intersection([\n  t.type({\n    /** The name of the repo */\n    name: t.string,\n    /** URL of repository */\n    url: t.string,\n  }),\n  t.partial({\n    /** Description of the repository */\n    description: t.string,\n    /** Names of the teams that manage the repository */\n    teamNames: t.array(t.string),\n    /** Names of the owner emails that manage the repository */\n    ownerEmails: t.array(t.string),\n  }),\n]);\n\n/** Type override */\nexport type RepositoryInput = t.TypeOf<typeof RepositoryInput>;\n\n/**\n * Input to define a data subject\n *\n * @see https://app.transcend.io/privacy-requests/settings\n */\nexport const DataSubjectInput = t.intersection([\n  t.type({\n    /** The type of the data subject */\n    type: t.string,\n  }),\n  t.partial({\n    /** Whether the data subject is active on the Privacy Center & DSR API */\n    active: t.boolean,\n    /** The title of the data subject */\n    title: t.string,\n    /** Whether or not to default new requests made in the admin dashboard to silent mode */\n    adminDashboardDefaultSilentMode: t.boolean,\n    /**\n     * Whether requests can be submitted on behalf of this data subject by an authorized agent.\n     * Requires the Authorized Agents feature to be enabled for the organization.\n     */\n    supportsAuthorizedAgent: t.boolean,\n    /** Enabled request actions for the data subject */\n    actions: t.array(valuesOf(RequestAction)),\n  }),\n]);\n\n/** Type override */\nexport type DataSubjectInput = t.TypeOf<typeof DataSubjectInput>;\n\n/**\n * Input to define an action\n *\n * @see https://app.transcend.io/privacy-requests/settings\n */\nexport const ActionInput = t.intersection([\n  t.type({\n    /** The type of the data subject */\n    type: valuesOf(RequestAction),\n  }),\n  t.partial({\n    /** Whether or not to skip deletion phase when no data is found */\n    skipSecondaryIfNoFiles: t.boolean,\n    /** Whether to skip the downloadable step */\n    skipDownloadableStep: t.boolean,\n    /** Whether the request action requires review */\n    requiresReview: t.boolean,\n    /** The wait period for the action */\n    waitingPeriod: t.number,\n    /** The method in which the data subject's region is detected */\n    regionDetectionMethod: valuesOf(RegionDetectionMethod),\n    /** The list of regions to show in the form */\n    regionList: t.array(valuesOf({ ...IsoCountryCode, ...IsoCountrySubdivisionCode })),\n    /** The list of regions NOT to show in the form */\n    regionBlockList: t.array(valuesOf({ ...IsoCountryCode, ...IsoCountrySubdivisionCode })),\n  }),\n]);\n\n/** Type override */\nexport type ActionInput = t.TypeOf<typeof ActionInput>;\n\n/**\n * Input to define an identifier\n *\n * @see https://app.transcend.io/privacy-requests/identifiers\n */\nexport const IdentifierInput = t.intersection([\n  t.type({\n    /** The name of the identifier */\n    name: t.string,\n    /** The type of the identifier */\n    type: t.string,\n  }),\n  t.partial({\n    /** Regular expression to verify the identifier */\n    regex: t.string,\n    /** The fixed set of options that an identifier can take on */\n    selectOptions: t.array(t.string),\n    /** Whether or not the identifier is shown in the privacy center form */\n    privacyCenterVisibility: t.array(valuesOf(RequestAction)),\n    /** The set of data subjects that this identifier is enabled for */\n    dataSubjects: t.array(t.string),\n    /** When true, the identifier is a required field on the privacy center form */\n    isRequiredInForm: t.boolean,\n    /** Placeholder message for identifier */\n    placeholder: t.string,\n    /** Display title for identifier */\n    displayTitle: t.string,\n    /** Display description for identifier */\n    displayDescription: t.string,\n    /** The display order for the identifier */\n    displayOrder: t.number,\n    /** Whether or not the identifier is unique on the preference store */\n    isUniqueOnPreferenceStore: t.boolean,\n  }),\n]);\n\n/** Type override */\nexport type IdentifierInput = t.TypeOf<typeof IdentifierInput>;\n\n/**\n * Input to define a data flow\n *\n * @see https://app.transcend.io/consent-manager/data-flows/approved\n */\nexport const DataFlowInput = t.intersection([\n  t.type({\n    /** Value of data flow */\n    value: t.string,\n    /** Type of data flow */\n    type: valuesOf(DataFlowScope),\n  }),\n  t.partial({\n    /** Description of data flow */\n    description: t.string,\n    /** The tracking purposes that are required to be opted in for this data flow */\n    trackingPurposes: t.array(t.string),\n    /**\n     * Name of the consent service attached\n     */\n    service: t.string,\n    /**\n     * Status of the tracker (approved vs triage)\n     */\n    status: valuesOf(ConsentTrackerStatus),\n    /**\n     * The email addresses of the employees within your company that are the go-to individuals\n     * for managing this data silo\n     */\n    owners: t.array(t.string),\n    /**\n     * The names of teams within your Transcend instance that should be responsible\n     * for managing this data silo.\n     *\n     * @see https://docs.transcend.io/docs/security/access-control#teams\n     * for more information about how to create and manage teams\n     */\n    teams: t.array(t.string),\n    /**\n     * Attribute value and its corresponding attribute key\n     */\n    attributes: t.array(AttributePreview),\n  }),\n]);\n\n/** Type override */\nexport type DataFlowInput = t.TypeOf<typeof DataFlowInput>;\n\nexport const CookieInput = t.intersection([\n  t.type({\n    /** Name of data flow */\n    name: t.string,\n  }),\n  t.partial({\n    /** Whether or not the cookie is a regular expression */\n    isRegex: t.boolean,\n    /** Description of data flow */\n    description: t.string,\n    /** The tracking purposes that are required to be opted in for this data flow */\n    trackingPurposes: t.array(t.string),\n    /**\n     * Name of the consent service attached\n     */\n    service: t.string,\n    /**\n     * Status of the tracker (approved vs triage)\n     */\n    status: valuesOf(ConsentTrackerStatus),\n    /**\n     * The email addresses of the employees within your company that are the go-to individuals\n     * for managing this data silo\n     */\n    owners: t.array(t.string),\n    /**\n     * The names of teams within your Transcend instance that should be responsible\n     * for managing this data silo.\n     *\n     * @see https://docs.transcend.io/docs/security/access-control#teams\n     * for more information about how to create and manage teams\n     */\n    teams: t.array(t.string),\n    /**\n     * Attribute value and its corresponding attribute key\n     */\n    attributes: t.array(AttributePreview),\n  }),\n]);\n\n/** Type override */\nexport type CookieInput = t.TypeOf<typeof CookieInput>;\n\nexport const ConsentManageExperienceInput = t.intersection([\n  t.type({\n    /** Name of experience */\n    name: t.string,\n  }),\n  t.partial({\n    /** Name of experience */\n    displayName: t.string,\n    /** Region that define this regional experience */\n    regions: t.array(RegionInput),\n    /** How to handle consent expiry */\n    onConsentExpiry: valuesOf(OnConsentExpiry),\n    /** Consent expiration lever */\n    consentExpiry: t.number,\n    /** In vs not in operator */\n    operator: valuesOf(RegionsOperator),\n    /** Priority of experience */\n    displayPriority: t.number,\n    /** View state to prompt when auto prompting is enabled */\n    viewState: valuesOf(InitialViewState),\n    /** Purposes that can be opted out of in a particular experience */\n    purposes: t.array(\n      t.type({\n        /** Slug of purpose */\n        trackingType: t.string,\n      }),\n    ),\n    /** Purposes that are opted out by default in a particular experience */\n    optedOutPurposes: t.array(\n      t.type({\n        /** Slug of purpose */\n        trackingType: t.string,\n      }),\n    ),\n    /**\n     * Browser languages that define this regional experience\n     */\n    browserLanguages: t.array(valuesOf(BrowserLanguage)),\n    /** Browser time zones that define this regional experience */\n    browserTimeZones: t.array(valuesOf(BrowserTimeZone)),\n    /** ID of the consent UI variant assigned to this experience */\n    consentUiVariantSlug: t.string,\n  }),\n]);\n\n/** Type override */\nexport type ConsentManageExperienceInput = t.TypeOf<typeof ConsentManageExperienceInput>;\n\nexport const PartitionInput = t.intersection([\n  t.type({\n    /** Name of partition */\n    name: t.string,\n  }),\n  t.partial({\n    /** Value of partition, cannot be pushed, can only be pulled */\n    partition: t.string,\n  }),\n]);\n\n/** Type override */\nexport type PartitionInput = t.TypeOf<typeof PartitionInput>;\n\nexport const ConsentManagerInput = t.partial({\n  /** Airgap version */\n  version: t.string,\n  /** The consent manager domains in the instance */\n  bundleUrls: t.record(valuesOf(ConsentBundleType), t.string),\n  /** The consent manager domains in the instance */\n  domains: t.array(t.string),\n  /** Key used to partition consent records */\n  partition: t.string,\n  /** Precedence of signals vs user input */\n  consentPrecedence: valuesOf(ConsentPrecedenceOption),\n  /** The consent manager unknown request policy */\n  unknownRequestPolicy: valuesOf(UnknownRequestPolicy),\n  /** The consent manager unknown cookie policy */\n  unknownCookiePolicy: valuesOf(UnknownRequestPolicy),\n  /** The XDI sync endpoint for this airgap bundle */\n  syncEndpoint: t.string,\n  /** The telemetry partitioning strategy */\n  telemetryPartitioning: valuesOf(TelemetryPartitionStrategy),\n  /** Whether the site owner has signed the IAB agreement */\n  signedIabAgreement: valuesOf(SignedIabAgreementOption),\n  /** Regional experience configurations */\n  experiences: t.array(ConsentManageExperienceInput),\n  /** Theme config */\n  theme: t.partial({\n    /** Primary color */\n    primaryColor: t.string,\n    /** Font color */\n    fontColor: t.string,\n    /** Privacy policy URL */\n    privacyPolicy: t.string,\n    /** Auto-prompt setting */\n    prompt: t.number,\n  }),\n  // TODO: https://transcend.height.app/T-23919 - reconsider simpler yml shape\n  /** The Shared XDI host sync groups config (JSON) for this airgap bundle */\n  syncGroups: t.string,\n  consentVariants: t.array(ConsentVariantInput),\n  consentThemes: t.array(ConsentThemeInput),\n});\n\n/** Type override */\nexport type ConsentManagerInput = t.TypeOf<typeof ConsentManagerInput>;\n\n/**\n * Input to define a privacy center\n */\nexport const PrivacyCenterInput = t.partial({\n  /** Whether or not the entire privacy center is enabled or disabled */\n  isDisabled: t.boolean,\n  /** Whether or not to show the privacy requests button */\n  showPrivacyRequestButton: t.boolean,\n  /** Whether or not to show the policies page */\n  showPolicies: t.boolean,\n  /** Whether or not to show the tracking technologies page */\n  showTrackingTechnologies: t.boolean,\n  /** Whether or not to show the cookies on the tracking technologies page */\n  showCookies: t.boolean,\n  /** Whether or not to show the data flows on the tracking technologies page */\n  showDataFlows: t.boolean,\n  /** Whether or not to show the consent manager opt out options on the tracking technologies page */\n  showConsentManager: t.boolean,\n  /** Whether or not to show the manage your privacy page */\n  showManageYourPrivacy: t.boolean,\n  /** Whether or not to show the marketing preferences page */\n  showMarketingPreferences: t.boolean,\n  /** What languages are supported for the privacy center */\n  locales: t.array(valuesOf(LOCALE_KEY)),\n  /** The default locale for the privacy center */\n  defaultLocale: valuesOf(LOCALE_KEY),\n  /** Whether or not to prefer the browser default locale */\n  preferBrowserDefaultLocale: t.boolean,\n  /** The email addresses of the employees within your company that are the go-to individuals for managing this privacy center */\n  supportEmail: t.string,\n  /** The email addresses of the employees within your company that are the go-to individuals for managing this privacy center */\n  replyToEmail: t.string,\n  /** Whether or not to send emails from a no reply email */\n  useNoReplyEmailAddress: t.boolean,\n  /** Whether or not to use a custom email domain */\n  useCustomEmailDomain: t.boolean,\n  /** Whether or not to transcend access requests from JSON to CSV */\n  transformAccessReportJsonToCsv: t.boolean,\n  /**\n   * Privacy Center \"home\" / back-to-site link URL shown in the privacy center\n   * header\n   */\n  home: t.string,\n  /** Whether the side menu is expanded by default on the privacy center */\n  expandSideMenuByDefault: t.boolean,\n  /**\n   * Whether custom fields are required when submitting privacy requests from\n   * the privacy center workflows UI\n   */\n  workflowsCustomFieldsRequired: t.boolean,\n  /**\n   * Child organization URIs (or IDs) to display on a unified multi-brand\n   * privacy center. Resolved to organization IDs on push.\n   */\n  displayedChildOrganizationUris: t.array(t.string),\n  /** Footer layout for privacy center footer links */\n  footerLayout: valuesOf(PrivacyCenterFooterLayout),\n  /**\n   * Footer links displayed on the privacy center. Matched by title on push;\n   * links omitted from this list are deleted.\n   */\n  footerLinks: t.array(\n    t.intersection([\n      t.type({\n        /** Link title (default locale) */\n        title: t.string,\n      }),\n      t.partial({\n        /** Link URL (default locale); optional for icon-only links */\n        url: t.string,\n        /**\n         * When true with an icon set, render as icon-only (title is used for\n         * accessibility). When false with an icon set, render icon beside the\n         * visible label.\n         */\n        iconOnly: t.boolean,\n      }),\n    ]),\n  ),\n  /** The theme object of colors to display on the privacy center */\n  theme: t.partial({\n    /** The theme colors */\n    colors: t.partial(applyEnum(ConfigurableColorPaletteColor, () => t.string)),\n    /** Styles to apply to components */\n    componentStyles: PrivacyCenterComponentStyles,\n    /** Override styles */\n    textStyles: PrivacyCenterTextStyles,\n  }),\n});\n\n/** Type override */\nexport type PrivacyCenterInput = t.TypeOf<typeof PrivacyCenterInput>;\n\n/**\n * Input to define a policy\n */\nexport const PolicyInput = t.intersection([\n  t.type({\n    /** The title of the policy */\n    title: t.string,\n  }),\n  t.partial({\n    /**\n     * Policy type. On create, defaults from title\n     * (Privacy Policy / Cookie Policy / CUSTOM).\n     */\n    type: valuesOf(PolicyType),\n    /** Effective date of policy */\n    effectiveOn: t.string,\n    /** Whether or not to disable the effective date */\n    disableEffectiveOn: t.boolean,\n    /** Content of the policy */\n    content: t.string,\n    /** The languages for which the policy is disabled for */\n    disabledLocales: t.array(valuesOf(LOCALE_KEY)),\n  }),\n]);\n\n/** Type override */\nexport type PolicyInput = t.TypeOf<typeof PolicyInput>;\n\n/**\n * Input to define an internationalized message defined in Transcend\n */\nexport const IntlMessageInput = t.intersection([\n  t.type({\n    /** The ID of the message */\n    id: t.string,\n  }),\n  t.partial({\n    /** The hard-coded ID that the message refers to in the Privacy Center or Consent Manager UI, null if message is dynamic */\n    targetReactIntlId: t.string,\n    /** The description of the message */\n    description: t.string,\n    /** The default message to use */\n    defaultMessage: t.string,\n    /** The translations */\n    translations: t.partial(applyEnum(LOCALE_KEY, () => t.string)),\n  }),\n]);\n\n/** Type override */\nexport type IntlMessageInput = t.TypeOf<typeof IntlMessageInput>;\n\n/**\n * A set of deletion dependencies, either global (when `workflow` is omitted)\n * or scoped to a single DSR workflow.\n *\n * An empty `titles` list scoped to a workflow is an explicit override, meaning\n * that workflow runs the data silo with no dependencies at all.\n */\nexport const DeletionDependency = t.intersection([\n  t.type({\n    /**\n     * The titles of the data silos that must be deleted from first. This list can contain\n     * other internal systems defined in this file, as well as any of the SaaS tools connected\n     * in your Transcend instance.\n     */\n    titles: t.array(t.string),\n  }),\n  t.partial({\n    /**\n     * The internal name of the DSR workflow that these dependencies override the global\n     * configuration for. Omit to declare the global configuration.\n     */\n    workflow: t.string,\n  }),\n]);\n\n/** Type override */\nexport type DeletionDependency = t.TypeOf<typeof DeletionDependency>;\n\n/**\n * Removes a workflow's deletion dependency override so that the workflow falls back\n * to the global configuration.\n */\nexport const DeletionDependencyReset = t.type({\n  /** The internal name of the DSR workflow to remove the override from */\n  workflow: t.string,\n  /** Must be `true`; declares that the override should be removed */\n  'reset-to-global': t.literal(true),\n});\n\n/** Type override */\nexport type DeletionDependencyReset = t.TypeOf<typeof DeletionDependencyReset>;\n\n/**\n * A single object entry in a data silo's `deletion-dependencies` list.\n * Global dependencies are written as `{ titles: [...] }`; per-workflow overrides\n * include a `workflow` key.\n */\nexport const DeletionDependencyInput = t.union([DeletionDependency, DeletionDependencyReset]);\n\n/** Type override */\nexport type DeletionDependencyInput = t.TypeOf<typeof DeletionDependencyInput>;\n\n/**\n * The `deletion-dependencies` field for a data silo.\n *\n * Prefer a list of objects: `{ titles: [...] }` for the global configuration and\n * `{ workflow, titles }` or `{ workflow, reset-to-global: true }` for each override.\n * A bare list of titles is still accepted for global-only configuration. Mixing\n * titles and objects in the same list is not allowed.\n */\nexport const DeletionDependencies = t.union([t.array(t.string), t.array(DeletionDependencyInput)]);\n\n/** Type override */\nexport type DeletionDependencies = t.TypeOf<typeof DeletionDependencies>;\n\n/**\n * Input to define a data silo\n *\n * Define the data silos in your data map. A data silo can be a database,\n * or a web service that may use a collection of different data stores under the hood.\n *\n * @see https://docs.transcend.io/docs/the-data-map#data-silos\n */\nexport const DataSiloInput = t.intersection([\n  t.type({\n    /** The display title of the data silo */\n    title: t.string,\n    /**\n     * The type of integration. Common internal system types:\n     * server | database | cron  | promptAPerson\n     */\n    integrationName: t.string,\n  }),\n  t.partial({\n    /** For prompt a person or database integrations, the underlying integration name */\n    'outer-type': t.string,\n    /** A description for that data silo */\n    description: t.string,\n    /** The webhook URL to notify for data privacy requests */\n    url: t.string,\n    /** The title of the API key that will be used to respond to privacy requests */\n    'api-key-title': t.string,\n    /**\n     * The ID of the configured Sombra instance that processes privacy requests for this data silo.\n     * Useful for multi-Sombra organizations. Pull/push via `transcend inventory pull` / `push`.\n     */\n    'sombra-id': t.string,\n    /** Custom headers to include in outbound webhook */\n    headers: t.array(WebhookHeader),\n    /**\n     * Specify which data subjects may have personally-identifiable-information (PII) within this system\n     * This field can be omitted, and the default assumption will be that the system may potentially\n     * contain PII for any potential data subject type.\n     */\n    'data-subjects': t.array(t.string),\n    /**\n     * When this data silo implements a privacy request, these are the identifiers\n     * that should be looked up within this system.\n     */\n    'identity-keys': t.array(t.string),\n    /**\n     * When a data erasure request is being performed, this data silo should not be deleted from\n     * until all of the following data silos were deleted first. This list can contain other internal\n     * systems defined in this file, as well as any of the SaaS tools connected in your Transcend instance.\n     *\n     * Prefer a list of objects: `{ titles: [...] }` for the global configuration and\n     * `{ workflow, titles }` (or `{ workflow, reset-to-global: true }`) for each override.\n     * A bare list of titles is still accepted for global-only configuration. Workflows that\n     * are not listed keep whatever configuration they already have.\n     */\n    'deletion-dependencies': DeletionDependencies,\n    /**\n     * The email addresses of the employees within your company that are the go-to individuals\n     * for managing this data silo\n     */\n    owners: t.array(t.string),\n    /**\n     * The names of teams within your Transcend instance that should be responsible\n     * for managing this data silo.\n     *\n     * @see https://docs.transcend.io/docs/security/access-control#teams\n     * for more information about how to create and manage teams\n     */\n    teams: t.array(t.string),\n    /**\n     * Specify this flag if the data silo is under development and should not be included\n     * in production privacy request workflows. Will still sync metadata to app.transcend.io.\n     */\n    disabled: t.boolean,\n    /**\n     * Datapoints defined within this data silo, see comment of `DatapointInput`\n     * for further details.\n     */\n    datapoints: t.array(DatapointInput),\n    /**\n     * Configure email notification settings for privacy requests\n     */\n    'email-settings': PromptAVendorEmailSettings,\n    /** Country of data silo hosting */\n    country: valuesOf(IsoCountryCode),\n    /** Sub-division of data silo hosting */\n    countrySubDivision: valuesOf(IsoCountrySubdivisionCode),\n    /**\n     * Attribute value and its corresponding attribute key\n     */\n    attributes: t.array(AttributePreview),\n    /**\n     * The business entities associated with this data silo\n     */\n    businessEntityTitles: t.array(t.string),\n  }),\n]);\n\n/** Type override */\nexport type DataSiloInput = t.TypeOf<typeof DataSiloInput>;\n\nexport const ActionItemCollectionInput = t.intersection([\n  t.type({\n    /** The display title of the enricher */\n    title: t.string,\n    /** Locations where collection is shown */\n    productLine: valuesOf(TranscendProduct),\n  }),\n  t.partial({\n    /** Description of collection */\n    description: t.string,\n    /** Whether hidden */\n    hidden: t.boolean,\n  }),\n]);\n\n/** Type override */\nexport type ActionItemCollectionInput = t.TypeOf<typeof ActionItemCollectionInput>;\n\n/**\n * Input to define an action item\n */\nexport const ActionItemInput = t.intersection([\n  t.type({\n    /** The display title of the enricher */\n    title: t.string,\n    /** Action item type */\n    type: valuesOf(ActionItemCode),\n    /** The titles of the collections that the action item is grouped within */\n    collections: t.array(t.string),\n  }),\n  t.partial({\n    /** Priority of the action item */\n    priority: valuesOf(ActionItemPriorityOverride),\n    /** Customer experience action item key */\n    customerExperienceActionItemId: t.string,\n    /** Due date of the action item */\n    dueDate: t.string,\n    /** Whether action item has been resolved */\n    resolved: t.boolean,\n    /** Notes */\n    notes: t.string,\n    /** Links to action items */\n    link: t.string,\n    /**\n     * The email addresses of the employees assigned to the action item\n     */\n    users: t.array(t.string),\n    /**\n     * The names of teams assigned to the action item\n     *\n     * @see https://docs.transcend.io/docs/security/access-control#teams\n     * for more information about how to create and manage teams\n     */\n    teams: t.array(t.string),\n    /**\n     * Attribute value and its corresponding attribute key\n     */\n    attributes: t.array(AttributePreview),\n  }),\n]);\n\n/** Type override */\nexport type ActionItemInput = t.TypeOf<typeof ActionItemInput>;\n\nexport const AssessmentRuleInput = t.intersection([\n  t.type({\n    /** The reference id of the question whose answer is compared by this rule */\n    'depends-on-question-reference-id': t.string,\n    /** The operator to use when comparing the question answer to the operands */\n    'comparison-operator': valuesOf(ComparisonOperator),\n  }),\n  t.partial({\n    /** The values to compare the question answer to */\n    'comparison-operands': t.array(t.string),\n  }),\n]);\n\n/** Type override */\nexport type AssessmentRuleInput = t.TypeOf<typeof AssessmentRuleInput>;\n\nexport interface AssessmentNestedRuleInput {\n  /** The operator to use when comparing the nested rules */\n  'logic-operator': LogicOperator;\n  /** The rules to evaluate and be compared with to other using the LogicOperator */\n  rules?: AssessmentRuleInput[];\n  /** The nested rules to add one more level of nesting to the rules. They are also compared to each other. */\n  'nested-rules'?: AssessmentNestedRuleInput[];\n}\n\nexport const AssessmentNestedRuleInput: t.RecursiveType<t.Type<AssessmentNestedRuleInput>> =\n  t.recursion('AssessmentNestedRuleInput', (self) =>\n    t.intersection([\n      t.type({\n        /** The operator to use when comparing the nested rules */\n        'logic-operator': valuesOf(LogicOperator),\n      }),\n      t.partial({\n        /** The rules to evaluate and be compared with to other using the LogicOperator */\n        rules: t.array(AssessmentRuleInput),\n        /** The nested rules to add one more level of nesting to the rules. They are also compared to each other. */\n        'nested-rules': t.array(self),\n      }),\n    ]),\n  );\n\nexport const AssessmentDisplayLogicInput = t.intersection([\n  t.type({\n    /** The display logic type */\n    action: valuesOf(AssessmentsDisplayLogicAction),\n  }),\n  t.partial({\n    /** The rule to evaluate */\n    rule: AssessmentRuleInput,\n    /** The nested rule to evaluate */\n    'nested-rule': AssessmentNestedRuleInput,\n  }),\n]);\n\n/** Type override */\nexport type AssessmentDisplayLogicInput = t.TypeOf<typeof AssessmentDisplayLogicInput>;\n\nexport const RiskAssignmentInput = t.partial({\n  /** The risk level to assign to the question */\n  'risk-level': t.string,\n  /** The risk matrix column to assign to a question. */\n  'risk-matrix-column': t.string,\n  /** The risk matrix row to assign to a question. */\n  'risk-matrix-row': t.string,\n});\n\n/** Type override */\nexport type RiskAssignmentInput = t.TypeOf<typeof RiskAssignmentInput>;\n\nexport const RiskLogicInput = t.intersection([\n  t.type({\n    /** The values to compare */\n    'comparison-operands': t.array(t.string),\n    /** The operator */\n    'comparison-operator': valuesOf(ComparisonOperator),\n  }),\n  t.partial({\n    /** The risk level to assign to the question */\n    'risk-level': t.string,\n    /** The risk matrix column to assign to a question. */\n    'risk-matrix-column': t.string,\n    /** The risk matrix row to assign to a question. */\n    'risk-matrix-row': t.string,\n  }),\n]);\n\n/** Type override */\nexport type RiskLogicInput = t.TypeOf<typeof RiskLogicInput>;\n\nexport const AssessmentAnswerOptionInput = t.type({\n  /** Value of answer */\n  value: t.string,\n});\n\n/** Type override */\nexport type AssessmentAnswerOptionInput = t.TypeOf<typeof AssessmentAnswerOptionInput>;\n\nexport const AssessmentSectionQuestionInput = t.intersection([\n  t.type({\n    /** The title of the assessment section question */\n    title: t.string,\n    /** The question type */\n    type: valuesOf(AssessmentQuestionType),\n  }),\n  t.partial({\n    /** The sub-type of the assessment question */\n    'sub-type': valuesOf(AssessmentQuestionSubType),\n    /** The question placeholder */\n    placeholder: t.string,\n    /** The question description */\n    description: t.string,\n    /** Whether an answer is required */\n    'is-required': t.boolean,\n    /** Used to identify the question within a form or template so it can be referenced in conditional logic. */\n    'reference-id': t.string,\n    /** Display logic for the question */\n    'display-logic': AssessmentDisplayLogicInput,\n    /** Risk logic for the question */\n    'risk-logic': t.array(RiskLogicInput),\n    /** Risk category titles for the question */\n    'risk-categories': t.array(t.string),\n    /** Risk framework titles for the question */\n    'risk-framework': t.string,\n    /** Answer options for the question */\n    'answer-options': t.array(AssessmentAnswerOptionInput),\n    /** The selected answers to the assessments */\n    'selected-answers': t.array(t.string),\n    /** Allowed MIME types for the question */\n    'allowed-mime-types': t.array(t.string),\n    /** Allow selecting other options */\n    'allow-select-other': t.boolean,\n    /** Sync model for the question */\n    'sync-model': valuesOf(AssessmentSyncModel),\n    /** Sync column for the question */\n    'sync-column': valuesOf(AssessmentSyncColumn),\n    /** Attribute key / custom field name for the question */\n    'attribute-key': t.string,\n    /** Require risk evaluation for the question */\n    'require-risk-evaluation': t.boolean,\n    /** Require risk matrix evaluation for the question */\n    'require-risk-matrix-evaluation': t.boolean,\n  }),\n]);\n\n/** Type override */\nexport type AssessmentSectionQuestionInput = t.TypeOf<typeof AssessmentSectionQuestionInput>;\n\nexport const AssessmentSectionInput = t.intersection([\n  t.type({\n    /** The title of the assessment section */\n    title: t.string,\n    /** The questions in the assessment section */\n    questions: t.array(AssessmentSectionQuestionInput),\n  }),\n  t.partial({\n    /** Email address of those assigned */\n    assignees: t.array(t.string),\n    /** Email address of those externally assigned */\n    'external-assignees': t.array(t.string),\n    /** Status of section */\n    status: t.string,\n    /** Whether assessment is reviewed */\n    'is-reviewed': t.boolean,\n  }),\n]);\n\n/** Type override */\nexport type AssessmentSectionInput = t.TypeOf<typeof AssessmentSectionInput>;\n\nexport const AssessmentRetentionScheduleInput = t.type({\n  /** The retention schedule type */\n  type: valuesOf(RetentionScheduleType),\n  /** The duration of the retention schedule in days */\n  'duration-days': t.number,\n  /** The operation to perform on the retention schedule */\n  operand: valuesOf(RetentionScheduleOperation),\n});\n\n/** Type override */\nexport type AssessmentRetentionScheduleInput = t.TypeOf<typeof AssessmentRetentionScheduleInput>;\n\nexport const AssessmentTemplateInput = t.intersection([\n  t.type({\n    /** The title of the assessment template */\n    title: t.string,\n  }),\n  t.partial({\n    /** The Assessment sections under this assessment template */\n    sections: t.array(AssessmentSectionInput),\n    /** Description of assessment template */\n    description: t.string,\n    /** The status of the assessment */\n    status: valuesOf(AssessmentFormTemplateStatus),\n    /** The source of the assessment */\n    source: valuesOf(AssessmentFormTemplateSource),\n    /** The email of the user that created the assessment */\n    creator: t.string,\n    /** Whether the template is in a locked status */\n    locked: t.boolean,\n    /** ID of parent template this was cloned from */\n    'parent-id': t.string,\n    /** Whether the template is archived */\n    archived: t.boolean,\n    /** The date that the assessment was created */\n    'created-at': t.string,\n    /** The names of the custom fields associated to this assessment template */\n    'attribute-keys': t.array(t.string),\n    /** The retention schedule configuration */\n    'retention-schedule': AssessmentRetentionScheduleInput,\n    /** The titles of the email templates used in the assessment template */\n    templates: t.array(t.string),\n  }),\n]);\n\n/** Type override */\nexport type AssessmentTemplateInput = t.TypeOf<typeof AssessmentTemplateInput>;\n\nexport const AssessmentResourceInput = t.type({\n  /** The title of the resource */\n  title: t.string,\n  /** The type of the resource */\n  type: valuesOf(AttributeSupportedResourceType),\n});\n\n/** Type override */\nexport type AssessmentResourceInput = t.TypeOf<typeof AssessmentResourceInput>;\n\nexport const AssessmentInput = t.intersection([\n  t.type({\n    /** The title of the assessment */\n    title: t.string,\n    /** The title of the assessment group */\n    group: t.string,\n  }),\n  t.partial({\n    /** The assessment sections */\n    sections: t.array(AssessmentSectionInput),\n    /** The email of the user that created the assessment */\n    creator: t.string,\n    /** The description of the assessment */\n    description: t.string,\n    /** The status of the assessment */\n    status: valuesOf(AssessmentFormStatus),\n    /** The emails of the transcend users assigned to the assessment */\n    assignees: t.array(t.string),\n    /** The emails of the external emails assigned to the assessment */\n    'external-assignees': t.array(t.string),\n    /** The emails of the assessment reviewers */\n    reviewers: t.array(t.string),\n    /** Whether the assessment is in a locked status */\n    locked: t.boolean,\n    /** Whether the assessment is archived */\n    archived: t.boolean,\n    /** Whether the form is created by an external user */\n    external: t.boolean,\n    /**\n     * Whether the form title is an internal label only, and the group title should be used in communications with assignees\n     */\n    'title-is-internal': t.boolean,\n    /** The date that the assessment is due */\n    'due-date': t.string,\n    /** The date that the assessment was created */\n    'created-at': t.string,\n    /** The date that the assessment was assigned at */\n    'assigned-at': t.string,\n    /** The date that the assessment was submitted at */\n    'submitted-at': t.string,\n    /** The date that the assessment was approved at */\n    'approved-at': t.string,\n    /** The date that the assessment was rejected at */\n    'rejected-at': t.string,\n    /** The linked data inventory resources */\n    resources: t.array(AssessmentResourceInput),\n    /** The linked data inventory synced rows */\n    rows: t.array(AssessmentResourceInput),\n    /** The assessment retention schedule */\n    'retention-schedule': AssessmentRetentionScheduleInput,\n    /** The assessment custom fields */\n    attributes: t.array(AttributePreview),\n  }),\n]);\n\n/** Type override */\nexport type AssessmentInput = t.TypeOf<typeof AssessmentInput>;\n\nexport const ConsentPreferenceTopicOptionValue = t.type({\n  /** Title of option value */\n  title: t.string,\n  /** API slug */\n  slug: t.string,\n});\n\n/** Type override */\nexport type ConsentPreferenceTopicOptionValue = t.TypeOf<typeof ConsentPreferenceTopicOptionValue>;\n\nexport const ConsentPreferenceTopic = t.intersection([\n  t.type({\n    /** The type of the preference topic */\n    type: valuesOf(PreferenceTopicType),\n    /** The title of the preference topic */\n    title: t.string,\n    /** The description of the preference topic */\n    description: t.string,\n    /** API slug for the preference topic (PascalCase; alphabetical letters only) */\n    slug: t.string,\n  }),\n  t.partial({\n    /** Hex color for the preference topic (pull-only; not writable via CLI push today) */\n    color: t.string,\n    /** Default value */\n    'default-configuration': t.string,\n    /** Whether the preference topic is shown in privacy center */\n    'show-in-privacy-center': t.boolean,\n    /** The options when type is single or multi select */\n    options: t.array(ConsentPreferenceTopicOptionValue),\n  }),\n]);\n\n/** Type override */\nexport type ConsentPreferenceTopic = t.TypeOf<typeof ConsentPreferenceTopic>;\n\nexport const ConsentPurpose = t.intersection([\n  t.type({\n    /** Consent purpose slug */\n    trackingType: t.string,\n    /** The title of the tracking purpose that appears in Consent Management and Privacy Center UIs  */\n    title: t.string,\n    /** The display name of this tracking purpose */\n    name: t.string,\n  }),\n  t.partial({\n    /** Description of purpose */\n    description: t.string,\n    /** Whether purpose is active */\n    'is-active': t.boolean,\n    /** Whether purpose is configurable */\n    configurable: t.boolean,\n    /** Display order of purpose for privacy center */\n    'display-order': t.number,\n    /** Whether purpose is shown in privacy center */\n    'show-in-privacy-center': t.boolean,\n    /** Whether purpose is show in consent manger */\n    'show-in-consent-manager': t.boolean,\n    /** The preference topics configured for the purpose */\n    'preference-topics': t.array(ConsentPreferenceTopic),\n    /** Authentication level for purpose on privacy center */\n    'auth-level': valuesOf(PreferenceStoreAuthLevel),\n    /** Opt out signals that should instantly opt out of this purpose */\n    'opt-out-signals': t.array(valuesOf(UserPrivacySignalEnum)),\n    /** Default consent value */\n    'default-consent': valuesOf(DefaultConsentOption),\n  }),\n]);\n\n/** Type override */\nexport type ConsentPurpose = t.TypeOf<typeof ConsentPurpose>;\n\n/**\n * Input for a purpose associated with a preference workflow config\n */\nexport const PreferenceWorkflowConfigPurposeInput = t.type({\n  /** The tracking type slug of the purpose */\n  'tracking-type': t.string,\n  /** The matching consent state for the purpose */\n  'matching-state': t.boolean,\n});\n\n/** Type override */\nexport type PreferenceWorkflowConfigPurposeInput = t.TypeOf<\n  typeof PreferenceWorkflowConfigPurposeInput\n>;\n\n/**\n * Input to define a preference workflow config.\n * Purposes are the source of truth; triggerCondition is derived on push\n * (same as Workflows → Preference Workflows in the admin dashboard).\n *\n * Exactly one mode per config:\n * - Legacy: action-type (+ optional data-silo-titles), no workflow-title\n * - V2: workflow-title (DSR workflow display title), no action-type / data-silo-titles\n */\nexport const PreferenceWorkflowConfigInput = t.intersection([\n  t.type({\n    /** The name of the preference workflow config */\n    name: t.string,\n    /**\n     * Purposes and their matching consent states.\n     * Used to derive triggerCondition as `{ And: [{ [tracking-type]: matching-state }, ...] }`.\n     */\n    purposes: t.array(PreferenceWorkflowConfigPurposeInput),\n  }),\n  t.partial({\n    /**\n     * DSR workflow display title (internalName when set, else external title).\n     * Workflows V2 mode — mutually exclusive with action-type / data-silo-titles.\n     */\n    'workflow-title': t.string,\n    /** The action type (e.g. ERASURE, ACCESS). Legacy mode; required when creating without workflow-title. */\n    'action-type': valuesOf(RequestAction),\n    /** The data subject type slug (e.g. customer) */\n    'data-subject-type': t.string,\n    /** Whether the config runs silently */\n    'is-silent': t.boolean,\n    /** Whether unauthenticated requests are allowed */\n    'allow-unauthenticated': t.boolean,\n    /** Whether the config is active */\n    'is-active': t.boolean,\n    /** Titles of data silos associated with this config (legacy mode only) */\n    'data-silo-titles': t.array(t.string),\n  }),\n]);\n\n/** Type override */\nexport type PreferenceWorkflowConfigInput = t.TypeOf<typeof PreferenceWorkflowConfigInput>;\n\n/**\n * Input to define a workflow config. Push matches using a cascading key\n * (internal-name → title → action-type → data-subject-type → region-list) and\n * creates the workflow when no match exists (DSR only).\n */\nexport const WorkflowConfigInput = t.intersection([\n  t.type({\n    /** User-facing title */\n    title: t.string,\n    /** Request action type */\n    'action-type': valuesOf(RequestAction),\n  }),\n  t.partial({\n    /**\n     * Internal name of the workflow config. When provided, used as the first\n     * match key on push.\n     */\n    'internal-name': t.string,\n    /** Subtitle */\n    subtitle: t.string,\n    /** Description */\n    description: t.string,\n    /** Data subject type */\n    'data-subject-type': t.string,\n    /** Visibility tier */\n    visibility: valuesOf(WorkflowConfigVisibility),\n    /** Workflow config type (read-only on pull; included for reference) */\n    type: valuesOf(WorkflowConfigType),\n    /** Whether to collect the data subject's region during intake */\n    'collect-data-subject-regions': valuesOf(CollectDataSubjectRegions),\n    /** Region allow list */\n    'region-list': t.array(valuesOf({ ...IsoCountryCode, ...IsoCountrySubdivisionCode })),\n    /** Per-region request expiry times */\n    'expiry-time': t.array(\n      t.type({\n        /** Region code (or 'default') */\n        region: valuesOf({ default: 'default', ...IsoCountryCode, ...IsoCountrySubdivisionCode }),\n        /** Expiry time in days */\n        value: t.number,\n      }),\n    ),\n    /** Attribute key (custom field) names to associate with the workflow */\n    'attribute-keys': t.array(t.string),\n  }),\n]);\n\n/** Type override */\nexport type WorkflowConfigInput = t.TypeOf<typeof WorkflowConfigInput>;\n\n/**\n * Input to define a silo discovery results\n *\n * @see https://docs.transcend.io/docs/silo-discovery\n */\nexport const SiloDiscoveryResultInput = t.intersection([\n  t.type({\n    /** The unique identifier for the resource */\n    resourceId: t.string,\n    /** The plugin that found this results */\n    plugin: t.string, // Assuming Plugin is a string, replace with appropriate type if necessary\n    /** The suggested catalog for this results */\n    suggestedCatalog: t.string,\n    /** The likelihood that data is sensitive for this results */\n    containsSensitiveData: t.string,\n    /** The status of silo discovery triage */\n    status: t.string,\n  }),\n  t.partial({\n    /** The ISO country code for the AWS Region if applicable */\n    country: valuesOf(IsoCountryCode),\n    /** The ISO country subdivision code for the AWS Region if applicable */\n    countrySubDivision: valuesOf(IsoCountrySubdivisionCode),\n    /** The plaintext that we will pass into results */\n    plaintextContext: t.string,\n    /** The custom title of the data silo results */\n    title: t.union([t.string, t.null]),\n  }),\n]);\n\n/** Type override */\nexport type SiloDiscoveryResultInput = t.TypeOf<typeof SiloDiscoveryResultInput>;\n\nexport const TranscendInput = t.partial({\n  /**\n   * Action items\n   */\n  'action-items': t.array(ActionItemInput),\n  /**\n   * Action item collections\n   */\n  'action-item-collections': t.array(ActionItemCollectionInput),\n  /**\n   * API key definitions\n   */\n  'api-keys': t.array(ApiKeyInput),\n  /** Team definitions */\n  teams: t.array(TeamInput),\n  /**\n   * Email template definitions\n   */\n  templates: t.array(TemplateInput),\n  /**\n   * Enricher definitions\n   */\n  enrichers: t.array(EnricherInput),\n  /**\n   * Attribute definitions\n   */\n  attributes: t.array(AttributeInput),\n  /**\n   * Business entity definitions\n   */\n  'business-entities': t.array(BusinessEntityInput),\n  /**\n   * Vendor definitions\n   */\n  vendors: t.array(VendorInput),\n  /**\n   * Data categories definitions\n   */\n  'data-categories': t.array(DataCategoryInput),\n  /**\n   * Vendor definitions\n   */\n  'processing-purposes': t.array(ProcessingPurposeInput),\n  /**\n   * Data subject definitions\n   */\n  'data-subjects': t.array(DataSubjectInput),\n  /**\n   * Action definitions\n   */\n  actions: t.array(ActionInput),\n  /**\n   * Identifier definitions\n   */\n  identifiers: t.array(IdentifierInput),\n  /**\n   * Data silo definitions\n   */\n  'data-silos': t.array(DataSiloInput),\n  /**\n   * Data flow definitions\n   */\n  'data-flows': t.array(DataFlowInput),\n  /**\n   * Cookie definitions\n   */\n  cookies: t.array(CookieInput),\n  /**\n   * Consent manager definition\n   */\n  'consent-manager': ConsentManagerInput,\n  /**\n   * The privacy center configuration\n   */\n  'privacy-center': PrivacyCenterInput,\n  /**\n   * The policies configuration\n   */\n  policies: t.array(PolicyInput),\n  /**\n   * The internationalized messages configuration\n   */\n  messages: t.array(IntlMessageInput),\n  /** The full list of consent manager partitions (e.g. dev vs staging vs prod) */\n  partitions: t.array(PartitionInput),\n  /**\n   * The full list of assessment templates\n   */\n  'assessment-templates': t.array(AssessmentTemplateInput),\n  /**\n   * The full list of assessment results\n   */\n  assessments: t.array(AssessmentInput),\n  /**\n   * Processing activity definitions\n   */\n  'processing-activities': t.array(ProcessingActivityInput),\n  /**\n   * Consent and preference management purposes\n   */\n  purposes: t.array(ConsentPurpose),\n  /**\n   * The full list of silo discovery results\n   */\n  'system-discovery': t.array(SiloDiscoveryResultInput),\n  /**\n   * Preference workflow config definitions (Workflows → Preference Workflows)\n   */\n  'preference-workflow-configs': t.array(PreferenceWorkflowConfigInput),\n  /**\n   * DSR workflow config settings (create or update via cascading match key)\n   */\n  'workflow-configs': t.array(WorkflowConfigInput),\n  /**\n   * Preference management options for multi and single selects\n   */\n  'preference-options': t.array(ConsentPreferenceTopicOptionValue),\n});\n\n/** Type override */\nexport type TranscendInput = t.TypeOf<typeof TranscendInput>;\n\n/**\n * The output of `tr-generate-api-keys` that can be provided to `tr-push`\n */\nexport const StoredApiKey = t.type({\n  /** Name of instance */\n  organizationName: t.string,\n  /** API key */\n  apiKey: t.string,\n  /** Organization ID API key is for */\n  organizationId: t.string,\n});\n\n/** Type override */\nexport type StoredApiKey = t.TypeOf<typeof StoredApiKey>;\n\n/**\n * Minimal set required to mark as completed\n */\nexport const DataFlowCsvInput = t.intersection([\n  t.type({\n    /** The value of the data flow (host or regex) */\n    'Connections Made To': t.string,\n    /** The type of the data flow */\n    Type: valuesOf(DataFlowScope),\n    /** The CSV of purposes mapped to that data flow */\n    Purpose: t.string,\n  }),\n  t.partial({\n    /** The service that the data flow relates to */\n    Service: t.string,\n    /** Notes and descriptions for the data flow */\n    Notes: t.string,\n    /** Set of data flow owners */\n    Owners: t.string,\n    /** Set of data flow team owners */\n    Teams: t.string,\n    /** LIVE vs NEEDS_REVIEW aka Approved vs Triage  */\n    Status: valuesOf(ConsentTrackerStatus),\n  }),\n  // Custom attributes\n  t.record(t.string, t.string),\n]);\n\n/** Type override */\nexport type DataFlowCsvInput = t.TypeOf<typeof DataFlowCsvInput>;\n\nexport const CookieCsvInput = t.intersection([\n  t.type({\n    /** The value of the cookie */\n    Name: t.string,\n    /** The CSV of purposes mapped to that cookie */\n    Purpose: t.string,\n  }),\n  t.partial({\n    /** The service that the cookie relates to */\n    Service: t.string,\n    /** Notes and descriptions for the cookie */\n    Notes: t.string,\n    /** Set of cookie owners */\n    Owners: t.string,\n    /** Set of cookie team owners */\n    Teams: t.string,\n    /** LIVE vs NEEDS_REVIEW aka Approved vs Triage  */\n    Status: valuesOf(ConsentTrackerStatus),\n  }),\n  // Custom attributes\n  t.record(t.string, t.string),\n]);\n\n/** Type override */\nexport type CookieCsvInput = t.TypeOf<typeof CookieCsvInput>;\n\n/**\n * Export of (await airgap.getMetadata()).services\n */\nexport const ConsentManagerServiceMetadata = t.type({\n  /** The title of the service */\n  title: t.string,\n  /** The description */\n  description: t.string,\n  /** Cookies */\n  cookies: t.array(\n    t.type({\n      /** Name of cookie */\n      name: t.string,\n      /** Allowed purposes */\n      trackingPurposes: t.array(t.string),\n    }),\n  ),\n  /** Data Flows */\n  dataFlows: t.array(\n    t.type({\n      /** Value of data flow */\n      value: t.string,\n      /** Type of data flow */\n      type: valuesOf(DataFlowScope),\n      /** Allowed purposes */\n      trackingPurposes: t.array(t.string),\n    }),\n  ),\n});\n\n/** Type override */\nexport type ConsentManagerServiceMetadata = t.TypeOf<typeof ConsentManagerServiceMetadata>;\n\n/** The columns of a row of a OneTrust Assessment form to import into Transcend. */\nconst OneTrustAssessmentColumnInput = t.intersection([\n  t.type({\n    /** The title of the column */\n    title: t.string,\n  }),\n  t.partial({\n    /** The optional value of the column */\n    value: t.string,\n  }),\n]);\n\n/** A row with information of the OneTrust assessment form to import into Transcend */\nconst OneTrustAssessmentRowInput = t.type({\n  /** A list of columns within this row. */\n  columns: t.array(OneTrustAssessmentColumnInput),\n});\n\n/** Input for importing multiple OneTrust assessment forms into Transcend */\nexport const ImportOnetrustAssessmentsInput = t.partial({\n  /** 'The rows of the CSV file.' */\n  rows: t.array(OneTrustAssessmentRowInput),\n  /** 'The json record representing the assessment.' */\n  json: t.string,\n});\n/** Type override */\nexport type ImportOnetrustAssessmentsInput = t.TypeOf<typeof ImportOnetrustAssessmentsInput>;\n"],"mappings":"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"}