@flapsdk/vault-runtime 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/host.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/sdk/erc20.ts","../../src/sdk/format.ts","../../src/sdk/hostRuntimeConfig.ts","../../src/sdk/taxInfo.ts","../../src/sdk/hostRead.ts","../../src/sdk/hostRuntime.ts","../../src/sdk/runtimeContext.ts","../../src/sdk/txError.ts"],"names":["host"],"mappings":"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","file":"host.js","sourcesContent":["import { erc20Abi } from \"viem\";\n\nexport { erc20Abi };\nexport const standardErc20Abi = erc20Abi;\n","import Decimal from \"decimal.js\";\nimport { formatUnits, parseUnits } from \"viem\";\n\nexport function shortenAddress(raw?: string, start = 6, end = 4) {\n if (!raw) return \"\";\n if (raw.length <= start + end) return raw;\n return `${raw.slice(0, start)}...${raw.slice(-end)}`;\n}\n\nexport function formatTokenAmount(value?: bigint | string | number | null, decimals = 18, precision = 4) {\n if (value === undefined || value === null) return \"-\";\n const raw = typeof value === \"bigint\" ? formatUnits(value, decimals) : String(value);\n return new Decimal(raw).toDecimalPlaces(precision, Decimal.ROUND_DOWN).toString();\n}\n\nexport function parseTokenAmount(value: string, decimals = 18) {\n if (!/^\\d*(\\.\\d*)?$/.test(value.trim())) {\n throw new Error(\"Invalid decimal amount.\");\n }\n return parseUnits(value || \"0\", decimals);\n}\n\nexport function formatPercentBps(value?: bigint | number | null, precision = 2) {\n if (value === undefined || value === null) return \"-\";\n return `${new Decimal(String(value)).div(100).toDecimalPlaces(precision).toString()}%`;\n}\n\nexport function formatCountdown(targetTimeMs?: number) {\n if (!targetTimeMs) return \"-\";\n const diff = Math.max(0, targetTimeMs - Date.now());\n const totalSeconds = Math.floor(diff / 1000);\n const hours = Math.floor(totalSeconds / 3600);\n const minutes = Math.floor((totalSeconds % 3600) / 60);\n const seconds = totalSeconds % 60;\n if (hours > 0) return `${hours}h ${minutes}m ${seconds}s`;\n return `${minutes}m ${seconds}s`;\n}\n","import type { Address } from \"./types\";\n\nexport interface TaxVaultHostChainConfig {\n portal: Address;\n taxTokenHelperAddress?: Address;\n vaultPortal?: Address;\n wrappedNativeTokenAddress?: Address;\n giftVaultFactory?: Address;\n hostChainSlug?: string;\n ipfsGateway?: string;\n}\n\nconst taxVaultHostChains: Record<number, TaxVaultHostChainConfig> = {\n 56: {\n portal: \"0xe2ce6ab80874fa9fa2aae65d277dd6b8e65c9de0\",\n taxTokenHelperAddress: \"0x53841c73217735F37BC1775538b03b23feFD8346\",\n vaultPortal: \"0x90497450f2a706f1951b5bdda52B4E5d16f34C06\",\n wrappedNativeTokenAddress: \"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\",\n giftVaultFactory: \"0x025549F52B03cF36f9e1a337c02d3AA7Af66ab32\",\n hostChainSlug: \"bnb\",\n ipfsGateway: \"https://gateway.pinata.cloud\",\n },\n 97: {\n portal: \"0x5bEacaF7ABCbB3aB280e80D007FD31fcE26510e9\",\n taxTokenHelperAddress: \"0xD64441e5FcD02D342B8cf6eBA10Ef6E40d0dA90f\",\n vaultPortal: \"0x027e3704fC5C16522e9393d04C60A3ac5c0d775f\",\n wrappedNativeTokenAddress: \"0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd\",\n giftVaultFactory: \"0xa02DA44D67DB6D692efa7f751b5952bd670d5326\",\n hostChainSlug: \"bnb-testnet\",\n ipfsGateway: \"https://gateway.pinata.cloud\",\n },\n};\n\nexport function getTaxVaultHostChainConfig(chainId: number) {\n return taxVaultHostChains[chainId];\n}\n","import type {\n ActionAvailabilityStage,\n Address,\n FeeMode,\n FlapFeeVaultInfo,\n FlapTaxInfo,\n FlapTokenInfo,\n FlapVaultPortalInfo,\n ManifestBindingEntry,\n TokenMarketPhase,\n VaultHostContext,\n VaultManifest,\n VaultRenderSurface,\n} from \"./types\";\n\nexport const ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\" as Address;\n\ntype TupleLike = (Record<string, unknown> & readonly unknown[]) | Record<string, unknown> | readonly unknown[] | null | undefined;\n\nexport interface VaultBindingPolicy {\n name: string;\n chainId: number;\n factoryAddress: Address;\n vaultAddresses?: Address[];\n extra?: Record<string, unknown>;\n isAiPowered?: boolean;\n}\n\nexport interface RuntimeMatchInput {\n chainId?: number;\n factoryAddress?: string | null;\n tokenAddress?: string | null;\n}\n\nexport interface CreateTaxInfoHostContextInput {\n tokenInfo?: FlapTokenInfo | null;\n taxInfo?: FlapTaxInfo | null;\n vaultInfo?: FlapVaultPortalInfo | null;\n feeMode?: FeeMode | null;\n giftVaultFactory?: string | null;\n hasTaxVaults?: boolean;\n vaultType?: string;\n copyScope?: \"tax\" | \"fee\";\n}\n\nexport interface ResolveRenderSurfaceInput {\n tokenInfo?: FlapTokenInfo | null;\n taxInfo?: FlapTaxInfo | null;\n hasTaxVaults?: boolean;\n isNonTaxFeeToken?: boolean;\n}\n\nexport interface TaxVaultHostSnapshot {\n tokenInfo?: FlapTokenInfo;\n taxInfo?: FlapTaxInfo | null;\n vaultInfo?: FlapVaultPortalInfo | null;\n feeMode: FeeMode;\n renderSurface: VaultRenderSurface;\n vaultType?: string;\n copyScope: \"tax\" | \"fee\";\n marketPhase: TokenMarketPhase;\n isListed: boolean;\n isTaxToken: boolean;\n isSupportedCustomVaultToken: boolean;\n}\n\nexport function getTupleField(data: TupleLike, name: string, index: number) {\n if (!data) return undefined;\n const record = data as Record<string, unknown>;\n const tuple = data as readonly unknown[];\n return record[name] ?? tuple[index];\n}\n\nexport function isValidAddress(value?: string | null): value is Address {\n return Boolean(value && /^0x[a-fA-F0-9]{40}$/.test(value));\n}\n\nexport function normalizeAddress(value?: string | null): Address | undefined {\n return isValidAddress(value) ? (value as Address) : undefined;\n}\n\nexport function isSameAddress(a?: string | null, b?: string | null) {\n return Boolean(a && b && a.toLowerCase() === b.toLowerCase());\n}\n\nfunction toNumber(value: unknown, fallback = 0) {\n if (typeof value === \"bigint\") return Number(value);\n if (typeof value === \"number\") return Number.isFinite(value) ? value : fallback;\n if (typeof value === \"string\" && value.trim()) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n }\n return fallback;\n}\n\nfunction toBigInt(value: unknown, fallback = 0n) {\n if (typeof value === \"bigint\") return value;\n if (typeof value === \"number\" && Number.isFinite(value)) return BigInt(Math.trunc(value));\n if (typeof value === \"string\" && value.trim()) {\n try {\n return BigInt(value);\n } catch {\n return fallback;\n }\n }\n return fallback;\n}\n\nfunction toBooleanOrNull(value: unknown) {\n if (typeof value === \"boolean\") return value;\n if (value === null || value === undefined) return null;\n return Boolean(value);\n}\n\nfunction toAddressOrNull(value: unknown): Address | null {\n return typeof value === \"string\" && isValidAddress(value) ? (value as Address) : null;\n}\n\nfunction toStringOrUndefined(value: unknown) {\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nexport function parsePortalTokenInfo(tokenData: TupleLike): FlapTokenInfo | null {\n if (!tokenData) return null;\n\n const status = toNumber(getTupleField(tokenData, \"status\", 0));\n const taxRateRaw = toBigInt(getTupleField(tokenData, \"taxRate\", 12));\n const quoteTokenAddress = toAddressOrNull(getTupleField(tokenData, \"quoteTokenAddress\", 9)) ?? ZERO_ADDRESS;\n\n return {\n exists: status !== 0,\n isTaxToken: taxRateRaw > 0n,\n taxRate: Number(taxRateRaw),\n taxRateRaw,\n quoteTokenAddress,\n status,\n tokenVersion: toNumber(getTupleField(tokenData, \"tokenVersion\", 4)),\n };\n}\n\nexport function parseFeeVaultInfo(vaultInfo: TupleLike): FlapFeeVaultInfo | null {\n if (!vaultInfo) return null;\n\n return {\n addr: toAddressOrNull(getTupleField(vaultInfo, \"addr\", 0)),\n factory: toAddressOrNull(getTupleField(vaultInfo, \"factory\", 1)),\n riskLevel: toNumber(getTupleField(vaultInfo, \"riskLevel\", 2)),\n isOfficialVault: toBooleanOrNull(getTupleField(vaultInfo, \"isOfficialVault\", 3)),\n isVault: toBooleanOrNull(getTupleField(vaultInfo, \"isVault\", 4)),\n isAIConsumer: toBooleanOrNull(getTupleField(vaultInfo, \"isAIConsumer\", 5)),\n };\n}\n\nexport function parseTaxTokenInfo(\n taxInfo: TupleLike,\n taxInfoV2?: TupleLike,\n options: { wrappedNativeTokenAddress?: Address } = {},\n): FlapTaxInfo | null {\n if (!taxInfo) return null;\n\n const quoteToken = toAddressOrNull(getTupleField(taxInfo, \"quoteToken\", 11)) ?? ZERO_ADDRESS;\n const rawDividendToken = toAddressOrNull(getTupleField(taxInfoV2, \"dividendToken\", 11)) ?? quoteToken;\n const dividendToken =\n quoteToken === ZERO_ADDRESS && rawDividendToken === ZERO_ADDRESS && options.wrappedNativeTokenAddress\n ? options.wrappedNativeTokenAddress\n : rawDividendToken;\n\n return {\n marketBps: toNumber(getTupleField(taxInfo, \"marketBps\", 0)),\n deflationBps: toNumber(getTupleField(taxInfo, \"deflationBps\", 1)),\n lpBps: toNumber(getTupleField(taxInfo, \"lpBps\", 2)),\n dividendBps: toNumber(getTupleField(taxInfo, \"dividendBps\", 3)),\n feeRate: toNumber(getTupleField(taxInfo, \"feeRate\", 4)),\n buyTaxRate: taxInfoV2 ? toNumber(getTupleField(taxInfoV2, \"buyTaxRate\", 4)) : undefined,\n sellTaxRate: taxInfoV2 ? toNumber(getTupleField(taxInfoV2, \"sellTaxRate\", 5)) : undefined,\n burntTokenAmount: toBigInt(getTupleField(taxInfo, \"burntTokenAmount\", 5)),\n totalQuoteSentToDividend: toBigInt(getTupleField(taxInfo, \"totalQuoteSentToDividend\", 6)),\n totalQuoteAddedToLiquidity: toBigInt(getTupleField(taxInfo, \"totalQuoteAddedToLiquidity\", 7)),\n totalTokenAddedToLiquidity: toBigInt(getTupleField(taxInfo, \"totalTokenAddedToLiquidity\", 8)),\n totalQuoteSentToMarketing: toBigInt(getTupleField(taxInfo, \"totalQuoteSentToMarketing\", 9)),\n marketingWallet: toAddressOrNull(getTupleField(taxInfo, \"marketingWallet\", 10)) ?? ZERO_ADDRESS,\n dividendToken,\n quoteToken,\n minimumShareBalance: toBigInt(getTupleField(taxInfo, \"minimumShareBalance\", 12)),\n vaultInfo: parseFeeVaultInfo(getTupleField(taxInfoV2, \"vaultInfo\", 14) as TupleLike),\n };\n}\n\nexport function parseVaultPortalInfo(vaultData: TupleLike): FlapVaultPortalInfo | null {\n if (!vaultData) return null;\n\n const found = Boolean(getTupleField(vaultData, \"found\", 0));\n const info = getTupleField(vaultData, \"info\", 1) as TupleLike;\n\n if (!found || !info) return { found: false };\n\n return {\n found: true,\n vault: toAddressOrNull(getTupleField(info, \"vault\", 0)) ?? ZERO_ADDRESS,\n vaultFactory: toAddressOrNull(getTupleField(info, \"vaultFactory\", 1)) ?? ZERO_ADDRESS,\n description: toStringOrUndefined(getTupleField(info, \"description\", 2)),\n isOfficial: Boolean(getTupleField(info, \"isOfficial\", 3)),\n riskLevel: toNumber(getTupleField(info, \"riskLevel\", 4)),\n };\n}\n\nexport function resolveManifestBinding(manifest: Pick<VaultManifest, \"match\">, input: RuntimeMatchInput): ManifestBindingEntry | null {\n const bindings = manifest.match.bindings;\n if (!bindings.length) return null;\n\n const resolveUnique = (candidates: ManifestBindingEntry[]) => {\n if (candidates.length === 1) return candidates[0];\n return null;\n };\n\n if (input.chainId && input.factoryAddress) {\n return resolveUnique(bindings.filter((binding) => binding.chainId === input.chainId && isSameAddress(binding.factoryAddress, input.factoryAddress)));\n }\n\n if (input.chainId) {\n return resolveUnique(bindings.filter((binding) => binding.chainId === input.chainId));\n }\n\n if (input.factoryAddress) {\n return resolveUnique(bindings.filter((binding) => isSameAddress(binding.factoryAddress, input.factoryAddress)));\n }\n\n return null;\n}\n\nexport function isManifestRuntimeMatch(manifest: Pick<VaultManifest, \"match\">, input: RuntimeMatchInput) {\n if (!input.chainId || !input.factoryAddress) return false;\n const matchingBinding = resolveManifestBinding(manifest, input);\n if (!matchingBinding) return false;\n return matchingBinding.chainId === input.chainId && isSameAddress(matchingBinding.factoryAddress, input.factoryAddress);\n}\n\nexport function isVaultBindingMatch(binding: VaultBindingPolicy, input: RuntimeMatchInput) {\n if (!input.chainId || binding.chainId !== input.chainId) return false;\n if (!input.factoryAddress || !isSameAddress(binding.factoryAddress, input.factoryAddress)) return false;\n return true;\n}\n\nexport function resolveVaultBinding(bindings: VaultBindingPolicy[], input: RuntimeMatchInput) {\n return bindings.find((binding) => isVaultBindingMatch(binding, input)) ?? null;\n}\n\nexport function resolveFeeMode(taxInfo: FlapTaxInfo | TupleLike | null | undefined, giftVaultFactory?: string | null): FeeMode {\n if (!taxInfo) return \"unknown\";\n\n const marketBps = toNumber(getTupleField(taxInfo as TupleLike, \"marketBps\", 0));\n const dividendBps = toNumber(getTupleField(taxInfo as TupleLike, \"dividendBps\", 3));\n\n if (dividendBps > 0) return \"holder\";\n if (marketBps <= 0) return \"unknown\";\n\n const parsedVaultInfo =\n \"vaultInfo\" in Object(taxInfo)\n ? (taxInfo as FlapTaxInfo).vaultInfo\n : parseFeeVaultInfo(getTupleField(taxInfo as TupleLike, \"vaultInfo\", 14) as TupleLike);\n\n if (parsedVaultInfo?.isVault === true) {\n return isSameAddress(parsedVaultInfo.factory, giftVaultFactory) ? \"gift\" : \"unknown\";\n }\n\n return \"creator\";\n}\n\nexport function resolveTaxInfoRenderSurface({\n tokenInfo,\n taxInfo,\n hasTaxVaults = false,\n isNonTaxFeeToken = false,\n}: ResolveRenderSurfaceInput): VaultRenderSurface {\n if (!tokenInfo?.exists) return \"unavailable\";\n if (!tokenInfo.isTaxToken) return isNonTaxFeeToken ? \"feeinfo\" : \"unavailable\";\n if (taxInfo?.marketBps === 10000 && hasTaxVaults) return \"vault-taxinfo\";\n return \"standard-taxinfo\";\n}\n\nexport function resolveTokenMarketPhase(tokenInfo?: FlapTokenInfo | null): TokenMarketPhase {\n if (!tokenInfo?.exists) return \"unknown\";\n return tokenInfo.status >= 2 ? \"dex-listed\" : \"internal-market\";\n}\n\nexport function isCustomVaultTaxToken(tokenInfo?: FlapTokenInfo | null) {\n return Boolean(tokenInfo?.exists && tokenInfo.isTaxToken);\n}\n\nexport function isActionAvailableForPhase(stage: ActionAvailabilityStage, marketPhase: TokenMarketPhase = \"unknown\") {\n if (stage === \"read-only\") return false;\n if (stage === \"both\") return true;\n if (marketPhase === \"unknown\") return false;\n return stage === marketPhase;\n}\n\nexport function createTaxInfoHostContext({\n tokenInfo,\n taxInfo,\n vaultInfo,\n feeMode,\n giftVaultFactory,\n hasTaxVaults,\n vaultType,\n copyScope = \"tax\",\n}: CreateTaxInfoHostContextInput): VaultHostContext {\n const resolvedFeeMode = feeMode ?? resolveFeeMode(taxInfo, giftVaultFactory);\n const renderSurface = resolveTaxInfoRenderSurface({\n tokenInfo,\n taxInfo,\n hasTaxVaults: hasTaxVaults ?? Boolean(vaultInfo?.found),\n isNonTaxFeeToken: copyScope === \"fee\",\n });\n const marketPhase = resolveTokenMarketPhase(tokenInfo);\n\n return {\n tokenInfo: tokenInfo ?? undefined,\n taxInfo: taxInfo ?? null,\n vaultInfo: vaultInfo ?? null,\n feeMode: resolvedFeeMode,\n renderSurface,\n vaultType,\n copyScope,\n isListed: tokenInfo ? tokenInfo.status >= 2 : undefined,\n marketPhase,\n };\n}\n\nexport function readTaxVaultHostContext(host?: VaultHostContext | null): TaxVaultHostSnapshot {\n const tokenInfo = host?.tokenInfo;\n const marketPhase = host?.marketPhase ?? resolveTokenMarketPhase(tokenInfo);\n const isListed = host?.isListed ?? Boolean(tokenInfo && tokenInfo.status >= 2);\n const isTaxToken = tokenInfo?.isTaxToken === true;\n\n return {\n tokenInfo,\n taxInfo: host?.taxInfo ?? null,\n vaultInfo: host?.vaultInfo ?? null,\n feeMode: host?.feeMode ?? \"unknown\",\n renderSurface: host?.renderSurface ?? \"unavailable\",\n vaultType: host?.vaultType,\n copyScope: host?.copyScope ?? \"tax\",\n marketPhase,\n isListed,\n isTaxToken,\n isSupportedCustomVaultToken: isCustomVaultTaxToken(tokenInfo),\n };\n}\n","import type { PublicClient } from \"viem\";\nimport { erc20Abi } from \"./erc20\";\nimport { getTaxVaultHostChainConfig } from \"./hostRuntimeConfig\";\nimport { createTaxInfoHostContext, isValidAddress, parsePortalTokenInfo, parseTaxTokenInfo, parseVaultPortalInfo, ZERO_ADDRESS } from \"./taxInfo\";\nimport type { Address, FlapTokenInfo, PaymentToken, TokenMetadataSnapshot, TokenRuntimeSnapshot } from \"./types\";\n\nconst portalAbi = [\n {\n name: \"getTokenV7\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"\", type: \"address\" }],\n outputs: [\n {\n type: \"tuple\",\n components: [\n { name: \"status\", type: \"uint8\" },\n { name: \"reserve\", type: \"uint256\" },\n { name: \"circulatingSupply\", type: \"uint256\" },\n { name: \"price\", type: \"uint256\" },\n { name: \"tokenVersion\", type: \"uint8\" },\n { name: \"r\", type: \"uint256\" },\n { name: \"h\", type: \"uint256\" },\n { name: \"k\", type: \"uint256\" },\n { name: \"dexSupplyThresh\", type: \"uint256\" },\n { name: \"quoteTokenAddress\", type: \"address\" },\n { name: \"nativeToQuoteSwapEnabled\", type: \"bool\" },\n { name: \"extensionID\", type: \"bytes32\" },\n { name: \"taxRate\", type: \"uint256\" },\n { name: \"pool\", type: \"address\" },\n { name: \"progress\", type: \"uint256\" },\n { name: \"lpFeeProfile\", type: \"uint8\" },\n { name: \"dexId\", type: \"uint8\" },\n ],\n },\n ],\n },\n] as const;\n\nconst taxTokenHelperAbi = [\n {\n name: \"getTaxTokenInfo\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"taxToken\", type: \"address\" }],\n outputs: [\n {\n type: \"tuple\",\n components: [\n { name: \"marketBps\", type: \"uint16\" },\n { name: \"deflationBps\", type: \"uint16\" },\n { name: \"lpBps\", type: \"uint16\" },\n { name: \"dividendBps\", type: \"uint16\" },\n { name: \"feeRate\", type: \"uint16\" },\n { name: \"burntTokenAmount\", type: \"uint256\" },\n { name: \"totalQuoteSentToDividend\", type: \"uint256\" },\n { name: \"totalQuoteAddedToLiquidity\", type: \"uint256\" },\n { name: \"totalTokenAddedToLiquidity\", type: \"uint256\" },\n { name: \"totalQuoteSentToMarketing\", type: \"uint256\" },\n { name: \"marketingWallet\", type: \"address\" },\n { name: \"quoteToken\", type: \"address\" },\n { name: \"minimumShareBalance\", type: \"uint256\" },\n ],\n },\n ],\n },\n {\n name: \"getTaxTokenInfoV2\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"taxToken\", type: \"address\" }],\n outputs: [\n {\n type: \"tuple\",\n components: [\n { name: \"marketBps\", type: \"uint16\" },\n { name: \"deflationBps\", type: \"uint16\" },\n { name: \"lpBps\", type: \"uint16\" },\n { name: \"dividendBps\", type: \"uint16\" },\n { name: \"buyTaxRate\", type: \"uint16\" },\n { name: \"sellTaxRate\", type: \"uint16\" },\n { name: \"burntTokenAmount\", type: \"uint256\" },\n { name: \"totalQuoteSentToDividend\", type: \"uint256\" },\n { name: \"totalQuoteAddedToLiquidity\", type: \"uint256\" },\n { name: \"totalTokenAddedToLiquidity\", type: \"uint256\" },\n { name: \"totalQuoteSentToMarketing\", type: \"uint256\" },\n { name: \"dividendToken\", type: \"address\" },\n { name: \"quoteToken\", type: \"address\" },\n { name: \"minimumShareBalance\", type: \"uint256\" },\n {\n name: \"vaultInfo\",\n type: \"tuple\",\n components: [\n { name: \"addr\", type: \"address\" },\n { name: \"factory\", type: \"address\" },\n { name: \"riskLevel\", type: \"uint8\" },\n { name: \"isOfficialVault\", type: \"bool\" },\n { name: \"isVault\", type: \"bool\" },\n { name: \"isAIConsumer\", type: \"bool\" },\n ],\n },\n ],\n },\n ],\n },\n] as const;\n\nconst vaultPortalAbi = [\n {\n name: \"tryGetVault\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"taxToken\", type: \"address\" }],\n outputs: [\n { name: \"found\", type: \"bool\" },\n {\n name: \"info\",\n type: \"tuple\",\n components: [\n { name: \"vault\", type: \"address\" },\n { name: \"vaultFactory\", type: \"address\" },\n { name: \"description\", type: \"string\" },\n { name: \"isOfficial\", type: \"bool\" },\n { name: \"riskLevel\", type: \"uint8\" },\n ],\n },\n ],\n },\n] as const;\n\nasync function readErc20Symbol(publicClient: PublicClient, address: Address) {\n try {\n const symbol = await publicClient.readContract({\n address,\n abi: erc20Abi,\n functionName: \"symbol\",\n });\n return typeof symbol === \"string\" && symbol.trim() ? symbol.trim() : undefined;\n } catch {\n return undefined;\n }\n}\n\nasync function readErc20Name(publicClient: PublicClient, address: Address) {\n try {\n const name = await publicClient.readContract({\n address,\n abi: erc20Abi,\n functionName: \"name\",\n });\n return typeof name === \"string\" && name.trim() ? name.trim() : undefined;\n } catch {\n return undefined;\n }\n}\n\nasync function readErc20Decimals(publicClient: PublicClient, address: Address) {\n try {\n const decimals = await publicClient.readContract({\n address,\n abi: erc20Abi,\n functionName: \"decimals\",\n });\n return typeof decimals === \"number\" ? decimals : 18;\n } catch {\n return 18;\n }\n}\n\nasync function resolvePaymentToken(publicClient: PublicClient, tokenInfo: FlapTokenInfo): Promise<PaymentToken | undefined> {\n const quoteTokenAddress = tokenInfo.quoteTokenAddress;\n if (!quoteTokenAddress) return undefined;\n\n if (quoteTokenAddress === ZERO_ADDRESS) {\n const nativeCurrency = publicClient.chain?.nativeCurrency;\n return {\n address: ZERO_ADDRESS,\n symbol: nativeCurrency?.symbol ?? \"NATIVE\",\n decimals: nativeCurrency?.decimals ?? 18,\n isNative: true,\n };\n }\n\n if (!isValidAddress(quoteTokenAddress)) return undefined;\n\n const [symbol, decimals] = await Promise.all([readErc20Symbol(publicClient, quoteTokenAddress), readErc20Decimals(publicClient, quoteTokenAddress)]);\n\n return {\n address: quoteTokenAddress,\n symbol: symbol ?? \"TOKEN\",\n decimals,\n isNative: false,\n };\n}\n\nexport async function readErc20TokenMetadata(publicClient: PublicClient, tokenAddress?: Address | null): Promise<TokenMetadataSnapshot | null> {\n if (!tokenAddress || !isValidAddress(tokenAddress) || tokenAddress === ZERO_ADDRESS) return null;\n\n const [tokenSymbol, tokenName] = await Promise.all([readErc20Symbol(publicClient, tokenAddress), readErc20Name(publicClient, tokenAddress)]);\n if (!tokenSymbol && !tokenName) return null;\n\n return {\n tokenSymbol,\n tokenName,\n };\n}\n\nexport async function loadTokenRuntimeSnapshot(\n publicClient: PublicClient,\n chainId: number,\n tokenAddress?: Address | null,\n): Promise<TokenRuntimeSnapshot | null> {\n if (!tokenAddress || !isValidAddress(tokenAddress) || tokenAddress === ZERO_ADDRESS) return null;\n\n const metadata = await readErc20TokenMetadata(publicClient, tokenAddress);\n const chainConfig = getTaxVaultHostChainConfig(chainId);\n const baseSnapshot = {\n tokenSymbol: metadata?.tokenSymbol,\n tokenName: metadata?.tokenName,\n copyScope: \"tax\" as const,\n };\n\n if (!chainConfig) {\n return {\n ...baseSnapshot,\n hasTaxVaults: false,\n hostReadSupported: false,\n hostReadFromChain: false,\n };\n }\n\n let tokenData: unknown;\n try {\n tokenData = await publicClient.readContract({\n address: chainConfig.portal,\n abi: portalAbi,\n functionName: \"getTokenV7\",\n args: [tokenAddress],\n });\n } catch {\n return {\n ...baseSnapshot,\n hasTaxVaults: Boolean(chainConfig.vaultPortal),\n hostReadSupported: true,\n hostReadFromChain: false,\n giftVaultFactory: chainConfig.giftVaultFactory,\n };\n }\n\n const tokenInfo = parsePortalTokenInfo(tokenData as Record<string, unknown>);\n const hasTaxVaults = Boolean(chainConfig.vaultPortal);\n if (!tokenInfo) {\n return {\n ...baseSnapshot,\n hasTaxVaults,\n hostReadSupported: true,\n hostReadFromChain: false,\n giftVaultFactory: chainConfig.giftVaultFactory,\n };\n }\n\n const paymentToken = tokenInfo.exists ? await resolvePaymentToken(publicClient, tokenInfo) : undefined;\n if (!tokenInfo.exists) {\n const host = createTaxInfoHostContext({\n tokenInfo,\n giftVaultFactory: chainConfig.giftVaultFactory,\n hasTaxVaults,\n copyScope: \"tax\",\n });\n return {\n ...baseSnapshot,\n tokenInfo,\n host,\n giftVaultFactory: chainConfig.giftVaultFactory,\n paymentToken,\n hasTaxVaults,\n hostReadSupported: true,\n hostReadFromChain: true,\n };\n }\n\n const taxInfoPromise =\n tokenInfo.isTaxToken && chainConfig.taxTokenHelperAddress\n ? Promise.allSettled([\n publicClient.readContract({\n address: chainConfig.taxTokenHelperAddress,\n abi: taxTokenHelperAbi,\n functionName: \"getTaxTokenInfo\",\n args: [tokenAddress],\n }),\n publicClient.readContract({\n address: chainConfig.taxTokenHelperAddress,\n abi: taxTokenHelperAbi,\n functionName: \"getTaxTokenInfoV2\",\n args: [tokenAddress],\n }),\n ])\n : Promise.resolve(null);\n\n const vaultInfoPromise = chainConfig.vaultPortal\n ? publicClient\n .readContract({\n address: chainConfig.vaultPortal,\n abi: vaultPortalAbi,\n functionName: \"tryGetVault\",\n args: [tokenAddress],\n })\n .catch(() => undefined)\n : Promise.resolve(undefined);\n\n const [taxResults, vaultData] = await Promise.all([taxInfoPromise, vaultInfoPromise]);\n const baseTaxInfo = Array.isArray(taxResults) && taxResults[0]?.status === \"fulfilled\" ? taxResults[0].value : undefined;\n const taxInfoV2 = Array.isArray(taxResults) && taxResults[1]?.status === \"fulfilled\" ? taxResults[1].value : undefined;\n const taxInfo = baseTaxInfo\n ? parseTaxTokenInfo(baseTaxInfo, taxInfoV2, { wrappedNativeTokenAddress: chainConfig.wrappedNativeTokenAddress })\n : undefined;\n const vaultInfo = vaultData ? parseVaultPortalInfo(vaultData) : undefined;\n const host = createTaxInfoHostContext({\n tokenInfo,\n taxInfo,\n vaultInfo,\n giftVaultFactory: chainConfig.giftVaultFactory,\n hasTaxVaults,\n copyScope: \"tax\",\n });\n\n return {\n ...baseSnapshot,\n tokenInfo,\n taxInfo,\n vaultInfo,\n host,\n giftVaultFactory: chainConfig.giftVaultFactory,\n paymentToken,\n hasTaxVaults,\n hostReadSupported: true,\n hostReadFromChain: true,\n };\n}\n","import { loadTokenRuntimeSnapshot } from \"./hostRead\";\nimport { isValidAddress, readTaxVaultHostContext, ZERO_ADDRESS } from \"./taxInfo\";\nimport type {\n Address,\n HostRuntimeAddresses,\n HostRuntimeDataSource,\n HostRuntimeDegradeReason,\n HostRuntimeInput,\n HostRuntimeResult,\n HostRuntimeSources,\n HostRuntimeStatus,\n HostRuntimeWarning,\n TokenRuntimeSnapshot,\n} from \"./types\";\n\nfunction isResolvedAddress(address?: Address | null): address is Address {\n return Boolean(address && isValidAddress(address) && address !== ZERO_ADDRESS);\n}\n\nfunction pickAddress(...candidates: Array<Address | null | undefined>) {\n for (const candidate of candidates) {\n if (isResolvedAddress(candidate)) return candidate;\n }\n return undefined;\n}\n\nfunction resolveAddresses(input: Pick<HostRuntimeInput, \"chainId\" | \"tokenAddress\" | \"factoryAddressHint\" | \"vaultAddressHint\">, snapshot?: TokenRuntimeSnapshot | null): HostRuntimeAddresses {\n return {\n chainId: input.chainId,\n tokenAddress: input.tokenAddress,\n factoryAddressHint: input.factoryAddressHint,\n vaultAddressHint: input.vaultAddressHint,\n factoryAddress: pickAddress(input.factoryAddressHint, snapshot?.vaultInfo?.vaultFactory, snapshot?.taxInfo?.vaultInfo?.factory ?? undefined),\n vaultAddress: pickAddress(input.vaultAddressHint, snapshot?.vaultInfo?.vault, snapshot?.taxInfo?.vaultInfo?.addr ?? undefined),\n };\n}\n\nfunction hasPresentationMetadata(result: HostRuntimeResult) {\n return Boolean(result.presentation?.tokenName || result.presentation?.tokenSymbol || result.presentation?.tokenImageUrl);\n}\n\nfunction resolveTokenMetadataSource(snapshot: TokenRuntimeSnapshot | null, presentationDataAvailable: boolean): HostRuntimeDataSource {\n if (presentationDataAvailable) return \"host-proxy\";\n if (snapshot?.tokenName || snapshot?.tokenSymbol) return \"onchain\";\n return \"unavailable\";\n}\n\nfunction resolveSources(snapshot: TokenRuntimeSnapshot | null, presentationDataAvailable: boolean): HostRuntimeSources {\n return {\n tokenMetadata: resolveTokenMetadataSource(snapshot, presentationDataAvailable),\n taxState: snapshot?.taxInfo ? \"onchain\" : \"unavailable\",\n vaultState: snapshot?.vaultInfo?.found || snapshot?.taxInfo?.vaultInfo?.isVault ? \"onchain\" : \"unavailable\",\n presentation: presentationDataAvailable ? \"host-proxy\" : \"unavailable\",\n };\n}\n\nfunction collectWarnings(snapshot: TokenRuntimeSnapshot | null, addresses: HostRuntimeAddresses): HostRuntimeWarning[] {\n const warnings: HostRuntimeWarning[] = [];\n\n if (!snapshot?.taxInfo) warnings.push(\"tax-info-unavailable\");\n if (snapshot?.tokenInfo?.quoteTokenAddress && !snapshot.paymentToken) warnings.push(\"payment-token-unavailable\");\n if (!addresses.vaultAddress) warnings.push(\"vault-address-unavailable\");\n if (!addresses.factoryAddress) warnings.push(\"factory-address-unavailable\");\n\n return warnings;\n}\n\nfunction resolveChainFailure(snapshot: TokenRuntimeSnapshot | null): HostRuntimeDegradeReason | null {\n if (!snapshot) return \"chain-read-unavailable\";\n if (!snapshot.hostReadSupported) return \"unsupported-chain\";\n if (!snapshot.hostReadFromChain || !snapshot.tokenInfo) return \"chain-read-unavailable\";\n if (!snapshot.tokenInfo.exists) return \"token-not-found\";\n if (!snapshot.tokenInfo.isTaxToken) return \"token-not-tax\";\n return null;\n}\n\nfunction createResult(params: {\n status: HostRuntimeStatus;\n input: Pick<HostRuntimeInput, \"chainId\" | \"tokenAddress\" | \"factoryAddressHint\" | \"vaultAddressHint\">;\n snapshot: TokenRuntimeSnapshot | null;\n degradeReason?: HostRuntimeDegradeReason;\n presentation?: HostRuntimeResult[\"presentation\"];\n policy: HostRuntimeResult[\"policy\"];\n}): HostRuntimeResult {\n const addresses = resolveAddresses(params.input, params.snapshot);\n const basePresentation = params.presentation ?? null;\n const baseResult: HostRuntimeResult = {\n status: params.status,\n policy: params.policy,\n degradeReason: params.degradeReason,\n warnings: collectWarnings(params.snapshot, addresses),\n addresses,\n snapshot: params.snapshot,\n host: params.snapshot?.host ?? undefined,\n paymentToken: params.snapshot?.paymentToken,\n tokenSymbol: basePresentation?.tokenSymbol ?? params.snapshot?.tokenSymbol,\n tokenName: basePresentation?.tokenName ?? params.snapshot?.tokenName,\n tokenImageUrl: basePresentation?.tokenImageUrl,\n tokenDetailHref: basePresentation?.tokenDetailHref,\n chainHref: basePresentation?.chainHref,\n presentation: basePresentation,\n sources: {\n tokenMetadata: \"unavailable\",\n taxState: \"unavailable\",\n vaultState: \"unavailable\",\n presentation: \"unavailable\",\n },\n };\n\n baseResult.sources = resolveSources(params.snapshot, hasPresentationMetadata(baseResult));\n return baseResult;\n}\n\nexport function resolveHostRuntimeAddresses(input: Pick<HostRuntimeInput, \"chainId\" | \"tokenAddress\" | \"factoryAddressHint\" | \"vaultAddressHint\">, snapshot?: TokenRuntimeSnapshot | null) {\n return resolveAddresses(input, snapshot);\n}\n\nexport async function runHostRuntime(input: HostRuntimeInput): Promise<HostRuntimeResult> {\n const policy = input.policy ?? \"prefer-full-host\";\n\n if (!isResolvedAddress(input.tokenAddress)) {\n return createResult({\n status: \"unavailable\",\n input,\n snapshot: null,\n degradeReason: \"invalid-token-address\",\n policy,\n });\n }\n\n const snapshot = await loadTokenRuntimeSnapshot(input.publicClient, input.chainId, input.tokenAddress);\n const chainFailure = resolveChainFailure(snapshot);\n if (chainFailure) {\n return createResult({\n status: \"unavailable\",\n input,\n snapshot,\n degradeReason: chainFailure,\n policy,\n });\n }\n\n let presentation: HostRuntimeResult[\"presentation\"] = null;\n let presentationFailure: HostRuntimeDegradeReason | undefined;\n\n if (input.presentationFetcher) {\n try {\n presentation = await input.presentationFetcher({\n chainId: input.chainId,\n tokenAddress: input.tokenAddress,\n factoryAddress: resolveAddresses(input, snapshot).factoryAddress,\n vaultAddress: resolveAddresses(input, snapshot).vaultAddress,\n snapshot: snapshot!,\n });\n if (!presentation) {\n presentationFailure = \"host-presentation-unavailable\";\n }\n } catch {\n presentationFailure = \"host-presentation-unavailable\";\n }\n } else {\n presentationFailure = \"host-presentation-not-configured\";\n }\n\n if (presentation) {\n return createResult({\n status: \"full-host\",\n input,\n snapshot,\n presentation,\n policy,\n });\n }\n\n if (policy === \"require-full-host\") {\n return createResult({\n status: \"unavailable\",\n input,\n snapshot,\n degradeReason: presentationFailure === \"host-presentation-not-configured\" ? \"host-presentation-required\" : \"host-presentation-unavailable\",\n policy,\n });\n }\n\n const result = createResult({\n status: \"onchain\",\n input,\n snapshot,\n degradeReason: presentationFailure,\n policy,\n });\n\n const hostSnapshot = readTaxVaultHostContext(result.host);\n if (!hostSnapshot.isSupportedCustomVaultToken) {\n return {\n ...result,\n status: \"unavailable\",\n degradeReason: \"token-not-tax\",\n };\n }\n\n return result;\n}\n","import { resolveManifestBinding } from \"./taxInfo\";\nimport type { Address, CreateVaultRuntimeContextInput, VaultRuntimeContext, VaultRuntimeExtraConfig } from \"./types\";\n\nconst zeroAddress = \"0x0000000000000000000000000000000000000000\" as Address;\n\nexport function explorerForChain(chainId: number) {\n if (chainId === 56) return \"https://bscscan.com\";\n if (chainId === 97) return \"https://testnet.bscscan.com\";\n return undefined;\n}\n\nexport function chainLabelForChain(chainId: number) {\n if (chainId === 56) return \"BNB Chain\";\n if (chainId === 97) return \"BNB Testnet\";\n return `Chain ${chainId}`;\n}\n\nfunction buildRuntimeExtraConfig(input: CreateVaultRuntimeContextInput): VaultRuntimeExtraConfig {\n const hostRuntimeResult = input.hostRuntimeResult;\n const runtimeOverrides = input.runtimeOverrides;\n\n return {\n ...(hostRuntimeResult\n ? {\n hostRuntimeStatus: hostRuntimeResult.status,\n hostRuntimePolicy: hostRuntimeResult.policy,\n hostRuntimeDegradeReason: hostRuntimeResult.degradeReason,\n hostRuntimeWarnings: hostRuntimeResult.warnings,\n }\n : {}),\n ...(hostRuntimeResult?.presentation?.extraConfig ?? {}),\n ...(runtimeOverrides?.extraConfig ?? {}),\n };\n}\n\nexport function createVaultRuntimeContext(input: CreateVaultRuntimeContextInput): VaultRuntimeContext {\n const runtimeOverrides = input.runtimeOverrides;\n const resolvedBinding = resolveManifestBinding(input.manifest, {\n chainId: runtimeOverrides?.chainId ?? input.connectedChainId ?? input.hostRuntimeResult?.addresses.chainId,\n factoryAddress: runtimeOverrides?.factoryAddress ?? input.hostRuntimeResult?.addresses.factoryAddress,\n });\n const effectiveChainId =\n runtimeOverrides?.chainId ?? input.hostRuntimeResult?.addresses.chainId ?? input.connectedChainId ?? resolvedBinding?.chainId ?? input.manifest.match.bindings[0]?.chainId ?? 56;\n\n return {\n chainId: effectiveChainId,\n factoryAddress: runtimeOverrides?.factoryAddress ?? input.hostRuntimeResult?.addresses.factoryAddress ?? resolvedBinding?.factoryAddress ?? zeroAddress,\n tokenAddress: runtimeOverrides?.tokenAddress ?? input.hostRuntimeResult?.addresses.tokenAddress ?? zeroAddress,\n vaultAddress: runtimeOverrides?.vaultAddress ?? input.hostRuntimeResult?.addresses.vaultAddress ?? zeroAddress,\n userAddress: runtimeOverrides?.userAddress,\n tokenSymbol: runtimeOverrides?.tokenSymbol ?? input.hostRuntimeResult?.tokenSymbol,\n tokenName: runtimeOverrides?.tokenName ?? input.hostRuntimeResult?.tokenName,\n tokenImageUrl: runtimeOverrides?.tokenImageUrl ?? input.hostRuntimeResult?.tokenImageUrl,\n explorerBaseUrl: runtimeOverrides?.explorerBaseUrl ?? explorerForChain(effectiveChainId),\n paymentToken: runtimeOverrides?.paymentToken ?? input.hostRuntimeResult?.paymentToken,\n host: runtimeOverrides?.host ?? input.hostRuntimeResult?.host,\n extraConfig: buildRuntimeExtraConfig(input),\n manifest: input.manifest,\n };\n}\n","export type TxErrorKind = \"userRejected\" | \"walletDisconnected\" | \"wrongNetwork\" | \"insufficientFunds\" | \"simulationFailed\" | \"reverted\" | \"unknown\";\n\ntype TxErrorMessageMap = Partial<Record<TxErrorKind, string>>;\n\nconst defaultMessages: Record<TxErrorKind, string> = {\n userRejected: \"You rejected the wallet request.\",\n walletDisconnected: \"Connect a wallet before sending this transaction.\",\n wrongNetwork: \"Switch the wallet to the required chain before sending this transaction.\",\n insufficientFunds: \"Insufficient wallet balance to complete this transaction.\",\n simulationFailed: \"The transaction could not pass simulation.\",\n reverted: \"The contract rejected this transaction.\",\n unknown: \"Transaction failed. Please check your wallet and try again.\",\n};\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\";\n}\n\nfunction readString(value: unknown) {\n return typeof value === \"string\" ? value : \"\";\n}\n\nfunction collectMessages(error: unknown, depth = 0, seen = new Set<unknown>()): string[] {\n if (depth > 4 || error == null || seen.has(error)) return [];\n seen.add(error);\n\n if (typeof error === \"string\") return [error];\n if (!isObject(error)) return [];\n\n const messages = [\n readString(error.shortMessage),\n readString(error.message),\n readString(error.details),\n readString(error.reason),\n ].filter(Boolean);\n\n return [...messages, ...collectMessages(error.cause, depth + 1, seen)];\n}\n\nfunction collectCodes(error: unknown, depth = 0, seen = new Set<unknown>()): Array<string | number> {\n if (depth > 4 || error == null || seen.has(error)) return [];\n seen.add(error);\n if (!isObject(error)) return [];\n\n const codes = [error.code, error.name].filter((value) => typeof value === \"string\" || typeof value === \"number\");\n return [...codes, ...collectCodes(error.cause, depth + 1, seen)];\n}\n\nexport function getTxErrorKind(error: unknown): TxErrorKind {\n const message = collectMessages(error).join(\" \").toLowerCase();\n const codes = collectCodes(error)\n .map((value: string | number) => String(value).toLowerCase())\n .join(\" \");\n\n if (\n codes.includes(\"4001\") ||\n codes.includes(\"action_rejected\") ||\n codes.includes(\"userrejectedrequesterror\") ||\n /user rejected|user denied|rejected the request|denied transaction|request rejected|cancelled/i.test(message)\n ) {\n return \"userRejected\";\n }\n\n if (/wallet is not connected|connector not connected|account not found|no wallet client/i.test(message)) {\n return \"walletDisconnected\";\n }\n\n if (/wrong network|switch wallet to|switch network to|required chain/i.test(message)) {\n return \"wrongNetwork\";\n }\n\n if (/insufficient funds|exceeds the balance|gas \\* price \\+ value/i.test(message)) {\n return \"insufficientFunds\";\n }\n\n if (/simulation failed|simulatecontract|execution reverted during simulation/i.test(message)) {\n return \"simulationFailed\";\n }\n\n if (/execution reverted|reverted with the following reason|contract function .* reverted|call exception/i.test(message)) {\n return \"reverted\";\n }\n\n return \"unknown\";\n}\n\nexport function handleTxError(error: unknown, messages?: TxErrorMessageMap) {\n const kind = getTxErrorKind(error);\n return messages?.[kind] ?? defaultMessages[kind];\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { a as Address } from './types-CX7pLmiT.mjs';
2
+
3
+ interface TaxVaultHostChainConfig {
4
+ portal: Address;
5
+ taxTokenHelperAddress?: Address;
6
+ vaultPortal?: Address;
7
+ wrappedNativeTokenAddress?: Address;
8
+ giftVaultFactory?: Address;
9
+ hostChainSlug?: string;
10
+ ipfsGateway?: string;
11
+ }
12
+ declare function getTaxVaultHostChainConfig(chainId: number): TaxVaultHostChainConfig;
13
+
14
+ export { type TaxVaultHostChainConfig as T, getTaxVaultHostChainConfig as g };
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@flapsdk/vault-runtime",
3
+ "version": "0.1.0",
4
+ "description": "Shared runtime surface for Flap Vault UI hosts, Workbench preview, and custom Vault components.",
5
+ "type": "module",
6
+ "sideEffects": false,
7
+ "main": "./sdk.js",
8
+ "module": "./sdk.js",
9
+ "types": "./sdk.d.mts",
10
+ "files": [
11
+ "*.js",
12
+ "*.d.mts",
13
+ "*.map",
14
+ "package.json",
15
+ "runtime-contract.json",
16
+ "README.md"
17
+ ],
18
+ "exports": {
19
+ "./sdk": {
20
+ "types": "./sdk.d.mts",
21
+ "import": "./sdk.js"
22
+ },
23
+ "./ui": {
24
+ "types": "./ui.d.mts",
25
+ "import": "./ui.js"
26
+ },
27
+ "./host": {
28
+ "types": "./host.d.mts",
29
+ "import": "./host.js"
30
+ },
31
+ "./server": {
32
+ "types": "./server.d.mts",
33
+ "import": "./server.js"
34
+ },
35
+ "./runtime-contract": "./runtime-contract.json",
36
+ "./package.json": "./package.json"
37
+ },
38
+ "peerDependencies": {
39
+ "react": "^18.3.1",
40
+ "react-dom": "^18.3.1",
41
+ "wagmi": "^2.12.14",
42
+ "viem": "^2.39.3",
43
+ "@tanstack/react-query": "^5.37.1",
44
+ "@rainbow-me/rainbowkit": "^2.1.7"
45
+ },
46
+ "publishConfig": {
47
+ "access": "public"
48
+ }
49
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "runtimeContractVersion": 1,
3
+ "packageName": "@flapsdk/vault-runtime",
4
+ "packageVersion": "0.1.0",
5
+ "stableAuthoringAliases": [
6
+ "@/src/sdk",
7
+ "@/src/ui"
8
+ ],
9
+ "componentFacingEntrypoints": [
10
+ "./sdk",
11
+ "./ui"
12
+ ],
13
+ "hostFacingEntrypoints": [
14
+ "./host",
15
+ "./server"
16
+ ],
17
+ "runtimeExternals": [
18
+ "react",
19
+ "react-dom",
20
+ "react/jsx-runtime",
21
+ "wagmi",
22
+ "viem",
23
+ "@tanstack/react-query",
24
+ "@rainbow-me/rainbowkit"
25
+ ],
26
+ "notes": "Vault source keeps authoring aliases. Workbench/flap.sh should rewrite or externalize those aliases to these package subpaths."
27
+ }
package/sdk.d.mts ADDED
@@ -0,0 +1,24 @@
1
+ import { B as VaultManifest, I as VaultRuntimeContextOverrides, r as HostRuntimeResult, G as VaultRuntimeContext, e as FlapI18n, f as FlapNotify, j as FlapVaultSdk, k as FlapWallet } from './types-CX7pLmiT.mjs';
2
+ export { A as ActionAvailabilityStage, a as Address, C as ContractReadRequest, b as ContractWriteRequest, F as FeeMode, d as FlapFeeVaultInfo, g as FlapTaxInfo, h as FlapTokenInfo, i as FlapVaultPortalInfo, M as ManifestBindingEntry, P as PaymentToken, S as SimulateResult, T as TokenMarketPhase, y as TxReceipt, V as VaultComponentProps, z as VaultHostContext, D as VaultRenderSurface, J as VaultRuntimeExtraConfig } from './types-CX7pLmiT.mjs';
3
+ export { Z as ZERO_ADDRESS, f as formatCountdown, d as formatPercentBps, e as formatTokenAmount, h as getTxErrorKind, i as handleTxError, j as isActionAvailableForPhase, k as isCustomVaultTaxToken, n as isValidAddress, t as parseTokenAmount, v as readTaxVaultHostContext, z as resolveTokenMarketPhase, B as shortenAddress, D as standardErc20Abi } from './txError-1lPZHdqI.mjs';
4
+ import * as React from 'react';
5
+ import { ReactNode } from 'react';
6
+ export { erc20Abi } from 'viem';
7
+
8
+ interface RuntimeProviderProps {
9
+ children: ReactNode;
10
+ manifest: VaultManifest;
11
+ i18n: Record<string, Record<string, string>>;
12
+ runtimeContext?: VaultRuntimeContextOverrides;
13
+ hostRuntimeResult?: HostRuntimeResult | null;
14
+ locale?: string;
15
+ }
16
+ declare function VaultRuntimeProvider({ children, manifest, i18n, runtimeContext: runtimeOverrides, hostRuntimeResult, locale }: RuntimeProviderProps): React.JSX.Element;
17
+ declare function useFlapSdk(): FlapVaultSdk;
18
+ declare function useVaultContext(): VaultRuntimeContext;
19
+ declare function useFlapI18n(): FlapI18n;
20
+ declare function useFlapNotify(): FlapNotify;
21
+
22
+ declare function useFlapWallet(): FlapWallet;
23
+
24
+ export { FlapI18n, FlapNotify, FlapVaultSdk, FlapWallet, VaultManifest, VaultRuntimeContext, VaultRuntimeContextOverrides, VaultRuntimeProvider, useVaultContext as useFlapChain, useFlapI18n, useFlapNotify, useFlapSdk, useFlapWallet, useVaultContext };