@robertprp/intents-sdk
Version:
Shogun Network Intent-based cross-chain swaps SDK
158 lines (130 loc) • 7.04 kB
text/typescript
import { type Address as SolanaAddress } from '@solana/kit';
import type { Address as EvmAddress } from 'viem';
import type { SupportedChain, SupportedEvmChain, SupportedSuiChain } from './chains.js';
import { ChainID } from './chains.js';
const useProdConfig = true;
export enum OrderType {
CROSS_CHAIN_LIMIT = 'CROSS_CHAIN_LIMIT',
SINGLE_CHAIN_LIMIT = 'SINGLE_CHAIN_LIMIT',
}
export const PERMIT2_ADDRESS: Record<SupportedEvmChain, EvmAddress> = {
[]: '0x000000000022d473030f116ddee9f6b43ac78ba3' as EvmAddress,
[]: '0x000000000022d473030f116ddee9f6b43ac78ba3' as EvmAddress,
[]: '0x000000000022d473030f116ddee9f6b43ac78ba3' as EvmAddress,
[]: '0x000000000022d473030f116ddee9f6b43ac78ba3' as EvmAddress,
};
// Production guard addresses
export const PROD_CROSS_CHAIN_GUARD_ADDRESSES: Record<SupportedChain, SolanaAddress | EvmAddress> = {
[]: '0x921ab91ee3dc38fd47aefd6218fd6b0bd9d64c18' as EvmAddress,
[]: '0xa89b2aae94769bf4a5dc9982eabe2c513564d1ea' as EvmAddress,
[]: '0x5173e9f12e2485f990ce4dac877d8545fb4ec81a' as EvmAddress,
[]: '0x6595bcc70e0c34ecf9174bb72881eea89b075021' as EvmAddress,
[]:
'4kD6otCKkKZQej8YNQkWdzG9xMo5XYN8T1BbUrJUE63E' as SolanaAddress<'4kD6otCKkKZQej8YNQkWdzG9xMo5XYN8T1BbUrJUE63E'>,
[]: '0x88a47715f41c5e47ff6d6dcfc0285f3802ae1587a9f411d0daff20269245a1b0',
};
// Test guard addresses
export const TEST_CROSS_CHAIN_GUARD_ADDRESSES: Record<SupportedChain, SolanaAddress | EvmAddress> = {
[]: '0x8cfacbe4e236c0ca0a7b4b9fc5b696aa9f07cc41' as EvmAddress,
[]: '0x66fbcccbd3ffe2d347bc2776ef8a6561ff29998e' as EvmAddress,
[]: '0xa895a53634854756ae8e902065e3be26ee36381d' as EvmAddress,
[]: '0xB8ec423b5f03b138Ad47c85Ea5F7AAEBB116D65e' as EvmAddress,
[]:
'FAKnXTY7cNz9wMTpH1wwsU9a1xzBAiMwAn2NXmGMLynP' as SolanaAddress<'FAKnXTY7cNz9wMTpH1wwsU9a1xzBAiMwAn2NXmGMLynP'>,
[]: '0xd5057237ba5fe3d9aa00bb2a1555c3d3de77fd5653e72ce70f4aa0561fa9f04d',
};
// Prod guard addresses
export const PROD_SINGLE_CHAIN_GUARD_ADDRESSES: Record<
Exclude<ChainID, SupportedSuiChain>,
SolanaAddress | EvmAddress
> = {
[]: '0x0' as EvmAddress,
[]: '0x0' as EvmAddress,
[]: '0x449808a27f42518c57791d4c2c6626f0069a0ed9' as EvmAddress,
[]: '0x618ee9b6829261108d811b91581e00da192b0b75' as EvmAddress,
[]:
'CwWkajHjBCWMKZdwR5D1P5M6Fgf9dAyxqZ1qDZgZGo1e' as SolanaAddress<'CwWkajHjBCWMKZdwR5D1P5M6Fgf9dAyxqZ1qDZgZGo1e'>,
};
// Test guard addresses
export const TEST_SINGLE_CHAIN_GUARD_ADDRESSES: Record<
Exclude<ChainID, SupportedSuiChain>,
SolanaAddress | EvmAddress
> = {
[]: '0x0' as EvmAddress,
[]: '0x0' as EvmAddress,
[]: '0x5602cedc725564694162a320c5bb91b5b4b25fca' as EvmAddress,
[]: '0x6a2f41f905035fa89b7329c0661061b580b1eb92' as EvmAddress,
[]:
'4wi5wsgSs9q9WV55s9AvKWTdeMNPcDXhzcbx5SoRRFcg' as SolanaAddress<'4wi5wsgSs9q9WV55s9AvKWTdeMNPcDXhzcbx5SoRRFcg'>,
};
export const PROD_DCA_SINGLE_CHAIN_GUARD_ADDRESSES: Record<SupportedEvmChain, EvmAddress> = {
[]: '0x0000000000000000000000000000000000000000' as EvmAddress,
[]: '0x0000000000000000000000000000000000000000' as EvmAddress,
[]: '0x1ab119e95a87ff59a57eba6dec6599aff8b2d7e4' as EvmAddress,
[]: '0x490911e5236f68ba921cbecc4b82b5e01b745731' as EvmAddress,
};
// Test guard addresses
export const TEST_DCA_SINGLE_CHAIN_GUARD_ADDRESSES: Record<SupportedEvmChain, EvmAddress> = {
[]: '0x0000000000000000000000000000000000000000' as EvmAddress,
[]: '0x0000000000000000000000000000000000000000' as EvmAddress,
[]: '0x79fd6a458066396c8938823049b6e614ce6b71f2' as EvmAddress,
[]: '0x5156e6c7b7a1c60ed4d6b2175f88f1f6875c78d8' as EvmAddress,
};
export const CROSS_CHAIN_GUARD_ADDRESSES = useProdConfig
? PROD_CROSS_CHAIN_GUARD_ADDRESSES
: TEST_CROSS_CHAIN_GUARD_ADDRESSES;
export const SINGLE_CHAIN_GUARD_ADDRESSES = useProdConfig
? PROD_SINGLE_CHAIN_GUARD_ADDRESSES
: TEST_SINGLE_CHAIN_GUARD_ADDRESSES;
export const DCA_SINGLE_CHAIN_GUARD_ADDRESSES = useProdConfig
? PROD_DCA_SINGLE_CHAIN_GUARD_ADDRESSES
: TEST_DCA_SINGLE_CHAIN_GUARD_ADDRESSES;
export const NATIVE_SOLANA_TOKEN_ADDRESS =
'So11111111111111111111111111111111111111111' as SolanaAddress<'So11111111111111111111111111111111111111111'>;
export const WRAPPED_SOL_MINT_ADDRESS =
'So11111111111111111111111111111111111111112' as SolanaAddress<'So11111111111111111111111111111111111111112'>;
type SolanaMint = {
name: string;
mint: string;
decimals: number;
};
export const SOLANA_USDC_MINT = {
name: 'USDC',
mint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
decimals: 6,
} as SolanaMint;
export const SOLANA_USDT_MINT = {
name: 'USDT',
mint: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
decimals: 6,
} as SolanaMint;
export const SOLANA_MINT_TOKEN = useProdConfig ? SOLANA_USDC_MINT : SOLANA_USDT_MINT;
export const PROD_SUI_PACKAGE_ID = '0x9c0c9b7f5ddf7efbde76571783ef4a8a26b36ae5c2ef2eeba8fbc604a29cb195';
export const TEST_SUI_PACKAGE_ID = '0x6273e29f803ff5851f89ec17d40d5b1f367476e1677ad0a52ca408f64c4473fe';
export const SUI_PACKAGE_ID = useProdConfig ? PROD_SUI_PACKAGE_ID : TEST_SUI_PACKAGE_ID;
export const SUI_GUARD_COLLATERAL_TYPE =
'0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC';
export const SUI_GUARD_STABLECOIN_TYPE =
'0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC';
export const AUCTIONEER_URL = useProdConfig
? 'https://auctioneer-825534211396.us-central1.run.app'
: 'http://127.0.0.1:8080';
export const MAX_UINT_32 = 2n ** 32n - 1n;
export const MAX_UINT_64 = 2n ** 64n - 1n;
export const MAX_UINT_128 = 2n ** 128n - 1n;
export const MAX_UINT_256 = 2n ** 256n - 1n;
export const NATIVE_EVM_ETH_ADDRESSES = [
'0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
'0x0000000000000000000000000000000000000000',
];
export const WRAPPED_ETH_ADDRESSES: Record<SupportedEvmChain, EvmAddress> = {
[]: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1' as EvmAddress,
[]: '0x4200000000000000000000000000000000000006' as EvmAddress,
[]: '0x4200000000000000000000000000000000000006' as EvmAddress,
[]: '0x5555555555555555555555555555555555555555' as EvmAddress,
};
export const NATIVE_SUI_TOKEN_ADDRESS = '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI';
export function isNativeEvmToken(tokenAddress: string): boolean {
const normalizedAddress = tokenAddress.toLowerCase();
return NATIVE_EVM_ETH_ADDRESSES.some((addr) => addr.toLowerCase() === normalizedAddress);
}