Skip to main content

Overview

TUNA provides pre-configured constants for contract addresses, network settings, and application parameters. These values can be overridden using environment variables.

CONTRACT_CONFIG

Sui smart contract configuration.
const CONTRACT_CONFIG = {
  PACKAGE_ID: string;
  REGISTRY_ID: string;
  ADMIN_CAP_ID: string;
  MODULE_NAME: 'news_registry';
} as const;
PACKAGE_ID
string
The Sui package ID containing the TUNA smart contractsDefault: 0xadf0a6ce11dd75d3d44930ab5bf55781801dea2bfead056eb0bb59c1aa1e9e66Environment Variable: VITE_PACKAGE_ID
REGISTRY_ID
string
The shared object ID for the news registryDefault: 0x68c01d2c08923d5257a5a9959d7c9250c4053dbe4641e229ccff2f35e6a3bb6dEnvironment Variable: VITE_REGISTRY_ID
ADMIN_CAP_ID
string
The admin capability object IDDefault: 0x18d48d74bfddffbe3dc75025136722380f374baec942df2e0aef76cad1061496Environment Variable: VITE_ADMIN_CAP_ID
MODULE_NAME
'news_registry'
The Move module name (constant)

Usage

import { CONTRACT_CONFIG } from '@/config';

const target = `${CONTRACT_CONFIG.PACKAGE_ID}::${CONTRACT_CONFIG.MODULE_NAME}::tip_article`;

NETWORK_CONFIG

Sui network configuration.
const NETWORK_CONFIG = {
  NETWORK: 'testnet' | 'mainnet' | 'devnet';
  RPC_URL: string;
} as const;
NETWORK
'testnet' | 'mainnet' | 'devnet'
The Sui network to connect toDefault: testnetEnvironment Variable: VITE_SUI_NETWORK
RPC_URL
string
The RPC endpoint URLDefault: https://fullnode.testnet.sui.io:443Environment Variable: VITE_SUI_RPC_URL

Usage

import { NETWORK_CONFIG } from '@/config';
import { getFullnodeUrl, SuiClient } from '@mysten/sui/client';

const client = new SuiClient({ url: NETWORK_CONFIG.RPC_URL });

WALRUS_CONFIG

Walrus storage configuration.
const WALRUS_CONFIG = {
  PUBLISHER_URL: string;
  AGGREGATOR_URL: string;
} as const;
PUBLISHER_URL
string
Walrus publisher endpoint for uploading contentDefault: https://publisher.walrus-testnet.walrus.space/v1/storeEnvironment Variable: VITE_WALRUS_PUBLISHER_URL
AGGREGATOR_URL
string
Walrus aggregator endpoint for fetching contentDefault: https://aggregator.walrus-testnet.walrus.space/v1Environment Variable: VITE_WALRUS_AGGREGATOR_URL
The Walrus library functions use multiple fallback endpoints automatically. These config values are provided for reference but may not be directly used by the library.

CATEGORIES

Available article categories.
const CATEGORIES = [
  'DeFi',
  'Gaming',
  'NFT',
  'Dev',
  'Governance',
  'General',
] as const;

type Category = typeof CATEGORIES[number];

Categories

  • DeFi - Decentralized Finance
  • Gaming - Blockchain Gaming
  • NFT - Non-Fungible Tokens
  • Dev - Development & Technical
  • Governance - Protocol Governance
  • General - General News

Usage

import { CATEGORIES, type Category } from '@/config';

function isValidCategory(category: string): category is Category {
  return CATEGORIES.includes(category as Category);
}

COMMENT_TYPES

Comment type constants.
const COMMENT_TYPES = {
  TEXT: 'text',
  TEXT_LONG: 'text_long',
  MEDIA: 'media',
} as const;

type CommentType = typeof COMMENT_TYPES[keyof typeof COMMENT_TYPES];
TEXT
'text'
Short text comment (≤280 characters)
TEXT_LONG
'text_long'
Long text comment stored in Walrus
MEDIA
'media'
Comment with media attachments (images/videos)

CONSTANTS

Application constants.
const CONSTANTS = {
  SHORT_COMMENT_THRESHOLD: 280;
  MIN_TIP_AMOUNT: 1_000_000;
  MAX_PREVIEW_LENGTH: 280;
} as const;
SHORT_COMMENT_THRESHOLD
280
Maximum character length for short text commentsComments longer than this must be stored in Walrus as text_long type
MIN_TIP_AMOUNT
1_000_000
Minimum tip amount in MISTEquals 0.001 SUI (1 SUI = 1,000,000,000 MIST)
MAX_PREVIEW_LENGTH
280
Maximum length for comment preview text

Usage Example

import { CONSTANTS } from '@/config';

function validateComment(text: string) {
  if (text.length <= CONSTANTS.SHORT_COMMENT_THRESHOLD) {
    return { type: 'text', needsWalrus: false };
  }
  return { type: 'text_long', needsWalrus: true };
}

function validateTip(amount: number) {
  return amount >= CONSTANTS.MIN_TIP_AMOUNT;
}

Environment Variables

All configuration values can be overridden using environment variables in your .env file:
# Contract Configuration
VITE_PACKAGE_ID=0xadf0a6ce11dd75d3d44930ab5bf55781801dea2bfead056eb0bb59c1aa1e9e66
VITE_REGISTRY_ID=0x68c01d2c08923d5257a5a9959d7c9250c4053dbe4641e229ccff2f35e6a3bb6d
VITE_ADMIN_CAP_ID=0x18d48d74bfddffbe3dc75025136722380f374baec942df2e0aef76cad1061496

# Network Configuration
VITE_SUI_NETWORK=testnet
VITE_SUI_RPC_URL=https://fullnode.testnet.sui.io:443

# Walrus Configuration
VITE_WALRUS_PUBLISHER_URL=https://publisher.walrus-testnet.walrus.space/v1/store
VITE_WALRUS_AGGREGATOR_URL=https://aggregator.walrus-testnet.walrus.space/v1

Build docs developers (and LLMs) love