"use strict";
/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.AssetRelations = void 0;
const assetRelationsCreateAssetRelationsByAssetId_js_1 = require("../funcs/assetRelationsCreateAssetRelationsByAssetId.js");
const assetRelationsCreateAssetRelationsByPublicId_js_1 = require("../funcs/assetRelationsCreateAssetRelationsByPublicId.js");
const assetRelationsDeleteAssetRelationsByAssetId_js_1 = require("../funcs/assetRelationsDeleteAssetRelationsByAssetId.js");
const assetRelationsDeleteAssetRelationsByPublicId_js_1 = require("../funcs/assetRelationsDeleteAssetRelationsByPublicId.js");
const sdks_js_1 = require("../lib/sdks.js");
const fp_js_1 = require("../types/fp.js");
class AssetRelations extends sdks_js_1.ClientSDK {
    /**
     * Add related assets by asset ID
     *
     * @remarks
     * Relates an asset to other assets by their asset IDs, an immutable identifier, regardless of public ID, display name, asset folder, resource type or deliver type. This is a bidirectional process, meaning that the asset will also be added as a related_asset to all the other assets specified. The relation is also a one to many relationship, where the asset is related to all the assets specified, but those assets aren't also related to each other.
     */
    async createAssetRelationsByAssetId(assetId, requestBody, options) {
        return (0, fp_js_1.unwrapAsync)((0, assetRelationsCreateAssetRelationsByAssetId_js_1.assetRelationsCreateAssetRelationsByAssetId)(this, assetId, requestBody, options));
    }
    /**
     * Delete asset relations by asset ID
     *
     * @remarks
     * Unrelates the asset from other assets, specified by their asset IDs, an immutable identifier, regardless of public ID, display name, asset folder, resource type or deliver type. This is a bidirectional process, meaning that the asset will also be removed as a related_asset from all the other assets specified.
     */
    async deleteAssetRelationsByAssetId(assetId, requestBody, options) {
        return (0, fp_js_1.unwrapAsync)((0, assetRelationsDeleteAssetRelationsByAssetId_js_1.assetRelationsDeleteAssetRelationsByAssetId)(this, assetId, requestBody, options));
    }
    /**
     * Create asset relations by public ID
     *
     * @remarks
     * Relates an asset to other assets by public IDs. This allows you to indicate that the asset is logically related to other assets in some way (e.g., similar content, or a peripheral asset like video/transcript, etc). This is a bidirectional process, meaning that the asset is also added as a related_asset to all the other assets specified. The relation is also a one to many relationship, where the asset is related to all the assets specified, but those assets aren't also related to each other.
     */
    async createAssetRelationsByPublicId(resourceType, type, publicId, requestBody, options) {
        return (0, fp_js_1.unwrapAsync)((0, assetRelationsCreateAssetRelationsByPublicId_js_1.assetRelationsCreateAssetRelationsByPublicId)(this, resourceType, type, publicId, requestBody, options));
    }
    /**
     * Delete asset relations by public ID
     *
     * @remarks
     * Unrelates the asset from other assets, specified by public IDs. This is a bidirectional process, meaning that the asset will also be removed as a related_asset from all the other assets specified.
     */
    async deleteAssetRelationsByPublicId(resourceType, type, publicId, requestBody, options) {
        return (0, fp_js_1.unwrapAsync)((0, assetRelationsDeleteAssetRelationsByPublicId_js_1.assetRelationsDeleteAssetRelationsByPublicId)(this, resourceType, type, publicId, requestBody, options));
    }
}
exports.AssetRelations = AssetRelations;
//# sourceMappingURL=assetrelations.js.map