viem
Version:
1,532 lines (1,531 loc) • 516 kB
TypeScript
import type { Address } from 'abitype';
import * as Hex from 'ox/Hex';
import { TokenId, TokenRole } from 'ox/tempo';
import type { Account } from '../../accounts/types.js';
import type { ReadContractReturnType } from '../../actions/public/readContract.js';
import type { WatchContractEventParameters, WatchContractEventReturnType } from '../../actions/public/watchContractEvent.js';
import { sendTransaction } from '../../actions/wallet/sendTransaction.js';
import { type SendTransactionSyncParameters, sendTransactionSync } from '../../actions/wallet/sendTransactionSync.js';
import type { WriteContractReturnType } from '../../actions/wallet/writeContract.js';
import { 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 { Chain } from '../../types/chain.js';
import type { ExtractAbiItem, GetEventArgs } from '../../types/contract.js';
import type { Log, Log as viem_Log } from '../../types/log.js';
import type { Compute, OneOf, 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';
/**
* Approves a spender to transfer TIP20 tokens on behalf of the caller.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { tempo } from 'tempo.ts/chains'
* import { Actions } from 'tempo.ts/viem'
* import { privateKeyToAccount } from 'viem/accounts'
*
* const client = createClient({
* account: privateKeyToAccount('0x...'),
* chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' })
* transport: http(),
* })
*
* const result = await Actions.token.approve(client, {
* spender: '0x...',
* amount: 100n,
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The transaction hash.
*/
export declare function approve<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: approve.Parameters<chain, account>): Promise<approve.ReturnValue>;
export declare namespace approve {
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args;
type Args = {
/** Amount of tokens to approve. */
amount: bigint;
/** Address of the spender. */
spender: Address;
/** Address or ID of the TIP20 token. */
token: TokenId.TokenIdOrAddress;
};
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: approve.Parameters<chain, account>, args: Args): Promise<ReturnType<action>>;
/**
* Defines a call to the `approve` 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 'tempo.ts/chains'
* import { Actions } from 'tempo.ts/viem'
*
* const client = createClient({
* chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' })
* transport: http(),
* }).extend(walletActions)
*
* const { result } = await client.sendCalls({
* calls: [
* actions.token.approve.call({
* spender: '0x20c0...beef',
* amount: 100n,
* token: '0x20c0...babe',
* }),
* ]
* })
* ```
*
* @param args - Arguments.
* @returns The call.
*/
function call(args: Args): {
abi: [{
readonly name: "approve";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "spender";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}];
functionName: "approve";
} & {
args: readonly [spender: `0x${string}`, amount: bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
};
function extractEvent(logs: Log[]): Log<bigint, number, false, undefined, true, readonly [{
readonly name: "name";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "string";
}];
}, {
readonly name: "symbol";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "string";
}];
}, {
readonly name: "decimals";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "uint8";
}];
}, {
readonly name: "totalSupply";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "uint256";
}];
}, {
readonly name: "quoteToken";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "address";
}];
}, {
readonly name: "nextQuoteToken";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "address";
}];
}, {
readonly name: "balanceOf";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "account";
}];
readonly outputs: readonly [{
readonly type: "uint256";
}];
}, {
readonly name: "transfer";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}, {
readonly name: "approve";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "spender";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}, {
readonly name: "allowance";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "owner";
}, {
readonly type: "address";
readonly name: "spender";
}];
readonly outputs: readonly [{
readonly type: "uint256";
}];
}, {
readonly name: "transferFrom";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "from";
}, {
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}, {
readonly name: "mint";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [];
}, {
readonly name: "burn";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [];
}, {
readonly name: "currency";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "string";
}];
}, {
readonly name: "supplyCap";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "uint256";
}];
}, {
readonly name: "paused";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "bool";
}];
}, {
readonly name: "transferPolicyId";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "uint64";
}];
}, {
readonly name: "burnBlocked";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "from";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [];
}, {
readonly name: "mintWithMemo";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint256";
readonly name: "amount";
}, {
readonly type: "bytes32";
readonly name: "memo";
}];
readonly outputs: readonly [];
}, {
readonly name: "burnWithMemo";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint256";
readonly name: "amount";
}, {
readonly type: "bytes32";
readonly name: "memo";
}];
readonly outputs: readonly [];
}, {
readonly name: "transferWithMemo";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint256";
readonly name: "amount";
}, {
readonly type: "bytes32";
readonly name: "memo";
}];
readonly outputs: readonly [];
}, {
readonly name: "transferFromWithMemo";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "from";
}, {
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint256";
readonly name: "amount";
}, {
readonly type: "bytes32";
readonly name: "memo";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}, {
readonly name: "feeRecipient";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "address";
}];
}, {
readonly name: "setFeeRecipient";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "newRecipient";
}];
readonly outputs: readonly [{
readonly type: "address";
}];
}, {
readonly name: "changeTransferPolicyId";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint64";
readonly name: "newPolicyId";
}];
readonly outputs: readonly [];
}, {
readonly name: "setSupplyCap";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint256";
readonly name: "newSupplyCap";
}];
readonly outputs: readonly [];
}, {
readonly name: "pause";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [];
readonly outputs: readonly [];
}, {
readonly name: "unpause";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [];
readonly outputs: readonly [];
}, {
readonly name: "setNextQuoteToken";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "newQuoteToken";
}];
readonly outputs: readonly [];
}, {
readonly name: "completeQuoteTokenUpdate";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [];
readonly outputs: readonly [];
}, {
readonly name: "PAUSE_ROLE";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "bytes32";
}];
}, {
readonly name: "UNPAUSE_ROLE";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "bytes32";
}];
}, {
readonly name: "ISSUER_ROLE";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "bytes32";
}];
}, {
readonly name: "BURN_BLOCKED_ROLE";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "bytes32";
}];
}, {
readonly name: "startReward";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint256";
readonly name: "amount";
}, {
readonly type: "uint32";
readonly name: "secs";
}];
readonly outputs: readonly [{
readonly type: "uint64";
}];
}, {
readonly name: "setRewardRecipient";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "recipient";
}];
readonly outputs: readonly [];
}, {
readonly name: "cancelReward";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint64";
readonly name: "id";
}];
readonly outputs: readonly [{
readonly type: "uint256";
}];
}, {
readonly name: "claimRewards";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "uint256";
}];
}, {
readonly name: "finalizeStreams";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint64";
readonly name: "timestamp";
}];
readonly outputs: readonly [];
}, {
readonly name: "getStream";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [{
readonly type: "uint64";
readonly name: "id";
}];
readonly outputs: readonly [{
readonly type: "tuple";
readonly components: readonly [{
readonly type: "address";
readonly name: "funder";
}, {
readonly type: "uint64";
readonly name: "startTime";
}, {
readonly type: "uint64";
readonly name: "endTime";
}, {
readonly type: "uint256";
readonly name: "ratePerSecondScaled";
}, {
readonly type: "uint256";
readonly name: "amountTotal";
}];
}];
}, {
readonly name: "totalRewardPerSecond";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "uint256";
}];
}, {
readonly name: "optedInSupply";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "uint128";
}];
}, {
readonly name: "nextStreamId";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "uint64";
}];
}, {
readonly name: "userRewardInfo";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "account";
}];
readonly outputs: readonly [{
readonly type: "tuple";
readonly components: readonly [{
readonly type: "address";
readonly name: "rewardRecipient";
}, {
readonly type: "uint256";
readonly name: "rewardPerToken";
}, {
readonly type: "uint256";
readonly name: "rewardBalance";
}];
}];
}, {
readonly name: "Transfer";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "from";
readonly indexed: true;
}, {
readonly type: "address";
readonly name: "to";
readonly indexed: true;
}, {
readonly type: "uint256";
readonly name: "amount";
}];
}, {
readonly name: "Approval";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "owner";
readonly indexed: true;
}, {
readonly type: "address";
readonly name: "spender";
readonly indexed: true;
}, {
readonly type: "uint256";
readonly name: "amount";
}];
}, {
readonly name: "Mint";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "to";
readonly indexed: true;
}, {
readonly type: "uint256";
readonly name: "amount";
}];
}, {
readonly name: "Burn";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "from";
readonly indexed: true;
}, {
readonly type: "uint256";
readonly name: "amount";
}];
}, {
readonly name: "BurnBlocked";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "from";
readonly indexed: true;
}, {
readonly type: "uint256";
readonly name: "amount";
}];
}, {
readonly name: "TransferWithMemo";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "from";
readonly indexed: true;
}, {
readonly type: "address";
readonly name: "to";
readonly indexed: true;
}, {
readonly type: "uint256";
readonly name: "amount";
}, {
readonly type: "bytes32";
readonly name: "memo";
readonly indexed: true;
}];
}, {
readonly name: "TransferPolicyUpdate";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "updater";
readonly indexed: true;
}, {
readonly type: "uint64";
readonly name: "newPolicyId";
readonly indexed: true;
}];
}, {
readonly name: "SupplyCapUpdate";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "updater";
readonly indexed: true;
}, {
readonly type: "uint256";
readonly name: "newSupplyCap";
readonly indexed: true;
}];
}, {
readonly name: "PauseStateUpdate";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "updater";
readonly indexed: true;
}, {
readonly type: "bool";
readonly name: "isPaused";
}];
}, {
readonly name: "NextQuoteTokenSet";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "updater";
readonly indexed: true;
}, {
readonly type: "address";
readonly name: "nextQuoteToken";
readonly indexed: true;
}];
}, {
readonly name: "QuoteTokenUpdate";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "updater";
readonly indexed: true;
}, {
readonly type: "address";
readonly name: "newQuoteToken";
readonly indexed: true;
}];
}, {
readonly name: "RewardScheduled";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "funder";
readonly indexed: true;
}, {
readonly type: "uint64";
readonly name: "id";
readonly indexed: true;
}, {
readonly type: "uint256";
readonly name: "amount";
}, {
readonly type: "uint32";
readonly name: "durationSeconds";
}];
}, {
readonly name: "RewardCanceled";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "funder";
readonly indexed: true;
}, {
readonly type: "uint64";
readonly name: "id";
readonly indexed: true;
}, {
readonly type: "uint256";
readonly name: "refund";
}];
}, {
readonly name: "RewardRecipientSet";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "holder";
readonly indexed: true;
}, {
readonly type: "address";
readonly name: "recipient";
readonly indexed: true;
}];
}, {
readonly name: "FeeRecipientUpdated";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "updater";
readonly indexed: true;
}, {
readonly type: "address";
readonly name: "newRecipient";
readonly indexed: true;
}];
}, {
readonly name: "InsufficientBalance";
readonly type: "error";
readonly inputs: readonly [{
readonly type: "uint256";
readonly name: "available";
}, {
readonly type: "uint256";
readonly name: "required";
}, {
readonly type: "address";
readonly name: "token";
}];
}, {
readonly name: "InsufficientAllowance";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "SupplyCapExceeded";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "InvalidSupplyCap";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "InvalidPayload";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "StringTooLong";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "PolicyForbids";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "InvalidRecipient";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "ContractPaused";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "InvalidCurrency";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "InvalidQuoteToken";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "TransfersDisabled";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "InvalidAmount";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "NotStreamFunder";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "StreamInactive";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "NoOptedInSupply";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "Unauthorized";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "RewardsDisabled";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "ScheduledRewardsDisabled";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "ProtectedAddress";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "InvalidToken";
readonly type: "error";
readonly inputs: readonly [];
}, {
readonly name: "hasRole";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "account";
}, {
readonly type: "bytes32";
readonly name: "role";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}, {
readonly name: "getRoleAdmin";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [{
readonly type: "bytes32";
readonly name: "role";
}];
readonly outputs: readonly [{
readonly type: "bytes32";
}];
}, {
readonly name: "grantRole";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "bytes32";
readonly name: "role";
}, {
readonly type: "address";
readonly name: "account";
}];
readonly outputs: readonly [];
}, {
readonly name: "revokeRole";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "bytes32";
readonly name: "role";
}, {
readonly type: "address";
readonly name: "account";
}];
readonly outputs: readonly [];
}, {
readonly name: "renounceRole";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "bytes32";
readonly name: "role";
}];
readonly outputs: readonly [];
}, {
readonly name: "setRoleAdmin";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "bytes32";
readonly name: "role";
}, {
readonly type: "bytes32";
readonly name: "adminRole";
}];
readonly outputs: readonly [];
}, {
readonly name: "RoleMembershipUpdated";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "bytes32";
readonly name: "role";
readonly indexed: true;
}, {
readonly type: "address";
readonly name: "account";
readonly indexed: true;
}, {
readonly type: "address";
readonly name: "sender";
readonly indexed: true;
}, {
readonly type: "bool";
readonly name: "hasRole";
}];
}, {
readonly name: "RoleAdminUpdated";
readonly type: "event";
readonly inputs: readonly [{
readonly type: "bytes32";
readonly name: "role";
readonly indexed: true;
}, {
readonly type: "bytes32";
readonly name: "newAdminRole";
readonly indexed: true;
}, {
readonly type: "address";
readonly name: "sender";
readonly indexed: true;
}];
}, {
readonly name: "Unauthorized";
readonly type: "error";
readonly inputs: readonly [];
}], "Approval">;
}
/**
* Approves a spender to transfer TIP20 tokens on behalf of the caller.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { tempo } from 'tempo.ts/chains'
* import { Actions } from 'tempo.ts/viem'
* import { privateKeyToAccount } from 'viem/accounts'
*
* const client = createClient({
* account: privateKeyToAccount('0x...'),
* chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' })
* transport: http(),
* })
*
* const result = await Actions.token.approveSync(client, {
* spender: '0x...',
* amount: 100n,
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The transaction receipt and event data.
*/
export declare function approveSync<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: approveSync.Parameters<chain, account>): Promise<approveSync.ReturnValue>;
export declare namespace approveSync {
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = approve.Parameters<chain, account>;
type Args = approve.Args;
type ReturnValue = Compute<GetEventArgs<typeof Abis.tip20, 'Approval', {
IndexedOnly: false;
Required: true;
}> & {
/** Transaction receipt. */
receipt: TransactionReceipt;
}>;
type ErrorType = BaseErrorType;
}
/**
* Burns TIP20 tokens from a blocked address.
*
* @example
* ```ts
* import { createClient, http } from 'viem'
* import { tempo } from 'tempo.ts/chains'
* import { Actions } from 'tempo.ts/viem'
* import { privateKeyToAccount } from 'viem/accounts'
*
* const client = createClient({
* account: privateKeyToAccount('0x...'),
* chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' })
* transport: http(),
* })
*
* const result = await Actions.token.burnBlocked(client, {
* from: '0x...',
* amount: 100n,
* token: '0x...',
* })
* ```
*
* @param client - Client.
* @param parameters - Parameters.
* @returns The transaction hash.
*/
export declare function burnBlocked<chain extends Chain | undefined, account extends Account | undefined>(client: Client<Transport, chain, account>, parameters: burnBlocked.Parameters<chain, account>): Promise<burnBlocked.ReturnValue>;
export declare namespace burnBlocked {
type Parameters<chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined> = WriteParameters<chain, account> & Args;
type Args = {
/** Amount of tokens to burn. */
amount: bigint;
/** Address to burn tokens from. */
from: Address;
/** Address or ID of the TIP20 token. */
token: TokenId.TokenIdOrAddress;
};
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: burnBlocked.Parameters<chain, account>): Promise<ReturnType<action>>;
/**
* Defines a call to the `burnBlocked` 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 'tempo.ts/chains'
* import { Actions } from 'tempo.ts/viem'
*
* const client = createClient({
* chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' })
* transport: http(),
* }).extend(walletActions)
*
* const { result } = await client.sendCalls({
* calls: [
* actions.token.burnBlocked.call({
* from: '0x20c0...beef',
* amount: 100n,
* token: '0x20c0...babe',
* }),
* ]
* })
* ```
*
* @param args - Arguments.
* @returns The call.
*/
function call(args: Args): {
abi: [{
readonly name: "burnBlocked";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "from";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [];
}];
functionName: "burnBlocked";
} & {
args: readonly [from: `0x${string}`, amount: bigint];
} & {
address: Address;
} & {
data: import("../../index.js").Hex;
to: Address;
};
/**
* Extracts the event from the logs.
*
* @param logs - Logs.
* @returns The event.
*/
function extractEvent(logs: Log[]): Log<bigint, number, false, undefined, true, readonly [{
readonly name: "name";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "string";
}];
}, {
readonly name: "symbol";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "string";
}];
}, {
readonly name: "decimals";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "uint8";
}];
}, {
readonly name: "totalSupply";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "uint256";
}];
}, {
readonly name: "quoteToken";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "address";
}];
}, {
readonly name: "nextQuoteToken";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "address";
}];
}, {
readonly name: "balanceOf";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "account";
}];
readonly outputs: readonly [{
readonly type: "uint256";
}];
}, {
readonly name: "transfer";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}, {
readonly name: "approve";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "spender";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}, {
readonly name: "allowance";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "owner";
}, {
readonly type: "address";
readonly name: "spender";
}];
readonly outputs: readonly [{
readonly type: "uint256";
}];
}, {
readonly name: "transferFrom";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "from";
}, {
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}, {
readonly name: "mint";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [];
}, {
readonly name: "burn";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [];
}, {
readonly name: "currency";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "string";
}];
}, {
readonly name: "supplyCap";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "uint256";
}];
}, {
readonly name: "paused";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "bool";
}];
}, {
readonly name: "transferPolicyId";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "uint64";
}];
}, {
readonly name: "burnBlocked";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "from";
}, {
readonly type: "uint256";
readonly name: "amount";
}];
readonly outputs: readonly [];
}, {
readonly name: "mintWithMemo";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint256";
readonly name: "amount";
}, {
readonly type: "bytes32";
readonly name: "memo";
}];
readonly outputs: readonly [];
}, {
readonly name: "burnWithMemo";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint256";
readonly name: "amount";
}, {
readonly type: "bytes32";
readonly name: "memo";
}];
readonly outputs: readonly [];
}, {
readonly name: "transferWithMemo";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint256";
readonly name: "amount";
}, {
readonly type: "bytes32";
readonly name: "memo";
}];
readonly outputs: readonly [];
}, {
readonly name: "transferFromWithMemo";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "from";
}, {
readonly type: "address";
readonly name: "to";
}, {
readonly type: "uint256";
readonly name: "amount";
}, {
readonly type: "bytes32";
readonly name: "memo";
}];
readonly outputs: readonly [{
readonly type: "bool";
}];
}, {
readonly name: "feeRecipient";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "address";
}];
}, {
readonly name: "setFeeRecipient";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "newRecipient";
}];
readonly outputs: readonly [{
readonly type: "address";
}];
}, {
readonly name: "changeTransferPolicyId";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint64";
readonly name: "newPolicyId";
}];
readonly outputs: readonly [];
}, {
readonly name: "setSupplyCap";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint256";
readonly name: "newSupplyCap";
}];
readonly outputs: readonly [];
}, {
readonly name: "pause";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [];
readonly outputs: readonly [];
}, {
readonly name: "unpause";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [];
readonly outputs: readonly [];
}, {
readonly name: "setNextQuoteToken";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "newQuoteToken";
}];
readonly outputs: readonly [];
}, {
readonly name: "completeQuoteTokenUpdate";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [];
readonly outputs: readonly [];
}, {
readonly name: "PAUSE_ROLE";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "bytes32";
}];
}, {
readonly name: "UNPAUSE_ROLE";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "bytes32";
}];
}, {
readonly name: "ISSUER_ROLE";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "bytes32";
}];
}, {
readonly name: "BURN_BLOCKED_ROLE";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "bytes32";
}];
}, {
readonly name: "startReward";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint256";
readonly name: "amount";
}, {
readonly type: "uint32";
readonly name: "secs";
}];
readonly outputs: readonly [{
readonly type: "uint64";
}];
}, {
readonly name: "setRewardRecipient";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "address";
readonly name: "recipient";
}];
readonly outputs: readonly [];
}, {
readonly name: "cancelReward";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint64";
readonly name: "id";
}];
readonly outputs: readonly [{
readonly type: "uint256";
}];
}, {
readonly name: "claimRewards";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [];
readonly outputs: readonly [{
readonly type: "uint256";
}];
}, {
readonly name: "finalizeStreams";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [{
readonly type: "uint64";
readonly name: "timestamp";
}];
readonly outputs: readonly [];
}, {
readonly name: "getStream";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [{
readonly type: "uint64";
readonly name: "id";
}];
readonly outputs: readonly [{
readonly type: "tuple";