From ebdbf26141ba679aced30738d9858552e5f307ca Mon Sep 17 00:00:00 2001 From: andrevenancio Date: Mon, 25 Jul 2022 02:11:15 +0100 Subject: [PATCH 1/2] fix(export): refactor code to allow for options --- README.md | 31 +++++++ package.json | 2 +- src/actions/export-collectors.ts | 97 --------------------- src/actions/export-token-collectors.ts | 86 +++++++++++-------- src/actions/export-wallet-collectors.ts | 107 ++++++++++++++++++++++++ src/commands/export.ts | 24 +++--- src/constants.ts | 30 +++++-- src/custom-types/collectors.ts | 8 ++ src/index.ts | 8 +- src/utils/csv.ts | 7 +- src/utils/logger.ts | 19 ++--- tsconfig.json | 2 +- yarn.lock | 8 +- 13 files changed, 256 insertions(+), 173 deletions(-) delete mode 100644 src/actions/export-collectors.ts create mode 100644 src/actions/export-wallet-collectors.ts create mode 100644 src/custom-types/collectors.ts diff --git a/README.md b/README.md index 8233dcd..3e2f428 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,12 @@ The command-line interface for versum. +- [versum-cli](#versum-cli) + - [Usage](#usage) + - [Contributing](#contributing) + - [How to use](#how-to-use) + - [Export](#export) + ## Usage To install the latest version of Versum CLI, run this command: @@ -23,3 +29,28 @@ versum - [Code of Conduct](https://github.com/versumstudios/cli/blob/main/CODE_OF_CONDUCT.md) - [Contributing Guidelines](https://github.com/versumstudios/cli/blob/main/CONTRIBUTING.md) - [Apache-2.0 License](https://github.com/versumstudios/cli/blob/main/LICENSE) + +## How to use + +```bash +versum -h +``` + +### Export + +The versum CLI allows you to export several chunks of data into `.csv` files. + +### Export `token-collectors` + +```bash +versum export token-collectors +versum export token-collectors --contract KT1LjmAdYQCLBjwv4S2oFkEzyHVkomAf5MrW --token 0 +``` + +### Export `wallet-collectors` + +```bash +versum export wallet-collectors +versum export wallet-collectors --wallet tz1eht4WAjkqU7kaupJd8qCDmec9HuKfGf68 +versum export wallet-collectors --wallet tz1eht4WAjkqU7kaupJd8qCDmec9HuKfGf68 --platform versum +``` diff --git a/package.json b/package.json index 254e091..a374d4d 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "inquirer": "8.0.0", "node-fetch": "2.6.2", "objects-to-csv": "^1.3.6", - "ora-classic": "^5.4.2", + "ora": "5.4.1", "update-notifier": "5.1.0" } } diff --git a/src/actions/export-collectors.ts b/src/actions/export-collectors.ts deleted file mode 100644 index b848aa9..0000000 --- a/src/actions/export-collectors.ts +++ /dev/null @@ -1,97 +0,0 @@ -import inquirer from 'inquirer'; -import fetch from 'node-fetch'; -import ora from 'ora-classic'; - -import { TEZTOK_API, PLATFORMS, MESSAGES, getTezTokPlatform } from '@constants'; -import { validateAddress } from '@taquito/utils'; -import { SaveToFile } from '@utils/csv'; -import { error } from '@utils/logger'; - -type CollectorsType = { - holder_address: string; - amount: number; - token?: { platform: string; tokenId: string }; -}[]; - -const mapCollectors = (collectors: CollectorsType) => { - return collectors.map(({ holder_address, amount, token }) => ({ - address: holder_address, - amount, - platform: token ? `${token.platform}` : '', - })); -}; - -export const action = (hasPlatform: boolean) => { - const questions = [ - { - type: 'list', - name: 'format', - message: 'Select data format', - choices: ['unique', 'full'], - default() { - return 'unique'; - }, - }, - { - type: 'list', - name: 'platform', - message: MESSAGES.SELECT_PLATFORM, - choices: [PLATFORMS.VERSUM, PLATFORMS.HICETNUNC, PLATFORMS.FXHASH,], - when: hasPlatform, - default() { - return 'unique'; - }, - }, - { - type: 'input', - name: 'address', - message: 'Enter address', - validate: async (input: string) => { - if ((await validateAddress(input)) === 3) { - return true; - } - error('\nInvalid address'); - return false; - }, - default() { - return 'tz1...'; - }, - }, - ]; - - const query = ` - query GetUserCollectors($address: String!) { - holdings(where: {token: {artist_address: {_eq: $address}}, amount: {_gt: "0"}, holder_address: {_nregex: "^KT*", _neq: "tz1burnburnburnburnburnburnburjAYjjX"}}) { - amount - holder_address - token { - platform - fa2_address - token_id - } - } - }`; - inquirer.prompt(questions).then(({ format, address, platform }: Record) => { - const spinner = ora(MESSAGES.FETCHING_DATA).start(); - fetch(TEZTOK_API, { method: 'POST', body: JSON.stringify({ query, variables: { address } }) }) - .then((e) => e.json()) - .then((e) => e.data.holdings) - .then(async (collectors: CollectorsType) => { - const data = hasPlatform - ? mapCollectors(collectors).filter((e) => e.platform === getTezTokPlatform(platform as PLATFORMS)) - : mapCollectors(collectors); - spinner.succeed(); - if (format === 'unique') { - // Use set to remove duplicates and convert to object[] - const uniqueData = new Set(data.map((e) => e.address)); - const csvData = [...uniqueData].map((e) => ({ address: e })); - await SaveToFile(`collectors-${format}-${address}.csv`, csvData); - return; - } - await SaveToFile(`collectors-${format}-${address}.csv`, data); - }) - .catch(() => { - spinner.fail(MESSAGES.ERROR_COLLECTOR_EXPORT); - }); - }); -}; diff --git a/src/actions/export-token-collectors.ts b/src/actions/export-token-collectors.ts index 2a976c6..c2df32f 100644 --- a/src/actions/export-token-collectors.ts +++ b/src/actions/export-token-collectors.ts @@ -1,24 +1,56 @@ -import inquirer, { Answers } from 'inquirer'; +import inquirer, { Answers, Separator } from 'inquirer'; import fetch from 'node-fetch'; -import ora from 'ora-classic'; +import ora from 'ora'; -import { CONTRACT_VERSUM, getContractFromPlatform, PLATFORMS, TEZTOK_API, MESSAGES } from '@constants'; +import { CONTRACT_VERSUM, ERRORS, getContractFromPlatform, MESSAGES, PLATFORMS, TEZTOK_API } from '@constants'; +import { CollectorsType } from '@custom-types/collectors'; import { validateContractAddress } from '@taquito/utils'; import { SaveToFile } from '@utils/csv'; -import { error } from '@utils/logger'; +import { error, info } from '@utils/logger'; -type CollectorsType = { - holder_address: string; - amount: number; -}[]; +const handleAction = (address: string, token: string) => { + const query = ` + query GetTokenCollectors($address: String!, $token: String!) { + tokens_by_pk(fa2_address: $address, token_id: $token) { + holdings(where: { amount: { _gt: "0" } }) { + holder_address + amount + } + } + }`; + + return fetch(TEZTOK_API, { method: 'POST', body: JSON.stringify({ query, variables: { address, token } }) }) + .then((e) => e.json()) + .then((e) => e.data.tokens_by_pk.holdings) + .then(async (collectors: CollectorsType) => { + // parse data + const data = collectors.map(({ holder_address, amount }) => ({ + address: holder_address, + amount, + })); + const filename = await SaveToFile(`token-collectors-${address}-${token}.csv`, data); + return `File saved ${filename}`; + }); +}; + +export const action = (options: Record) => { + // if options are present, bypass the user promp + if (options.contract && options.token) { + handleAction(options.contract, options.token) + .then((message) => info(message)) + .catch(() => { + error(ERRORS.ERROR_EXPORT_COLLECTOR); + }); + return; + } -export const action = () => { + // otherwise show user promp const questions = [ { type: 'list', name: 'platform', message: MESSAGES.SELECT_PLATFORM, - choices: [PLATFORMS.VERSUM, PLATFORMS.HICETNUNC, PLATFORMS.FXHASH, PLATFORMS.OTHER], + choices: [PLATFORMS.VERSUM, PLATFORMS.HICETNUNC, PLATFORMS.FXHASH, new Separator(), PLATFORMS.OTHER], default() { return PLATFORMS.VERSUM; }, @@ -26,14 +58,13 @@ export const action = () => { { type: 'input', name: 'contract', - message: 'Enter contract address', + message: MESSAGES.ENTER_CONTRACT_ADDRESS, when: (answers: Answers) => answers.platform === PLATFORMS.OTHER, validate: async (input: string) => { if ((await validateContractAddress(input)) === 3) { return true; } - error('\nInvalid contract address'); - return false; + return ERRORS.ERROR_INVALID_ADDRESS; }, default() { return CONTRACT_VERSUM; @@ -42,41 +73,26 @@ export const action = () => { { type: 'input', name: 'token', - message: 'Enter token id', + message: MESSAGES.ENTER_TOKEN_ID, default() { return '0'; }, }, ]; - const query = ` - query GetTokenCollectors($address: String!, $token: String!) { - tokens_by_pk(fa2_address: $address, token_id: $token) { - holdings(where: { amount: { _gt: "0" } }) { - holder_address - amount - } - } - }`; inquirer.prompt(questions).then(({ platform, contract, token }: Record) => { - // select contract address from platform + // select contract address from platform alias const address: string = getContractFromPlatform(platform as PLATFORMS, token as string) || contract; const spinner = ora(MESSAGES.FETCHING_DATA).start(); - fetch(TEZTOK_API, { method: 'POST', body: JSON.stringify({ query, variables: { address, token } }) }) - .then((e) => e.json()) - .then((e) => e.data.tokens_by_pk.holdings) - .then(async (collectors: CollectorsType) => { - // parse data - const data = collectors.map(({ holder_address, amount }) => ({ - address: holder_address, - amount, - })); + handleAction(address, token) + .then((message: string) => { spinner.succeed(); - await SaveToFile(`collectors-${platform}-${address}-${token}.csv`, data); + info(message); }) .catch(() => { - spinner.fail(MESSAGES.ERROR_COLLECTOR_EXPORT); + spinner.fail(); + error(ERRORS.ERROR_EXPORT_COLLECTOR); }); }); }; diff --git a/src/actions/export-wallet-collectors.ts b/src/actions/export-wallet-collectors.ts new file mode 100644 index 0000000..0dbb9dd --- /dev/null +++ b/src/actions/export-wallet-collectors.ts @@ -0,0 +1,107 @@ +import inquirer, { Separator } from 'inquirer'; +import fetch from 'node-fetch'; +import ora from 'ora'; + +import { ERRORS, getKeyFromPlatform, MESSAGES, PLATFORMS, TEZTOK_API } from '@constants'; +import { CollectorsType } from '@custom-types/collectors'; +import { validateAddress } from '@taquito/utils'; +import { SaveToFile } from '@utils/csv'; +import { error, info } from '@utils/logger'; + +const handleAction = (address: string, platform?: PLATFORMS) => { + const query = ` + query GetUserCollectors($address: String!) { + holdings(where: {token: {artist_address: {_eq: $address}}, amount: {_gt: "0"}, holder_address: {_nregex: "^KT*", _neq: "tz1burnburnburnburnburnburnburjAYjjX"}}) { + amount + holder_address + token { + platform + fa2_address + token_id + } + } + }`; + + return fetch(TEZTOK_API, { method: 'POST', body: JSON.stringify({ query, variables: { address } }) }) + .then((e) => e.json()) + .then((e) => e.data.holdings) + .then(async (collectors: CollectorsType) => { + // parse data + const data = collectors + .map(({ holder_address, amount, token }) => ({ + address: holder_address, + amount, + platform: token ? token.platform : '', + token: token ? token.token_id : '', + })) + .filter((e) => { + if (platform === PLATFORMS.ALL) { + return true; + } + return e.platform === getKeyFromPlatform(platform as PLATFORMS); + }); + const filename = await SaveToFile(`wallet-collectors-${address}-${platform}.csv`, data); + return `File saved ${filename}`; + }); +}; + +export const action = (options: Record) => { + // if options are present, bypass the user promp + if (options.wallet) { + handleAction(options.wallet, (options.platform as PLATFORMS) || PLATFORMS.ALL) + .then((message) => info(message)) + .catch(() => { + error(ERRORS.ERROR_EXPORT_COLLECTOR); + }); + return; + } + + const questions = [ + { + type: 'input', + name: 'address', + message: MESSAGES.ENTER_USER_ADDRESS, + validate: async (input: string) => { + if ((await validateAddress(input)) === 3) { + return true; + } + + return ERRORS.ERROR_INVALID_ADDRESS; + }, + // TODO: https://github.com/versumstudios/cli/issues/20 + // default() { + // return 'tz1gi68wGST7UtzkNpnnc354mpqCcVNQVcSw'; + // }, + }, + { + type: 'list', + name: 'platform', + message: MESSAGES.SELECT_PLATFORM, + choices: [ + PLATFORMS.VERSUM, + PLATFORMS.HICETNUNC, + PLATFORMS.FXHASH, + PLATFORMS.OBJKTCOM, + new Separator(), + PLATFORMS.ALL, + ], + default() { + return PLATFORMS.ALL; + }, + }, + ]; + + inquirer.prompt(questions).then(({ address, platform }: Record) => { + const spinner = ora(MESSAGES.FETCHING_DATA).start(); + + handleAction(address, platform as PLATFORMS) + .then((message: string) => { + spinner.succeed(); + info(message); + }) + .catch(() => { + spinner.fail(); + error(ERRORS.ERROR_EXPORT_COLLECTOR); + }); + }); +}; diff --git a/src/commands/export.ts b/src/commands/export.ts index c782097..b64ee1a 100644 --- a/src/commands/export.ts +++ b/src/commands/export.ts @@ -1,16 +1,20 @@ import { Command } from 'commander'; -import { action as exportCollectorsAction } from '@actions/export-collectors'; import { action as exportTokenCollectorsAction } from '@actions/export-token-collectors'; +import { action as exportCollectorsAction } from '@actions/export-wallet-collectors'; export const command = new Command('export').description('export token data to csv'); -// usage: versum export token-collectors -command.command('token-collectors').description('exports token collectors').action(exportTokenCollectorsAction); -//usage: versum export collectors + +command + .command('token-collectors') + .description('exports token collectors') + .option('-c, --contract ', 'contract address') + .option('-t, --token ', 'token id') + .action(exportTokenCollectorsAction); + command - .command('collectors') - .description('exports collectors') - .option('-p, --platform', 'select platform to export from') - .action((option) => { - exportCollectorsAction(option.platform); - }); + .command('wallet-collectors') + .description('exports wallet collectors') + .option('-w, --wallet ', 'user wallet address') + .option('-p, --platform ', 'platform') + .action(exportCollectorsAction); diff --git a/src/constants.ts b/src/constants.ts index 1b412a4..a503563 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -26,10 +26,13 @@ ${chalk.bgBlack(chalk.green(VERSION))}`; export const TEZTOK_API = 'https://api.teztok.com/v1/graphql'; export enum PLATFORMS { + ALL = 'all platforms', VERSUM = 'versum', HICETNUNC = 'hicetnunc', FXHASH = 'fxhash', - OBJKT = 'objkt', + OBJKTCOM = 'objktcom', + EIGHTBIDOU = '8bidou', + TYPED = 'typed', OTHER = 'other', } @@ -37,6 +40,8 @@ export const CONTRACT_HICETNUNC = 'KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton'; export const CONTRACT_VERSUM = 'KT1LjmAdYQCLBjwv4S2oFkEzyHVkomAf5MrW'; export const CONTRACT_FXHASH = 'KT1KEa8z6vWXDJrVqtMrAeDVzsvxat3kHaCE'; export const CONTRACT_FXHASH2 = 'KT1U6EHmNxJTkvaWJ4ThczG4FSDaHC21ssvi'; +export const CONTRACT_8BIDOU = 'KT1'; // TODO: get this contract from @xat +export const CONTRACT_TYPED = 'KT1J6NY5AU61GzUX51n59wwiZcGJ9DrNTwbK'; export const getContractFromPlatform = (platform: PLATFORMS, token_id: string) => { switch (platform) { @@ -44,6 +49,10 @@ export const getContractFromPlatform = (platform: PLATFORMS, token_id: string) = return CONTRACT_VERSUM; case PLATFORMS.HICETNUNC: return CONTRACT_HICETNUNC; + case PLATFORMS.EIGHTBIDOU: + return CONTRACT_8BIDOU; + case PLATFORMS.TYPED: + return CONTRACT_TYPED; case PLATFORMS.FXHASH: return parseInt(token_id) > 589145 ? CONTRACT_FXHASH2 : CONTRACT_FXHASH; default: @@ -51,7 +60,7 @@ export const getContractFromPlatform = (platform: PLATFORMS, token_id: string) = } }; -export const getTezTokPlatform = (platform: PLATFORMS) => { +export const getKeyFromPlatform = (platform: PLATFORMS) => { switch (platform) { case PLATFORMS.VERSUM: return 'VERSUM'; @@ -59,15 +68,26 @@ export const getTezTokPlatform = (platform: PLATFORMS) => { return 'HEN'; case PLATFORMS.FXHASH: return 'FXHASH'; - case PLATFORMS.OBJKT: + case PLATFORMS.OBJKTCOM: return 'OBJKT'; + case PLATFORMS.EIGHTBIDOU: + return '8BIDOU'; + case PLATFORMS.TYPED: + return 'TYPED'; default: return false; } }; export enum MESSAGES { + FETCHING_DATA = 'Fetching data', SELECT_PLATFORM = 'Select platform', - ERROR_COLLECTOR_EXPORT = 'Error exporting collectors', - FETCHING_DATA = 'Fetching data...', + ENTER_USER_ADDRESS = 'Enter wallet address', + ENTER_CONTRACT_ADDRESS = 'Enter contract address', + ENTER_TOKEN_ID = 'Enter Token ID', +} + +export enum ERRORS { + ERROR_INVALID_ADDRESS = 'Invalid address', + ERROR_EXPORT_COLLECTOR = 'Error exporting collectors', } diff --git a/src/custom-types/collectors.ts b/src/custom-types/collectors.ts new file mode 100644 index 0000000..ff67123 --- /dev/null +++ b/src/custom-types/collectors.ts @@ -0,0 +1,8 @@ +export type CollectorsType = { + holder_address: string; + amount: number; + token?: { + platform: string; + token_id: string; + }; +}[]; diff --git a/src/index.ts b/src/index.ts index 794ca40..a5a6910 100644 --- a/src/index.ts +++ b/src/index.ts @@ -40,17 +40,17 @@ const main = async () => { const handleRejection = async (err: Error | unknown) => { if (err) { if (err instanceof Error) { - await handleUnexpected(err); + await handleUnexpected(); } else { - error(`An unexpected rejection occurred\n ${err}`); + error('An unexpected rejection occurred'); } } else { error('An unexpected empty rejection occurred'); } }; -const handleUnexpected = async (err: Error) => { - error(`An unexpected error occurred!\n${err}`); +const handleUnexpected = async () => { + error('An unexpected error occurred'); }; process.on('unhandledRejection', handleRejection); diff --git a/src/utils/csv.ts b/src/utils/csv.ts index f7611bc..9979f23 100644 --- a/src/utils/csv.ts +++ b/src/utils/csv.ts @@ -1,9 +1,8 @@ import ObjectsToCsv from 'objects-to-csv'; -import { log } from './logger'; - export const SaveToFile = async (filename: string, data: object[]) => { + const parsed = filename.replace(/\s/g, '-'); const csv = new ObjectsToCsv(data); - await csv.toDisk(`./${filename}`); - log('file saved:', `./${filename}`); + await csv.toDisk(`./${parsed}`); + return parsed; }; diff --git a/src/utils/logger.ts b/src/utils/logger.ts index 74e7781..b8058c7 100644 --- a/src/utils/logger.ts +++ b/src/utils/logger.ts @@ -1,19 +1,14 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import chalk from 'chalk'; +import ora from 'ora'; -const _error = console.error; -const _log = console.log; -const _info = console.info; - -export const error = function (...args: any) { - _error(chalk.bgBlack(chalk.red.apply(console, args))); +export const error = function (message: string) { + ora(message).fail(); process.exit(1); }; -export const log = function (...args: any) { - _log(chalk.bgBlack(chalk.green.apply(console, args))); +export const log = function (message: string) { + ora(message).succeed(); }; -export const info = function (...args: any) { - _info(chalk.bgBlack(chalk.blue.apply(console, args))); +export const info = function (message: string) { + ora(message).info(); }; diff --git a/tsconfig.json b/tsconfig.json index 8aa853f..058c122 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,12 +13,12 @@ "sourceMap": false, "skipLibCheck": true, "outDir": "./bin", - "typeRoots": ["./node_modules/@types"], "rootDir": ".", "baseUrl": ".", "paths": { "@actions/*": ["src/actions/*"], "@commands/*": ["src/commands/*"], + "@custom-types/*": ["src/custom-types/*"], "@utils/*": ["src/utils/*"], "@constants": ["src/constants"] } diff --git a/yarn.lock b/yarn.lock index a6a8eeb..d976e75 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2695,10 +2695,10 @@ "type-check" "^0.4.0" "word-wrap" "^1.2.3" -"ora-classic@^5.4.2": - "integrity" "sha512-/xX8D5AMHB+LnvEJHOglmq6pXwm65CQ/gqPrIjIN5GJ1Bl9KC9fSmgzR/FwjrtalDj/WVxukAVuH8GP00Zpiaw==" - "resolved" "https://registry.npmjs.org/ora-classic/-/ora-classic-5.4.2.tgz" - "version" "5.4.2" +"ora@5.4.1": + "integrity" "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==" + "resolved" "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + "version" "5.4.1" dependencies: "bl" "^4.1.0" "chalk" "^4.1.0" From 2b00cadde462453bb5306c5ce25fa231b8e004b0 Mon Sep 17 00:00:00 2001 From: andrevenancio Date: Mon, 25 Jul 2022 11:25:24 +0100 Subject: [PATCH 2/2] feat(export): added 8bidou typed --- src/actions/export-wallet-collectors.ts | 2 ++ src/constants.ts | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/actions/export-wallet-collectors.ts b/src/actions/export-wallet-collectors.ts index 0dbb9dd..a34b7fa 100644 --- a/src/actions/export-wallet-collectors.ts +++ b/src/actions/export-wallet-collectors.ts @@ -82,6 +82,8 @@ export const action = (options: Record) => { PLATFORMS.HICETNUNC, PLATFORMS.FXHASH, PLATFORMS.OBJKTCOM, + PLATFORMS.EIGHTBIDOU, + PLATFORMS.TYPED, new Separator(), PLATFORMS.ALL, ], diff --git a/src/constants.ts b/src/constants.ts index a503563..898d2d8 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -40,7 +40,9 @@ export const CONTRACT_HICETNUNC = 'KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton'; export const CONTRACT_VERSUM = 'KT1LjmAdYQCLBjwv4S2oFkEzyHVkomAf5MrW'; export const CONTRACT_FXHASH = 'KT1KEa8z6vWXDJrVqtMrAeDVzsvxat3kHaCE'; export const CONTRACT_FXHASH2 = 'KT1U6EHmNxJTkvaWJ4ThczG4FSDaHC21ssvi'; -export const CONTRACT_8BIDOU = 'KT1'; // TODO: get this contract from @xat +export const CONTRACT_8BIDOU1 = 'KT1MxDwChiDwd6WBVs24g1NjERUoK622ZEFp'; +export const CONTRACT_8BIDOU2 = 'KT1TR1ErEQPTdtaJ7hbvKTJSa1tsGnHGZTpf'; +export const CONTRACT_8BIDOU3 = 'KT1VikAWA8wQHLZgHoAGL7Z9kCjgbCEnvWA3'; export const CONTRACT_TYPED = 'KT1J6NY5AU61GzUX51n59wwiZcGJ9DrNTwbK'; export const getContractFromPlatform = (platform: PLATFORMS, token_id: string) => { @@ -50,7 +52,7 @@ export const getContractFromPlatform = (platform: PLATFORMS, token_id: string) = case PLATFORMS.HICETNUNC: return CONTRACT_HICETNUNC; case PLATFORMS.EIGHTBIDOU: - return CONTRACT_8BIDOU; + return CONTRACT_8BIDOU1; case PLATFORMS.TYPED: return CONTRACT_TYPED; case PLATFORMS.FXHASH: