UNPKG

viem

Version:

TypeScript Interface for Ethereum

1,528 lines • 151 kB
import type { Address } from 'abitype'; import { type ReadContractReturnType } from '../../actions/public/readContract.js'; import { type WatchContractEventParameters } from '../../actions/public/watchContractEvent.js'; import { type WriteContractReturnType, writeContract } from '../../actions/wallet/writeContract.js'; import { writeContractSync } from '../../actions/wallet/writeContractSync.js'; import type { Client } from '../../clients/createClient.js'; import type { Transport } from '../../clients/transports/createTransport.js'; import type { BaseErrorType } from '../../errors/base.js'; import type { Account } from '../../types/account.js'; import type { Chain } from '../../types/chain.js'; import type { ExtractAbiItem, GetEventArgs } from '../../types/contract.js'; import type { Log as viem_Log } from '../../types/log.js'; import type { Compute, UnionOmit } from '../../types/utils.js'; import * as Abis from '../Abis.js'; import type { GetAccountParameter, ReadParameters, WriteParameters } from '../internal/types.js'; import type { TransactionReceipt } from '../Transaction.js'; /** * Order type for limit orders. */ type OrderType = 'buy' | 'sell'; /** * Buys a specific amount of tokens. * * @example * ```ts * import { createClient, http, parseUnits } from 'viem' * import { privateKeyToAccount } from 'viem/accounts' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const hash = await Actions.dex.buy(client, { * tokenIn: '0x20c...11', * tokenOut: '0x20c...20', * amountOut: parseUnits('100', 6), * maxAmountIn: parseUnits('105', 6), * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction hash. */ export declare function buy<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: buy.Parameters<chain, account>): Promise<buy.ReturnValue>; export declare namespace buy { type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args; type Args = { /** Amount of tokenOut to buy. */ amountOut: bigint; /** Maximum amount of tokenIn to spend. */ maxAmountIn: bigint; /** Address of the token to spend. */ tokenIn: Address; /** Address of the token to buy. */ tokenOut: Address; }; type ReturnValue = WriteContractReturnType; type ErrorType = BaseErrorType; /** @internal */ function inner<action extends typeof writeContract | typeof writeContractSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: buy.Parameters<chain, account>): Promise<ReturnType<action>>; /** * Defines a call to the `swapExactAmountOut` function. * * Can be passed as a parameter to: * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls * * @example * ```ts * import { createClient, http, parseUnits, walletActions } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }).extend(walletActions) * * const { result } = await client.sendCalls({ * calls: [ * Actions.dex.buy.call({ * tokenIn: '0x20c0...beef', * tokenOut: '0x20c0...babe', * amountOut: parseUnits('100', 6), * maxAmountIn: parseUnits('105', 6), * }), * ] * }) * ``` * * @param args - Arguments. * @returns The call. */ function call(args: Args): { abi: [{ readonly name: "swapExactAmountOut"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenIn"; }, { readonly type: "address"; readonly name: "tokenOut"; }, { readonly type: "uint128"; readonly name: "amountOut"; }, { readonly type: "uint128"; readonly name: "maxAmountIn"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "amountIn"; }]; }]; functionName: "swapExactAmountOut"; } & { args: readonly [tokenIn: `0x${string}`, tokenOut: `0x${string}`, amountOut: bigint, maxAmountIn: bigint]; } & { address: Address; } & { data: import("../../index.js").Hex; to: Address; }; } /** * Buys a specific amount of tokens. * * @example * ```ts * import { createClient, http, parseUnits } from 'viem' * import { privateKeyToAccount } from 'viem/accounts' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const result = await Actions.dex.buySync(client, { * tokenIn: '0x20c...11', * tokenOut: '0x20c...20', * amountOut: parseUnits('100', 6), * maxAmountIn: parseUnits('105', 6), * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction receipt. */ export declare function buySync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: buySync.Parameters<chain, account>): Promise<buySync.ReturnValue>; export declare namespace buySync { type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = buy.Parameters<chain, account>; type Args = buy.Args; type ReturnValue = Compute<{ /** Transaction receipt. */ receipt: TransactionReceipt; }>; type ErrorType = BaseErrorType; } /** * Cancels an order from the orderbook. * * @example * ```ts * import { createClient, http } from 'viem' * import { privateKeyToAccount } from 'viem/accounts' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const hash = await Actions.dex.cancel(client, { * orderId: 123n, * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction hash. */ export declare function cancel<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: cancel.Parameters<chain, account>): Promise<cancel.ReturnValue>; export declare namespace cancel { type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args; type Args = { /** Order ID to cancel. */ orderId: bigint; }; type ReturnValue = WriteContractReturnType; type ErrorType = BaseErrorType; /** @internal */ function inner<action extends typeof writeContract | typeof writeContractSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: cancel.Parameters<chain, account>): Promise<ReturnType<action>>; /** * Defines a call to the `cancel` function. * * Can be passed as a parameter to: * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls * * @example * ```ts * import { createClient, http, walletActions } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }).extend(walletActions) * * const { result } = await client.sendCalls({ * calls: [ * Actions.dex.cancel.call({ * orderId: 123n, * }), * ] * }) * ``` * * @param args - Arguments. * @returns The call. */ function call(args: Args): { abi: [{ readonly name: "cancel"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }]; readonly outputs: readonly []; }]; functionName: "cancel"; } & { args: readonly [orderId: bigint]; } & { address: Address; } & { data: import("../../index.js").Hex; to: Address; }; /** * Extracts the `OrderCancelled` event from logs. * * @param logs - The logs. * @returns The `OrderCancelled` event. */ function extractEvent(logs: viem_Log[]): viem_Log<bigint, number, false, undefined, true, readonly [{ readonly name: "createPair"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "base"; }]; readonly outputs: readonly [{ readonly type: "bytes32"; readonly name: "key"; }]; }, { readonly name: "place"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "token"; }, { readonly type: "uint128"; readonly name: "amount"; }, { readonly type: "bool"; readonly name: "isBid"; }, { readonly type: "int16"; readonly name: "tick"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }]; }, { readonly name: "placeFlip"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "token"; }, { readonly type: "uint128"; readonly name: "amount"; }, { readonly type: "bool"; readonly name: "isBid"; }, { readonly type: "int16"; readonly name: "tick"; }, { readonly type: "int16"; readonly name: "flipTick"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }]; }, { readonly name: "cancel"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }]; readonly outputs: readonly []; }, { readonly name: "cancelStaleOrder"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }]; readonly outputs: readonly []; }, { readonly name: "swapExactAmountIn"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenIn"; }, { readonly type: "address"; readonly name: "tokenOut"; }, { readonly type: "uint128"; readonly name: "amountIn"; }, { readonly type: "uint128"; readonly name: "minAmountOut"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "amountOut"; }]; }, { readonly name: "swapExactAmountOut"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenIn"; }, { readonly type: "address"; readonly name: "tokenOut"; }, { readonly type: "uint128"; readonly name: "amountOut"; }, { readonly type: "uint128"; readonly name: "maxAmountIn"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "amountIn"; }]; }, { readonly name: "quoteSwapExactAmountIn"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenIn"; }, { readonly type: "address"; readonly name: "tokenOut"; }, { readonly type: "uint128"; readonly name: "amountIn"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "amountOut"; }]; }, { readonly name: "quoteSwapExactAmountOut"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenIn"; }, { readonly type: "address"; readonly name: "tokenOut"; }, { readonly type: "uint128"; readonly name: "amountOut"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "amountIn"; }]; }, { readonly name: "balanceOf"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "user"; }, { readonly type: "address"; readonly name: "token"; }]; readonly outputs: readonly [{ readonly type: "uint128"; }]; }, { readonly name: "withdraw"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "token"; }, { readonly type: "uint128"; readonly name: "amount"; }]; readonly outputs: readonly []; }, { readonly name: "getOrder"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }]; readonly outputs: readonly [{ readonly type: "tuple"; readonly components: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }, { readonly type: "address"; readonly name: "maker"; }, { readonly type: "bytes32"; readonly name: "bookKey"; }, { readonly type: "bool"; readonly name: "isBid"; }, { readonly type: "int16"; readonly name: "tick"; }, { readonly type: "uint128"; readonly name: "amount"; }, { readonly type: "uint128"; readonly name: "remaining"; }, { readonly type: "uint128"; readonly name: "prev"; }, { readonly type: "uint128"; readonly name: "next"; }, { readonly type: "bool"; readonly name: "isFlip"; }, { readonly type: "int16"; readonly name: "flipTick"; }]; }]; }, { readonly name: "getTickLevel"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "base"; }, { readonly type: "int16"; readonly name: "tick"; }, { readonly type: "bool"; readonly name: "isBid"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "head"; }, { readonly type: "uint128"; readonly name: "tail"; }, { readonly type: "uint128"; readonly name: "totalLiquidity"; }]; }, { readonly name: "pairKey"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenA"; }, { readonly type: "address"; readonly name: "tokenB"; }]; readonly outputs: readonly [{ readonly type: "bytes32"; }]; }, { readonly name: "nextOrderId"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint128"; }]; }, { readonly name: "books"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "bytes32"; readonly name: "pairKey"; }]; readonly outputs: readonly [{ readonly type: "tuple"; readonly components: readonly [{ readonly type: "address"; readonly name: "base"; }, { readonly type: "address"; readonly name: "quote"; }, { readonly type: "int16"; readonly name: "bestBidTick"; }, { readonly type: "int16"; readonly name: "bestAskTick"; }]; }]; }, { readonly name: "MIN_TICK"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "int16"; }]; }, { readonly name: "MAX_TICK"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "int16"; }]; }, { readonly name: "TICK_SPACING"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "int16"; }]; }, { readonly name: "PRICE_SCALE"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint32"; }]; }, { readonly name: "MIN_ORDER_AMOUNT"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint128"; }]; }, { readonly name: "MIN_PRICE"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint32"; }]; }, { readonly name: "MAX_PRICE"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint32"; }]; }, { readonly name: "tickToPrice"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly [{ readonly type: "int16"; readonly name: "tick"; }]; readonly outputs: readonly [{ readonly type: "uint32"; readonly name: "price"; }]; }, { readonly name: "priceToTick"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly [{ readonly type: "uint32"; readonly name: "price"; }]; readonly outputs: readonly [{ readonly type: "int16"; readonly name: "tick"; }]; }, { readonly name: "PairCreated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "bytes32"; readonly name: "key"; readonly indexed: true; }, { readonly type: "address"; readonly name: "base"; readonly indexed: true; }, { readonly type: "address"; readonly name: "quote"; readonly indexed: true; }]; }, { readonly name: "OrderPlaced"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "maker"; readonly indexed: true; }, { readonly type: "address"; readonly name: "token"; readonly indexed: true; }, { readonly type: "uint128"; readonly name: "amount"; }, { readonly type: "bool"; readonly name: "isBid"; }, { readonly type: "int16"; readonly name: "tick"; }, { readonly type: "bool"; readonly name: "isFlipOrder"; }, { readonly type: "int16"; readonly name: "flipTick"; }]; }, { readonly name: "OrderFilled"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "maker"; readonly indexed: true; }, { readonly type: "address"; readonly name: "taker"; readonly indexed: true; }, { readonly type: "uint128"; readonly name: "amountFilled"; }, { readonly type: "bool"; readonly name: "partialFill"; }]; }, { readonly name: "OrderFlipped"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "maker"; readonly indexed: true; }, { readonly type: "address"; readonly name: "token"; readonly indexed: true; }, { readonly type: "uint128"; readonly name: "amount"; }, { readonly type: "bool"; readonly name: "isBid"; }, { readonly type: "int16"; readonly name: "tick"; }, { readonly type: "int16"; readonly name: "flipTick"; }]; }, { readonly name: "OrderCancelled"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; readonly indexed: true; }]; }, { readonly name: "Unauthorized"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "PairDoesNotExist"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "PairAlreadyExists"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "OrderDoesNotExist"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "IdenticalTokens"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "InvalidToken"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "TickOutOfBounds"; readonly type: "error"; readonly inputs: readonly [{ readonly type: "int16"; readonly name: "tick"; }]; }, { readonly name: "InvalidTick"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "InvalidFlipTick"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "InsufficientBalance"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "InsufficientLiquidity"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "InsufficientOutput"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "MaxInputExceeded"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "BelowMinimumOrderSize"; readonly type: "error"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "amount"; }]; }, { readonly name: "InvalidBaseToken"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "OrderNotStale"; readonly type: "error"; readonly inputs: readonly []; }], "OrderCancelled">; } /** * Cancels an order from the orderbook. * * @example * ```ts * import { createClient, http } from 'viem' * import { privateKeyToAccount } from 'viem/accounts' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const result = await Actions.dex.cancelSync(client, { * orderId: 123n, * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction receipt and event data. */ export declare function cancelSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: cancelSync.Parameters<chain, account>): Promise<cancelSync.ReturnValue>; export declare namespace cancelSync { type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = cancel.Parameters<chain, account>; type Args = cancel.Args; type ReturnValue = Compute<GetEventArgs<typeof Abis.stablecoinDex, 'OrderCancelled', { IndexedOnly: false; Required: true; }> & { /** Transaction receipt. */ receipt: TransactionReceipt; }>; type ErrorType = BaseErrorType; } /** * Cancels a stale order from the orderbook. * * A stale order is one where the owner's balance or allowance has dropped * below the order amount. * * @example * ```ts * import { createClient, http } from 'viem' * import { privateKeyToAccount } from 'viem/accounts' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const hash = await Actions.dex.cancelStale(client, { * orderId: 123n, * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction hash. */ export declare function cancelStale<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: cancelStale.Parameters<chain, account>): Promise<cancelStale.ReturnValue>; export declare namespace cancelStale { type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args; type Args = { /** Order ID to cancel. */ orderId: bigint; }; type ReturnValue = WriteContractReturnType; type ErrorType = BaseErrorType; /** @internal */ function inner<action extends typeof writeContract | typeof writeContractSync, chain extends Chain | undefined, account extends Account | undefined>(action: action, client: Client<Transport, chain, account>, parameters: cancelStale.Parameters<chain, account>): Promise<ReturnType<action>>; /** * Defines a call to the `cancelStaleOrder` function. * * Can be passed as a parameter to: * - [`estimateContractGas`](https://viem.sh/docs/contract/estimateContractGas): estimate the gas cost of the call * - [`simulateContract`](https://viem.sh/docs/contract/simulateContract): simulate the call * - [`sendCalls`](https://viem.sh/docs/actions/wallet/sendCalls): send multiple calls * * @example * ```ts * import { createClient, http, walletActions } from 'viem' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }).extend(walletActions) * * const { result } = await client.sendCalls({ * calls: [ * Actions.dex.cancelStale.call({ * orderId: 123n, * }), * ] * }) * ``` * * @param args - Arguments. * @returns The call. */ function call(args: Args): { abi: [{ readonly name: "cancelStaleOrder"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }]; readonly outputs: readonly []; }]; functionName: "cancelStaleOrder"; } & { args: readonly [orderId: bigint]; } & { address: Address; } & { data: import("../../index.js").Hex; to: Address; }; /** * Extracts the `OrderCancelled` event from logs. * * @param logs - The logs. * @returns The `OrderCancelled` event. */ function extractEvent(logs: viem_Log[]): viem_Log<bigint, number, false, undefined, true, readonly [{ readonly name: "createPair"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "base"; }]; readonly outputs: readonly [{ readonly type: "bytes32"; readonly name: "key"; }]; }, { readonly name: "place"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "token"; }, { readonly type: "uint128"; readonly name: "amount"; }, { readonly type: "bool"; readonly name: "isBid"; }, { readonly type: "int16"; readonly name: "tick"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }]; }, { readonly name: "placeFlip"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "token"; }, { readonly type: "uint128"; readonly name: "amount"; }, { readonly type: "bool"; readonly name: "isBid"; }, { readonly type: "int16"; readonly name: "tick"; }, { readonly type: "int16"; readonly name: "flipTick"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }]; }, { readonly name: "cancel"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }]; readonly outputs: readonly []; }, { readonly name: "cancelStaleOrder"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }]; readonly outputs: readonly []; }, { readonly name: "swapExactAmountIn"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenIn"; }, { readonly type: "address"; readonly name: "tokenOut"; }, { readonly type: "uint128"; readonly name: "amountIn"; }, { readonly type: "uint128"; readonly name: "minAmountOut"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "amountOut"; }]; }, { readonly name: "swapExactAmountOut"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenIn"; }, { readonly type: "address"; readonly name: "tokenOut"; }, { readonly type: "uint128"; readonly name: "amountOut"; }, { readonly type: "uint128"; readonly name: "maxAmountIn"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "amountIn"; }]; }, { readonly name: "quoteSwapExactAmountIn"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenIn"; }, { readonly type: "address"; readonly name: "tokenOut"; }, { readonly type: "uint128"; readonly name: "amountIn"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "amountOut"; }]; }, { readonly name: "quoteSwapExactAmountOut"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenIn"; }, { readonly type: "address"; readonly name: "tokenOut"; }, { readonly type: "uint128"; readonly name: "amountOut"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "amountIn"; }]; }, { readonly name: "balanceOf"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "user"; }, { readonly type: "address"; readonly name: "token"; }]; readonly outputs: readonly [{ readonly type: "uint128"; }]; }, { readonly name: "withdraw"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "token"; }, { readonly type: "uint128"; readonly name: "amount"; }]; readonly outputs: readonly []; }, { readonly name: "getOrder"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }]; readonly outputs: readonly [{ readonly type: "tuple"; readonly components: readonly [{ readonly type: "uint128"; readonly name: "orderId"; }, { readonly type: "address"; readonly name: "maker"; }, { readonly type: "bytes32"; readonly name: "bookKey"; }, { readonly type: "bool"; readonly name: "isBid"; }, { readonly type: "int16"; readonly name: "tick"; }, { readonly type: "uint128"; readonly name: "amount"; }, { readonly type: "uint128"; readonly name: "remaining"; }, { readonly type: "uint128"; readonly name: "prev"; }, { readonly type: "uint128"; readonly name: "next"; }, { readonly type: "bool"; readonly name: "isFlip"; }, { readonly type: "int16"; readonly name: "flipTick"; }]; }]; }, { readonly name: "getTickLevel"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "base"; }, { readonly type: "int16"; readonly name: "tick"; }, { readonly type: "bool"; readonly name: "isBid"; }]; readonly outputs: readonly [{ readonly type: "uint128"; readonly name: "head"; }, { readonly type: "uint128"; readonly name: "tail"; }, { readonly type: "uint128"; readonly name: "totalLiquidity"; }]; }, { readonly name: "pairKey"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenA"; }, { readonly type: "address"; readonly name: "tokenB"; }]; readonly outputs: readonly [{ readonly type: "bytes32"; }]; }, { readonly name: "nextOrderId"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint128"; }]; }, { readonly name: "books"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "bytes32"; readonly name: "pairKey"; }]; readonly outputs: readonly [{ readonly type: "tuple"; readonly components: readonly [{ readonly type: "address"; readonly name: "base"; }, { readonly type: "address"; readonly name: "quote"; }, { readonly type: "int16"; readonly name: "bestBidTick"; }, { readonly type: "int16"; readonly name: "bestAskTick"; }]; }]; }, { readonly name: "MIN_TICK"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "int16"; }]; }, { readonly name: "MAX_TICK"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "int16"; }]; }, { readonly name: "TICK_SPACING"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "int16"; }]; }, { readonly name: "PRICE_SCALE"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint32"; }]; }, { readonly name: "MIN_ORDER_AMOUNT"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint128"; }]; }, { readonly name: "MIN_PRICE"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint32"; }]; }, { readonly name: "MAX_PRICE"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint32"; }]; }, { readonly name: "tickToPrice"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly [{ readonly type: "int16"; readonly name: "tick"; }]; readonly outputs: readonly [{ readonly type: "uint32"; readonly name: "price"; }]; }, { readonly name: "priceToTick"; readonly type: "function"; readonly stateMutability: "pure"; readonly inputs: readonly [{ readonly type: "uint32"; readonly name: "price"; }]; readonly outputs: readonly [{ readonly type: "int16"; readonly name: "tick"; }]; }, { readonly name: "PairCreated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "bytes32"; readonly name: "key"; readonly indexed: true; }, { readonly type: "address"; readonly name: "base"; readonly indexed: true; }, { readonly type: "address"; readonly name: "quote"; readonly indexed: true; }]; }, { readonly name: "OrderPlaced"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "maker"; readonly indexed: true; }, { readonly type: "address"; readonly name: "token"; readonly indexed: true; }, { readonly type: "uint128"; readonly name: "amount"; }, { readonly type: "bool"; readonly name: "isBid"; }, { readonly type: "int16"; readonly name: "tick"; }, { readonly type: "bool"; readonly name: "isFlipOrder"; }, { readonly type: "int16"; readonly name: "flipTick"; }]; }, { readonly name: "OrderFilled"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "maker"; readonly indexed: true; }, { readonly type: "address"; readonly name: "taker"; readonly indexed: true; }, { readonly type: "uint128"; readonly name: "amountFilled"; }, { readonly type: "bool"; readonly name: "partialFill"; }]; }, { readonly name: "OrderFlipped"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; readonly indexed: true; }, { readonly type: "address"; readonly name: "maker"; readonly indexed: true; }, { readonly type: "address"; readonly name: "token"; readonly indexed: true; }, { readonly type: "uint128"; readonly name: "amount"; }, { readonly type: "bool"; readonly name: "isBid"; }, { readonly type: "int16"; readonly name: "tick"; }, { readonly type: "int16"; readonly name: "flipTick"; }]; }, { readonly name: "OrderCancelled"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "orderId"; readonly indexed: true; }]; }, { readonly name: "Unauthorized"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "PairDoesNotExist"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "PairAlreadyExists"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "OrderDoesNotExist"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "IdenticalTokens"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "InvalidToken"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "TickOutOfBounds"; readonly type: "error"; readonly inputs: readonly [{ readonly type: "int16"; readonly name: "tick"; }]; }, { readonly name: "InvalidTick"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "InvalidFlipTick"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "InsufficientBalance"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "InsufficientLiquidity"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "InsufficientOutput"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "MaxInputExceeded"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "BelowMinimumOrderSize"; readonly type: "error"; readonly inputs: readonly [{ readonly type: "uint128"; readonly name: "amount"; }]; }, { readonly name: "InvalidBaseToken"; readonly type: "error"; readonly inputs: readonly []; }, { readonly name: "OrderNotStale"; readonly type: "error"; readonly inputs: readonly []; }], "OrderCancelled">; } /** * Cancels a stale order from the orderbook and waits for confirmation. * * A stale order is one where the owner's balance or allowance has dropped * below the order amount. * * @example * ```ts * import { createClient, http } from 'viem' * import { privateKeyToAccount } from 'viem/accounts' * import { tempo } from 'viem/chains' * import { Actions } from 'viem/tempo' * * const client = createClient({ * account: privateKeyToAccount('0x...'), * chain: tempo.extend({ feeToken: '0x20c0000000000000000000000000000000000001' }) * transport: http(), * }) * * const result = await Actions.dex.cancelStaleSync(client, { * orderId: 123n, * }) * ``` * * @param client - Client. * @param parameters - Parameters. * @returns The transaction receipt and event data. */ export declare function cancelStaleSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, par