auctionflow-sdk 1.1.0 → 1.2.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/dist/index.d.mts +0 -3
- package/dist/index.d.ts +0 -3
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -83,9 +83,6 @@ declare class AuctionFlowSDK {
|
|
|
83
83
|
declare const AUCTION_ADDRESSES: Record<SupportedChainId, Address>;
|
|
84
84
|
declare const USDC_ADDRESSES: Record<SupportedChainId, Address>;
|
|
85
85
|
|
|
86
|
-
/**
|
|
87
|
-
* Off-chain bonding curve calculations (mirrors BondingCurve.sol)
|
|
88
|
-
*/
|
|
89
86
|
declare function calculateBuyCost(currentSupply: bigint, amount: bigint, basePrice: bigint, slope: bigint): bigint;
|
|
90
87
|
declare function spotPrice(currentSupply: bigint, basePrice: bigint, slope: bigint): bigint;
|
|
91
88
|
declare function calculateBuyQuote(currentSupply: bigint, amount: bigint, basePrice: bigint, slope: bigint, feeBps: bigint): {
|
package/dist/index.d.ts
CHANGED
|
@@ -83,9 +83,6 @@ declare class AuctionFlowSDK {
|
|
|
83
83
|
declare const AUCTION_ADDRESSES: Record<SupportedChainId, Address>;
|
|
84
84
|
declare const USDC_ADDRESSES: Record<SupportedChainId, Address>;
|
|
85
85
|
|
|
86
|
-
/**
|
|
87
|
-
* Off-chain bonding curve calculations (mirrors BondingCurve.sol)
|
|
88
|
-
*/
|
|
89
86
|
declare function calculateBuyCost(currentSupply: bigint, amount: bigint, basePrice: bigint, slope: bigint): bigint;
|
|
90
87
|
declare function spotPrice(currentSupply: bigint, basePrice: bigint, slope: bigint): bigint;
|
|
91
88
|
declare function calculateBuyQuote(currentSupply: bigint, amount: bigint, basePrice: bigint, slope: bigint, feeBps: bigint): {
|
package/dist/index.js
CHANGED
|
@@ -92,7 +92,7 @@ var AuctionBuilder = class {
|
|
|
92
92
|
|
|
93
93
|
// src/constants/addresses.ts
|
|
94
94
|
var AUCTION_ADDRESSES = {
|
|
95
|
-
84532: "
|
|
95
|
+
84532: "0x91519ca6c0b7a0e116a590c89a095199ff9f0054",
|
|
96
96
|
8453: "0x0000000000000000000000000000000000000000"
|
|
97
97
|
// not yet deployed
|
|
98
98
|
};
|
|
@@ -705,13 +705,14 @@ var tokenAuctionAbi = [
|
|
|
705
705
|
];
|
|
706
706
|
|
|
707
707
|
// src/utils/bonding-curve.ts
|
|
708
|
+
var TOKEN_SCALE = 10n ** 18n;
|
|
708
709
|
function calculateBuyCost(currentSupply, amount, basePrice, slope) {
|
|
709
|
-
const linearCost = basePrice * amount;
|
|
710
|
-
const curveCost = slope * amount * (2n * currentSupply + amount) / 2n;
|
|
710
|
+
const linearCost = basePrice * amount / TOKEN_SCALE;
|
|
711
|
+
const curveCost = slope * amount * (2n * currentSupply + amount) / (2n * TOKEN_SCALE * TOKEN_SCALE);
|
|
711
712
|
return linearCost + curveCost;
|
|
712
713
|
}
|
|
713
714
|
function spotPrice(currentSupply, basePrice, slope) {
|
|
714
|
-
return basePrice + slope * currentSupply;
|
|
715
|
+
return basePrice + slope * currentSupply / TOKEN_SCALE;
|
|
715
716
|
}
|
|
716
717
|
function calculateBuyQuote(currentSupply, amount, basePrice, slope, feeBps) {
|
|
717
718
|
const cost = calculateBuyCost(currentSupply, amount, basePrice, slope);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/client.ts","../src/builders/auction-builder.ts","../src/constants/addresses.ts","../src/abis/token-auction.ts","../src/utils/bonding-curve.ts","../src/utils/chains.ts","../src/types/index.ts"],"sourcesContent":["export { AuctionFlowSDK } from \"./client\";\nexport { AuctionBuilder } from \"./builders/auction-builder\";\nexport * from \"./types\";\nexport * from \"./constants/addresses\";\nexport * from \"./utils/bonding-curve\";\n","import {\n createPublicClient,\n http,\n PublicClient,\n WalletClient,\n Chain,\n Address,\n Hash,\n zeroAddress,\n} from \"viem\";\nimport { AuctionBuilder } from \"./builders/auction-builder\";\nimport { AuctionConfig, AuctionData, BuyQuote, SupportedChainId } from \"./types\";\nimport { AUCTION_ADDRESSES } from \"./constants/addresses\";\nimport { tokenAuctionAbi } from \"./abis/token-auction\";\nimport { calculateBuyQuote } from \"./utils/bonding-curve\";\nimport { CHAINS } from \"./utils/chains\";\n\n/** Shape of the nested tuple returned by the on-chain `auctions(id)` getter. */\ninterface RawAuction {\n config: {\n token: Address;\n paymentToken: Address;\n basePrice: bigint;\n slope: bigint;\n maxRaise: bigint;\n startTime: bigint;\n endTime: bigint;\n creator: Address;\n protocolFeeBps: bigint;\n };\n state: number;\n totalRaised: bigint;\n totalSold: bigint;\n}\n\nexport class AuctionFlowSDK {\n public readonly publicClient: PublicClient;\n public readonly walletClient?: WalletClient;\n public readonly auctionAddress: Address;\n public readonly chainId: SupportedChainId;\n private readonly chain: Chain;\n\n constructor(params: {\n chainId: SupportedChainId;\n rpcUrl: string;\n walletClient?: WalletClient;\n auctionAddress?: Address;\n }) {\n this.chainId = params.chainId;\n this.chain = CHAINS[params.chainId];\n this.auctionAddress = params.auctionAddress ?? AUCTION_ADDRESSES[params.chainId];\n\n if (params.auctionAddress === zeroAddress) {\n throw new Error(\n \"auctionAddress must not be the zero address.\"\n );\n }\n\n if (this.auctionAddress === zeroAddress) {\n throw new Error(\n `AuctionFlow has no canonical deployment on chain ${params.chainId}. ` +\n `Chains with a built-in deployment: ${Object.entries(AUCTION_ADDRESSES)\n .filter(([, addr]) => addr !== zeroAddress)\n .map(([id]) => id)\n .join(\", \")}. ` +\n `Pass \\`auctionAddress\\` to use your own deployment.`\n );\n }\n\n this.publicClient = createPublicClient({\n chain: this.chain,\n transport: http(params.rpcUrl),\n });\n\n this.walletClient = params.walletClient;\n }\n\n // Builder\n buildAuction(): AuctionBuilder {\n return new AuctionBuilder();\n }\n\n async createAuction(config: AuctionConfig): Promise<Hash> {\n if (!this.walletClient) throw new Error(\"Wallet client required\");\n\n const hash = await this.walletClient.writeContract({\n chain: this.chain,\n account: this.walletClient.account!,\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"createAuction\",\n args: [\n config.name,\n config.symbol,\n config.maxSupply,\n config.paymentToken,\n config.basePrice,\n config.slope,\n config.maxRaise,\n config.startTime,\n config.endTime,\n ],\n });\n\n return hash;\n }\n\n async buyTokens(auctionId: bigint, amount: bigint): Promise<Hash> {\n if (!this.walletClient) throw new Error(\"Wallet client required\");\n\n const hash = await this.walletClient.writeContract({\n chain: this.chain,\n account: this.walletClient.account!,\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"buyTokens\",\n args: [auctionId, amount],\n });\n\n return hash;\n }\n\n /**\n * Withdraw a completed auction's raised payment tokens to its creator.\n * Only the auction's creator can call this, and only once.\n */\n async withdrawProceeds(auctionId: bigint): Promise<Hash> {\n if (!this.walletClient) throw new Error(\"Wallet client required\");\n\n const hash = await this.walletClient.writeContract({\n chain: this.chain,\n account: this.walletClient.account!,\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"withdrawProceeds\",\n args: [auctionId],\n });\n\n return hash;\n }\n\n // Read: Has an auction's creator already withdrawn its proceeds?\n async hasWithdrawnProceeds(auctionId: bigint): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"proceedsWithdrawn\",\n args: [auctionId],\n }) as Promise<boolean>;\n }\n\n // Read: Get auction data\n async getAuction(auctionId: bigint): Promise<AuctionData> {\n const result = await this.publicClient.readContract({\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"auctions\",\n args: [auctionId],\n });\n\n // Parse the tuple returned by the contract\n return this.parseAuctionResult(auctionId, result as unknown as RawAuction);\n }\n\n // Read: Get buy quote (off-chain calculation)\n async getQuote(auctionId: bigint, amount: bigint): Promise<BuyQuote> {\n const auction = await this.getAuction(auctionId);\n const quote = calculateBuyQuote(\n auction.totalSold,\n amount,\n auction.basePrice,\n auction.slope,\n auction.protocolFeeBps\n );\n\n return {\n cost: quote.cost,\n fee: quote.fee,\n totalCost: quote.total,\n spotPriceAfter: quote.spotPriceAfter,\n };\n }\n\n // Read: Get spot price\n async getSpotPrice(auctionId: bigint): Promise<bigint> {\n return this.publicClient.readContract({\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"getSpotPrice\",\n args: [auctionId],\n }) as Promise<bigint>;\n }\n\n private parseAuctionResult(id: bigint, raw: RawAuction): AuctionData {\n // Mirrors the AuctionData struct returned by the public `auctions` getter.\n return {\n id,\n token: raw.config.token,\n paymentToken: raw.config.paymentToken,\n creator: raw.config.creator,\n basePrice: raw.config.basePrice,\n slope: raw.config.slope,\n maxRaise: raw.config.maxRaise,\n startTime: raw.config.startTime,\n endTime: raw.config.endTime,\n state: raw.state,\n totalRaised: raw.totalRaised,\n totalSold: raw.totalSold,\n protocolFeeBps: raw.config.protocolFeeBps,\n };\n }\n}\n","import { Address } from \"viem\";\nimport { AuctionConfig } from \"../types\";\n\nexport class AuctionBuilder {\n private config: Partial<AuctionConfig> = {};\n\n withToken(name: string, symbol: string, maxSupply: bigint): this {\n this.config.name = name;\n this.config.symbol = symbol;\n this.config.maxSupply = maxSupply;\n return this;\n }\n\n withPaymentToken(address: Address): this {\n this.config.paymentToken = address;\n return this;\n }\n\n withBondingCurve(basePrice: bigint, slope: bigint): this {\n this.config.basePrice = basePrice;\n this.config.slope = slope;\n return this;\n }\n\n withMaxRaise(maxRaise: bigint): this {\n this.config.maxRaise = maxRaise;\n return this;\n }\n\n withSchedule(startTime: bigint, endTime: bigint): this {\n this.config.startTime = startTime;\n this.config.endTime = endTime;\n return this;\n }\n\n build(): AuctionConfig {\n const required: (keyof AuctionConfig)[] = [\n \"name\", \"symbol\", \"maxSupply\", \"paymentToken\",\n \"basePrice\", \"slope\", \"maxRaise\", \"startTime\", \"endTime\",\n ];\n\n for (const key of required) {\n if (this.config[key] === undefined) {\n throw new Error(`Missing required field: ${key}`);\n }\n }\n\n const config = this.config as AuctionConfig;\n\n if (config.maxSupply <= 0n) throw new Error(\"maxSupply must be greater than 0\");\n if (config.basePrice <= 0n) throw new Error(\"basePrice must be greater than 0\");\n if (config.slope < 0n) throw new Error(\"slope must not be negative\");\n if (config.maxRaise <= 0n) throw new Error(\"maxRaise must be greater than 0\");\n if (config.startTime >= config.endTime) {\n throw new Error(\"startTime must be before endTime\");\n }\n\n return config;\n }\n}\n","import { Address } from \"viem\";\nimport { SupportedChainId } from \"../types\";\n\nexport const AUCTION_ADDRESSES: Record<SupportedChainId, Address> = {\n 84532: \"0xadc3e02e962eed3856d7bee0315f84d187be1fea\",\n 8453: \"0x0000000000000000000000000000000000000000\", // not yet deployed\n};\n\nexport const USDC_ADDRESSES: Record<SupportedChainId, Address> = {\n 84532: \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\",\n 8453: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n};\n","export const tokenAuctionAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"feeRecipient_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"defaultFeeBps_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"auctionCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"auctions\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"config\",\n \"type\": \"tuple\",\n \"internalType\": \"struct TokenAuction.AuctionConfig\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"contract AuctionToken\"\n },\n {\n \"name\": \"paymentToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"basePrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slope\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRaise\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum TokenAuction.AuctionState\"\n },\n {\n \"name\": \"totalRaised\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalSold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"buyTokens\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeAuction\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createAuction\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"maxSupply\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"paymentToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"basePrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slope\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRaise\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"defaultFeeBps\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getBuyCost\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cost\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getSpotPrice\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"proceedsWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"protocolFeeRecipient\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"userPurchases\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawProceeds\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AuctionCompleted\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalRaised\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalSold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AuctionCreated\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"paymentToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"basePrice\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slope\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRaise\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AuctionMigrated\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liquidityPool\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProceedsWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TokensPurchased\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"buyer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cost\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newTotalRaised\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newTotalSold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n] as const;\n","/**\n * Off-chain bonding curve calculations (mirrors BondingCurve.sol)\n */\nexport function calculateBuyCost(\n currentSupply: bigint,\n amount: bigint,\n basePrice: bigint,\n slope: bigint\n): bigint {\n const linearCost = basePrice * amount;\n const curveCost =\n (slope * amount * (2n * currentSupply + amount)) / 2n;\n return linearCost + curveCost;\n}\n\nexport function spotPrice(\n currentSupply: bigint,\n basePrice: bigint,\n slope: bigint\n): bigint {\n return basePrice + slope * currentSupply;\n}\n\nexport function calculateBuyQuote(\n currentSupply: bigint,\n amount: bigint,\n basePrice: bigint,\n slope: bigint,\n feeBps: bigint\n): { cost: bigint; fee: bigint; total: bigint; spotPriceAfter: bigint } {\n const cost = calculateBuyCost(currentSupply, amount, basePrice, slope);\n const fee = (cost * feeBps) / 10000n;\n return {\n cost,\n fee,\n total: cost + fee,\n spotPriceAfter: spotPrice(currentSupply + amount, basePrice, slope),\n };\n}\n","import { Chain } from \"viem\";\nimport { base, baseSepolia } from \"viem/chains\";\nimport { SupportedChainId } from \"../types\";\n\nexport const CHAINS: Record<SupportedChainId, Chain> = {\n 84532: baseSepolia,\n 8453: base,\n};\n\nexport function getChain(chainId: SupportedChainId): Chain {\n return CHAINS[chainId];\n}\n","import { Address, Hash } from \"viem\";\n\nexport enum AuctionState {\n PENDING = 0,\n ACTIVE = 1,\n COMPLETED = 2,\n MIGRATED = 3,\n}\n\nexport interface AuctionConfig {\n name: string;\n symbol: string;\n maxSupply: bigint;\n paymentToken: Address;\n basePrice: bigint;\n slope: bigint;\n maxRaise: bigint;\n startTime: bigint;\n endTime: bigint;\n}\n\nexport interface AuctionData {\n id: bigint;\n token: Address;\n paymentToken: Address;\n creator: Address;\n basePrice: bigint;\n slope: bigint;\n maxRaise: bigint;\n startTime: bigint;\n endTime: bigint;\n state: AuctionState;\n totalRaised: bigint;\n totalSold: bigint;\n protocolFeeBps: bigint;\n}\n\nexport interface BuyQuote {\n cost: bigint;\n fee: bigint;\n totalCost: bigint;\n spotPriceAfter: bigint;\n}\n\nexport interface TransactionResult {\n hash: Hash;\n}\n\nexport type SupportedChainId = 8453 | 84532; // Base, Base Sepolia\n"],"mappings":"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","names":["AuctionState"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/client.ts","../src/builders/auction-builder.ts","../src/constants/addresses.ts","../src/abis/token-auction.ts","../src/utils/bonding-curve.ts","../src/utils/chains.ts","../src/types/index.ts"],"sourcesContent":["export { AuctionFlowSDK } from \"./client\";\nexport { AuctionBuilder } from \"./builders/auction-builder\";\nexport * from \"./types\";\nexport * from \"./constants/addresses\";\nexport * from \"./utils/bonding-curve\";\n","import {\n createPublicClient,\n http,\n PublicClient,\n WalletClient,\n Chain,\n Address,\n Hash,\n zeroAddress,\n} from \"viem\";\nimport { AuctionBuilder } from \"./builders/auction-builder\";\nimport { AuctionConfig, AuctionData, BuyQuote, SupportedChainId } from \"./types\";\nimport { AUCTION_ADDRESSES } from \"./constants/addresses\";\nimport { tokenAuctionAbi } from \"./abis/token-auction\";\nimport { calculateBuyQuote } from \"./utils/bonding-curve\";\nimport { CHAINS } from \"./utils/chains\";\n\n/** Shape of the nested tuple returned by the on-chain `auctions(id)` getter. */\ninterface RawAuction {\n config: {\n token: Address;\n paymentToken: Address;\n basePrice: bigint;\n slope: bigint;\n maxRaise: bigint;\n startTime: bigint;\n endTime: bigint;\n creator: Address;\n protocolFeeBps: bigint;\n };\n state: number;\n totalRaised: bigint;\n totalSold: bigint;\n}\n\nexport class AuctionFlowSDK {\n public readonly publicClient: PublicClient;\n public readonly walletClient?: WalletClient;\n public readonly auctionAddress: Address;\n public readonly chainId: SupportedChainId;\n private readonly chain: Chain;\n\n constructor(params: {\n chainId: SupportedChainId;\n rpcUrl: string;\n walletClient?: WalletClient;\n auctionAddress?: Address;\n }) {\n this.chainId = params.chainId;\n this.chain = CHAINS[params.chainId];\n this.auctionAddress = params.auctionAddress ?? AUCTION_ADDRESSES[params.chainId];\n\n if (params.auctionAddress === zeroAddress) {\n throw new Error(\n \"auctionAddress must not be the zero address.\"\n );\n }\n\n if (this.auctionAddress === zeroAddress) {\n throw new Error(\n `AuctionFlow has no canonical deployment on chain ${params.chainId}. ` +\n `Chains with a built-in deployment: ${Object.entries(AUCTION_ADDRESSES)\n .filter(([, addr]) => addr !== zeroAddress)\n .map(([id]) => id)\n .join(\", \")}. ` +\n `Pass \\`auctionAddress\\` to use your own deployment.`\n );\n }\n\n this.publicClient = createPublicClient({\n chain: this.chain,\n transport: http(params.rpcUrl),\n });\n\n this.walletClient = params.walletClient;\n }\n\n // Builder\n buildAuction(): AuctionBuilder {\n return new AuctionBuilder();\n }\n\n async createAuction(config: AuctionConfig): Promise<Hash> {\n if (!this.walletClient) throw new Error(\"Wallet client required\");\n\n const hash = await this.walletClient.writeContract({\n chain: this.chain,\n account: this.walletClient.account!,\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"createAuction\",\n args: [\n config.name,\n config.symbol,\n config.maxSupply,\n config.paymentToken,\n config.basePrice,\n config.slope,\n config.maxRaise,\n config.startTime,\n config.endTime,\n ],\n });\n\n return hash;\n }\n\n async buyTokens(auctionId: bigint, amount: bigint): Promise<Hash> {\n if (!this.walletClient) throw new Error(\"Wallet client required\");\n\n const hash = await this.walletClient.writeContract({\n chain: this.chain,\n account: this.walletClient.account!,\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"buyTokens\",\n args: [auctionId, amount],\n });\n\n return hash;\n }\n\n /**\n * Withdraw a completed auction's raised payment tokens to its creator.\n * Only the auction's creator can call this, and only once.\n */\n async withdrawProceeds(auctionId: bigint): Promise<Hash> {\n if (!this.walletClient) throw new Error(\"Wallet client required\");\n\n const hash = await this.walletClient.writeContract({\n chain: this.chain,\n account: this.walletClient.account!,\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"withdrawProceeds\",\n args: [auctionId],\n });\n\n return hash;\n }\n\n // Read: Has an auction's creator already withdrawn its proceeds?\n async hasWithdrawnProceeds(auctionId: bigint): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"proceedsWithdrawn\",\n args: [auctionId],\n }) as Promise<boolean>;\n }\n\n // Read: Get auction data\n async getAuction(auctionId: bigint): Promise<AuctionData> {\n const result = await this.publicClient.readContract({\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"auctions\",\n args: [auctionId],\n });\n\n // Parse the tuple returned by the contract\n return this.parseAuctionResult(auctionId, result as unknown as RawAuction);\n }\n\n // Read: Get buy quote (off-chain calculation)\n async getQuote(auctionId: bigint, amount: bigint): Promise<BuyQuote> {\n const auction = await this.getAuction(auctionId);\n const quote = calculateBuyQuote(\n auction.totalSold,\n amount,\n auction.basePrice,\n auction.slope,\n auction.protocolFeeBps\n );\n\n return {\n cost: quote.cost,\n fee: quote.fee,\n totalCost: quote.total,\n spotPriceAfter: quote.spotPriceAfter,\n };\n }\n\n // Read: Get spot price\n async getSpotPrice(auctionId: bigint): Promise<bigint> {\n return this.publicClient.readContract({\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"getSpotPrice\",\n args: [auctionId],\n }) as Promise<bigint>;\n }\n\n private parseAuctionResult(id: bigint, raw: RawAuction): AuctionData {\n // Mirrors the AuctionData struct returned by the public `auctions` getter.\n return {\n id,\n token: raw.config.token,\n paymentToken: raw.config.paymentToken,\n creator: raw.config.creator,\n basePrice: raw.config.basePrice,\n slope: raw.config.slope,\n maxRaise: raw.config.maxRaise,\n startTime: raw.config.startTime,\n endTime: raw.config.endTime,\n state: raw.state,\n totalRaised: raw.totalRaised,\n totalSold: raw.totalSold,\n protocolFeeBps: raw.config.protocolFeeBps,\n };\n }\n}\n","import { Address } from \"viem\";\nimport { AuctionConfig } from \"../types\";\n\nexport class AuctionBuilder {\n private config: Partial<AuctionConfig> = {};\n\n withToken(name: string, symbol: string, maxSupply: bigint): this {\n this.config.name = name;\n this.config.symbol = symbol;\n this.config.maxSupply = maxSupply;\n return this;\n }\n\n withPaymentToken(address: Address): this {\n this.config.paymentToken = address;\n return this;\n }\n\n withBondingCurve(basePrice: bigint, slope: bigint): this {\n this.config.basePrice = basePrice;\n this.config.slope = slope;\n return this;\n }\n\n withMaxRaise(maxRaise: bigint): this {\n this.config.maxRaise = maxRaise;\n return this;\n }\n\n withSchedule(startTime: bigint, endTime: bigint): this {\n this.config.startTime = startTime;\n this.config.endTime = endTime;\n return this;\n }\n\n build(): AuctionConfig {\n const required: (keyof AuctionConfig)[] = [\n \"name\", \"symbol\", \"maxSupply\", \"paymentToken\",\n \"basePrice\", \"slope\", \"maxRaise\", \"startTime\", \"endTime\",\n ];\n\n for (const key of required) {\n if (this.config[key] === undefined) {\n throw new Error(`Missing required field: ${key}`);\n }\n }\n\n const config = this.config as AuctionConfig;\n\n if (config.maxSupply <= 0n) throw new Error(\"maxSupply must be greater than 0\");\n if (config.basePrice <= 0n) throw new Error(\"basePrice must be greater than 0\");\n if (config.slope < 0n) throw new Error(\"slope must not be negative\");\n if (config.maxRaise <= 0n) throw new Error(\"maxRaise must be greater than 0\");\n if (config.startTime >= config.endTime) {\n throw new Error(\"startTime must be before endTime\");\n }\n\n return config;\n }\n}\n","import { Address } from \"viem\";\nimport { SupportedChainId } from \"../types\";\n\nexport const AUCTION_ADDRESSES: Record<SupportedChainId, Address> = {\n 84532: \"0x91519ca6c0b7a0e116a590c89a095199ff9f0054\",\n 8453: \"0x0000000000000000000000000000000000000000\", // not yet deployed\n};\n\nexport const USDC_ADDRESSES: Record<SupportedChainId, Address> = {\n 84532: \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\",\n 8453: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n};\n","export const tokenAuctionAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"feeRecipient_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"defaultFeeBps_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"auctionCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"auctions\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"config\",\n \"type\": \"tuple\",\n \"internalType\": \"struct TokenAuction.AuctionConfig\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"contract AuctionToken\"\n },\n {\n \"name\": \"paymentToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"basePrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slope\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRaise\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum TokenAuction.AuctionState\"\n },\n {\n \"name\": \"totalRaised\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalSold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"buyTokens\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeAuction\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createAuction\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"maxSupply\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"paymentToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"basePrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slope\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRaise\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"defaultFeeBps\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getBuyCost\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cost\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getSpotPrice\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"proceedsWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"protocolFeeRecipient\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"userPurchases\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawProceeds\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AuctionCompleted\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalRaised\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalSold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AuctionCreated\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"paymentToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"basePrice\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slope\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRaise\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AuctionMigrated\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liquidityPool\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProceedsWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TokensPurchased\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"buyer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cost\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newTotalRaised\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newTotalSold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n] as const;\n","/**\n * Off-chain bonding curve calculations (mirrors BondingCurve.sol)\n *\n * `basePrice` and `slope` are denominated in payment-token units per *whole*\n * token, while supplies and amounts are in token wei (18 decimals). Every term\n * is normalised by TOKEN_SCALE so results come back in payment-token units.\n */\nconst TOKEN_SCALE = 10n ** 18n;\n\nexport function calculateBuyCost(\n currentSupply: bigint,\n amount: bigint,\n basePrice: bigint,\n slope: bigint\n): bigint {\n const linearCost = (basePrice * amount) / TOKEN_SCALE;\n const curveCost =\n (slope * amount * (2n * currentSupply + amount)) /\n (2n * TOKEN_SCALE * TOKEN_SCALE);\n return linearCost + curveCost;\n}\n\nexport function spotPrice(\n currentSupply: bigint,\n basePrice: bigint,\n slope: bigint\n): bigint {\n return basePrice + (slope * currentSupply) / TOKEN_SCALE;\n}\n\nexport function calculateBuyQuote(\n currentSupply: bigint,\n amount: bigint,\n basePrice: bigint,\n slope: bigint,\n feeBps: bigint\n): { cost: bigint; fee: bigint; total: bigint; spotPriceAfter: bigint } {\n const cost = calculateBuyCost(currentSupply, amount, basePrice, slope);\n const fee = (cost * feeBps) / 10000n;\n return {\n cost,\n fee,\n total: cost + fee,\n spotPriceAfter: spotPrice(currentSupply + amount, basePrice, slope),\n };\n}\n","import { Chain } from \"viem\";\nimport { base, baseSepolia } from \"viem/chains\";\nimport { SupportedChainId } from \"../types\";\n\nexport const CHAINS: Record<SupportedChainId, Chain> = {\n 84532: baseSepolia,\n 8453: base,\n};\n\nexport function getChain(chainId: SupportedChainId): Chain {\n return CHAINS[chainId];\n}\n","import { Address, Hash } from \"viem\";\n\nexport enum AuctionState {\n PENDING = 0,\n ACTIVE = 1,\n COMPLETED = 2,\n MIGRATED = 3,\n}\n\nexport interface AuctionConfig {\n name: string;\n symbol: string;\n maxSupply: bigint;\n paymentToken: Address;\n basePrice: bigint;\n slope: bigint;\n maxRaise: bigint;\n startTime: bigint;\n endTime: bigint;\n}\n\nexport interface AuctionData {\n id: bigint;\n token: Address;\n paymentToken: Address;\n creator: Address;\n basePrice: bigint;\n slope: bigint;\n maxRaise: bigint;\n startTime: bigint;\n endTime: bigint;\n state: AuctionState;\n totalRaised: bigint;\n totalSold: bigint;\n protocolFeeBps: bigint;\n}\n\nexport interface BuyQuote {\n cost: bigint;\n fee: bigint;\n totalCost: bigint;\n spotPriceAfter: bigint;\n}\n\nexport interface TransactionResult {\n hash: Hash;\n}\n\nexport type SupportedChainId = 8453 | 84532; // Base, Base Sepolia\n"],"mappings":"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","names":["AuctionState"]}
|
package/dist/index.mjs
CHANGED
|
@@ -63,7 +63,7 @@ var AuctionBuilder = class {
|
|
|
63
63
|
|
|
64
64
|
// src/constants/addresses.ts
|
|
65
65
|
var AUCTION_ADDRESSES = {
|
|
66
|
-
84532: "
|
|
66
|
+
84532: "0x91519ca6c0b7a0e116a590c89a095199ff9f0054",
|
|
67
67
|
8453: "0x0000000000000000000000000000000000000000"
|
|
68
68
|
// not yet deployed
|
|
69
69
|
};
|
|
@@ -676,13 +676,14 @@ var tokenAuctionAbi = [
|
|
|
676
676
|
];
|
|
677
677
|
|
|
678
678
|
// src/utils/bonding-curve.ts
|
|
679
|
+
var TOKEN_SCALE = 10n ** 18n;
|
|
679
680
|
function calculateBuyCost(currentSupply, amount, basePrice, slope) {
|
|
680
|
-
const linearCost = basePrice * amount;
|
|
681
|
-
const curveCost = slope * amount * (2n * currentSupply + amount) / 2n;
|
|
681
|
+
const linearCost = basePrice * amount / TOKEN_SCALE;
|
|
682
|
+
const curveCost = slope * amount * (2n * currentSupply + amount) / (2n * TOKEN_SCALE * TOKEN_SCALE);
|
|
682
683
|
return linearCost + curveCost;
|
|
683
684
|
}
|
|
684
685
|
function spotPrice(currentSupply, basePrice, slope) {
|
|
685
|
-
return basePrice + slope * currentSupply;
|
|
686
|
+
return basePrice + slope * currentSupply / TOKEN_SCALE;
|
|
686
687
|
}
|
|
687
688
|
function calculateBuyQuote(currentSupply, amount, basePrice, slope, feeBps) {
|
|
688
689
|
const cost = calculateBuyCost(currentSupply, amount, basePrice, slope);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client.ts","../src/builders/auction-builder.ts","../src/constants/addresses.ts","../src/abis/token-auction.ts","../src/utils/bonding-curve.ts","../src/utils/chains.ts","../src/types/index.ts"],"sourcesContent":["import {\n createPublicClient,\n http,\n PublicClient,\n WalletClient,\n Chain,\n Address,\n Hash,\n zeroAddress,\n} from \"viem\";\nimport { AuctionBuilder } from \"./builders/auction-builder\";\nimport { AuctionConfig, AuctionData, BuyQuote, SupportedChainId } from \"./types\";\nimport { AUCTION_ADDRESSES } from \"./constants/addresses\";\nimport { tokenAuctionAbi } from \"./abis/token-auction\";\nimport { calculateBuyQuote } from \"./utils/bonding-curve\";\nimport { CHAINS } from \"./utils/chains\";\n\n/** Shape of the nested tuple returned by the on-chain `auctions(id)` getter. */\ninterface RawAuction {\n config: {\n token: Address;\n paymentToken: Address;\n basePrice: bigint;\n slope: bigint;\n maxRaise: bigint;\n startTime: bigint;\n endTime: bigint;\n creator: Address;\n protocolFeeBps: bigint;\n };\n state: number;\n totalRaised: bigint;\n totalSold: bigint;\n}\n\nexport class AuctionFlowSDK {\n public readonly publicClient: PublicClient;\n public readonly walletClient?: WalletClient;\n public readonly auctionAddress: Address;\n public readonly chainId: SupportedChainId;\n private readonly chain: Chain;\n\n constructor(params: {\n chainId: SupportedChainId;\n rpcUrl: string;\n walletClient?: WalletClient;\n auctionAddress?: Address;\n }) {\n this.chainId = params.chainId;\n this.chain = CHAINS[params.chainId];\n this.auctionAddress = params.auctionAddress ?? AUCTION_ADDRESSES[params.chainId];\n\n if (params.auctionAddress === zeroAddress) {\n throw new Error(\n \"auctionAddress must not be the zero address.\"\n );\n }\n\n if (this.auctionAddress === zeroAddress) {\n throw new Error(\n `AuctionFlow has no canonical deployment on chain ${params.chainId}. ` +\n `Chains with a built-in deployment: ${Object.entries(AUCTION_ADDRESSES)\n .filter(([, addr]) => addr !== zeroAddress)\n .map(([id]) => id)\n .join(\", \")}. ` +\n `Pass \\`auctionAddress\\` to use your own deployment.`\n );\n }\n\n this.publicClient = createPublicClient({\n chain: this.chain,\n transport: http(params.rpcUrl),\n });\n\n this.walletClient = params.walletClient;\n }\n\n // Builder\n buildAuction(): AuctionBuilder {\n return new AuctionBuilder();\n }\n\n async createAuction(config: AuctionConfig): Promise<Hash> {\n if (!this.walletClient) throw new Error(\"Wallet client required\");\n\n const hash = await this.walletClient.writeContract({\n chain: this.chain,\n account: this.walletClient.account!,\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"createAuction\",\n args: [\n config.name,\n config.symbol,\n config.maxSupply,\n config.paymentToken,\n config.basePrice,\n config.slope,\n config.maxRaise,\n config.startTime,\n config.endTime,\n ],\n });\n\n return hash;\n }\n\n async buyTokens(auctionId: bigint, amount: bigint): Promise<Hash> {\n if (!this.walletClient) throw new Error(\"Wallet client required\");\n\n const hash = await this.walletClient.writeContract({\n chain: this.chain,\n account: this.walletClient.account!,\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"buyTokens\",\n args: [auctionId, amount],\n });\n\n return hash;\n }\n\n /**\n * Withdraw a completed auction's raised payment tokens to its creator.\n * Only the auction's creator can call this, and only once.\n */\n async withdrawProceeds(auctionId: bigint): Promise<Hash> {\n if (!this.walletClient) throw new Error(\"Wallet client required\");\n\n const hash = await this.walletClient.writeContract({\n chain: this.chain,\n account: this.walletClient.account!,\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"withdrawProceeds\",\n args: [auctionId],\n });\n\n return hash;\n }\n\n // Read: Has an auction's creator already withdrawn its proceeds?\n async hasWithdrawnProceeds(auctionId: bigint): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"proceedsWithdrawn\",\n args: [auctionId],\n }) as Promise<boolean>;\n }\n\n // Read: Get auction data\n async getAuction(auctionId: bigint): Promise<AuctionData> {\n const result = await this.publicClient.readContract({\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"auctions\",\n args: [auctionId],\n });\n\n // Parse the tuple returned by the contract\n return this.parseAuctionResult(auctionId, result as unknown as RawAuction);\n }\n\n // Read: Get buy quote (off-chain calculation)\n async getQuote(auctionId: bigint, amount: bigint): Promise<BuyQuote> {\n const auction = await this.getAuction(auctionId);\n const quote = calculateBuyQuote(\n auction.totalSold,\n amount,\n auction.basePrice,\n auction.slope,\n auction.protocolFeeBps\n );\n\n return {\n cost: quote.cost,\n fee: quote.fee,\n totalCost: quote.total,\n spotPriceAfter: quote.spotPriceAfter,\n };\n }\n\n // Read: Get spot price\n async getSpotPrice(auctionId: bigint): Promise<bigint> {\n return this.publicClient.readContract({\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"getSpotPrice\",\n args: [auctionId],\n }) as Promise<bigint>;\n }\n\n private parseAuctionResult(id: bigint, raw: RawAuction): AuctionData {\n // Mirrors the AuctionData struct returned by the public `auctions` getter.\n return {\n id,\n token: raw.config.token,\n paymentToken: raw.config.paymentToken,\n creator: raw.config.creator,\n basePrice: raw.config.basePrice,\n slope: raw.config.slope,\n maxRaise: raw.config.maxRaise,\n startTime: raw.config.startTime,\n endTime: raw.config.endTime,\n state: raw.state,\n totalRaised: raw.totalRaised,\n totalSold: raw.totalSold,\n protocolFeeBps: raw.config.protocolFeeBps,\n };\n }\n}\n","import { Address } from \"viem\";\nimport { AuctionConfig } from \"../types\";\n\nexport class AuctionBuilder {\n private config: Partial<AuctionConfig> = {};\n\n withToken(name: string, symbol: string, maxSupply: bigint): this {\n this.config.name = name;\n this.config.symbol = symbol;\n this.config.maxSupply = maxSupply;\n return this;\n }\n\n withPaymentToken(address: Address): this {\n this.config.paymentToken = address;\n return this;\n }\n\n withBondingCurve(basePrice: bigint, slope: bigint): this {\n this.config.basePrice = basePrice;\n this.config.slope = slope;\n return this;\n }\n\n withMaxRaise(maxRaise: bigint): this {\n this.config.maxRaise = maxRaise;\n return this;\n }\n\n withSchedule(startTime: bigint, endTime: bigint): this {\n this.config.startTime = startTime;\n this.config.endTime = endTime;\n return this;\n }\n\n build(): AuctionConfig {\n const required: (keyof AuctionConfig)[] = [\n \"name\", \"symbol\", \"maxSupply\", \"paymentToken\",\n \"basePrice\", \"slope\", \"maxRaise\", \"startTime\", \"endTime\",\n ];\n\n for (const key of required) {\n if (this.config[key] === undefined) {\n throw new Error(`Missing required field: ${key}`);\n }\n }\n\n const config = this.config as AuctionConfig;\n\n if (config.maxSupply <= 0n) throw new Error(\"maxSupply must be greater than 0\");\n if (config.basePrice <= 0n) throw new Error(\"basePrice must be greater than 0\");\n if (config.slope < 0n) throw new Error(\"slope must not be negative\");\n if (config.maxRaise <= 0n) throw new Error(\"maxRaise must be greater than 0\");\n if (config.startTime >= config.endTime) {\n throw new Error(\"startTime must be before endTime\");\n }\n\n return config;\n }\n}\n","import { Address } from \"viem\";\nimport { SupportedChainId } from \"../types\";\n\nexport const AUCTION_ADDRESSES: Record<SupportedChainId, Address> = {\n 84532: \"0xadc3e02e962eed3856d7bee0315f84d187be1fea\",\n 8453: \"0x0000000000000000000000000000000000000000\", // not yet deployed\n};\n\nexport const USDC_ADDRESSES: Record<SupportedChainId, Address> = {\n 84532: \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\",\n 8453: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n};\n","export const tokenAuctionAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"feeRecipient_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"defaultFeeBps_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"auctionCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"auctions\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"config\",\n \"type\": \"tuple\",\n \"internalType\": \"struct TokenAuction.AuctionConfig\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"contract AuctionToken\"\n },\n {\n \"name\": \"paymentToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"basePrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slope\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRaise\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum TokenAuction.AuctionState\"\n },\n {\n \"name\": \"totalRaised\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalSold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"buyTokens\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeAuction\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createAuction\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"maxSupply\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"paymentToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"basePrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slope\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRaise\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"defaultFeeBps\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getBuyCost\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cost\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getSpotPrice\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"proceedsWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"protocolFeeRecipient\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"userPurchases\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawProceeds\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AuctionCompleted\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalRaised\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalSold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AuctionCreated\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"paymentToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"basePrice\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slope\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRaise\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AuctionMigrated\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liquidityPool\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProceedsWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TokensPurchased\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"buyer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cost\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newTotalRaised\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newTotalSold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n] as const;\n","/**\n * Off-chain bonding curve calculations (mirrors BondingCurve.sol)\n */\nexport function calculateBuyCost(\n currentSupply: bigint,\n amount: bigint,\n basePrice: bigint,\n slope: bigint\n): bigint {\n const linearCost = basePrice * amount;\n const curveCost =\n (slope * amount * (2n * currentSupply + amount)) / 2n;\n return linearCost + curveCost;\n}\n\nexport function spotPrice(\n currentSupply: bigint,\n basePrice: bigint,\n slope: bigint\n): bigint {\n return basePrice + slope * currentSupply;\n}\n\nexport function calculateBuyQuote(\n currentSupply: bigint,\n amount: bigint,\n basePrice: bigint,\n slope: bigint,\n feeBps: bigint\n): { cost: bigint; fee: bigint; total: bigint; spotPriceAfter: bigint } {\n const cost = calculateBuyCost(currentSupply, amount, basePrice, slope);\n const fee = (cost * feeBps) / 10000n;\n return {\n cost,\n fee,\n total: cost + fee,\n spotPriceAfter: spotPrice(currentSupply + amount, basePrice, slope),\n };\n}\n","import { Chain } from \"viem\";\nimport { base, baseSepolia } from \"viem/chains\";\nimport { SupportedChainId } from \"../types\";\n\nexport const CHAINS: Record<SupportedChainId, Chain> = {\n 84532: baseSepolia,\n 8453: base,\n};\n\nexport function getChain(chainId: SupportedChainId): Chain {\n return CHAINS[chainId];\n}\n","import { Address, Hash } from \"viem\";\n\nexport enum AuctionState {\n PENDING = 0,\n ACTIVE = 1,\n COMPLETED = 2,\n MIGRATED = 3,\n}\n\nexport interface AuctionConfig {\n name: string;\n symbol: string;\n maxSupply: bigint;\n paymentToken: Address;\n basePrice: bigint;\n slope: bigint;\n maxRaise: bigint;\n startTime: bigint;\n endTime: bigint;\n}\n\nexport interface AuctionData {\n id: bigint;\n token: Address;\n paymentToken: Address;\n creator: Address;\n basePrice: bigint;\n slope: bigint;\n maxRaise: bigint;\n startTime: bigint;\n endTime: bigint;\n state: AuctionState;\n totalRaised: bigint;\n totalSold: bigint;\n protocolFeeBps: bigint;\n}\n\nexport interface BuyQuote {\n cost: bigint;\n fee: bigint;\n totalCost: bigint;\n spotPriceAfter: bigint;\n}\n\nexport interface TransactionResult {\n hash: Hash;\n}\n\nexport type SupportedChainId = 8453 | 84532; // Base, Base Sepolia\n"],"mappings":"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","names":["AuctionState"]}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/builders/auction-builder.ts","../src/constants/addresses.ts","../src/abis/token-auction.ts","../src/utils/bonding-curve.ts","../src/utils/chains.ts","../src/types/index.ts"],"sourcesContent":["import {\n createPublicClient,\n http,\n PublicClient,\n WalletClient,\n Chain,\n Address,\n Hash,\n zeroAddress,\n} from \"viem\";\nimport { AuctionBuilder } from \"./builders/auction-builder\";\nimport { AuctionConfig, AuctionData, BuyQuote, SupportedChainId } from \"./types\";\nimport { AUCTION_ADDRESSES } from \"./constants/addresses\";\nimport { tokenAuctionAbi } from \"./abis/token-auction\";\nimport { calculateBuyQuote } from \"./utils/bonding-curve\";\nimport { CHAINS } from \"./utils/chains\";\n\n/** Shape of the nested tuple returned by the on-chain `auctions(id)` getter. */\ninterface RawAuction {\n config: {\n token: Address;\n paymentToken: Address;\n basePrice: bigint;\n slope: bigint;\n maxRaise: bigint;\n startTime: bigint;\n endTime: bigint;\n creator: Address;\n protocolFeeBps: bigint;\n };\n state: number;\n totalRaised: bigint;\n totalSold: bigint;\n}\n\nexport class AuctionFlowSDK {\n public readonly publicClient: PublicClient;\n public readonly walletClient?: WalletClient;\n public readonly auctionAddress: Address;\n public readonly chainId: SupportedChainId;\n private readonly chain: Chain;\n\n constructor(params: {\n chainId: SupportedChainId;\n rpcUrl: string;\n walletClient?: WalletClient;\n auctionAddress?: Address;\n }) {\n this.chainId = params.chainId;\n this.chain = CHAINS[params.chainId];\n this.auctionAddress = params.auctionAddress ?? AUCTION_ADDRESSES[params.chainId];\n\n if (params.auctionAddress === zeroAddress) {\n throw new Error(\n \"auctionAddress must not be the zero address.\"\n );\n }\n\n if (this.auctionAddress === zeroAddress) {\n throw new Error(\n `AuctionFlow has no canonical deployment on chain ${params.chainId}. ` +\n `Chains with a built-in deployment: ${Object.entries(AUCTION_ADDRESSES)\n .filter(([, addr]) => addr !== zeroAddress)\n .map(([id]) => id)\n .join(\", \")}. ` +\n `Pass \\`auctionAddress\\` to use your own deployment.`\n );\n }\n\n this.publicClient = createPublicClient({\n chain: this.chain,\n transport: http(params.rpcUrl),\n });\n\n this.walletClient = params.walletClient;\n }\n\n // Builder\n buildAuction(): AuctionBuilder {\n return new AuctionBuilder();\n }\n\n async createAuction(config: AuctionConfig): Promise<Hash> {\n if (!this.walletClient) throw new Error(\"Wallet client required\");\n\n const hash = await this.walletClient.writeContract({\n chain: this.chain,\n account: this.walletClient.account!,\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"createAuction\",\n args: [\n config.name,\n config.symbol,\n config.maxSupply,\n config.paymentToken,\n config.basePrice,\n config.slope,\n config.maxRaise,\n config.startTime,\n config.endTime,\n ],\n });\n\n return hash;\n }\n\n async buyTokens(auctionId: bigint, amount: bigint): Promise<Hash> {\n if (!this.walletClient) throw new Error(\"Wallet client required\");\n\n const hash = await this.walletClient.writeContract({\n chain: this.chain,\n account: this.walletClient.account!,\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"buyTokens\",\n args: [auctionId, amount],\n });\n\n return hash;\n }\n\n /**\n * Withdraw a completed auction's raised payment tokens to its creator.\n * Only the auction's creator can call this, and only once.\n */\n async withdrawProceeds(auctionId: bigint): Promise<Hash> {\n if (!this.walletClient) throw new Error(\"Wallet client required\");\n\n const hash = await this.walletClient.writeContract({\n chain: this.chain,\n account: this.walletClient.account!,\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"withdrawProceeds\",\n args: [auctionId],\n });\n\n return hash;\n }\n\n // Read: Has an auction's creator already withdrawn its proceeds?\n async hasWithdrawnProceeds(auctionId: bigint): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"proceedsWithdrawn\",\n args: [auctionId],\n }) as Promise<boolean>;\n }\n\n // Read: Get auction data\n async getAuction(auctionId: bigint): Promise<AuctionData> {\n const result = await this.publicClient.readContract({\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"auctions\",\n args: [auctionId],\n });\n\n // Parse the tuple returned by the contract\n return this.parseAuctionResult(auctionId, result as unknown as RawAuction);\n }\n\n // Read: Get buy quote (off-chain calculation)\n async getQuote(auctionId: bigint, amount: bigint): Promise<BuyQuote> {\n const auction = await this.getAuction(auctionId);\n const quote = calculateBuyQuote(\n auction.totalSold,\n amount,\n auction.basePrice,\n auction.slope,\n auction.protocolFeeBps\n );\n\n return {\n cost: quote.cost,\n fee: quote.fee,\n totalCost: quote.total,\n spotPriceAfter: quote.spotPriceAfter,\n };\n }\n\n // Read: Get spot price\n async getSpotPrice(auctionId: bigint): Promise<bigint> {\n return this.publicClient.readContract({\n address: this.auctionAddress,\n abi: tokenAuctionAbi,\n functionName: \"getSpotPrice\",\n args: [auctionId],\n }) as Promise<bigint>;\n }\n\n private parseAuctionResult(id: bigint, raw: RawAuction): AuctionData {\n // Mirrors the AuctionData struct returned by the public `auctions` getter.\n return {\n id,\n token: raw.config.token,\n paymentToken: raw.config.paymentToken,\n creator: raw.config.creator,\n basePrice: raw.config.basePrice,\n slope: raw.config.slope,\n maxRaise: raw.config.maxRaise,\n startTime: raw.config.startTime,\n endTime: raw.config.endTime,\n state: raw.state,\n totalRaised: raw.totalRaised,\n totalSold: raw.totalSold,\n protocolFeeBps: raw.config.protocolFeeBps,\n };\n }\n}\n","import { Address } from \"viem\";\nimport { AuctionConfig } from \"../types\";\n\nexport class AuctionBuilder {\n private config: Partial<AuctionConfig> = {};\n\n withToken(name: string, symbol: string, maxSupply: bigint): this {\n this.config.name = name;\n this.config.symbol = symbol;\n this.config.maxSupply = maxSupply;\n return this;\n }\n\n withPaymentToken(address: Address): this {\n this.config.paymentToken = address;\n return this;\n }\n\n withBondingCurve(basePrice: bigint, slope: bigint): this {\n this.config.basePrice = basePrice;\n this.config.slope = slope;\n return this;\n }\n\n withMaxRaise(maxRaise: bigint): this {\n this.config.maxRaise = maxRaise;\n return this;\n }\n\n withSchedule(startTime: bigint, endTime: bigint): this {\n this.config.startTime = startTime;\n this.config.endTime = endTime;\n return this;\n }\n\n build(): AuctionConfig {\n const required: (keyof AuctionConfig)[] = [\n \"name\", \"symbol\", \"maxSupply\", \"paymentToken\",\n \"basePrice\", \"slope\", \"maxRaise\", \"startTime\", \"endTime\",\n ];\n\n for (const key of required) {\n if (this.config[key] === undefined) {\n throw new Error(`Missing required field: ${key}`);\n }\n }\n\n const config = this.config as AuctionConfig;\n\n if (config.maxSupply <= 0n) throw new Error(\"maxSupply must be greater than 0\");\n if (config.basePrice <= 0n) throw new Error(\"basePrice must be greater than 0\");\n if (config.slope < 0n) throw new Error(\"slope must not be negative\");\n if (config.maxRaise <= 0n) throw new Error(\"maxRaise must be greater than 0\");\n if (config.startTime >= config.endTime) {\n throw new Error(\"startTime must be before endTime\");\n }\n\n return config;\n }\n}\n","import { Address } from \"viem\";\nimport { SupportedChainId } from \"../types\";\n\nexport const AUCTION_ADDRESSES: Record<SupportedChainId, Address> = {\n 84532: \"0x91519ca6c0b7a0e116a590c89a095199ff9f0054\",\n 8453: \"0x0000000000000000000000000000000000000000\", // not yet deployed\n};\n\nexport const USDC_ADDRESSES: Record<SupportedChainId, Address> = {\n 84532: \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\",\n 8453: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n};\n","export const tokenAuctionAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"feeRecipient_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"defaultFeeBps_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"auctionCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"auctions\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"config\",\n \"type\": \"tuple\",\n \"internalType\": \"struct TokenAuction.AuctionConfig\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"contract AuctionToken\"\n },\n {\n \"name\": \"paymentToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"basePrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slope\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRaise\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"state\",\n \"type\": \"uint8\",\n \"internalType\": \"enum TokenAuction.AuctionState\"\n },\n {\n \"name\": \"totalRaised\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalSold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"buyTokens\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeAuction\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createAuction\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"maxSupply\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"paymentToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"basePrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slope\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRaise\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"defaultFeeBps\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getBuyCost\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cost\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getSpotPrice\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"proceedsWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"protocolFeeRecipient\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"userPurchases\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawProceeds\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AuctionCompleted\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalRaised\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalSold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AuctionCreated\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"paymentToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"basePrice\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slope\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxRaise\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AuctionMigrated\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liquidityPool\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProceedsWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TokensPurchased\",\n \"inputs\": [\n {\n \"name\": \"auctionId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"buyer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cost\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newTotalRaised\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newTotalSold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n] as const;\n","/**\n * Off-chain bonding curve calculations (mirrors BondingCurve.sol)\n *\n * `basePrice` and `slope` are denominated in payment-token units per *whole*\n * token, while supplies and amounts are in token wei (18 decimals). Every term\n * is normalised by TOKEN_SCALE so results come back in payment-token units.\n */\nconst TOKEN_SCALE = 10n ** 18n;\n\nexport function calculateBuyCost(\n currentSupply: bigint,\n amount: bigint,\n basePrice: bigint,\n slope: bigint\n): bigint {\n const linearCost = (basePrice * amount) / TOKEN_SCALE;\n const curveCost =\n (slope * amount * (2n * currentSupply + amount)) /\n (2n * TOKEN_SCALE * TOKEN_SCALE);\n return linearCost + curveCost;\n}\n\nexport function spotPrice(\n currentSupply: bigint,\n basePrice: bigint,\n slope: bigint\n): bigint {\n return basePrice + (slope * currentSupply) / TOKEN_SCALE;\n}\n\nexport function calculateBuyQuote(\n currentSupply: bigint,\n amount: bigint,\n basePrice: bigint,\n slope: bigint,\n feeBps: bigint\n): { cost: bigint; fee: bigint; total: bigint; spotPriceAfter: bigint } {\n const cost = calculateBuyCost(currentSupply, amount, basePrice, slope);\n const fee = (cost * feeBps) / 10000n;\n return {\n cost,\n fee,\n total: cost + fee,\n spotPriceAfter: spotPrice(currentSupply + amount, basePrice, slope),\n };\n}\n","import { Chain } from \"viem\";\nimport { base, baseSepolia } from \"viem/chains\";\nimport { SupportedChainId } from \"../types\";\n\nexport const CHAINS: Record<SupportedChainId, Chain> = {\n 84532: baseSepolia,\n 8453: base,\n};\n\nexport function getChain(chainId: SupportedChainId): Chain {\n return CHAINS[chainId];\n}\n","import { Address, Hash } from \"viem\";\n\nexport enum AuctionState {\n PENDING = 0,\n ACTIVE = 1,\n COMPLETED = 2,\n MIGRATED = 3,\n}\n\nexport interface AuctionConfig {\n name: string;\n symbol: string;\n maxSupply: bigint;\n paymentToken: Address;\n basePrice: bigint;\n slope: bigint;\n maxRaise: bigint;\n startTime: bigint;\n endTime: bigint;\n}\n\nexport interface AuctionData {\n id: bigint;\n token: Address;\n paymentToken: Address;\n creator: Address;\n basePrice: bigint;\n slope: bigint;\n maxRaise: bigint;\n startTime: bigint;\n endTime: bigint;\n state: AuctionState;\n totalRaised: bigint;\n totalSold: bigint;\n protocolFeeBps: bigint;\n}\n\nexport interface BuyQuote {\n cost: bigint;\n fee: bigint;\n totalCost: bigint;\n spotPriceAfter: bigint;\n}\n\nexport interface TransactionResult {\n hash: Hash;\n}\n\nexport type SupportedChainId = 8453 | 84532; // Base, Base Sepolia\n"],"mappings":"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","names":["AuctionState"]}
|
package/package.json
CHANGED