diff --git a/src/utils/calculate.ts b/src/utils/calculate.ts
new file mode 100644
index 0000000..174c401
--- /dev/null
+++ b/src/utils/calculate.ts
@@ -0,0 +1,66 @@
+const logs = [
+    "channelUpdate",
+    "channelPinsUpdate",
+    "emojiUpdate",
+    "stickerUpdate",
+    "guildUpdate",
+    "guildMemberUpdate",
+    "guildMemberPunish",
+    "guildEventUpdate",
+    "guildEventMemberUpdate",
+    "guildRoleUpdate",
+    "guildInviteUpdate",
+    "messageUpdate",
+    "messageDelete",
+    "messageDeleteBulk",
+    "messageReactionUpdate",
+    "messagePing",
+    "messageMassPing",
+    "messageAnnounce",
+    "stageUpdate",
+    "threadUpdate",
+    "voiceStateUpdate",
+    "webhookUpdate"
+]
+
+const tickets = [
+    "support",
+    "report",
+    "question",
+    "issue",
+    "suggestion",
+    "other"
+]
+
+const toHexInteger = (permissions, array?) => {
+    if (!array) {
+        array = logs;
+    }
+    let int = 0n;
+
+    for(let perm of permissions) {
+        int += BigInt(2 ** array.indexOf(perm));
+    }
+    return int.toString(16)
+}
+
+const toHexArray = (permissionsHex, array?) => {
+    if (!array) {
+        array = logs;
+    }
+    let permissions = [];
+    let int = (BigInt("0x" + permissionsHex)).toString(2).split('').reverse();
+    for (let index in int) {
+        if (int[index] == "1") {
+            permissions.push(array[index]);
+        }
+    }
+    return permissions;
+}
+
+export {
+	toHexInteger,
+	toHexArray,
+    tickets,
+    logs
+}
\ No newline at end of file
