Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 53 additions & 41 deletions dexs/puppyfun/index.ts
Original file line number Diff line number Diff line change
@@ -1,49 +1,61 @@
import ADDRESSES from '../../helpers/coreAssets.json'
import { FetchOptions } from "../../adapters/types"
import { CHAIN } from "../../helpers/chains"
import { httpGet } from "../../utils/fetchURL"
import { lookupBlock } from "@defillama/sdk/build/util";
import { FetchOptions, SimpleAdapter } from "../../adapters/types";
import { CHAIN } from "../../helpers/chains";
import { addGasTokensReceived, addTokensReceived, getETHReceived, nullAddress } from '../../helpers/token';
import fetchURL from "../../utils/fetchURL";

const TOKEN_ADDRESS = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"
const WALLET_ADDRESS = "0x3f0F3359A168b90C7F45621Dde5A4cDc3C61529D"

const BNB_ADDRESS = ADDRESSES.null
const apiBaseURL = "https://bd-fun-defilama-ts-backend-main.puppy.fun/lama-api"
const volumeMethod = "/volume"
const feesMethod = "/fees"

const fetch = async (options: FetchOptions) => {
const volumeResponse = await httpGet(apiBaseURL + volumeMethod)

const feesResponse = await httpGet(apiBaseURL + feesMethod)

const volume = options.createBalances()
const dailyVolume = options.createBalances()
volume.add(BNB_ADDRESS, volumeResponse.volume)
dailyVolume.add(BNB_ADDRESS, volumeResponse.dailyVolume)

const fees = options.createBalances()
const dailyFees = options.createBalances()
const revenue = options.createBalances()
const dailyRevenue = options.createBalances()

fees.add(BNB_ADDRESS, feesResponse.totalFee)
dailyFees.add(BNB_ADDRESS, feesResponse.dailyTotalFee)
revenue.add(BNB_ADDRESS, feesResponse.totalFee)
dailyRevenue.add(BNB_ADDRESS, feesResponse.dailyTotalFee)

return {
dailyVolume,
dailyFees,
dailyRevenue,
}
const dailyFees = options.createBalances()
const dailyRevenue = options.createBalances()

const balancesKeyERC20 = `bsc:${TOKEN_ADDRESS.toLowerCase()}`
const balancesKeyBNB = `bsc:${nullAddress.toLowerCase()}`
const tokensReceivedDaily = await addTokensReceived({
options,
tokens: [TOKEN_ADDRESS],
targets: [WALLET_ADDRESS],
})
const nativeReceivedDaily = await getETHReceived({
options,
target: WALLET_ADDRESS,
})

const dailyIncomeERC20 = tokensReceivedDaily.getBalances()[balancesKeyERC20]
const dailyIncomeBNB = nativeReceivedDaily.getBalances()[balancesKeyBNB]

// ERC20 fees
dailyFees.add(TOKEN_ADDRESS, dailyIncomeERC20)
dailyRevenue.add(TOKEN_ADDRESS, dailyIncomeBNB)

// BNB fees
dailyFees.add(nullAddress, dailyIncomeERC20)
dailyRevenue.add(nullAddress, dailyIncomeBNB)

const volumeResponse = await fetchURL(apiBaseURL + volumeMethod)
const dailyVolume = options.createBalances()
dailyVolume.add(TOKEN_ADDRESS, volumeResponse.dailyVolume)

return {
dailyVolume,
dailyFees,
dailyRevenue,
}
}

export default {
version: 2,
adapter: {
[CHAIN.BSC]: {
fetch: fetch,
},
},
methodology: {
Fees: "Token trading and launching fees paid by users.",
Revenue: "All fees are revenue.",
}
const adapter: SimpleAdapter = {
version: 2,
fetch,
chains: [CHAIN.BSC],
methodology: {
Fees: "Token trading and launching fees paid by users.",
Revenue: "All fees are revenue.",
}
}

export default adapter
Loading