var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
  function adopt(value) {
    return value instanceof P ? value : new P(function (resolve) {
      resolve(value);
    });
  }

  return new (P || (P = Promise))(function (resolve, reject) {
    function fulfilled(value) {
      try {
        step(generator.next(value));
      } catch (e) {
        reject(e);
      }
    }

    function rejected(value) {
      try {
        step(generator["throw"](value));
      } catch (e) {
        reject(e);
      }
    }

    function step(result) {
      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
    }

    step((generator = generator.apply(thisArg, _arguments || [])).next());
  });
};

import { http } from "../utils/http.js";
const endpoint = 'tags';
/**
 * Create new tag on the Bee node
 *
 * @param url Bee tag URL
 */

export function createTag(ky) {
  return __awaiter(this, void 0, void 0, function* () {
    const response = yield http(ky, {
      method: 'post',
      path: endpoint,
      responseType: 'json'
    });
    return response.data;
  });
}
/**
 * Retrieve tag information from Bee node
 *
 * @param url Bee tag URL
 * @param uid UID of tag to be retrieved
 */

export function retrieveTag(ky, uid) {
  return __awaiter(this, void 0, void 0, function* () {
    const response = yield http(ky, {
      path: `${endpoint}/${uid}`,
      responseType: 'json'
    });
    return response.data;
  });
}
/**
 * Get limited listing of all tags.
 *
 * @param url
 * @param offset
 * @param limit
 */

export function getAllTags(ky, offset, limit) {
  return __awaiter(this, void 0, void 0, function* () {
    const response = yield http(ky, {
      path: `${endpoint}`,
      searchParams: {
        offset,
        limit
      },
      responseType: 'json'
    });
    return response.data.tags;
  });
}
/**
 * Removes tag from the Bee node.
 * @param url
 * @param uid
 */

export function deleteTag(ky, uid) {
  return __awaiter(this, void 0, void 0, function* () {
    yield http(ky, {
      method: 'delete',
      path: `${endpoint}/${uid}`
    });
  });
}
/**
 * Updates tag
 * @param url
 * @param uid
 * @param reference
 */

export function updateTag(ky, uid, reference) {
  return __awaiter(this, void 0, void 0, function* () {
    yield http(ky, {
      method: 'patch',
      path: `${endpoint}/${uid}`,
      json: {
        reference
      }
    });
  });
}