@guildxyz/types
Version:
Types related to the Guild.xyz API
439 lines (410 loc) • 11.6 kB
text/typescript
import { UnionToTuple } from "./utils";
export const SocialLinks = [
"TWITTER",
"LENS",
"YOUTUBE",
"SPOTIFY",
"MIRROR",
"MEDIUM",
"SUBSTACK",
"SNAPSHOT",
"SOUND",
"GITHUB",
"WARPCAST",
"WEBSITE",
] as const;
export const Visibility = ["PUBLIC", "PRIVATE", "HIDDEN"] as const;
export const ChainIds = {
ETHEREUM: 1,
POLYGON: 137,
BSC: 56,
FANTOM: 250,
ARBITRUM: 42161,
NOVA: 42170,
CELO: 42220,
HARMONY: 1666600000,
GOERLI: 5,
AVALANCHE: 43114,
OPTIMISM: 10,
MOONRIVER: 1285,
MOONBEAM: 1284,
GNOSIS: 100,
METIS: 1088,
CRONOS: 25,
BOBA: 288,
BOBA_AVAX: 43288,
PALM: 11297108109,
BASE_GOERLI: 84531,
BASE_MAINNET: 8453,
EXOSAMA: 2109,
EVMOS: 9001,
POLYGON_MUMBAI: 80001,
ZETACHAIN_ATHENS: 7001,
SCROLL_ALPHA: 534353,
ZORA: 7777777,
SEPOLIA: 11155111,
ZKSYNC_ERA: 324,
POLYGON_ZKEVM: 1101,
NEON_EVM: 245022934,
PGN: 424,
LINEA: 59144,
LUKSO: 42,
MANTLE: 5000,
SCROLL: 534352,
SCROLL_SEPOLIA: 534351,
RONIN: 2020,
SHIMMER: 148,
KAVA: 2222,
BITFINITY_TESTNET: 355113,
X1_TESTNET: 195,
ONTOLOGY: 58,
BERA_TESTNET: 2061,
MANTA: 169,
TAIKO_KATLA: 167008,
OASIS_SAPPHIRE: 23294,
BLAST_SEPOLIA: 168587773,
BASE_SEPOLIA: 84532,
BLAST_MAINNET: 81457,
ASTAR_ZKEVM: 3776,
ZETACHAIN: 7000,
CORE_DAO: 1116,
LISK_SEPOLIA: 4202,
FORM: 478,
METIS_SEPOLIA: 59902,
OP_BNB: 204,
X1: 196,
CYBER: 7560,
TAIKO: 167000,
KLAYTN: 8217,
MINT: 185,
WORLD_CHAIN: 480,
SEI: 1329,
FILECOIN: 314,
ROOTSTOCK: 30,
MODE: 34443,
LISK: 1135,
CRONOS_ZKEVM: 388,
INK_SEPOLIA: 763373,
INK: 57073,
IOTA: 8822,
SONIC: 146,
SOPHON: 50104,
ZERO: 543210,
XDC: 50,
SONEIUM: 1868,
} as const;
export const Chain = Object.keys(ChainIds) as (keyof typeof ChainIds)[];
export const WALLET_ACTIVITY_CHAINS = [
"ETHEREUM",
"SCROLL_ALPHA",
"POLYGON",
"BASE_MAINNET",
"BASE_GOERLI",
"ZORA",
"AVALANCHE",
"ZKSYNC_ERA",
"POLYGON_ZKEVM",
"CRONOS",
"NEON_EVM",
"PGN",
"OPTIMISM",
"LINEA",
"MANTLE",
"SCROLL",
"SCROLL_SEPOLIA",
"RONIN",
"ARBITRUM",
"METIS",
"TAIKO_KATLA",
"BSC",
"BASE_SEPOLIA",
"OASIS_SAPPHIRE",
"BLAST_MAINNET",
"ZETACHAIN",
"TAIKO",
"FANTOM",
"SEI",
"ROOTSTOCK",
"MODE",
"LISK",
"CRONOS_ZKEVM",
"INK",
"INK_SEPOLIA",
"IOTA",
"SONIC",
"SOPHON",
"ZERO",
"FORM",
"XDC",
"SONEIUM",
] as const satisfies (typeof Chain)[number][];
export const PLATFORM_NAMES_IDS = {
DISCORD: 1,
TELEGRAM: 2,
GITHUB: 3,
GOOGLE: 4,
TWITTER: 5,
// "STEAM": 6,
CONTRACT_CALL: 7,
TWITTER_V1: 8,
UNIQUE_TEXT: 9,
TEXT: 10,
GUILD_PIN: 11,
POINTS: 13,
POAP: 14,
FORM: 15,
GATHER_TOWN: 16,
ERC20: 17,
WORLD_ID: 18,
FARCASTER_CHANNEL: 19,
} as const;
export const PlatformName = Object.keys(PLATFORM_NAMES_IDS) as UnionToTuple<
keyof typeof PLATFORM_NAMES_IDS
>;
export const Logic = ["AND", "OR", "ANY_OF"] as const;
export const ErrorMessages = {
INVALID_GUILDPLATFORM_INDEX:
"Invalid guildPlatformIndex. Make sure all guildPlatformIndex values reference an existing item from guildPlatforms",
EMPTY_OBJECT: "At least one of the fields must be defined",
INVALID_ADDRESS: "Invalid address",
REQUIRED_PLATFORM_GUILD_DATA: "platformGuildData is required",
ADMIN_UPDATE_IS_OWNER_FALSE:
"It is only possible to update an admin to be an owner. But doing so the previous owner will lose ownership",
};
export const GuildPinAction = ["JOINED_GUILD", "IS_OWNER", "IS_ADMIN"] as const;
export const XPEventType = [
"USER_REFERRAL",
"JOIN_GUILD",
"GET_ROLE",
"SUBMIT_FORM",
"COLLECT_PIN",
"COLLECT_NFT",
"OWN_GUILD_VERIFIED",
] as const;
export const PinSupportedChains: {
[key: number]: (typeof Chain)[number] | "FUEL";
} = {
10: "OPTIMISM",
25: "CRONOS",
56: "BSC",
58: "ONTOLOGY",
137: "POLYGON",
146: "SONIC",
185: "MINT",
324: "ZKSYNC_ERA",
478: "FORM",
1135: "LISK",
5000: "MANTLE",
7560: "CYBER",
8453: "BASE_MAINNET",
8822: "IOTA",
34443: "MODE",
42161: "ARBITRUM",
50104: "SOPHON",
57073: "INK",
59144: "LINEA",
543210: "ZERO",
50: "XDC",
1868: "SONEIUM",
11155111: "SEPOLIA",
// Use a fake chainId for Fuel
123456789: "FUEL",
} as const;
export const PinContractAddresses = {
POLYGON: "0xff04820c36759c9f5203021fe051239ad2dcca8a",
BASE_MAINNET: "0x326f14942f8899406e3224bd63e9f250d275a52e",
ZKSYNC_ERA: "0xd1e4254fe7e56f58777ba624e7eeb3644f872b0d",
BSC: "0x807f16eba4a2c51b86cb8ec8be8eab34305c2bfd",
ARBITRUM: "0x0e6a14106497a7de36fba446628860c062e9e302",
CRONOS: "0x4205e56a69a0130a9e0828d45d0c84e45340a196",
OPTIMISM: "0x6c2c223b84724c4b8fd41ae0142c2369dfa7e319",
MANTLE: "0x4205e56a69a0130a9e0828d45d0c84e45340a196",
ONTOLOGY: "0x4205e56a69a0130a9e0828d45d0c84e45340a196",
LINEA: "0x4205e56a69a0130a9e0828d45d0c84e45340a196",
CYBER: "0x13ec6b98362e43add08f7cc4f6befd02fa52ee01",
MINT: "0x13ec6b98362e43add08f7cc4f6befd02fa52ee01",
MODE: "0x13ec6b98362e43add08f7cc4f6befd02fa52ee01",
LISK: "0x73d1a63bce3083be47597E2Ef0646BbFd1907f1C",
FORM: "0x13ec6B98362E43Add08f7CC4f6befd02fa52eE01",
INK: "0x73d1a63bce3083be47597E2Ef0646BbFd1907f1C",
IOTA: "0x13ec6b98362e43add08f7cc4f6befd02fa52ee01",
SONIC: "0x13ec6b98362e43add08f7cc4f6befd02fa52ee01",
// SOPHON: "0xTODO",
ZERO: "0x792c4f33cABa7B0631c2B6a3355fEad6D9DCaCC9",
XDC: "0x13ec6B98362E43Add08f7CC4f6befd02fa52eE01",
SONEIUM: "0x13ec6B98362E43Add08f7CC4f6befd02fa52eE01",
SEPOLIA: "0xac49ee0c3bda5f851eac9a3184a21041e9afe379",
} as const satisfies Partial<
Record<(typeof PinSupportedChains)[number], `0x${string}`>
>;
export const NFTRewardSupportedChains = [
"ETHEREUM",
"BASE_MAINNET",
"OPTIMISM",
"BSC",
"CRONOS",
"POLYGON",
"MANTLE",
"ZKSYNC_ERA",
"LINEA",
"CYBER",
"ARBITRUM",
"SCROLL",
"TAIKO",
"BLAST_MAINNET",
"X1",
"CORE_DAO",
"METIS",
"NEON_EVM",
"POLYGON_ZKEVM",
"ZETACHAIN",
"MINT",
"MODE",
"AVALANCHE",
"LISK",
"INK",
"IOTA",
"SONIC",
// "SOPHON",
"ZERO",
"XDC",
"SONEIUM",
"SEPOLIA",
] as const;
export const NFTRewardFactoryAddresses = {
ETHEREUM: "0x6ee2dd02fbfb71f518827042b6adca242f1ba0b2",
BASE_MAINNET: "0x4205e56a69a0130a9e0828d45d0c84e45340a196",
OPTIMISM: "0xe6e6b676f94a6207882ac92b6014a391766fa96e",
BSC: "0xa445e7d3af54867d14467b44d5487352403d1e59",
CRONOS: "0x6c2c223b84724c4b8fd41ae0142c2369dfa7e319",
POLYGON: "0xc1c23618110277ffe6d529816eb23de42b24cc33",
MANTLE: "0x326f14942f8899406e3224bd63E9f250D275a52e",
ZKSYNC_ERA: "0x2a1eaf11a9753a871b15e2865d8a47cf17dd9450",
LINEA: "0x326f14942f8899406e3224bd63E9f250D275a52e",
CYBER: "0x097E05f7a194a30A482CC9616460498980bE79d3",
ARBITRUM: "0x13ec6B98362E43Add08f7CC4f6befd02fa52eE01",
SCROLL: "0x13ec6B98362E43Add08f7CC4f6befd02fa52eE01",
TAIKO: "0x13ec6B98362E43Add08f7CC4f6befd02fa52eE01",
BLAST_MAINNET: "0x13ec6B98362E43Add08f7CC4f6befd02fa52eE01",
X1: "0x13ec6B98362E43Add08f7CC4f6befd02fa52eE01",
CORE_DAO: "0x13ec6B98362E43Add08f7CC4f6befd02fa52eE01",
METIS: "0x13ec6B98362E43Add08f7CC4f6befd02fa52eE01",
NEON_EVM: "0x13ec6B98362E43Add08f7CC4f6befd02fa52eE01",
POLYGON_ZKEVM: "0x13ec6B98362E43Add08f7CC4f6befd02fa52eE01",
ZETACHAIN: "0x13ec6B98362E43Add08f7CC4f6befd02fa52eE01",
MINT: "0x097E05f7a194a30A482CC9616460498980bE79d3",
MODE: "0x097E05f7a194a30A482CC9616460498980bE79d3",
AVALANCHE: "0x13ec6b98362e43add08f7cc4f6befd02fa52ee01",
LISK: "0x13ec6b98362e43add08f7cc4f6befd02fa52ee01",
INK: "0x13ec6b98362e43add08f7cc4f6befd02fa52ee01",
SEPOLIA: "0xa9e8e62266d449b766d305075248790bdd46facb",
IOTA: "0x097E05f7a194a30A482CC9616460498980bE79d3",
SONIC: "0x070cD1FD4de1ed0259871B7d0b85C0e237702691",
// SOPHON: "0xTODO",
ZERO: "0x334f5BBDdCD9eAF0ad6B151e8D222f4fA54Fbc95",
XDC: "0x097E05f7a194a30A482CC9616460498980bE79d3",
SONEIUM: "0x097E05f7a194a30A482CC9616460498980bE79d3",
} as const satisfies Record<
(typeof NFTRewardSupportedChains)[number],
`0x${string}`
>;
export const GuildSortType = ["NEWEST", "VERIFIED", "FEATURED"] as const;
export const ContactType = ["EMAIL", "TELEGRAM"] as const;
export const AuthMethod = {
EOA: "1",
KeyPair: "2",
EIP1271: "3",
} as const;
export const PARAMS_HEADER_NAME = "x-guild-params";
export const SIG_HEADER_NAME = "x-guild-sig";
export const AUTH_HEADER_NAME = "x-guild-auth";
export const SERVICE_HEADER_NAME = "x-guild-service";
export const PRIVILEGED_USER_ID_HEADER = "x-guild-privileged-user-id";
export const CORRELATION_ID_HEADER_NAME = "x-correlation-id";
export const SDK_VERSION_HEADER_NAME = "x-guild-sdk-version";
export const SDK_PROJECT_NAME_HEADER_NAME = "x-guild-sdk-project-name";
export const VISIBILITY_FILTERED_COUNT_HEADER_NAME =
"x-guild-visibility-filtered";
export const unimplementedRequirementTypes = [
"ERC721",
"ERC1155",
"NOUNS",
"ERC20",
"SOUND_ARTIST_BACKED",
"SOUND_COLLECTED",
"SOUND_ARTIST",
"SOUND_TOP_COLLECTOR",
"SOUND_NFTS",
"UNLOCK",
"NOOX",
"YUP",
] as const;
export const UniswapV3PositionsChains = [
"ETHEREUM",
"ARBITRUM",
"OPTIMISM",
"POLYGON",
"BASE_MAINNET",
"BSC",
"AVALANCHE",
"CELO",
"BLAST_MAINNET",
"SEPOLIA",
"BASE_SEPOLIA",
] as const satisfies (typeof Chain)[number][];
/**
* "NonfungiblePositionManager" addresses from here:
* https://docs.uniswap.org/contracts/v3/reference/deployments
*/
export const UniswapV3PositionsAddresses = {
ETHEREUM: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88",
ARBITRUM: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88",
OPTIMISM: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88",
POLYGON: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88",
CELO: "0x3d79EdAaBC0EaB6F08ED885C05Fc0B014290D95A",
BSC: "0x7b8A01B39D58278b5DE7e48c8449c9f4F5170613",
BASE_MAINNET: "0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1",
SEPOLIA: "0x1238536071E1c677A632429e3655c799b22cDA52",
BASE_SEPOLIA: "0x1238536071E1c677A632429e3655c799b22cDA52",
AVALANCHE: "0x655C406EBFa14EE2006250925e54ec43AD184f8B",
BLAST_MAINNET: "0xB218e4f7cF0533d4696fDfC419A0023D33345F28",
} as const satisfies Record<
(typeof UniswapV3PositionsChains)[number],
`0x${string}`
>;
/**
* "UniswapV3Factory" addresses from here:
* https://docs.uniswap.org/contracts/v3/reference/deployments
*/
export const UniswapV3FactoryAddresses = {
ETHEREUM: "0x1F98431c8aD98523631AE4a59f267346ea31F984",
SEPOLIA: "0x0227628f3F023bb0B980b67D528571c95c6DaC1c",
ARBITRUM: "0x1F98431c8aD98523631AE4a59f267346ea31F984",
OPTIMISM: "0x1F98431c8aD98523631AE4a59f267346ea31F984",
POLYGON: "0x1F98431c8aD98523631AE4a59f267346ea31F984",
BASE_MAINNET: "0x33128a8fC17869897dcE68Ed026d694621f6FDfD",
BASE_SEPOLIA: "0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24",
BSC: "0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7",
AVALANCHE: "0x740b1c1de25031C31FF4fC9A62f554A55cdC1baD",
CELO: "0xAfE208a311B21f13EF87E33A90049fC17A7acDEc",
BLAST_MAINNET: "0x792edAdE80af5fC680d96a2eD80A44247D2Cf6Fd",
} as const satisfies Record<
(typeof UniswapV3PositionsChains)[number],
`0x${string}`
>;
export const PaymentSupportedChains = [
"ETHEREUM",
"POLYGON",
"OPTIMISM",
"SEPOLIA",
] as const satisfies (typeof Chain)[number][];
export const FeeCollectorContracts = {
ETHEREUM: "0xe4b4c6a7c6b6396032096c12adf46b7f14a70f4d",
POLYGON: "0xe4b4c6a7c6b6396032096c12adf46b7f14a70f4d",
OPTIMISM: "0xf7c2baa81feb6dd7bda0b3a03afbc1e13f955da5",
SEPOLIA: "0xc3563655d35397b77228c07a7f5301b0e0fa417d",
} as const satisfies Record<
(typeof PaymentSupportedChains)[number],
`0x${string}`
>;
export const walletTypes = ["EVM", "FUEL"] as const;