import { Address, Hex, TransactionReceipt } from "viem";
import { BuySwapAmounts, SellSwapAmounts, PermitSingle, PoolSwapEventArgs } from "./types";
/**
 * Configuration for Pinata
 */
interface PinataConfig {
    jwt: string;
}
interface TokenUriParams {
    metadata: {
        imageUrl: string;
        description: string;
        websiteUrl?: string;
        discordUrl?: string;
        twitterUrl?: string;
        telegramUrl?: string;
    };
    pinataConfig: PinataConfig;
}
export declare const generateTokenUri: (name: string, params: TokenUriParams) => Promise<string>;
export declare const getAmountWithSlippage: (amount: bigint | undefined, slippage: string, swapType: "EXACT_IN" | "EXACT_OUT") => bigint;
export declare const ethToMemecoin: (params: {
    sender: Address;
    memecoin: Address;
    chainId: number;
    referrer: Address | null;
    swapType: "EXACT_IN" | "EXACT_OUT";
    amountIn?: bigint;
    amountOutMin?: bigint;
    amountOut?: bigint;
    amountInMax?: bigint;
}) => {
    calldata: `0x${string}`;
    commands: `0x${string}`;
    inputs: `0x${string}`[];
};
export declare const memecoinToEthWithPermit2: (params: {
    chainId: number;
    memecoin: Address;
    amountIn: bigint;
    ethOutMin: bigint;
    permitSingle: PermitSingle | undefined;
    signature: Hex | undefined;
    referrer: Address | null;
}) => {
    calldata: `0x${string}`;
    commands: `0x${string}`;
    inputs: `0x${string}`[];
};
export declare const getSwapAmountsFromLog: ({ filteredPoolSwapEvent, coinAddress, chainId, }: {
    filteredPoolSwapEvent: PoolSwapEventArgs;
    coinAddress: Address;
    chainId: number;
}) => BuySwapAmounts | SellSwapAmounts;
export declare const getSwapAmountsFromReceipt: ({ receipt, coinAddress, chainId, }: {
    receipt: TransactionReceipt;
    coinAddress: Address;
    chainId: number;
}) => BuySwapAmounts | SellSwapAmounts;
export {};
